連線多個漏洞獲取管理員訪問許可權

2022-09-23 22:33:15 字數 3099 閱讀 6287

在幾個月前,我有幸被邀請參加了hackerone上的乙個私人專案。該專案受到一系列idor漏洞的影響,通過對這些漏洞的利用,我成功接管了他們的乙個應用。由於保密協議的限制,因此在本文中將不會出現任何真實名稱或與公司相關的資訊。但我會最大限度的分享我從普通使用者公升級為管理使用者的詳細過程。

偵察這個階段的任務非常簡單:該專案將所有站點和子域都包含在了測試範圍內,幸運的是數量並不巨大。經過一番檢視,有兩個子域引起了我的注意app.site.com和admin.site.com,下面我們就以這兩個子站為切入點。

知己知彼百戰不殆

在對任何的應用測試之前,我都會先按照目標應用的正常流程走一遍。在此期間,我會在後台執行burp攔截請求和接收的資料,以便我更好的分析應用的執行過程。

核心應用(app.site.com)非常的小,經過幾個小時的折騰,我幾乎一無所獲……說實話,我都有點想放棄了~

第二次嘗試

核心應用上的一無所獲著實令我有些失望,還好還有乙個管理站點(admin.site.com)。那麼,有沒有什麼辦法可以訪問到管理面板呢?經過幾次嘗試,頁面都只向我返回了乙個「access denied」拒絕訪問的提示資訊,根本無法獲取到任何的頁面內容。就當我快要放棄的時候,我驚奇的發現當使用vpn進行連線時,拒絕訪問提示竟然消失了,並且頁面內容也能看到。我不知道為什麼我的vpn提供商,允許我訪問其內容(具體原因我也沒有調查過,至少目前對我來說是非常有利的)

我訪問了管理站點,並被提示輸入登入憑證。此外,這裡還有乙個下拉列表提供了:1.登入 2.註冊 兩個選項。

我嘗試了註冊選項,api為我返回了乙個「註冊失敗」的錯誤提示。這也在我的意料之中,讓我們通過burp來檢視下請求資料。

連環利用

登錄檔單向管理站點上的/api/register端點發出請求,之前在核心應用上請求的也是這個端點。但這裡丟失了一部分資訊:管理站點上的原始請求如下:

讓我們將其與核心應用的請求進行比較:

,]}通過對比可以看到,管理站點的請求缺少了securityquestions。如果我們將該缺失部分新增上去,我們就能夠在管理站點上成功註冊帳戶。但這裡有乙個問題,管理站點要求使用2fa進行身份驗證。這種情況我們可以嘗試燒過,例如給它乙個空或隨機值。這裡我隨便填了串數字123456作為我的身份驗證碼,如我預期的那我成功通過了驗證。(由於我並沒有2af設定,因此填寫任何數字都應該是有效的)。到這裡,問題仍沒有完全解決。由於我的使用者許可權較低,因此只有對一些頁面可憐的唯讀許可權,包括配置檔案和一些其它的檔案。但不得不說這是乙個非常好的開始!

步步為營

管理站點有乙個設定選單,允許使用者修改他們的電子郵件位址,密碼和2fa設定。當我嘗試更改我的資訊時,頁面會返回「something went wrong」的提示,但由於我的帳戶中沒有設定2fa,因此我可以通過傳送空post請求來進行修改:

返回乙個鍵值:

當頁面載入時,這裡還有另乙個到/api/users/authenticationcode/ynfthsajvor3rs6b的請求載入我的qr碼。你可能已經猜到,我能夠替換我的user_id (46774) 為任意使用者建立新的身份驗證碼,並使用任意的2fa工具(如duo/google authenticator)在我的裝置上使用qr碼註冊它。

獲取使用者資料庫

我唯一訪問的乙個頁面是乙個空的「users」頁面,該頁面並沒有為我返回**上任何的使用者資訊,但它允許我們進行搜尋。get請求如下:

/api/users/search?page=&size=20&ascending=true&orderby=login&searchstring=my_search_string&userrole=

如果我們刪除了searchstring,size和page的值,那麼將會獲取到整個使用者資料庫,其中包括uid,email,login_id,profile以及其他一些細節資訊。

眼見不一定為實

現在我已獲取到了足夠的資訊,我想嘗試看看是否能獲取到更高的訪問許可權。當使用者嘗試在管理站點內更改其使用者詳細資訊時,應用程式將發出以下請求:

我嘗試將我的id替換為其它使用者id,並試圖修改他們的使用者資料,但這並沒有成功。這使我意識到,可能「something went wrong」的錯誤提示只是乙個假象,實際上帳戶資訊早已被成功更改。換而言之就是:即使應用程式成功進行了更改,也照樣會返回錯誤提示。當我提交報告時,我請求廠商允許我更改其中乙個管理員帳戶的資訊,並且允許我使用特定的使用者id測試帳戶。

連線漏洞

現在我們已經確認,可以通過更改id值來建立新的身份驗證碼和更改其他使用者帳戶。我嘗試使用獲准的特定使用者id user_id (user_id:3)進行測試。我首先為2fa建立了乙個新的qr碼,並匯入到了google authenticator中,然後我更改了電子郵件位址並重置了其密碼,並最終成功登入到了該帳戶!

公升級為管理員許可權後,我檢視了該站點的使用者角色,主要有管理員,普通使用者,開發人員等。有趣的是,一些api端點不僅管理員可以訪問,普通使用者如果知道路由的話其實也可以訪問。

意外收穫

幾天後,我重新訪問了該應用。當我使用我的憑據訪問管理站點後,我意外的發現我仍然可以以唯讀許可權訪問管理頁面。以下是我使用該帳戶發出的請求:

post /api/account/updateadmin

host: admin.site.com

}這與之前/api/users的請求非常相似,在這個端點我能夠更改「authorities」的值。通過更改使用者id,我再次將唯讀帳戶公升級為了管理員帳戶。}總結

1.偵察不僅僅只是收集子域和檔案/目錄列表,也應了解目標應用的執行流程和工作方式。

2.不要太過依賴於返回的提示資訊,你看到的不一定就是真實的情況。

3.碰到2fa並不意味著你就一定會失敗,是人都會犯錯誤。試著站在開發者的角度思考問題。

4.如果你的第一次嘗試失敗,請不要輕易放棄。你可以嘗試去放鬆一下或睡上一覺,再回過頭來看說不定就會收穫驚喜。

管理員許可權獲取與恢復

獲得管理員許可權,首先,新建議文字檔案,複製以下 儲存為.reg格式,然後匯入登錄檔。windows registry editor version 5.00 取得檔案修改許可權 hkey classes root shell runas 管理員許可權 icon c windows system32...

管理員許可權的憑證安全漏洞

問題點 網路上的主機都存有管理許可權的憑證。一旦非授權使用者獲取了其中某些憑證,會發生什麼?答案 整個域的部分或全部管理許可權都會陷落。如果公司安全要求強制規定所有管理員口令必須定期更換,it管理員恐怕會頭疼又無奈。僅僅定位所有本地管理員賬戶就是個耗盡精力的繁瑣活兒,更別說還要乙個個更新了。而且這還...

獲取管理員許可權的相關命令

學習目標 命令說明 sudo s 切換到root使用者,獲取管理員許可權 sudo 某個命令的執行需要獲取管理員許可權可以在執行命令前面加上sudo sudo s效果圖 sudo 命令效果圖 說明 命令說明 whoami 檢視當前使用者限 whoami 命令效果圖 命令說明 exit 退出登入使用者...