通過供應鏈拿到目標后臺權限的過程
0x01 重要說明
本文中涉及到的所有操作均得到了客戶單位的授權,并且在漏洞修復后得以公開。請勿在未授權狀態下進行任何形式的滲透測試!!!!
0x02 漫長的探索
某天,接到一個任務,要求對某醫院的信息系統做一次安全檢測,看能否發現問題。經過初步的信息收集后,發現該醫院并無官網,只有一個微信公眾號提供了預約掛號,繳費等功能,看來只能把突破點放在這個公眾號上了。
下圖是微信公眾號的一些功能:

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

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

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

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

對test.com的域名做信息收集后發現了幾個子域均解析致某云服務器,但是ip不同。

首先git.test.com這個域名引起了我的注意,打開后是一個gitlab服務。

gitlab歷史上是由幾個漏洞的:

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

果不然,群文件中有一份表格,記錄了員工的詳細信息


有了這些信息,我開始使用姓名和工號等組合成gitlab的用戶名,使用常用弱口令定向爆破,期望能有一兩個結果,但是還是無果,看來此gitlab對密碼強度有要求,弱口令是走不通了。
0x03 柳岸花明又一村
當使用google hack 語法搜索此gitlab時發現了幾處無需認證即可訪問的公開倉庫。

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

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

由于此數據庫版本較低,并且時sysdba權限,我可以直接以system權限執行命令。

然后就是添加用戶登錄拿下了這臺oracle數據庫的服務器。

并且在這個mysql文件夾中發現了mysql的配置文件。

由于test.com這臺服務器是開放了mysql數據庫的,利用此信息,我又成功登錄了mysql數據庫。

在mysql數據庫中成功獲取了供應商官網test.com后臺的用戶名和密碼。

當我滿懷欣喜的去登錄時,發現確實可以登錄,但登陸后的后臺功能都已廢棄,只有一個大大的thinkphp錯誤。

怎么辦,原想的通過后臺getshell的想法也落空了。(也嘗試過使用Thinkphp3的漏洞利用,但也全部失敗了)
0x04 絕處逢生
到這里,我認為只能把希望放在這個mysql數據庫上了,由于是windows系統,udf提權大概率成功不了,那就只能嘗試寫webshell了。寫webshell的話需要知道絕對路徑,我嘗試使用各種辦法讓test.com報錯,看報錯信息中有沒有包含絕對路徑,一系列操作過后無果,只有404頁面。
沒辦法了,只有盲猜一波,我突然想到了mysql數據庫表的表名是否就是網站的目錄名呢?

使用這兩個表名構造了以下絕對路徑
c:\\hs_webc:\\hswebd:\\hs_webd:\\hsweb
當嘗試到c:\\hs_web時,webshell提示已經寫入成功了。

使用蟻劍連接成功:

由于當前用戶權限較小,使用potato成功提權:

添加用戶成功登錄遠程桌面:

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

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

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