본문 바로가기

Web Hacking/H4CKING GAME

[H4CKING GAME] Smuggling

 

1-day 분석을 하기로 마음 먹고 주제를 Http Request Smuggling으로 잡았는데 공부하다 보니 전에 Smuggling 문제가 있던게 생각나서 풀어보려한다.

해당 워게임 사이트는 팀 H4C에서 운영하는 사이트라고한다.

 

서버에 접속하면 위와 같은 문자열만 리턴하고 끝이다. 문제에서 주어진 코드 파일을 살펴보자..

 

 

main.py


main 코드이다.

from flask import Flask

app = Flask(__name__)

flag = open("FLAG").read()

@app.route('/', methods=['GET', 'POST'])
def main():
    return 'Hello! Our Team is TeamH4C'

@app.route('/guest', methods=['GET', 'POST'])
def guest():
    return 'ref. jfrog'

@app.route('/flag', methods=['GET', 'POST'])
def get_flag():
	return flag


if __name__ == '__main__':
    app.run()

 

코드를 보면 /flag에 접근하면 flag를 얻을 수 있다. 접근해보자.

 

403에러가 뜬다.

 

 

haproxy.cfg


global
    daemon
defaults  
    mode    http
    timeout  client  50000
    timeout  server  50000
    timeout  connect 50000
frontend web 
    bind *:8000  
    http-request deny if { path_beg /flag }
    http-request deny if { path_beg // }
    default_backend websrvs
backend websrvs 
    http-reuse always
    server srv1 flask:5000

 

해당 서버는 haproxy 서버를 사용하는 것 같다. 위 파일을 haproxy 서버 설정 값들인 것 같다. haproxy 서버를 통해 front-end 서버와 back-end 서버를 구분해주는 것 같다. 위 파일에서 /flag에 대한 요청은 거부되고 있으므로 이를 우회 해야된다. smuggling 문제이므로 패킷 변조를 통해 접근해보자.

 

문제 도커 파일을 보면 haproxy 2.2.16을 사용하기 때문에 해당 취약점이 보고된 내용을 구글링하여 접근하면 될 것 같다.

 

CL.CL 취약점을 이용해서 익스를 했다!