Search

파일 업로드 이론

카테고리
[이론] 웹 공격위협
상태
완료
게시일
2024/04/25
태그
웹, 웹 해킹, 파일 업로드

파일 업로드 취약점이란?

공격자가 실행 가능한 언어로 작성된 공격 프로그램을 업로드한 후 원격으로 해당 파일에 접근하여 실행 시키는 취약점

취약성 및 위험성

앱의 개발, 운영환경과 동일한 언어로 작성된 악성파일을 웹 서버 측에 업로드
원격으로 해당 파일에 접근하여 실행시키는 취약점
Webshell등의 파일을 이용한 시스템 장악 목적

원인 분석

악성 코드 업로드 허용 파일 업로드 어플리케이션의 문제 웬 서버로 위험한 파일 업로드
업로드 된 파일 실행 업로드 파일 관리 및 설정상의 문제 악의적인 페이지 실행

우회기법

대소문자 우회 공격
확장자를 비교할 경우 대소문자를 무시한 문자열 비교를 해야 함
대소문자 혼합도 시스템에서는 인식하기 때문에 모든 가능한 문자 조합에 대해 필터링 해야함 ex) .aSp, Jsp, phP, eXe 등
확장자 연장 우회 공격
확장자 필터링을 조건문자 ’.’ 를 기준으로 앞쪽부터 유효한 파일인지 필터링 하게 되면 공격받을 수 있음
확장자 필터링을 조건문자 기준으로 맨 마지막부터 해야함
특수문자 우회 공격
종단문자를 이용한 우회 공격
%00, %ZZ, %09, %13
예시)
attack.asp → attack.asp%00.txt 필터링을 가장 마지막 (.) 기준으로 했을때 확장자가 txt 이므로 필터링 우회 시스템 실행 시 종단문자 기준으로 확장자 인식 (확장자 → asp)
세미콜론을 이용한 우회공격
세미콜론을 포함한 웹 페이지 요청 시 파싱 대상이 세미콜론 앞쪽만 인식해 발생하는 취약점
PUT 메서드를 이용한 공격
PUT 메서드를 이용해 서버에 파일을 직접 올릴 수 있음

업로드를 성공했다면, 어떻게 실행시켜야할까?

1) 업로드한 악성파일이 (웹 서버에서) 어떤 위치에 저장되어있는지 경로를 확인

⇒ Burp suite로 다운로드를 이용해서 해당 다운로드 로직을 분석 ⇒ /demoshop/shop_board/shop_download.asp?strFileName=webshell.jpeg.asp&f_path=upload_file
strFileName = 파일명
f_path = 업로드 된 파일의 경로

2) 실제 경로를 유추

유추 불가

⇒ /demoshop/shop_board/~ ~ ~/upload_file/webshell.jpeg.asp ⇒ /demoshop/shop_board/upload_file/~ ~ ~/webshell.jpeg.asp

유추 가능

⇒ /demoshop/shop_board/upload_file/webshell.jpeg.asp ⇒ /demoshop/upload_file/webshell.jpeg.asp ⇒ /upload_file/webshell.jpeg.asp

유추 성공하여 해당 파일에 접근 성공

파일이 업로드 되는 위치를 알 수 없는 경우 or

파일의 이름을 임의로 변경하여 저장하는 경우 ⇒ 보안 위협으로 보기 어렵다

test.txt ⇒ abc1231235.txt 이런 식으로 파일의 이름을 바꾸는 경우

1.
파일을 다시 다운로드 했을 때 임의로 변경한 파일 이름으로 다운로드 된다
2.
파일을 다시 다운로드 했을 때 원래 파일 명으로 다시 복원되어 다운로드 됨 ⇒ 분명히 원본 파일 이름과 임의로 바꾼 파일의 이름을 맵핑해서 어딘가에 저장했을 것이다 ⇒ 높은 확률로 DB 에 저장했을 것이다 ⇒ SQLi 취약점을 확인하여 원본-변경 파일 확인 후 실행 시도

대응방안

파일 업로드 필드를 대상으로 특수문자 필터링 규칙 적용
화이트리스트, 블랙리스트 활용
업로드 파일을 위한 디렉토리에는 실행설정을 제거(웹서버)
업로드 파일을 위한 전용 디렉토리를 별도로 설정
httpd.conf와 같은 웹서버 데몬 설정파일에서 리행설정을 제거하여 Server Side Script가 업로드가 되더라도 웹 애플리케이션에서 실행되지 않게 환경설정
첨부파일의 확장자 필터링 처리 (Server side script로 구현해야한다)