SSTI
💣

SSTI

Description
ServerSide Template Injection
category
WebHacking
Tag
WEB Hacking
Date
Nov 15, 2023 11:48 AM
 

SSTI란?

Server-Side Template Injection의 약자이다. Template에서 동적으로 사용할 때 사용하는 코드를 include 시켜 원하는 액션을 수행하도록 하는 공격이다. 발생하는 위치에 따라 SSTI 또는 CSTI라고 한다. 대부분 SSTI와 RCE를 역어 공격을 수행한다.
 
💡
RCE란? Remote Code Execution의 약자이다. 원격지에서 임의의 공격 명령 실행이 가능한 취약점이다.

Detect

SSTI는 언어, 프레임워크에 따라 종류가 많다. 따라서 Template에 맞는 문법을 사용해서 Return 결과를 확인해야 한다.
 
💡
Jinja는 Python전용 웹 템플릿 엔진이다.
 
예제는 Jinja Template의 경우이다.
GET /test?hi={{5*5}} HTTP/1.1
 
미취약
{{5*5}}
 
취약
25
 

SSTI cheat sheet

CSTI

다음은 Vue의 예제 코드입니다.
<script src="https://unpkg.com/vue@3"></script> <div id="app">{{ message }}</div> <script> Vue.createApp({ data() { return { message: 'Hello Vue!' } } }).mount('#app') </script>
 
{{ }} 로 감싸진 부분은 템플렛의 변수를 표시하거나, 자바스크립트 표현식을 실행 할 수 있습니다. 따라서 공격적인 입력이 들어가게 되면 Template Injection 취약점이 발생할 수 있습니다.
 
notion image
{{_Vue.h.constructor("alert(1)")()}}