反序列化、类加载、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 实例,攻击流程如下
-
在 vps 启动一个 yak 引擎
yak grpc --host 0.0.0.0
,Yakit 端输入服务器地址和端口(默认8087),连接 -
打开Yakit的端口监听器,监听一个端口,以 8086 为例
-
启动反连服务器并配置恶意类为 TCPReverseShell ,主机填 vps 的 ip ,端口填上面监听的 8086 ,点击应用
-
打开 webfuzzer,发送 Payload
如图,反连列表中可以看见成功收到 LDAP 和 HTTP 请求,说明目标成功加载了恶意类(如果只收到 LDAP 请求,没有 HTTP 请求,可能是目标未开启
com.sun.jndi.ldap.object.trustURLCodebase )
端口监听器收到了目标机器的连接
Shiro测试
使用vulfocus/shiro-CVE-2016-4437镜像搭建环境,启动Yakit
打开Yso-Java Hack
利用链选择CommonsBeanutils1
恶意类选择RuntimeExec,填写命令,生成Yak代码
编写Yak脚本
执行后进入容器看见/tmp目录下多了111文件,利用成功
总结
有些Java漏洞的利用太繁琐了,需要java环境、多种工具配合使用、还要在 VPS 上看回显、记各种命令…
对比之下 Yakit 真的太好用了!本次更新的两个功能基本上可以解决大部分Java漏洞利用的场景,希望师傅们多多使用,欢迎提出意见。
插件新功能速递
插件可以申请修改他人的插件啦!作者同意修改后,插件协作者也会增加你的署名噢~
插件仓库—下载—编辑—提交申请内容,只需几步轻松完成。
提交修改以后,可在“日志”查看修改记录,以及作者审核结果。
为了帮助作者更好审核插件,贴心提供了插件源码的对比功能,一眼就可看出修改内容。
往期推荐>>
插件分析|Yaklang SQL Injection 检测启发式算法
CVE-2020-2551 深入 IIOP 检测与 Non-Java(Yak) 利用
Low Code, Full Turing: Yaklang 分布式引擎 SaaS 化
原文始发于微信公众号(Yak Project):新功能:史上最好用的反连&JavaHack,安全能力基座强化ing