SSTI in Smarty

Hacking/Web 2019. 8. 31. 01:26
반응형

이번 문제는 SSTI(Server Side Template Injection) 문제이다.


어떤 템플릿인지 확인할 때에는 아래의 사진대로 진행하면 확인할 수 있다.


출처 - https://portswigger.net/blog/server-side-template-injection



먼저 어떤 템플릿을 사용하고 있는지 확인하기 위해 ${7*7}를 입력해보았다.

그 결과 $49가 떴다.


일단 7*7인 결과가 출력되어서 취약하다고 판단하여 a{*rootable*}b를 입력하였는데 ab가 출력되었다.


여기서 난 Smarty Template를 쓰는구나 판단하여 이에 대한 SSTI 기법을 찾아보았다.


가장 기본적으로 Smarty일 경우 php 태그를 이용하여 명령어를 실행시킬 수 있다.

그래서 아래와 같이 id를 출력시켜보았다.


{php}echo `id`;{/php}


하지만 다음과 같이 에러가 발생하였다.


일단 에러메시지를 통해 smarty임이 확실해졌지만 {php} 태그를 허용되지 않는다고 한다.

이에 따라 알아본 결과 php 태그를 허용하지 않는 옵션이 존재한다고 한다.

상세한 것은 다음 링크를 참고하자.


https://www.smarty.net/docs/en/advanced.features.tpl#advanced.features.security


그래서 다른 방식으로 진행을 해보았다.


아래의 링크를 참고하여 {include_php} 태그를 이용해보았지만, 이 경우는 다음과 같이 deprecated 되었다고 한다.

https://www.smarty.net/docsv2/en/language.function.include.php.tpl



그래서 다음으로 이와 비슷한 {include} 태그를 이용해보았는데 이를 통해 취약점이 leak되었다.



이를 통해 다음과 같이 FLAG를 획득할 수 있었다.




참고)

https://portswigger.net/blog/server-side-template-injection

https://www.smarty.net/docsv2/en/language.function.include.tpl

반응형

'Hacking > Web' 카테고리의 다른 글

[번역] Encoding Web Shells in PNG IDAT chunks  (0) 2019.09.25
XXE Injection  (0) 2019.08.31
Time Based SQLI payload  (0) 2019.08.30
SQLI Payload with python [post 방식]  (0) 2019.08.29
OS Command Injection Trick  (0) 2019.08.21
블로그 이미지

rootable

,