記一次實戰給朋友站點測試
一、前言
本篇文章為給朋友網站測試的過程,主要記錄測試中的思路。期間用了差不多兩個周末,期間斷斷續續,整篇沒啥奇淫技巧,大佬略過。
PS:已將漏洞詳細報告提交朋友,并驗證已經修復。
二、信息收集
通過朋友給的域名進行子域名爆破,得到如下:

查詢成功:www.abc.cn-139.1.2.3查詢成功:API.abc.cn-47.1.1.1查詢成功:home.abc.cn-47.1.1.1查詢成功:hd.abc.cn-139.1.2.3查詢成功:oc.abc.cn-47.1.1.1

其中www.abc.cn為官網,139開頭的為阿里云服務器,通過手工測試并未發現漏洞,使用掃描器會被封IP。47開頭的應該為本地服務器映射到公網的IP地址,測試重點為47開頭的站點。
訪問api.abc.cn為API接口站點,如下

訪問home.abc.cn則跳轉到https://oc.abc.cn/login/login.html

測試SQL注入,并不存在,存在驗證碼,暴力破解未嘗試,掃目錄也無有價值的信息。

訪問manager為Tomcat管理登錄頁面,訪問app為登錄界面

通過對上面子站點的初步踩點,因為API站點接口較多,優先測試API接口,功能越多的地方越容易出錯。
三、API接口測試
發現API接口功能很多,順手進行測試,大部分為401,未登錄


接下來就是逐個進行測試,測了半天,終于發現一個未授權訪問,可任意文件下載,此為突破口,如下

測試下載passwd文件,構造訪問以下地址
https://api.abc.cn/downFile?filePath=/etc/passwd&fileName=


繼續嘗試獲取敏感信息,下載bash_history文件,可以查看歷史命令
https://API.abc.cn/downFile?filePath=/root/.bash_history&fileName=


通過對歷史命令的查看,獲取到兩個可能存在敏感信息的文件,如下:
/etc/mail.rc
/backup/mysql_bask.sh
繼續利用任意文件下載上述兩個文件


如上成功獲取郵箱賬號密碼及數據庫root賬號密碼,但公網并未開放數據庫端口,無法連接數據庫進行利用。
接下來本地設置賬號密碼,即可登錄郵箱。

通過對郵件進行搜索,發現以下信息

用上述網站的賬號密碼,成功登錄網站后臺管理,但權限較低,測試了文件上傳等,并未存在漏洞。

由于當時較晚,第一周測試到此結束,主要利用API接口的未授權任意文件下載,獲得敏感信息,未獲取到shell,但還是向朋友炫耀了成果。

通過本節的學習,了解文件下載漏洞的原理,通過代碼審計掌握文件下載漏洞產生的原因以及修復方法。
四、文件上傳
第二個周末,由于上周只找到一個任意文件下載,沒拿到shell,感覺還可以再突破一下。于是讓朋友不要修復先,我再嘗試下,他回復限制了API頁面的訪問。

于是再訪問API站點,頁面如下

去訪問任意文件下載的接口

發現仍舊可以訪問,此處是沒有填要下載的文件,所以報錯,通過下載歷史命令文件,查看朋友的配置修改,發現其配置了nginx配置文件

然后下載nginx配置文件

發現其修改的配置,允許18的ip訪問該頁面,禁止其他所有;只禁止訪問首頁,但仍舊可以訪問接口地址,所以仍舊可以進行任意文件下載。于是對18的IP進行全端口掃描,發現其中一個端口訪問則是API界面。


于是又可以去測試接口了,在一番測試后,發現一處任意文件上傳接口,如下


此處可以任意文件上傳,但返回的地址是D盤下,Linux的服務器,怎么會返回D盤目錄的地址,此處測試了很久,無法找到該文件路徑。問了下朋友,他們是否有Windows的服務器,他回復都是Linux的。

五、SQL注入
由于上述文件上傳一直都找不到地址,便繼續往下測試,因為他們的API接口功能很多,很多都是要登錄才能訪問的,很花費時間,但還是被我找到一個SQL注入。
正常訪問頁面返回

加個單引號,返回

使用Sqlmap進行測試

想通過SQL注入獲取用戶密碼,嘗試登錄上傳拿Shell,看了一下密碼應為自寫加密,無法解密

且Linux一般目錄權限較嚴格,測試了下并未成功寫Shell,到這里發現SQL注入好像并達不到我的Getshell目的。
六、文件上傳getshell
梳理一下當前的思路,有個任意文件下載、有任意文件上傳(但找不到路徑)、有SQL注入(無法獲取密碼),目的是獲取網站的Shell。
往往有些時候可以利用的點越多思路可能就會越亂,一方面想去找上傳的路徑,另一方面又想去SQL注入寫Shell,也測試去下載Tomcat的用戶配置文件,想登錄Tomcat管理部署war,但下載了發現是默認配置。

還下載了一些配置文件進行分析

但仍舊沒找到突破口,于是只能繼續分析API功能接口,發現一處指定文件夾上傳,瞬間充滿了希望


返回地址很友好,訪問

使用工具進行連接,當前為root權限,服務器為內網IP,成功Getshell

然后看看目錄,發現了D的路徑,但之前的文件并未上傳成功到該路徑。

七、總結
本文從信息收集到任意文件下載、到文件上傳、SQL注入,最后拿到一個站點的shell,并無太多亮點,主要還是細心和耐心,因為API的功能接口確實有點多,幾乎都是每個大概去看了,總體來說,還是運氣比較好。