• SEO文章推广! 合作联系qq:122325244 正式全面改版 !免费SEO地址:https://www.seozhan.cn/tool 站长QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏SEO站长博客吧

Nessus插件“武器化”教程

脚本编程 SEO站长博客 3个月前 (08-01) 46次浏览 未收录 0个评论

摘要

   概述

在近期的一次内部渗透测试中,我们需要利用一个 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:【下载地址一】【下载地址二】 weinxin


SEO站长博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Nessus插件“武器化”教程
喜欢 (0)
[h4ck3st@126.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址