記一次Hvv中遇到的API介面洩露而引起的一系列漏洞

yunying發表於2021-07-29

引言

最近朋友跟我一起把之前廢棄的公眾號做起來了,更名為鹿鳴安全團隊,後面陸續會更新個人筆記,有趣的滲透經歷,內網滲透相關話題等,歡迎大家關注

前言

Hvv中的一個很有趣的漏洞挖掘過程,從一個簡單的API洩露到一系列漏洞。這次的經歷更讓我體會到了細心的重要性。

挖掘起始

Hvv中拿到了一大堆的資產,有IP和URL的,我一般會先去手動挖掘已經給了的URL資產。面對眾多的URL資產,怎麼下手呢,我通常會選擇去跑一下Title,然後根據Title來選擇軟柿子捏。
比如下面某個業務應用系統,定位好了,就開始手動測試挖掘了。

開啟URL進入這個業務應用系統,首頁就是登入頁面,見到這樣的無驗證碼登入頁碼,直接起Burpsuite固定使用者名稱字典然後爆破弱口令嘗試。嘗試了5分鐘的弱口令爆破無果後,選擇轉換攻擊思路。

轉換思路

轉頭去看下URL:http://fxxx/wxxx/login.html感覺可以嘗試下是否存在目錄遍歷的問題

於是轉到上層目錄檢視的時候http://fxxx/wxxx,發現頁面有一個渲染的載入的過程,然後才跳轉到login.html登入頁面,而且/wxxx目錄看上去又像一個未授權的頁面。於是Burpsuite在/wxxx一個一個放包,觀察轉到/wxxx/login.html過程中載入了什麼東西。

通過Burpsuite一個一個放包發現了一個特別的API呼叫介面

在這個API介面之上再往前跨目錄,直到回到根目錄/DFWebAPIServiceHT下發現是一個介面資料庫系統

該系統存在非常多開放的介面,並且每個介面下面,還有詳細的呼叫引數以及呼叫方法,過多的介面資料就不放了

因為進入該業務系統後是一個登入頁面,於是我直接去尋找是否有使用者資訊的一些相關介面開放。找到了如下介面

通過/SXXXX_User/get介面可以獲取到使用者名稱相關的Json資料,其中的user_id鍵值就是使用者名稱

通過該介面獲取到了很多的使用者名稱,這些使用者名稱的設定確實刁鑽,例如pte,dpsas等使用者名稱,這是難以簡單猜解到的。通過收集獲取到的這些使用者名稱,再次進行弱口令爆破。這裡的登入頁面對錶單中的使用者名稱密碼進行了Base64的加密。

有一個很簡單的方法,將收集到的使用者名稱和簡單的幾個弱口令全部B ase64編碼後放到txt裡,然後匯入Burpsuite的Simple list模式的payload中。這是比較簡單的方法。
我這裡用的是BurpCrypto外掛來定義Execjs來將兩個表單項在爆破過程中同時進行Base64編碼。需要我們定位到加密或者編碼的js位置,由於用的是Base64編碼,圖簡單,用上面字典的方法即可。同樣的Burpsuite爆破模組中可以通過設定payload processing進行Base64編碼設定也可以起到一樣的加密效果。

柳暗花明

使用上述方法一頓爆破後,真的爆破出來了一個普通使用者弱口令123456。拿著這個弱口令,我登入了系統,發現該系統只是一個外殼,裡面還有很多的分系統。

這讓我非常的欣喜,我猜想這些系統的賬號密碼可能是互通互聯的。經過測試發現,這裡面只有兩到三個系統可以正常訪問,且賬號密碼並不都是互聯互通的。其中有一個決策系統,通過剛剛爆破出來的使用者弱口令是可以進入該系統的,且使用者認證為灌區管理員,許可權還是非常的低。

由於許可權還是太低,只有兩個沒什麼用途的選單,翻找了很久,都沒有發現可利用的地方,或者可以上傳shell的地方,索性放棄拿shell。但是開啟右上角人員設定介面的抓包中發現了有意思的地方,在人員設定中有一個修改密碼的表單設定,雖然是********,看不到具體明文,但是在返回的包中是直接顯示出來的。而且Get請求裡有一個很有趣的引數就是id=使用者名稱的這個引數。

也許我可以遍歷之前使用者介面洩露出來的使用者名稱來嘗試獲取使用者密碼?
有了這個想法後,我直接起Bp的爆破模組,來遍歷使用者名稱嘗試,果不其然。
這裡沒有鑑權機制,可以直接通過遍歷ID使用者名稱引數,就可以獲得對應的使用者密碼。

通過上面的越權漏洞獲取到了高許可權的使用者密碼,如root,admin,xxadmin等。利用高許可權使用者登入後,發現後臺多了非常多的選單,然後查詢下敏感資訊,發現洩露了很多敏感資訊,並且高許可權使用者是可以直接看到所有的使用者密碼的。

通過上述組合式的漏洞發現和利用,提了不少分。通過這次測試感受到了手測的魅力,還是非常的有意思的。其中這個介面資料庫還有非常多的敏感介面,比如許可權變更,檔案上傳,而且在此次測試中,發現了兩個類似的API資料庫,但是另一個利用價值不大,所以這裡沒寫。

結語

總結下上述的流程,從一個跨目錄的嘗試到大量API介面的洩露再到垂直越權獲取管理系統的管理員賬號,再到後臺敏感資料洩露。總之,就是在手動挖掘漏洞的時候,要注重每一個細節,嘗試多種可能性,富有創造力的去將一些可能的漏洞點結合,這樣能大大的增加漏洞挖掘的命中率。

該文章首發於奇安信攻防社群

相關文章