File Upload
: 공격자가 임의의 파일을 업로드 하는 공격
취약점 발생 원인
:업로드 되는 파일 검증이 미흡
시나리오
1. 웹 쉘_
: 웹 쉘은 POC코드와 같이 테스트 하는 것. 리버스쉘은 탐지가 되기에 빠르게 해야함.
2. DOS공격
3.디페이스 공격
: index.html을 업로드해서 변조
4. 페이지변조 (피싱)
5. 악성코드 유포(xss)
대응방법
1. 업로드 되는 파일을 DB에 저장.
바이너리 파일로 저장
-> CLOB / BLOB
2. NAS에 파일을 저장
단, 이 서버는 php와 같은 웹 서버가 설치되면 안됨.
-> 업로드 되는 파일이 저장되는 서버를 웹서버와 분리
3. 파일 검증
- 확장자 검증
- 파일 시그니쳐 검증
- MIME TYPE 검증
**다른 확장자 실행 방법 (ex. 이미지 웹 쉘.)
1. .htaccess
2. LFI (Local File Inclusion)
Include : 모듈화.
include 요청시 파일을 include 한 뒤 실행. 이후 완성된 페이지를 전송.
즉, include된 파일을 실행한다는것이 위험.
img 파일에 <?php system($_GET['cmd'] ?>를 삽입한 뒤 확장자를 포함한 나머지 요소를 그대로 둔 뒤에 업로드.
이후 이 img파일을 include하면 실행이 가능.
--LFI로 파일을 업로드 하지 않고도 쉘을 얻을 수 있음.
> log파일
access_log에 웹쉘 코드를 삽입
get으로 코드를 전송하면 로그에 삽입됨.
이 파일 위치는 정보누출 취약점 혹은 기본 경로를 찾아야함.
3. RFI(Remote File Inclusion)
원격에서 파일을 가져와 include하는 경우
그냥 공격 서버에 웹쉘을 저장한 뒤 이를 include하면 됨.
File Download 취약점
: 공격자가 원하는 임의의 파일을 다운로드 하는 공격.
웹서버에 파일을 올려놓고 이를 웹서버에 직접접근하여 다운로드하는경우
이 경우 다운로드 취약점이 발생하지 않음
다만 이는 인가 취약점이 발생.
파라미터에 경로(이름)를 지정하게 됨. 이때 이 이름이나 경로에 ../과 같이 순회 문자를 사용할 경우 원하는 파일 다운로드가 가능.
-->>소스코드/DB계정 정보 취득
다운로드 취약점 찾는 팁.
1. 다운로드 스크립트가 있는가?
2. 파라미터로 파일 이름/경로를 받는가?
ex) ?idx=2
단, SQLi가 있을 경우 이 파라미터를 union select 등으로 변조하여 파일명을 변조.
대응 방안
1. DB에 파일 업로드
2. NAS
3. Directory Treversal 막기.
'Nomaltic Hacking Study' 카테고리의 다른 글
2023.06.29 (0) | 2023.06.29 |
---|---|
2023.06.15 (0) | 2023.06.15 |
2023.06.01 (0) | 2023.06.01 |
2023.05.25 (0) | 2023.05.25 |
2023.05.18 (0) | 2023.05.18 |