Home [Dreamhack] simple-ssti 해설
Post
Cancel

[Dreamhack] simple-ssti 해설

문제 특징

SSTI 기법을 활용한 해킹

난이도: Lv.1

카테고리: 웹해킹


문제 구조

문제파일구성

1
2
/
└── app2.py

주요 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#app2.py

@app.route('/')
def index():
    return render_template('index.html')

@app.errorhandler(404)
def Error404(e):
    template = '''
    <div class="center">
        <h1>Page Not Found.</h1>
        <h3>%s</h3>
    </div>
''' % (request.path)
    return render_template_string(template), 404

이 문제는 Flask 웹 어플리케이션 서버의 특성/취약점을 활용한 문제이다.

풀이

SSTI란?

SSTI (Server-Side Template Injection, 서버 사이드 템플릿 인젝션) 는 사용자 입력이 서버의 템플릿 엔진에서 코드로 실행되어 버리는 취약점입니다.

경로에 Jinja2 명령어 넣기

이 웹 서버는 Flask라는 라이브러리를 통해 만들어졌고, 이 라이브러리는 Jinja2라는 템플릿 엔진을 쓴다. Jinja2의 특성은 ``안의 값을 계산하여 가져온다는 점이다. 따라서 존재하지 않는 주소에 접속했을때, 404오류와 함께 해당 경로를 띄워주는 이 사이트에서 경로를 /로 설정하고 이 속에 페이로드를 작성하는 것이다.

페이로드

http://타겟주소/

정답

DH{6c74aac721d128c637eab3f11906a44b}