使用 Fuzztag 一键爆破反序列化链

文章介绍了Yakit新增的Yso-Java-Hack功能,以及Fuzztag中新增的标签用于简化反序列化漏洞检测和手工测试,包括命令执行、URLDNS、DNSLOG、Header回显等功能,帮助用户根据环境判断和利用漏洞进行攻击或内存马植入。
摘要由CSDN通过智能技术生成

使用 Fuzztag 一键爆破反序列化链

背景

Yakit 新增的 Yso-Java-Hack 功能可以让我们生成反序列化利用的 payload ,通过图形化的方式简化了生成 payload 的过程,但发包过程由于需要针对不同的目标站点对 payload 进行编码,所以这部分留给了用户,自行通过Yak进行编码和发包。
......还是要写代码。在@rr师傅的建议下,我为 Fuzztag 增加了几个新标签,方便一键爆破利用链。

新增标签

新增了几个标签:yso:exec、yso:urldns、yso:headerecho、yso:bodyexec、headerauth、yso:dnslog,方便大家进行反序列化漏洞的简单手工测试。如果需要更复杂的漏洞利用,可以使用 Yso-Java Hack 生成 hex 格式 payload ,然后使用 hexdec 标签在Fuzztag中调用。

命令执行

yso:exec标签用于命令执行测试,参数是需要执行的命令。这里介绍下命令执行链的分类,可以分为代码执行链和命令执行链,命令执行链是通过反射调用RuntimeExec执行的,而代码执行链可以加载任意java代码执行,所以代码执行链可以实现更多操作。

URLDNS

yso:urldns标签用于反序列化漏洞检测。参数是一个url,其原理是通过URL对象反序列化时触发dns查询。

DNSLOG

yso:dnslog标签用于dns出网的利用链爆破。它有两个参数,第一个参数是一个域名,第二个参数是域名前缀。第一个参数是必填参数,第二个参数是可选的,后面会介绍使用方法。原理上是通过InetAddress.getByName方法实现,与URLDNS链原理相同。

Header回显

yso:headerecho标签可用于不出网的站点反序列化漏洞检测,它支持tomcat和weblogic的header回显,它需要两个参数,分别是需要回显的header的key和value,例如{{yso:headerecho(flag|ok)}},需要注意的是,使用此标签需要设置header:Accept-Language: zh-CN,zh;q=1.9

Body回显

yso:headerecho标签用于不出网情况的命令执行回显,同样支持tomcat和weblogic的回显,它需要一个参数,例如这样{{yso:headerecho(whoami)}},同样的,使用此标签需要设置header:Accept-Language: zh-CN,zh;q=1.9

Header标志

由于header和body回显都需要设置header:Accept-Language: zh-CN,zh;q=1.9,每次设置比较麻烦,所以提供了一个新标签:headerauth,会自动生成Accept-Language: zh-CN,zh;q=1.9,使用时可以这样用{{headerauth}}

实战演练

思路分析

在开始靶场测试前先分析下测试流程。首先要判断出目标站点是否有反序列化漏洞,再爆破反序列化利用链,得到一条可以代码执行或命令执行的链,这个过程需要想办法得知是否命令执行成功了。最后利用这条链完成后续攻击。
总结下流程大概是这样的


环境搭建

在本地搭建一个测试环境,源码如下


这里已经给需要测试的师傅打包好了docker环境,docker运行下就可以:docker run -p 8080:8080 -itd --name="deserilize_test" z3r0ne0/deserilize_test

漏洞检测

先使用urldns检测目标是否存在漏洞


如图,未收到dnslog记录,说明可能目标机器不出网,那再继续测试下不出网回显。
使用yso:headerecho和yso:bodyecho时要注意下,需要在header中加入{{headerauth}}并设置并发数量为1,随机延迟的最大和最小值要大于1,原因是回显链的原理是遍历所有请求,并在header中有特殊标志的的请求的header中添加元素,这种方式在并发情况下会有问题。


注意看我设置的回显header的kay和value都很长,目的是可以通过header头相似度找出成功回显的请求


如图,CommonsBeanutils183NOCC链的相似度明显小了0.1,看下响应,发现成功回显。


再测试下命令执行回显,如图


CommonsBeanutils183NOCC和CommonsCollectionsK1的响应大小明显不正常,在详情中可以看到命令执行成功。

至此,我们就得到了 CommonsBeanutils183NOCC 和 CommonsCollectionsK1 两条可以代码执行的利用链了。

补充案例

如果回显失败,可能是不支持该中间件回显,那就可以使用yso:dnslog去爆破可代码执行的链,也有可能代码执行链用不了,那就使用yso:exec爆破命令执行链。
先试下yso:dnslog爆破,使用时注意,此标签第一个参数是域名,第二个参数是可选参数,如果设置了,那么每条链调用的域名将会是<参数2><编号>.<域名>


如图,收到dnslog,可以看到标号9和标号3对应的链触发了dnslog


在 Responses 的 Payloads 中可以看见对应的链为 CommonsBeanutils183NOCC 和 CommonsCollectionsK1。


如果还是收不到dnslog,那就只能用yso:exec试试反弹shell、在web目录写文件、延时等操作了,这里测试下写文件。


进入docker可以看见写入文件成功


打内存马

可以看另一篇文章 《Yso-Java Hack 进阶:利用反序列化漏洞打内存马》

总结

新增的几个tag几乎可以覆盖大部分反序列化漏洞利用场景了,师傅们使用时需要根据目标出网情况,是否有代码执行链去判断,可以参考前面的流程图。如果有可代码执行的链,可以根据出网情况选择打入内存马、直接上线cs或其它操作,需要打入内存马时可以使用 Yso-Java Hack 直接生成hex格式的payload,然后使用hexdec标签调用就可以了。

Yak官方资源

Yak 语言官方教程:
https://yaklang.com/docs/intro/
Yakit 视频教程:
https://space.bilibili.com/437503777
Github下载地址:
https://github.com/yaklang/yakit
Yakit官网下载地址:
https://yaklang.com/
Yakit安装文档:
https://yaklang.com/products/download_and_install
Yakit使用文档:
https://yaklang.com/products/intro/
常见问题速查:
https://yaklang.com/products/FAQ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值