概述
在近期的一次内部渗透测试中,我们需要利用一个Java两级反序列化漏洞。在这篇文章中,我们将告诉大家如何改造Nessus插件,因为该插件原本只能利用一个现有的RCE漏洞,但我们将教会大家如何通过该插件来利用这个漏洞,并在我们的攻击服务器上获取到反向shell。
可能很多同学都知道Java反序列化漏洞,但是两级反序列化漏洞却是近期才提出来的,而且跟Java反序列化漏洞有一些细微的差别。网上有很多关于Java反序列化漏洞的资源,所以我们就不再重复造轮子了,我们待会只介绍这两种漏洞之间的区别。
本文的主要目的是要告诉大家如何武器化Nessus插件,不过别担心,这里不需要涉及到逆向工程方面的知识。
我们所要利用的漏洞存在于一个Adobe ColdFusion Flex BlazeDS实例中,Flex使用了AMF((Action Message Format),它是Flash与服务端通信的一种常见的二进制编码模式,而这个实例使用了AMF3,这种格式不仅提供了很多新的功能,而且还包含了很多安全漏洞。
Nessus
在Nessus的一份报告中,我们找到了如下所示的漏洞:
在渗透测试的初始阶段,我们可以利用自动化工具/扫描器来寻找到简单的漏洞或过期的软件。从图中我们可以看到,Nessus可以通过发送自定义的Java对象来利用一个Java反序列化漏洞。也就是说,Nessus理应能够利用我们的目标漏洞。
可用的工具
请大家记住,我们要进行的是二级反序列化攻击,所以我们首先得满足下列要求:
1. 需要设置一个监听器,并携带我们的二级Payload。这个Payload可以是某种Empire one-liner,或其他你想要执行的远程命令。
2. 需要启动主Payload,其中包含的Payload可以让一个让目标服务器调用我们的监听器并获取二级Payload。在实际的漏洞利用过程中,我们并不是要通过命令来让目标用户下载Payload,如果要这样的话我们不就已经得到了一个RCE漏洞了吗?
虽然Ysoserial中包含了很多适用于该场景的工具,比如说JRMPListener和Marshalsec之类的,但是既然Nessus已经可以利用这种漏洞了,那我们为什么不用“现成”的呢?
Nessus Payload
这一次渗透测试让我重新认识了Nessus,其实它不仅仅只是一款简单的漏洞扫描工具。Nessus使用了Nessus攻击脚本语言(NASL)来编码渗透测试插件,而这些插件代码是可以直接在系统中查看到的。
接下来,我们一起看看一看ColdFusion AMF反序列化插件,该插件所在目录为“/opt/nessus/lib/nessus/plugins/”。下面给出的是该脚本中最有意思的部分,注意其中的“amf_payload”:
现在你的第一反应可能是:“我们只需要修改这个脚本,并修改cb_address(回调地址)就可以了”。其实并没有那么简单,因为在每一个插件的头部,Nessus都会进行签名,如果代码发生了改变,Nessus就无法使用该脚本了。下面给出的是签名样本:
其实,我们可以直接用Python直接重写一次,这里我们可以使用一款名叫Marshalsec的AMF3 Payload生成工具。但是出于某种原因,生成的Payload并不能直接使用。后来我才发现,这个工具只能起到一定的辅助作用,下面给出的是该工具的输出结果:
有可能是我打开的方式不对,但是我拿这个Payload跟Nessus Payload进行对比之后,我发现Marshalsec的输出数据缺少了一些东西。下面给出的是两者之间的区别:
首先,Nessus Payload代码要长一些,而且更加完整。Marshalsec Payload开头为“0a0733”,这个数据可以在Nessus Payload代码的三分之一处找到。其次,这两者的结尾部分是完全不同的。我们可以看到,Marshalsec Payload中“000004d2”相当于Nessus Payload中的“mkdword(listening_port,端口1234)”。随后,Marshalsec写入的是“ffffffff”,而Nessus写入的是“f96a767b”。
Marshalsec可以帮助我们生成Payload的中间部分,而我们可以直接从Nessus Payload中直接抓取Payload代码中的“头”和“尾”,并将这两个部分和中间部分组合起来生成最终的Payload。
漏洞利用
首先,我们需要在攻击系统中设置两个监听器,这里可以使用JRMPListener+Empire Payload+ yososerial。然后,我们还需要一个Empire监听器来处理Empire代理的回调信息。
接下来,我们通过整合Nessus/Marshalsec payload来创建一个新的Python脚本:
在运行了漏洞利用代码之后,JRMPListener会收到通信连接,并用二级漏洞利用Payload予以响应:
接下来,Empire监听器将会收到“代理任务完成”等提示信息。
总结
我们在这篇文章中介绍了如何利用Nessus插件来帮助我们开发漏洞利用代码,Nessus提供的插件可以帮助我们轻松实现远程代码执行(RCE),但是它也有一定的功能限制。希望这篇文章可以帮助大家站在巨人的肩膀上看世界。
AdobeColdfusion BlazeDS Java Object Deserialization RCE:【下载地址一】【下载地址二】
猜你还喜欢
- 12-09Kali Linux字典生成工具Cewl使用全指南
- 01-12开源安全情报引擎Critical Stack使用入门
- 05-02分享一款基于Pocsuite的漏洞扫描系统
- 01-04经验分享 | Burpsuite抓取非HTTP流量
- 05-02Burpsuit结合SQLMapAPI产生的批量注入插件
- 11-25工具 | 手把手教你信息收集之子域名收集器
- 12-08burpsuite_pro_v1.7.11破解版(含下载地址)
- 11-05工具分享 | Maltego4.0.11中文汉化版
- 05-30最新BurpSuite 1.7.32 破解版[注册机]下载【无后门版】
- 07-29IBM Rational AppScan 9.0.3 (含下载)
- 随机文章
-
- WEB安全之SQL注入:oracle+jsp UTL_HTTP.request 反弹注入
- WEB安全之SQL注入:oracle 报错注入
- mysql密码暴力破解工具,含密码字典
- 成为一个黑客需要掌握哪些知识?
- 内网渗透之域关系探测神器:Bloodhound
- WEB安全之SQL注入:oracle+jsp 布尔型decode盲注入
- WEB安全之SQL注入:oracle +jsp 布尔型盲注入
- Web安全之SQL注入:oracle 延时注入
- Web安全之SQL注入:sqlserver延时注入
- Web安全之SQL注入:高级注入技巧 位移注入
- Web安全之SQL注入:dnslog无回显注入
- exp编写篇注入exp的简单编写
- 简单注入exp编写 python
- POST注入exp编写
- getshell exp编写
- 需要验证的exp编写
- 批量 getshell exp 编写
- 盲注入exp篇写
- 延时注入exp篇写
- 权限维持及后门持久化技巧总结
- 热门文章
-
- 八年专业安全团队承接渗透入侵维护服务
- Emlog黑客站模板“Milw0rm”发布
- Stuxnet纪录片-零日 Zero.Days (2016)【中文字幕】
- SQLMAP的注入命令以及使用方法
- 白帽故事汇:网络安全战士从来不是「男生」的专利
- 编辑器漏洞手册
- web安全之如何全面发现系统后台
- 常见Web源码泄露总结
- 渗透测试培训(第五期)
- 深入理解JAVA反序列化漏洞
- cmseasy前台无需登录直接获取敏感数据的SQL注入(有POC证明)
- 网站后台登陆万能密码
- 黑麒麟2016渗透培训系列教程
- 破解emlog收费模板“Begin”
- 那些强悍的PHP一句话后门
- Android平台渗透测试套件zANTI v2.5发布(含详细说明)
- 渗透工具BackTrack与KaliLinux全套视频教程
- Python列为黑客应该学的四种编程语言之一 初学者该怎么学
- CVE-2017-11882漏洞复现和利用
- 恶意程序报告在线查询工具
文章存档
- 2021年3月(4)
- 2020年12月(4)
- 2020年11月(5)
- 2020年10月(8)
- 2020年9月(8)
- 2020年8月(20)
- 2020年7月(47)
- 2020年6月(70)
- 2020年5月(41)
- 2020年4月(21)
- 2020年3月(120)
- 2020年2月(26)
- 2019年12月(12)
- 2019年11月(13)
- 2019年10月(17)
- 2019年9月(15)
- 2019年8月(13)
- 2019年7月(15)
- 2019年6月(15)
- 2019年5月(19)
- 2019年4月(23)
- 2019年3月(19)
- 2019年2月(11)
- 2019年1月(29)
- 2018年12月(24)
- 2018年11月(56)
- 2018年10月(79)
- 2018年9月(20)
- 2018年8月(17)
- 2018年7月(16)
- 2018年6月(7)
- 2018年5月(10)
- 2018年3月(6)
- 2018年2月(2)
- 2018年1月(11)
- 2017年11月(18)
- 2017年10月(6)
- 2017年9月(8)
- 2017年8月(7)
- 2017年7月(7)
- 2017年6月(15)
- 2017年5月(30)
- 2017年4月(7)
- 2017年3月(1)
- 2017年2月(4)
- 2017年1月(1)
- 2016年12月(3)
- 2016年11月(7)
- 2016年10月(6)
- 2016年9月(6)
- 2016年8月(102)
- 2016年7月(24)
- 2013年7月(1)
- 文章标签
-