웹해킹

SSTI 취약점이란 무엇인가

jiwonniii 2026. 3. 19. 11:35

연합 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