標題:記一次通過供應鏈拿到目標後台權限的過程

taibeihacker

Moderator

0x00 漫长的探索​

某天,接到一個任務,要求對某醫院的信息系統做一次安全檢測,看能否發現問題。經過初步的信息收集後,發現該醫院並無官網,只有一個微信公眾號提供了預約掛號,繳費等功能,看來只能把突破點放在這個公眾號上了。
下圖是微信公眾號的一些功能:
1049983-20220112164840590-783996251.png

當點擊這些功能並抓包的時候,令我看到奇怪的是所有的請求都指向了a.test.com這個域名,如下圖,原諒我的厚碼.
1049983-20220112164841038-485934289.png

test.com這個域名經過查找後發現是一家提供醫療信息系統的本地公司,但不解的是為什麼醫院的系統會放到供應商公司去呢?他們是如何進行數據同步的呢?帶著這些問題我開始了對a.test.com這個域名的測試。
1049983-20220112164841437-906211697.png

看到這個熟悉的頁面,確定了此系統大概是由sping boot開發的,經過一系列常規操作後,只發現了一個swagger-ui頁面。
1049983-20220112164841858-2061849480.png

由於我們的目標是拿權限,所以重點對此頁面的接口進行了sql注入和越權等測試,無果,也沒有任何的文件上傳接口,開始卡到這裡了。
回過來想,a.test.com這個域名是test.com的子域名,是否能夠通過test.com進行突破呢?
訪問test.com,打開的是供應商公司的官網。
1049983-20220112164842400-1344011349.png

對test.com的域名做信息收集後發現了幾個子域均解析致某雲服務器,但是ip不同。
1049983-20220112164842860-1821105685.png

首先git.test.com這個域名引起了我的注意,打開後是一個gitlab服務。
1049983-20220112164843265-832755396.png

gitlab歷史上是由幾個漏洞的:
1049983-20220112164843614-1636856631.png

但不幸的是此系統版本較高,漏洞均以修復。
那會不會由弱口令呢?使用幾個常用的用戶名和top密碼進行爆破,無果,我又想辦法加到了此公司的一個qq群中,嘗試在群文件中獲取一些有效信息。
1049983-20220112164844031-1024609151.png

果不然,群文件中有一份表格,記錄了員工的詳細信息
1049983-20220112164844394-235393612.png

1049983-20220112164844922-1399525302.png

有了這些信息,我開始使用姓名和工號等組合成gitlab的用戶名,使用常用弱口令定向爆破,期望能有一兩個結果,但是還是無果,看來此gitlab對密碼強度有要求,弱口令是走不通了。

0x01 柳岸花明又一村​

當使用google hack 語法搜索此gitlab時發現了幾處無需認證即可訪問的公開倉庫。
1049983-20220112164845620-264853675.png

我開始把希望寄託在了這些可公開訪問的倉庫上,仔細翻看這些倉庫,大多數都是一些接口文檔,對本次滲透沒有啥用。
終於在rabbitmq安裝介紹文檔中發現了一個oracle數據庫的連接用戶名和密碼:
1049983-20220112164846054-1459380126.png

在前面的信息收集過程中,已經發現了x.test.com這個子域名對應的ip地址開放了oracle數據庫端口,我迅速連接了此數據庫發現用戶名密碼正確,可以連接。
1049983-20220112164846474-1421207616.png

由於此數據庫版本較低,並且時sysdba權限,我可以直接以system權限執行命令。
1049983-20220112164846885-2131820977.png

然後就是添加用戶登錄拿下了這台oracle數據庫的服務器。
1049983-20220112164847424-1193239882.png

並且在這個mysql文件夾中發現了mysql的配置文件。
1049983-20220112164847825-778890118.png

由於test.com這台服務器是開放了mysql數據庫的,利用此信息,我又成功登錄了mysql數據庫。
1049983-20220112164848208-457276327.png

在mysql數據庫中成功獲取了供應商官網test.com後台的用戶名和密碼。
1049983-20220112164848595-830344145.png

當我滿懷欣喜的去登錄時,發現確實可以登錄,但登陸後的後台功能都已廢棄,只有一個大大的thinkphp錯誤。
1049983-20220112164849141-1723696813.png

怎麼辦,原想的通過後台getshell的想法也落空了。 (也嘗試過使用Thinkphp3的漏洞利用,但也全部失敗了)

0x02 绝处逢生​

到這裡,我認為只能把希望放在這個mysql數據庫上了,由於是windows系統,udf提權大概率成功不了,那就只能嘗試寫webshell了。寫webshell的話需要知道絕對路徑,我嘗試使用各種辦法讓test.com報錯,看報錯信息中有沒有包含絕對路徑,一系列操作過後無果,只有404頁面。
沒辦法了,只有盲猜一波,我突然想到了mysql數據庫表的表名是否就是網站的目錄名呢?
1049983-20220112164849575-2056083891.png

使用這兩個表名構造了以下絕對路徑
c:\\hs_web
c:\\hsweb
d:\\hs_web
d:\\hsweb當嘗試到c:\\hs_web時,webshell提示已經寫入成功了。
1049983-20220112164850211-435914576.png

使用蟻劍連接成功:
1049983-20220112164850803-556108064.png

由於當前用戶權限較小,使用potato成功提權:
1049983-20220112164851255-1871097223.png

添加用戶成功登錄遠程桌面:
1049983-20220112164851816-949297729.png

在服務端的nginx配置文件中發現了代理規則,涉及到幾十家醫院:
1049983-20220112164852341-1272237723.png

原來這些醫院的微信公眾號業務都是先訪問test.com這台服務器,然後再由這台服務器上的nginx轉到到各個醫院的真實服務器上。那這樣也太不安全了吧,一旦供應商的這台服務器宕機、他們的業務也得跟著丟。
然後在這台服務器上發現了微信公眾號後台源碼,丟給同伴審計了一波,發現了後台登錄繞過漏洞,可以直接登錄後台。
1049983-20220112164852873-2114878581.png

然後就是隨意改信息啦。
至此本次滲透就結束了,其實拿到醫院的真實ip後也可以更深入的進行測試。

0x03 总结​

1.對目標目醫院的公眾號進行抓包,發現所有的請求都指向了a.test.com域名
2.通過test.com域名備案查詢,發現是一家供應商,且訪問a.test.com提示錯誤信息“whitelabel error page”
該系統是sprint boot框架開發,通過dirsearch對其目錄進行掃描,發現存在個swagger-ui頁面,
測試sql注入以及文件上傳都無果
3.通過子域名掃描工具對test.com進行掃描,發現存在www.test.com以及git.test.com和hc.test.com
同時又對這三個域名進行nmap端口掃描,發現hc.test.com對應的IP開放了1521端口以及www.test.com開放了3306端口。
4.發現存在git.test.com,測試幾個gitlab的漏洞以及爆破也無果
5.通過test.com官網提供的售後QQ群,加入進去後,在群裡下載出一份員工信息表
通過員工的姓名和工號組合對git.test.com進行爆破也無果。
6.通過google hack 搜索子域名site:git.test.com,發現可以訪問gitlab的幾個公共庫,其中發現一些接口文檔,並沒有用,發現rabbitmaq庫中洩露了oracle數據庫的用戶名和密碼
7.這里通過洩露的數據庫的用戶名和密碼通過oracleShell.jar連接hc.test.com,進入後發現是sysdba權限,可執行命令,添加用戶以及到管理員,並通過註冊表開啟3389端口,遠程桌面登錄到hc.test.com數據庫主機。
8.在數據庫主機上發現存在mysql目錄路徑,裡面的有mysql數據庫配置文件,文件中包含了數據庫的鏈接用戶名和密碼。
9.由於www.test.com這台服務器是開放了mysql數據庫的,通過洩露的數據庫用戶名和密碼使用Navicat 遠程連接數據庫,並獲得網站登錄的用戶名和密碼。
10.輸入www.test.com/admin可出現後台登錄登錄頁面,輸入用戶名和密碼,發現後台功能不用,提示thinkphp3.13錯誤
11.嘗試通過thinkphp3.13漏洞拿到shell,但是無果
12.這裡需要通過mysql的日誌寫入shell,但是找不到路徑,在數據庫的表名中含有hs_web以及hsweb兩個表,猜測坑你是網站的目錄名。猜測網站的物理路徑是以下目錄:
c:\\hs_web
c:\\hsweb
d:\\hs_web
d:\\hsweb
13.在嘗試到c:\\hs_web時,通過mysql的log成功寫入一句話
14.通過蟻劍鏈接一句話,並執行whomai命令,顯示普通權限,這里通過potato成功提權
sweetpotato.exe -a 'whoami'
15.在命令終端下添加用戶以及開啟遠程桌面
16.登錄系統後,發現存在nginx配置,最終發現醫院的微信公眾號業務都是先訪問test.com這台服務器,然後再由這台服務器上的nginx轉到到各個醫院的真實服務器上。
17,然後在這台服務器上發現了微信公眾號後台源碼,進行本地源代碼審計,發現了後台登錄存在繞過登錄,可以直接登錄後台。
原文鏈接:https://xz.aliyun.com/t/10531
 
返回
上方