Published 2022. 7. 12. 22:29

개요

파일 업로드 취약점이란 웹에서 서버로 파일을 업로드할 때 시스템 명령어를 실행할 수 있는 악성 스크립트를 업로드 하는 것으로 성공하게 된다면 시스템 권한을 획득하거나 정보 탈취 등의 문제가 발생할 수 있습니다. 

 

악성 스크립트 파일들을 주로 웹쉘이라고도 하며 주로 웹서버에서 명령을 수행하도록 만들어진 스크립트 파일입니다. 그렇다보니 웹서버의 피해 공격 중 상당수에서 웹쉘들이 사용되었다고 하며 이후 클라이언트 공격에도 취약해지는 등 다양한 문제가 야기될 수 있습니다. 

 

 

https://www.dailysecu.com/news/articleView.html?idxno=126259 

 

비정상 광고 삽입, 그냥 넘어가다간 대형 보안사고로 이어져 - 데일리시큐

웹서버 관리자가 퇴근하면 발생하는 무단광고노출 사고가 빈번하게 발생하고 있다. 피해가 없다고 간과하다간 대형 보안사고로 이어질 수 있다는 것을 명심해야 한다.2021년 상반기 발생한 광고

www.dailysecu.com

 

공격 방식

1. file parser나 처리 모듈의 취약점들을 악용

 - 파일 업로드 시 확장자 제한이 없거나 이미 업로드된 파일에 접근 및 실행이 가능한지

 

2. Proxy 툴을 이용해 확장자 검사 우회 파일 업로드

 - 파일타입 변조 검사를 우회공격을 통해 피해서 접근하는 방식

대표적으로 업로드시 파일의 유형 정보를 알려주는 헤더 중, Content-type 속성을 프록시를 활용해 우회하여 공격가능

 

3. SQL Injection을 활용한 파일 업로드

 - MYSQL의 into outfile() 함수를 활용하여 웹서버에 파일을 생성하거나 MYSQL 저장 프로시저(xp_cmdshell)을 활용하여 echo와 명령어를 통해 특정 파일을 삽입하는 방식

 

 

방어 방식

1. 확장 검증

 - 정규식을 쉽게 우회하는 이중 확장자 혹은 Null bite 같이 유효성 검사시 우회하는 것들을 막기 위한 적절한 필터가 설정되어 있는지 확인  ( 올바르게 분석되지 않으면 잘못된 결과가 생길 수 있다)

 

2. 특정 파일 콘텐츠 유효성 검사 라이브러리 사용 

 - 이미지의 경우 Image rewriting techniques 혹은 MS 문서의 경우 Apache POI를 사용하는 것 등이 도움될 수 있다

 

3. 파일 저장 위치

- 서비스를 제공하는 애플리케이션과 파일 업로드 및 저장을 처리하는 업무를 분리하고 적절한 제어(승인된 사용자)를  활용하여 처리 ( 규모가 상당히 커지고 관리하기 어려워질 수 있다)

 

참고자료

 

 

https://lyk00331.tistory.com/83

 

파일 업로드 취약점 | 악성코드 배포 | 보안 방법

파일 업로드(File Upload) 취약점이란? 파일 업로드 기능이 존재하는 웹 사이트의 확장자 필터링이 미흡할 경우, 공격자가 악성 파일을 업로드하여 시스템을 장악할 수 있는 취약점이다. 악성 스크

lyk00331.tistory.com

https://velog.io/@munang/%EC%9B%B9-%EC%89%98

 

웹 쉘 Web shell

웹쉘이란?웹쉘은 공격자가 원격에서 웹서버에 명령을 수행하도록 올린 스크립트 파일이다. 웹서버의 피해 공격 중 90% 가량이 웹쉘이 발견된다. 웹쉘을 통해 관리자 권한을 획득 후 웹 페이지의

velog.io

https://m.blog.naver.com/nms200299/221727086492

 

웹해킹 이론 : 파일 업로드 취약점 (웹쉘)

취약점 개요 웹 사이트에서 파일을 업로드할 때, 서버 측의 부주의로(확장자 체크, 바이너리 체크 미흡) 발...

blog.naver.com

https://owin2828.github.io/devlog/2020/01/09/etc-2.html

 

[보안] 파일 업로드 취약점 - 낮코밤코

1. 파일 업로드 취약점이란 주로 게시판 등에서 파일 업로드 기능을 악용하여 시스템 권한을 획득할 수 있는 취약점을 의미한다. 나처럼 보안에 대한 지식이 얕은 사람은 위의 문장이 생소하게

owin2828.github.io

 

'TIL > 개념정리' 카테고리의 다른 글

@keyframes - animation 사용법  (0) 2022.07.14
styled-components 문법 정리  (0) 2022.07.13
CSRF와 방어 방법이 무엇인지  (0) 2022.07.09
XSS - 크로스 사이트 스크립팅  (0) 2022.07.05
중첩 라우팅 / router hook  (0) 2022.07.04
복사했습니다!