日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

weblogic0638_Java安全之Weblogic 2016-0638分析

發布時間:2024/10/8 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 weblogic0638_Java安全之Weblogic 2016-0638分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java安全之Weblogic 2016-0638分析

0x00 前言

續上篇文的初探weblogic的T3協議漏洞,再談CVE-2016-0638, CVE-2016-0638是基于 CVE-2015-4852漏洞的一個繞過。

0x01 環境搭建

補丁環境搭建

這里采用上次的weblogic環境,但是在這里還需要打一個補丁包,來修復 CVE-2015-4852漏洞后,對該漏洞進行一個繞過。

CVE-2015-4852的修復補丁為p21984589_1036_Generic,由于在互聯網上并沒有找到該補丁包,只能通過官網下載,官網下載需要購買對應的服務,所以在這里找了p20780171_1036_Generic和p22248372_1036012_Generic這兩個補丁包,p21984589_1036_Generic是前面這兩個補丁包的集成。

因為前面搭建是docker的環境,需要將這兩個補丁包上傳到docker鏡像里面去,然后進行安裝。

命令整理:

docker cp ../p20780171_1036_Generic weblogic1036jdk7u21:/p20780171_1036_Generic

docker cp ../p22248372_1036012_Generic weblogic1036jdk7u21:/p22248372_1036012_Generic

docker exec -it weblogic1036jdk7u21 /bin/bash

cd /u01/app/oracle/middleware/utils/bsu

mkdir cache_dir

vi bsu.sh 編輯MEM_ARGS參數為1024

cp /p20780171_1036_Generic/* cache_dir/

./bsu.sh -install -patch_download_dir=/u01/app/oracle/middleware/utils/bsu/cache_dir/ -patchlist=EJUW -prod_dir=/u01/app/oracle/middleware/wlserver/

cp /p22248372_1036012_Generic/* cache_dir/

./bsu.sh -install -patch_download_dir=/u01/app/oracle/middleware/utils/bsu/cache_dir/ -patchlist=ZLNA -prod_dir=/u01/app/oracle/middleware/wlserver/ –verbose

重啟weblogic服務。

/u01/app/oracle/Domains/ExampleSilentWTDomain/bin/startWebLogic.sh

這里看到weblogic 2015-4852的payload打過去,并沒有像以往一樣,創建一個文件。那么就說明補丁已經打上了,已經能夠修復該漏洞了。這里是切換了JDK7u21和cc1的利用鏈依舊沒打成功。

遠程調試

接下來還是需要將里面的依賴包給拷一下。

mkdir wlserver1036

mkdir coherence_3.7

docker cp weblogic1036jdk7u21:/u01/app/oracle/middleware/modules ./wlserver1036

docker cp weblogic1036jdk7u21:/u01/app/oracle/middleware/wlserver/server/lib ./wlserver1036

docker cp weblogic1036jdk7u21:/u01/app/oracle/middleware/coherence_3.7/lib ./coherence_3.7/lib

下面來對該補丁進行一個繞過。

0x02 補丁分析

補丁作用位置:

weblogic.rjvm.InboundMsgAbbrev.class :: ServerChannelInputStream

weblogic.rjvm.MsgAbbrevInputStream.class

weblogic.iiop.Utils.class

在分析漏洞前,先來看到一下,上一個漏洞點的補丁是怎么進行修復的。

在這其實看到該resolveClass方法的位置,前面加多一個判斷。

前面判斷className是否為空,ClassName的長度是否為零,但是重點是ClassFilter.isBlackListed方法。

這里先打一個 CVE-2015-4852 exp過來,在該位置打個斷點,跟蹤進該方法,查看怎么進行防護。

跟進進來后,先別急著看后面的,因為下面還有一個靜態代碼塊,靜態代碼塊中代碼優先執行,需要先來查看靜態代碼塊內容。

這里前面有兩個判斷,判斷中都調用了兩個方法,來看看這兩個方法的實現。

一個是判斷是否為weblogic.rmi.disableblacklist,一個是判斷是否為weblogic.rmi.disabledefaultblacklist,寫法有點奇怪,可能是因為是class文件的緣故。

這兩個判斷為true的話,就會執行來到下一步調用updateBlackList將后面的一系列黑名單的類傳入到里面去。

updateBlackList該方法從名字得知,就是一個黑名單列表添加的一個方法,將黑名單內容添加到一個HashSet里面去。查看具體實現。

StringTokenizer 構造方法:為指定的字符串構造一個字符串tokenizer。

hasMoreTokens方法:返回與 hasMoreTokens方法相同的值。

nextToken 方法:返回此字符串tokenizer字符串中的下一個令牌。

總體的來理解就是構造一個字符串,然后遍歷里面的值,然后調用processToken方法將該值傳遞進去。

再來看到processToken方法。

里面判斷如果開頭是+號,則截取第一位后面的值添加到黑名單的這個HashSet里面去。如果是-號則移除,如果開頭不是前面的+ -號則直接添加到黑名單里面去。

到這里靜態代碼塊就已經分析完成了,總的來說其實就是將一些危險的類,添加到了黑名單里的一個步驟。

黑名單列表為:

+org.apache.commons.collections.functors,

+com.sun.org.apache.xalan.internal.xsltc.trax,

+javassist,+org.codehaus.groovy.runtime.ConvertedClosure,

+org.codehaus.groovy.runtime.ConversionHandler,

+org.codehaus.groovy.runtime.MethodClosure

返回剛剛的ClassFilter.isBlackListed方法進行跟蹤

最后這里調用了contains方法判斷 這個pkgName存不存在黑名單中,存在的話這里返回true。

返回到resolveClass方法可以看到這里為true,就會直接拋異常。

如果不存在于黑名單中,會來到else這個分支的代碼塊中調用父類的resolveClass方法。

而這一個點,只是過濾的一個點,下面來看看過濾的點都有哪些。

再來看下一個點MsgAbbrevInputStream的位置

這里也是調用ClassFilter.isBlackListed方法進行過濾,和前面的是一樣的。以此類推。

0x03 工具分析

在CVE-2016-0638里面用到了weblogic_cmd工具,github地址。

下面來看看該工具的實現,再談漏洞的繞過方式。

下載該源碼后,導入IDEA中,配置命令參數。

這里如果報錯找不到sun.tools.asm包的話,需要將Tools.jar包手動添加一下。在這我是使用jdk1.6進行執行的,使用1.8版本會找不到sun.org.mozilla.javascript.internal.DefiningClassLoader類

在Main的類中打個斷點進行執行。

前面都是代碼都是進行一個配置,這里斷點選擇落在該方法中。

選擇跟蹤

繼續跟蹤WebLogicOperation.blindExecute方法。

前面判斷了服務器類型,重點在SerialDataGenerator.serialBlindDatas方法中,payload由該方法進行生成。跟進查看一下該方法如何生成payload。

在這先選擇跟蹤blindExecutePayloadTransformerChain方法。

在這里又看到了熟悉的面孔,CC鏈的部分代碼。

回到剛剛的地方,跟蹤serialData方法

在這里就看到了CC鏈后面的一段代碼,這組合成了一條CC1利用鏈。但是在后面調用了BypassPayloadSelector.selectBypass方法來處理在原生的利用鏈中本該直接進行序列化的對象。

跟進該方法進行查看。

這里面還會去調用Serializables.serialize,依舊先跟蹤最里層的方法。

這傳入一個obj對象和out對象,進行了序列化操作。然后將序列化后的數據寫到out對象中。

執行完成后,返回上一個點,剛才分析得知返回的是序列化后的數據。所以在處調用streamMessageImpl方法傳遞的參數也是序列化的數據。

跟蹤查看。

內部是new了一個weblogic.jms.common.StreamMessageImpl的實例,然后調用setDataBuffer方法將序列化后的對象和序列化后的長度傳遞進去。

執行完這步后,回到這個地方

后面的這個方法是進行序列化操作的,這里又對 streamMessageImpl的實例對象進行了一次序列化。該方法在前面查看過了,這里就不跟進去看了。

而最后來到了這里。

而后面這個方法就是構造特定的數據包,使用T3協議發送payload。

0x04 漏洞分析

那么如果需要繞過的話,我們需要找一個類,他的類在內部的readObject方法創建了自己的InputStream的對象,但是又不能為黑名單里面過濾掉的ServerChannelInputStream和MsgAbbrevInputStream里面的readObject方法。然后調用該readObject 方法進行反序列化,這時候就可以達成一個繞過的效果。

在師傅們的挖掘中尋找到了weblogic.jms.common.StreamMessageImpl#readExternal(),StreamMessageImpl類中的readExternal方法可以接收序列化數據作為參數,而當StreamMessageImpl類的readExternal執行時,會反序列化傳入的參數并調用該參數反序列化后對應類的這個readObject方法。

繞過原理如下:

將反序列化的對象封裝進了 StreamMessageImpl,然后再對 StreamMessageImpl 進行序列化,生成 payload 字節碼。反序列化時 StreamMessageImpl 不在 WebLogic 黑名單里,可正常反序列化,在反序列化時 StreamMessageImpl 對象調用 readObject 時對 StreamMessageImpl 封裝的序列化對象再次反序列化,這樣就逃過了黑名單的檢查。

在此先再來思考一個問題,weblogic.jms.common.StreamMessageImpl#readExternal()該方法是怎么被調用的呢?在前面分析原生readObject方法的時候發現,其實readObject方法的底層還會去調用很多其他方法。

在Weblogic從流量中的序列化類字節段通過readClassDesc-readNonProxyDesc-resolveClass獲取到普通類序列化數據的類對象后,程序依次嘗試調用類對象中的readObject、readResolve、readExternal等方法。而在這里readExternal就會被調用。

那么下面來調試分析一下該漏洞。

還是先在weblogic.rjvm.InboundMsgAbbrev#ServerChannelInputStream.resolveClass地方打個斷點,然后使用weblogic_cmd工具打一個payload過去,先來查看一下傳輸過來的數據。

這里可以看到獲取到的ClassName是weblogic.jms.common.StreamMessageImpl的對象,而不在再是AnnotationInvocationHandler對象。StreamMessageImpl不在黑名單中,這里的判斷不會進行拋異常。

下個斷點直接落在StreamMessageImpl.readExternal中跟蹤一下。

看到調用棧這里就應驗了我們前面所提到的關于StreamMessageImpl.readExternal調用問題。

這里的var4為正常反序列化后的數據,而后面會new一個ObjectInputStream類傳遞var4參數進去。然后再調用readObject方法

執行完這一步后,命令就已經執行成功。后面的是對CC鏈執行命令的一個基本認知,在此不做贅述。

參考文章

https://xz.aliyun.com/t/8443#toc-6

https://www.anquanke.com/post/id/224343#h3-6

0x05 結尾

其實摸清楚補丁的一個套路過后,再去基于補丁分析后面的漏洞會比較清晰。因為補丁無非就是再從ClassFilter里面添加黑名單列表,這也是為什么weblogic修修補補又爆洞的原因,并沒有從根本原因去進行修復。

總結

以上是生活随笔為你收集整理的weblogic0638_Java安全之Weblogic 2016-0638分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99久免费精品视频在线观78 | 骚虎av | 97国产超碰| 国产色无码精品视频国产 | 嫩草视频入口 | 国产一区二区三区在线播放无 | 国产免费无码一区二区 | av在线资源网站 | 全部免费毛片在线播放 | xxxx国产精品| 福利免费在线观看 | www三级| 国产精品久久不卡 | 色哟哟在线视频 | 日韩美女av在线 | 91porn破解版| 欧美精品一 | 在线国产福利 | 手机看片一区 | 琪琪色18 | 欧美视频一二三区 | 五月激情婷婷丁香 | 国产乱偷 | 欧美.com| 欧美日韩视频在线观看一区 | 成人国产一区二区三区精品麻豆 | 台湾av在线播放 | 亚洲人妻一区二区 | 国产一区二区三区在线观看免费 | 欧美人与zoxxxx另类 | 老汉av在线 | 国产成人精品亚洲男人的天堂 | 欧美精品影院 | 精品人伦一区二区三区 | 草青青视频 | 欧美春色| 加勒比在线免费视频 | 污片网站在线观看 | 黄色一区二区三区四区 | 黄色不打码视频 | 麻豆久久久久久久久久 | 精品欧美黑人一区二区三区 | 国产精品免 | 伊人影音 | 久久精品国产免费看久久精品 | 夜夜骚网站 | 69视频网| 粗大的内捧猛烈进出 | 亚洲天堂网站 | 国产女人高潮毛片 | 99mav| 国产黄色精品 | gai视频在线观看资源 | 秋霞福利片 | 欧美天堂在线观看 | 日本少妇色 | 一级性生活大片 | 国产无遮挡呻吟娇喘视频 | 欧美性生活网站 | 成人av综合网| 国产尤物av | 国产在线看片 | 福利视频在线播放 | av日韩精品 | 中文字幕在线观看一区二区 | 国产精品久久久久无码av色戒 | 99热免费精品 | www.xxx国产| 国产真人无码作爱视频免费 | 毛片动态图 | 黄色一级免费大片 | 在线免费a视频 | 天堂av在线中文 | 无码国产精品一区二区免费16 | 黄色网页免费看 | 日本美女一区二区 | 色戒av | 午夜九九 | 4虎tv| 免费观看全黄做爰的视频 | 久热免费 | 精久久久久久 | 丁香啪啪| 饥渴的少妇和男按摩师 | 欧美日韩成人一区二区三区 | 亚洲精品午夜精品 | 手机在线免费观看av | 一级黄网| 久久香蕉国产 | 小明天天看 | 成人手机看片 | 国产免费黄色小视频 | 99re中文字幕 | 久久网国产| 免费观看成年人视频 | av导航在线| 国产精品高潮呻吟视频 | 午夜你懂的| 男人的天堂一区二区 |