다시 한번 정리해 보면 File Upload 공격은 공격자가 원하는 임의의 파일을 업로드할 수 있는 공격이다.
File Upload 취약점이 발생하는 이유는 업로드 되는 파일을 검증하지 않기 때문이다.
File Upload 공격 시나리오
1. 웹 쉘
공격자가 올린 파일이 어디에 올라가고 어디에서 실행이 되는지 확인을 해야 한다.
POC 코드를 올려서 확인을 한다.
2. 도스 공격
서버에 많은 파일 또는 크기가 큰 파일을 올려서 서버의 자원을 고갈시킨다.
3. 디페이스 공격
웹 서버의 index.html을 변경시켜서 웹 서비스를 방해
4. 페이지 변조(피싱)
사이트를 변조시켜 공격자가 서버 사용자들의 정보를 탈취한다.
5. 악성코드 유포
XSS를 이용하여 악성코드를 유포시킨다.
File Upload 대응 방법
1. 업로드되는 파일을 DB에 저장한다.
업로드 되는 파일이 웹 서버가 아닌 DB에 저장이 되면 쉘 코드가 실행이 불가능하다.(다만 DB에 서버 측 코드를 실행할 수 있는 컴파일러가 설치되어 있으면 안 된다.)
CLOB : 사이즈가 큰 파일을 DB 외부에 파일로 저장하기 위한 타입
BLOB : 바이너리 형식의 데이터를 DB 외부에 저장하기 위한 타입
CLOB / BLOB TYPE을 이용한다.
2. NAS를 이용한다.
LAN으로 접근하는 외장 하드 디스크(업로드되는 파일을 DB에 저장시켜서 웹 서버와 분리시킨다.)
3. 파일 검증
확장자 검증, 파일 시그니쳐 검증, MIME TYPE 검증 구현
이미지 웹 쉘
*.png, *.jpg 파일을 올려서 웹서버를 장악한다.
1. .htaccess 설정 파일 수정
파일의 확장자를 우회 설정하여 이미지 쉘을 올리는 것처럼 만든다.
2. LFI(Local File Inclusion)
include를 이용(모듈화 시키기)
파일을 업로드하지 않고도 쉘을 얻을 수 있다.
3. RFI(Remote File Inclusion)
외부에서 소스를 가져와서 include 하여 실행을 시킨다.
File Download
공격자가 원하는 임의의 파일을 다운로드할 수 있는 공격이다.
웹 서버의 코드를 탈취하거나 DB 계정을 탈취할 수 있다.
File Download 대응방안
1. File Upload와 마찬가지로 DB에 파일을 올리게 한다.
2. 디렉터리 트레버져를 막는다.(../../../)
하지만 이 방법은 우회가 가능한 방법이다.
'공부 > 해킹 과제' 카테고리의 다른 글
주통기반 취약점 항목 별 공격 시나리오 (0) | 2023.07.06 |
---|---|
인증/인가 취약점 (0) | 2023.06.16 |
File Upload 실습 (0) | 2023.06.08 |
File Upload (8) | 2023.06.02 |
SSRF 실습 (0) | 2023.06.01 |