File upload 취약점
개요
파일 업로드 취약점이란 웹에서 서버로 파일을 업로드할 때 시스템 명령어를 실행할 수 있는 악성 스크립트를 업로드 하는 것으로 성공하게 된다면 시스템 권한을 획득하거나 정보 탈취 등의 문제가 발생할 수 있습니다.
악성 스크립트 파일들을 주로 웹쉘이라고도 하며 주로 웹서버에서 명령을 수행하도록 만들어진 스크립트 파일입니다. 그렇다보니 웹서버의 피해 공격 중 상당수에서 웹쉘들이 사용되었다고 하며 이후 클라이언트 공격에도 취약해지는 등 다양한 문제가 야기될 수 있습니다.
https://www.dailysecu.com/news/articleView.html?idxno=126259
공격 방식
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
https://velog.io/@munang/%EC%9B%B9-%EC%89%98
https://m.blog.naver.com/nms200299/221727086492
웹해킹 이론 : 파일 업로드 취약점 (웹쉘) 취약점 개요 웹 사이트에서 파일을 업로드할 때, 서버 측의 부주의로(확장자 체크, 바이너리 체크 미흡) 발… blog.naver.com