Iriton's log

[Dreamhack] Lv.2 blind-command 본문

WebHacking/WarGame

[Dreamhack] Lv.2 blind-command

Iriton 2024. 9. 30. 14:47

 

 

blind-command

Read the flag file XD Reference Web Hacking

dreamhack.io

 

 

페이지 분석


문제 페이지에 접속하면 보이는 화면이다.

cmd 파라미터를 통해서 명령어를 실행할 수 있나? 싶어서 ls를 먼저 보냈다.

 

문자열을 그대로 출력한다.

 

 

코드 분석


코드는 너무 간단하다.

cmd 값이 있을 때 기준, 요청이 GET 메소드인 경우 조건문 아무런 동작을 하지 않고

다른 메소드일 경우 시스템 명령어를 실행한다.

 

URL을 통해 ?cmd=ls를 추가했을 때 HTTP 요청 메소드가 GET 메소드이기 때문에 실행되지 않았다.

/ 경로에서 methods=['GET']으로만 정의되어 있다.

 

윈도우에서는 curl 대신 Invoke-RestMethod를 사용한다.

웹 서버에 POST 메소드로 전달하는 것도 POST 메소드가 정의되어 있지 않아서 불가하다.

 

html 수정으로 POST 메소드에 해당하는 폼을 만들어도

거부된다...

일단 POST는 안 되는 것 같다.

 

서버에서 허용되는 메소드를 따로 볼 수 있는 OPTIONS 메소드를 활용해 보자.

GET, OPTIONS로는 접근할 수 없으니, HEAD 메소드로 접근해야 한다.

 

HEAD 메소드란?

리소스를 GET 메소드로 요청했을 때 응답으로 오는 헤더 부분만 요청하는 메소드이다.

 

불필요한 웹 Method 허용 취약점 문제인 것 같다.

 

HEAD 메소드로는 결과값을 볼 순 없지만, sleep 5를 인자값으로 넣으면 실제로 5초 뒤에 응답이 온다.

명령어는 실행된다는 뜻이다.

 

윈도우 파워쉘로 접근하려니 번거로워서 리눅스 curl 명령어를 쓸 수 있는 웹 서버로 직접 접근하기 위해 버프스위트를 키고 

 

dreamhack-tools

 

tools.dreamhack.games

 

드림핵에서 제공하는 기능을 이용한다.

웹훅 사이트처럼 임의의 웹 서버를 생성해서 로그를 볼 수 있다.

 

버프스위트에서 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.2 web-ssrf  (0) 2024.09.25
[webhacking.kr] old-34  (0) 2024.05.29
[webhacking.kr] old-27  (1) 2024.05.29
[Dreamhack] Beginner: pathtraversal  (0) 2024.05.22
[Dreamhack] Beginner: Flying Chars  (0) 2024.05.01
Comments