File Upload
공격자가 임의의 파일을 업로드할 수 있는 공격
여러 가지 코드를 올려서 취약점을 공격할 수 있지만 웹 쉘을 올려 서버를 장악하는 것을 초점으로 잡을 것이다.
웹 쉘은 공격자가 원격에서 웹서버에 명령을 수행하도록 올린 스크립트 파일이다.
따라서 File Upload 공격으로 웹 서버에 웹 쉘을 올리고 실행할 수 있게 된다면 공격자는 서버를 장악할 수 있게 된다.
가장 중요한 건 우리가 웹 서버에 실행할 수 있는 파일을 올릴 수 있어야 하고 그 파일이 업로드된 위치를 알고 실행할 수 있어야 한다.
웹 쉘을 올린 후 우리는 웹 브라우저로 올린 웹 쉘을 요청하게 되고, 이를 이용하여 소스코드를 탈취하게 된다.(DB를 탈취함)
또는 웹 쉘을 올린 후 Reverse shell을 연결시켜 킨다.
웹 쉘을 올리면 내가 올린 파일의 위치를 알아내야 한다.(파일 주소 복사, 개발자 도구로 경로 확인)
내가 올렸던 파일이 다운로드가 불가능한 경우나 경로를 확인하지 못하는 경우에는
SQL Injection을 이용하거나 HTML 소스코드의 주석을 살펴보면서 경로를 확인해 본다.
Bypass Trick(상황에 맞춰서 여러 가지를 사용해야 한다.)
1. Content-Type(데이터의 인코딩 타입을 알려줌)을 변경한다.
2. 업로드되는 디렉터리에서 실행 불가능한 경우
경로를 변경하여 다른 곳에 올린다.(디렉터리 트레버셜, URL 인코딩)
3. 블랙리스트 기반 필터링 우회(필터링된 단어를 안 쓰면 된다.)
pHp, phphpp, php5, jsp, jspx 등
4. 확장자 우회(실행하고자 하는 확장자가 마지막에 쓰여야 한다.)
test.png.php
test.php%00.png
test.php.png -> 의미가 없음(마지막으로 입력된 값으로 인식을 한다.)
이게 실행이 된다는 건 설정파일을 수정했을 때
EX) AddType application/x-httpd-php .1234 -> 1234라는 파일을 php로 실행해 주세요.
5. File 시그니처
시그니처 뒤에 웹 쉘 코드를 삽입한다.
File Upload 주의할 점
1. 실제 웹 쉘을 일단 올리지 않는다.
<?php echo "hi"; ?> 같은 코드를 올려서 실행되는지 확인해 본다.
-> 이러고 더 진행할지는 담당자한테 문의를 한다.
2. 업로드 테스트 파일 내역 정리하기
File Upload 공격 시 업로드했던 파일과 경로를 적어서 기록하고
모의 해킹 종료 시 삭제하고 담당자한테 삭제해 달라고 말하기
3, 다른 사람이 만든 웹 쉘 사용 금지(직접 만들기)
'공부 > 해킹 과제' 카테고리의 다른 글
File Upload 마무리 및 File Download (0) | 2023.06.10 |
---|---|
File Upload 실습 (0) | 2023.06.08 |
SSRF 실습 (0) | 2023.06.01 |
CSRF 1, 2, 3 문제풀이 (0) | 2023.05.30 |
CSRF와 SSRF (0) | 2023.05.26 |