1.信息搜集

自從先來看看目標站點的各種信息

后端PHP,前端使用layui,路由URL規則看起來像ThinkPHP,那自然想到的是ThinkPHP那些年爆發的命令執行了,準備一把梭!然而,嘗試了一番,并沒有歷史漏洞。

那接著繼續信息搜集,這里首先使用的是Tide團隊的潮汐在線指紋識別,看了下子域名和旁站信息,資產還不少。PS:項目關系,這里截圖只截圖部分。

這里強烈安利一下潮汐,雖然目前指紋識別方面指紋庫不是很全,但其集成了域名信息、子域名、旁站、C段等功能,加上是SaaS的模式不會被封IP,因此在信息搜集初步階段是神兵利器。

掃描出的信息,含有大量登錄窗口且界面UI都很類似,應該是同一家外包公司的產品,源碼應該也類似。在查看子域名以及旁站資產的時候,發現了關鍵信息。

總結 :至此初步信息搜集結束,拿到的信息有ThinkPHP、FastAdmin、寶塔、外包公司、子域名、C段信息等

2.常見漏洞利用

寶塔和FastAdmin,首先FastAdmin印證了是ThinkPHP的猜測,有寶塔可以嘗試利用寶塔的phpmyAdmin未授權訪問漏洞進行利用。

7.4.2(Linux)、7.5.13(Linux)版本的寶塔面板存在未授權訪問phpmyAdmin的漏洞,通過訪問ip:888/pma則可無需任何登錄操作直接進入phpmyAdmin

訪問寶塔沒有響應,因此將重點放在了FastAdmin上面,FastAdmin在2020年有一個前臺Getshell漏洞,漏洞分析可參見http://www.cnpanda.net/codeaudit/777.html該漏洞利用時,需要目標站點開啟注冊和前臺登錄功能。

訪問FastAdmin站點,眼前一亮,祖師爺賞飯吃啊,基本是默認的FastAdmin Demo頁面,開啟了注冊。于是上傳圖片馬,訪問/fastadmin/public/index/user/_empty?name=../../public/uploads/20210116/4a91d432904c0042bcd038ea96ad4947.jpg,emm,當時僵硬了0.5秒,訪問后并不是自己的小馬,而是DEBUG頁面,這站居然是調試模式。。。

雖然FastAdmin的漏洞沒利用成功,但是根據DEBUG頁面拿到了數據庫的連接信息。

總結:我們依據信息搜集到的內容,對常見的漏洞進行了利用嘗試,最終雖然沒有利用成功的歷史漏洞,但依據DEBUG信息拿到了一臺RDS數據庫的權限。

3.權限放大

拿到的數據庫為阿里云RDS,使用Navicat連接數據庫,查看admin表,系統擁有兩個admin賬戶,表中含有密碼和鹽字段。這里百度了一下FastAdmin忘記密碼,根據帖子內容添加了一個賬戶。

https://ask.fastadmin.net/article/43.html
數據庫修改fa_admin表的兩個字段
密碼(password):c13f62012fd6a8fdf06b3452a94430e5
密碼鹽(salt):rpR6Bv
登錄密碼是 123456

使用添加的賬號登錄后,發現沒有權限訪問后臺

這里沒有提示賬號密碼錯誤,添加賬戶應該是成功了,于是翻看數據庫,看有沒有權限表之類的。找到了三個關鍵的表信息,auth_group,auth_group_access,auth_rule

于是將添加的用戶添加到admin分組內,成功登錄,至此看到了后臺界面全貌。

FastAdmin后臺提供了插件管理的功能,可以通過安裝文件管理插件進行Getshell。官方商店的文件管理需要收費,另外之前一個免費的插件也被下架了,還好在Github找到了此插件的源碼。

https://github.com/WenchaoLin/Filex      FastAdmin文件管理插件

下載Zip后,在站點=>插件管理=>離線安裝安裝剛才下載的插件,上傳馬兒,成功GetShell。

拿到shell后先不急著高興,先看看能不能旁站跨過去,還是經典的祖師爺賞飯,shell雖然是www用戶,但是權限還挺高,可以跨目錄。

接著查看一波我們本來的目標,通過站點源碼,將數據庫信息做一個整理,然后重復前面的操作。

這里站點的數據庫不對外開放,監聽的本地端口,因此利用哥斯拉的數據庫管理功能,連接目標數據庫,添加管理員賬戶。

這里有個小插曲,翻看目標站點源碼發現也是FastAdmin,但是通過先前找的忘記密碼方法添加上去,提示賬號密碼錯誤。于是仔細看了下目標站點的源碼,得知其認證方式為 md5(password+salt),和FastAdmin的認證加密方式并不一樣,FastAdmin的認證方式為md5(md5(password)+salt);

FastAdmin的認證方式,通過GitHub文件找了一下。
https://github.com/karsonzhang/fastadmin/blob/12a62eaa0512a48ad9e150261170fafa870c3084/application/admin/library/Auth.php#L39
目標站點是Think PHP,因此在application/[module]/controller/Admin.php 就可以找到。

接下來就簡單了,php輸出一個密碼為123456,salt為指定字符串的密文即可。

之后通過哥斯拉,update一下之前創建的賬號,將密碼更新為剛才輸出的密文,成功登錄。

總結:通過旁站的數據庫權限,成功拿到了目標服務器的后臺系統權限。

整體滲透思路:

尋找后臺認證加密方式=>添加系統賬戶=>GetShell=>橫向目標=>尋找認證加密方式=>添加系統賬戶。 

另外由于各個站點之間沒有隔離,旁站的shell和目標站點的shell沒有差別,無需繼續,至此滲透結束。