天天看點

關于站庫分離滲透思路總結

0x00 前言

看到了某篇關于站庫分離類型站點相關的讨論,想總結下資訊收集的技巧。

0x01 正文

關于站庫分離類型站點網上暫時沒有找到總結性的文章,是以想嘗試記錄下關于站庫分離類型站點的滲透思路。

對站庫分離類型站點通常可以有兩個滲透入口點。

1.web網站

2.資料庫

滲透思路其實也是比較正常。但是這裡如果兩個入口點無非兩種路徑。

1.從web網站打入進而打站庫分離的資料庫,内網滲透;

2.從資料庫打入進而打站庫分離的web網站,内網滲透。

根據不同的路徑定制不同的滲透測試方案,下面記錄一下流程和容易遇到的問題。

一、從 web 入口滲透

從 web 入口通常就是通過網站的各種漏洞來getshell,比如檔案上傳、指令執行、代碼執行、還有SQL注入寫入一句話(into outfile、日志備份等)。

在獲得 web 權限或者有諸如檔案讀取等漏洞時,我們還讀資料庫配置檔案、對資料庫内容分析、查找資料庫備份,進而對資料庫目标 ip 進行滲透,以便後續操作。

二、從資料庫入口滲透

但是這裡要說主要是外網暴露的資料庫入口點弱密碼;web網站SQL注入。

從資料庫入口滲透,同樣主要是為了擷取更大的權限,或者擴充我們的滲透成果,比如從資料庫裡可以得到一些密碼資訊,使用者名等,在後續的内網滲透中可以很有效的幫助我們。

站點是站庫分離的,資料庫和web不在同一台伺服器上,這時候不能寫入一句話木馬通過web去連,因為路徑沒有用。如果是從web端找到的SQL注入,那麼可以通過以下這些方式去做收集、擷取權限。

MYSQL

(1)定位 web 端 ip 位址

通過查詢 

information_schema

 庫中的 

PROCESSLIST

 可以檢視目前 MYSQL 的連接配接情況。因為 web 應用會産生查詢資料庫操作,是以在回顯出來的 

host

 字段中會帶回目标的 

ip:port

select * from information_schema.PROCESSLIST;
           
關于站庫分離滲透思路總結

在得到了web端的ip,我們可以進而對web端進行滲透。

(2).load_file()擷取資料庫所在伺服器的敏感資訊

如果沒有secure_file_priv參數的限制(MySQL5.7以下),我們還可以用load_file()函數對檔案内容進行讀取。

select load_file('C:/test.txt');
           
關于站庫分離滲透思路總結

還可以擷取網卡資訊,比如讀:

/etc/udev/rules.d/70-persistent-net.rules  //擷取網卡名稱
/etc/sysconfig/network-scripts/ifcfg-網卡  //靜态IP
DHCP的話   /var/lib/dhclient/dhclient--網卡.lease
           

MSSQL

(1) 判斷是否站庫分離

得到用戶端主機名

select host_name();
           

得到服務端主機名

select @@servername;
           

根據結果判斷是否分離,結果一樣就可能站庫同伺服器,結果不一樣就是站庫分離。

(2)存儲過程執行指令

我們可以通過 MSSQL的存儲過程執行系統指令,可以嘗試直接提升權限後滲透其他主機。

常用到的兩個:

1.XP_CMDSHELL

2.SP_OACREATE

可以探測資料庫伺服器是否出網,通過執行ping或者curl看是否出網,通常遇到MSSQL我們直接就通過指令執行上線了。

同樣是資料庫,自然其中有一些敏感資訊,為了進一步滲透,可以整理密碼本或者其他資訊。