-
File Download 취약점 실습IT/웹 해킹 2024. 2. 21. 17:08
[이 블로그는 해킹 공부하면서 가볍게 정리용으로 기록 및 내 생각을 끄적여 두기 위한 블로그(라 쓰고 일기라 읽는)이다.]
- 목차
- CTF 문제 및 시나리오
- 실습
1. CTF 문제 및 시나리오
파일 다운로드를 할 때 저장경로를 보여주지 않으려고 download.php의 파일로 파일을 다운로드할 때 발생할 수 있는 취약점을 발견하여 웹 서버에 있는 모든 소스코드를 다운로드할 수 있고 그중에서 플래그를 찾을 계획이다.
* 파일 다운로드 취약점은 파일을 실행할 수는 없다 하지만!!! 소스코드와 같은 중요한 정보를 다운로드할 수 있는 아주 강력한 취약점임에는 틀림없다.
2. 실습
1) 게시판에 게시글을 작성하며 파일 하나를 업로드 한다.그리고 게시글을 읽은 다음에 파일 다운로드 버튼의 경로를 복사 후 URL에 붙여 넣기 한다. 이때 이 filepath의 파일 경로로 접근을 하면 되지 않는다.
2) burp suite 를 통해 게시글을 읽었을 때 패킷을 보면 정확한 경로는 /files/abc/webshell.jpeg 인 것을 볼 수 있다.
3) 그럼 현재 download_1과 abc 디렉토리 사이에는 files가 있다는 것을 확인했고, download_1과 files 디렉토리 사이에는 download.php 파일이 있는 게 확인이 되었다. 이때 download.php의 소스 코드를 다운로드하기 위해서는 /../ (현재경로+이전경로)를 입력하여 가져올 download.php를 입력해 보자 [현재 download_1/. <<- 이곳에 php 소스코드 파일들이 존재해 있음]
파일이 다운로드 되었고 download.php 소스코드를 확인할 수 있다.
4) download.php 파일에는 아무런 정보가 없어 이것저것 다운로드를 하다가 index.php(메인페이지)를 다운로드하였더니 플래그를 획득해 버렸다!
파일 다운로드 취약점 대응방안
- DB에서 파일명과 경로를 관리한다
- 다운로드 디렉토리를 권한 체크하여 다운로드할 수 있게 만든다.
- 파일명, 경로를 난독화하여 관리한다. (파일경로+파일이름 조합 파일 객체 생성)
- ../ 와 같은 특수문자를 필터링하여 받는다.
- 시퀀스 넘버를 적용하여 무슨 파일인지 모르게 관리한다.
'IT > 웹 해킹' 카테고리의 다른 글
인증과 인가(Authentication and Authorization) (0) 2024.02.22 File Download 취약점 실습2 (0) 2024.02.21 File Upload 취약점 실습2 (LFI=Local File Include) (0) 2024.02.21 File Upload 취약점 실습 (0) 2024.02.21 File Upload 취약점 및 Webshell (0) 2024.02.20