mysql低权限用户getshell_GetShell的姿势总结
原文來自SecIN社區—作者:WiHat
0x00 什么是WebShell
滲透測試工作的一個階段性目標就是獲取目標服務器的操作控制權限,于是WebShell便應運而生。Webshell中的WEB就是web服務,shell就是管理攻擊者與操作系統之間的交互。Webshell被稱為攻擊者通過Web服務器端口對Web服務器有一定的操作權限,而webshell常以網頁腳本的形式出現。常見的WebShell使用asp、jsp和php來編寫,提供了如執行系統命令、文件上傳下載、數據庫管理等功能。
0x01 獲取WebShell的方式
獲取WebShell的動作又叫做GetShell,是滲透測試各項能力的綜合體現,也是滲透測試一個重要的階段性目標。
GetShell方式眾多,常見如文件上傳、SQL注入、命令執行、文件包含、解析漏洞等等。有時候一個漏洞即可GetShell,有時候則需要各種漏洞打一套組合拳方可。So,多交流,才能掌握更多GetShell騷姿勢。
1.文件上傳漏洞GetShell
通過利用任意文件上傳漏洞可以最快獲取WebShell,一般常見有三種情況:(1)直接上傳木馬文件到目標服務器;(2)繞過防護(以下不包括繞過WAF防護,以后有時間再介紹繞過WAF的姿勢)限制上傳木馬文件;(3)CMS等的通用任意文件上傳漏洞。在對目標進行滲透測試時,可從前后臺頭像修改、文件導入、圖片上傳等處尋找文件上傳接口。此外,還需要根據識別的站點指紋尋找是否存在文件上傳漏洞。以下是針對不同情況下上傳WebShell的方式。
(1) 站點沒有任何防護,且上傳點未做安全校驗,則可直接上傳WebShell文件。
(2) 站點存在簡單防護:
a) 前端校驗文件后綴時,可先傳允許的文件類型,然后抓包修改文件后綴。
b) MIME校驗時,抓包修改Conten-Type為允許MIME類型。
(3) 繞過黑名單的方式:
a) 利用特殊文件后綴。如.php3、.php5、.php7、.phtml;asa、cer、cdx、aspx;jspx、 jsw、jsv、jspf等,但不一定都能被解析。
b) 配合Windows/Linux特性使用特殊字符,如上傳.php::$DATA、“.php空格”等后綴的文件到Windows服務器,由于Windows的文件后綴中不能包含一些特殊符號,使得這些文件在保存在Windows服務器上時后綴只剩下.php。
c) Apache 1.x、2.2.x版本文件解析漏洞,.php.xx。
d) 后綴大小寫,如pHp。
e) 在數據包中使用雙filename,如filename=“1.jsp”; filename=“1.php”。
(4) 繞過白名單:
a) 00截斷,要求PHP<5.3.4且magic_quotes_gpc為OFF狀態。
b) 配合解析漏洞(見解析漏洞getshell)。
c) 文件包含圖片馬(見文件包含getshell)。
(5) 繞過文件內容檢測:
a) 使用文件頭繞過,如圖片中使用GIF89a。
b) 使用圖片馬,接著配合解析漏洞或者文件包含漏洞getshell。
c) 使用元數據編輯器在圖片的EXIF信息中插入一句話木馬。
(6) CMS、框架等的文件上傳漏洞。
如禪道<=12.4.2后臺任意文件上傳漏洞;編輯器漏洞、中間件的也不容忽視,如CVE-2017-12615可直接使用put寫入木馬文件。當然,“老洞”IIS 6 開啟WebDAV可直接put寫入文件。
以下兩張圖是禪道<=12.4.2后臺任意文件上傳漏洞的利用截圖:
2.命令(代碼)執行漏洞GetShell
利用命令(代碼)執行漏洞寫入WebShell文件從而GetShell。在此列舉了以下四種常見情況作為說明。
(1) 利用CMS、框架通用漏洞,如thinkPHP命令執行漏洞,影響范圍較廣,如鯰魚CMS、ThinkCMF、yunCMS等。Struts2遠程命令(代碼)執行漏洞,如S2-059、S2-057……
(2) 中間件、架構通用漏洞,如:Jboss遠程命令執行、weblogic未授權命令執行CVE-2020-14882……
(3) 應用程序命令執行漏洞,如Redis 4.x/5.x命令執行漏洞、Zabbix遠程命令執行CVE-2020-11800……
(4) 命令注入漏洞寫入WebShell,根據Linux和Windows的不同采用不同的注入方式。如:
3.解析漏洞GetShell
利用解析漏洞將圖片馬等文件解析為惡意腳本文件從而GetShell,本文主要介紹在IIS、Nginx、Apache的解析漏洞。一般,該漏洞會配合文件上傳漏洞等來獲取WebShell。
(1) IIS解析漏洞。
a) IIS 5.x/6.0解析漏洞,其中文件名解析漏洞利用形式為*.asp;.jpg;目錄解析漏洞利用形式為/asp/1.jpg。
b) IIS 7.0/7.5解析漏洞。其實該漏洞為cgi.fix_pathinfo的配置不當引起的解析漏洞,利用形式為x.jpg%200.php。
(2) Nginx解析漏洞
a) Nginx漏洞版本0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7默認配置導致解析漏洞,利用形式為x.jpg/.php。
b) Nginx漏洞版本0.5.、0.6.、0.7 <= 0.7.65、0.8 <= 0.8.37,利用形式為x.jpg%00.php。
c) CVE-2013-4547,利用形式為x.jpg[非空編碼]0.php
d) PHPStudy v8.1.0.7默認Nginx配置解析漏洞,利用形式為x.jpg/.php。
(3) Apache解析漏洞
a) 文件后綴x.php.ss.ss2會被解析為php文件
b) 利用配置文件。上傳.htaccess配置文件,就會將.jpg解析為PHP文件,內容如下:
或者
4.SQL注入漏洞GetShell
在MySQL注入中,可以利用SQL注入獲取WebShell,要寫入WebShell文件到服務器中,需要滿足以下條件:
- 網站物理路徑;
- 文件寫入的權限;
- secure_file_priv條件沒有設置為NULL;
要求mysql數據庫的配置中,沒有將secure_file_priv條件沒有設置為NULL,即secure_file_priv=NULL時,無法導入導出文件;而當設置為空時,即secure_file_priv=時,則導入導出文件不受限制;如果設置為某個文件路徑,如secure_file_priv=/mysql/時,則導入導出必須要在跟文件目錄下完成。利用形式如下。
(1) 直接使用into outfile
(2) 直接使用into downfile
(3) 意為將數據導出到文件shell.php時,每個數據以一句話木馬作為分割符
而在寫入時,也可以將分隔符,即一句話木馬做hex編碼如:
(4) 設置每行數據開頭為一句話木馬
(5) 在字段之間的以一句話木馬作為分隔符。
舉例如下圖所示:
5.文件包含漏洞GetShell
利用文件包含漏洞GetShell,由于面比較大,主要介紹PHP文件包含,其分為本地文件包含和遠程文件包含。本地文件包含中,需要PHP的配置文件項allow_url_include和allow_url_fopen均設置為On。一般配合文件上傳等漏洞GetShell,最常見的如先傳圖片馬,再包含之。遠程文件包含中,需要PHP的配置文件項allow_url_fopen設置為On,利用方式是在遠程服務器上存在shell.txt,內容為webshell,然后遠程包含這個文件即可。筆者在文章https://sec-in.com/article/80中已經對文件包含漏洞做了詳細的介紹,讀者可前往閱讀。
6.其他方式GetShell
將其命名為“其他方式”是因為不便將其再分類,筆者便都將其歸納至此。
(1) 0day、nday GetShell
0day自己挖,如一些cms黑白盒滲透、代碼審計等;Nday靠收集。
(2) 后臺創建模板寫入WebShell
創建、修改模板時寫入webshell文件。
(3) 修改網站配置插入WebShell
在網站設置如“網站名稱”中插入一句話,但需要注意閉合,稍有不慎會將網站插壞的。
(4) 后臺數據庫備份GetShell
數據庫備份時修改備份文件后綴,在數據中插入一句話。
(5) PHPMyadmin GetShell
a) 開啟日志文件,將日志文件的路徑設置為網站的物理路徑,如:
最后在執行的SQL語句中帶有一句話木馬,這樣,日志文件內容中就包含了webshell。
b) 導出數據時,將webshell導出到文件中,詳見前文SQL注入GetShell。
(6) 組合漏洞GetShell
如DedeCMS CSRF + 任意文件寫入。
(7) 后臺修改文件上傳類型
添加上傳文件類型,如白名單中添加PHP。
(8) ……
以上。本次就先總結到這里,扛不住這眼睛乏澀,望大佬們不吝賜教。
0x02 寫在最后
很早前就想著將GetShell的方式總結一下,但無奈拖延癥晚期的我,愣是拖了半年多。半年的時間內,也不知道自己做了啥。對了,很希望能和各位大佬多交流。最后,漏洞永遠都會存在,就像蝗蟲從未被我們消滅。
總結
以上是生活随笔為你收集整理的mysql低权限用户getshell_GetShell的姿势总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php zblog 侧边栏样式_zblo
- 下一篇: ktor框架用到了netty吗_教你如何