Iriton's log
[Dreamhack] Lv.2 blind-command 본문
페이지 분석
문제 페이지에 접속하면 보이는 화면이다.
cmd 파라미터를 통해서 명령어를 실행할 수 있나? 싶어서 ls를 먼저 보냈다.
문자열을 그대로 출력한다.
코드 분석
코드는 너무 간단하다.
cmd 값이 있을 때 기준, 요청이 GET 메소드인 경우 조건문 아무런 동작을 하지 않고
다른 메소드일 경우 시스템 명령어를 실행한다.
URL을 통해 ?cmd=ls를 추가했을 때 HTTP 요청 메소드가 GET 메소드이기 때문에 실행되지 않았다.
/ 경로에서 methods=['GET']으로만 정의되어 있다.
웹 서버에 POST 메소드로 전달하는 것도 POST 메소드가 정의되어 있지 않아서 불가하다.
html 수정으로 POST 메소드에 해당하는 폼을 만들어도
거부된다...
일단 POST는 안 되는 것 같다.
서버에서 허용되는 메소드를 따로 볼 수 있는 OPTIONS 메소드를 활용해 보자.
GET, OPTIONS로는 접근할 수 없으니, HEAD 메소드로 접근해야 한다.
HEAD 메소드란?
리소스를 GET 메소드로 요청했을 때 응답으로 오는 헤더 부분만 요청하는 메소드이다.
불필요한 웹 Method 허용 취약점 문제인 것 같다.
HEAD 메소드로는 결과값을 볼 순 없지만, sleep 5를 인자값으로 넣으면 실제로 5초 뒤에 응답이 온다.
명령어는 실행된다는 뜻이다.
윈도우 파워쉘로 접근하려니 번거로워서 리눅스 curl 명령어를 쓸 수 있는 웹 서버로 직접 접근하기 위해 버프스위트를 키고
드림핵에서 제공하는 기능을 이용한다.
웹훅 사이트처럼 임의의 웹 서버를 생성해서 로그를 볼 수 있다.
버프스위트에서 Intercept를 키고 Open browser로 전용 브라우저를 킨다.
여기에서 동작하는 것만 버프스위트에서 제어 가능하다.
우클릭해서 sent to Repeater로 하면 Repeater 기능을 사용할 수 있다.
아까 powershell로 확인한 것을 버프스위트 Repeater에서도 볼 수 있다
이제 curl 명령어로 드림핵 기능으로 생성한 웹 서버에 POST 메소드로 ls 명령어를 실행해 보자.
curl 명령어란 Client Url 이란 의미로 클라이언트에서 url을 사용해서 서버와 데이터를 송수신하는 명령어
-d 옵션: POST 메소드
해당 경로에 flag.py가 존재한다.
cat+flag.py로 플래그를 볼 수 있을 것이다.
'WebHacking > WarGame' 카테고리의 다른 글
[Dreamhack] Lv.3 CSP Bypass Advanced (3) | 2024.11.06 |
---|---|
[Dreamhack] Lv.3 XSS Filtering Bypass Advanced (1) | 2024.10.30 |
[Dreamhack] Lv.2 web-ssrf (0) | 2024.09.25 |
[webhacking.kr] old-34 (0) | 2024.05.29 |
[webhacking.kr] old-27 (1) | 2024.05.29 |