File Upload
- 파일 업로드 취약점(File Upload Vulnerability)은 웹 페이지(게시판 등)의 파일 업로드 기능을 이용하여 일반적으로 허용된 파일 이외에 악의적인 영향을 끼치는 스크립트 파일(Web Shell)을 업로드할 수 있는 취약점을 말합니다.
- 취약점을 이용해 웹 쉘을 업로드하고, 업로드된 웹 쉘의 경로에 접근한 후, 웹 쉘을 실행하여 시스템 명령어를 사용하는 식으로 진행됩니다.
Low Level
소스 코드
Low Level의 소스 코드는 특별한 필터링 없이 파일 업로드를 허용하고 있으며,
업로드된 파일은 root/hackable/uploads경로에 저장됩니다.
실습
아무런 필터링도 존재하지 않기 때문에 웹 쉘을 바로 업로드할 수 있습니다.
이후 표시된 경로로 접근하여 웹 쉘을 실행할 수 있습니다.
Medium Level
소스 코드
Medium level에서는 업로드 가능한 확장자를 jpeg와 png으로,
파일 크기를 100000으로 제한했습니다.
실습
업로드하려는 웹 쉘의 확장자는 PHP이기 때문에
확장자가 jpeg, png와 같지 않아 업로드되지 않습니다.
프록시 툴을 사용해 업로드 패킷이 도착하기 전
패킷을 가로채 웹 쉘을 허용된 형식으로 속인다면
문제없이 업로드가 가능합니다.
High Level
소스 코드
strlower() 함수를 사용해 모두 소문자로 만들어 대소문자 구분을 없애고
getimagesize() 함수로 이 파일이 이미지인지 한번 더 검증하는 절차를 가집니다.
이 보안 수준에서는 파일 업로드 취약점을 노린 공격만으로는 시도할 수 없고
LFI(Local File Inclusion 공격을 함께 사용해야 합니다.
Impossible Level
소스 코드
High level의 보안 수준을 그대로 이어받고
추가적으로 MD5알고리즘을 사용해 파일명을 암호화하여 저장합니다.
이렇게 파일명이 암호화되어 저장되면
저장된 파일의 이름을 모르기 때문에 웹 쉘에 접근하기가 힘들어집니다.
그리고 imagecreatefrom() 함수로 새로운 이미지를 생성하고 있습니다.
이 함수는 URL이나 파일을 받아 새로운 이미지를 만드는 함수입니다.
이미지만 취급하기 때문에 이외에 파일들은 모두 버려지게 됩니다.
참고홈페이지 취약점 분석 이야기 - https://webhack.dynu.net/?idx=20161221.001
칼리! 도커를 해킹하다 / 저자 문성원 검수 조정원
'공부 > 정보보안' 카테고리의 다른 글
버퍼 오버플로(buffer overflow) (0) | 2020.02.15 |
---|---|
제로 트러스트 보안 모델 (0) | 2020.02.03 |
[DVWA] CSP Bypass (0) | 2019.11.25 |
[Wargame.kr] QR CODE PUZZLE 문제 (0) | 2019.09.23 |
[Wargame.kr] login filtering 문제 (0) | 2019.09.16 |
댓글