본문 바로가기

Security

[Webhacking] server side template injection (SSTI)

반응형

웹 어플리케이션에 동적인 내용을 HTML로 출력할때 미리 정의한 Template에 동적인 값을 넣어 출력하는 Template Engine을 사용하기도 함.

사용자 입력이 Template source에 들어가게 된다면 악의적인 입력으로 개발자가 의도하지 않은 임의의 Template 기능 실행 가능.

대부분의 Template Engine에서 {{2*3}}, ${2*3} 과 같은 문법을 지원.

 

...
class Secret(object):
    def __init__(self, username, password):
        self.username = username
        self.password = password
secret = Secret('admin', secret_password)
...
@app.route('/board')
def board():
    title = request.form['title']
    content = request.form['content']
    template = '''<html>
    <body>
        <h3 id="title">{{title}}</h3>
        <h3 id="content">%s</h3>
    </body>
</html>''' % content
    return render_template_string(template, title=title, secret=secret)

 

위와 같은 코드에서 content는 입력받은 값을 그대로 source에서 출력하고 있음.

template 엔진을 통해 객체의 변수를 출력 가능.

반응형

'Security' 카테고리의 다른 글

[Webhacking] server side request forgery (SSRF)  (0) 2021.09.24
[Webhacking] path traversal  (0) 2021.09.24
[Webhacking] Command Injection  (0) 2021.09.23
[Webhacking] SQL Injection  (0) 2021.09.20
[Webhacking] server-side basic  (0) 2021.09.20