您好,登錄后才能下訂單哦!
這篇文章主要介紹了GetShell的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
滲透測試工作的一個階段性目標就是獲取目標服務器的操作控制權限,于是WebShell便應運而生。Webshell中的WEB就是web服務,shell就是管理攻擊者與操作系統之間的交互。Webshell被稱為攻擊者通過Web服務器端口對Web服務器有一定的操作權限,而webshell常以網頁腳本的形式出現。常見的WebShell使用asp、jsp和php來編寫,提供了如執行系統命令、文件上傳下載、數據庫管理等功能。
獲取WebShell的動作又叫做GetShell,是滲透測試各項能力的綜合體現,也是滲透測試一個重要的階段性目標。
GetShell方式眾多,常見如文件上傳、SQL注入、命令執行、文件包含、解析漏洞等等。有時候一個漏洞即可GetShell,有時候則需要各種漏洞打一套組合拳方可。So,多交流,才能掌握更多GetShell騷姿勢。
通過利用任意文件上傳漏洞可以最快獲取WebShell,一般常見有三種情況:(1)直接上傳木馬文件到目標服務器;(2)繞過防護(以下不包括繞過WAF防護,以后有時間再介紹繞過WAF的姿勢)限制上傳木馬文件;(3)CMS等的通用任意文件上傳漏洞。在對目標進行滲透測試時,可從前后臺頭像修改、文件導入、圖片上傳等處尋找文件上傳接口。此外,還需要根據識別的站點指紋尋找是否存在文件上傳漏洞。以下是針對不同情況下上傳WebShell的方式。
a) 前端校驗文件后綴時,可先傳允許的文件類型,然后抓包修改文件后綴。
b) MIME校驗時,抓包修改Conten-Type為允許MIME類型。
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”。
a) 00截斷,要求PHP<5.3.4且magic_quotes_gpc為OFF狀態。
b) 配合解析漏洞(見解析漏洞getshell)。
c) 文件包含圖片馬(見文件包含getshell)。
a) 使用文件頭繞過,如圖片中使用GIF89a。
b) 使用圖片馬,接著配合解析漏洞或者文件包含漏洞getshell。
c) 使用元數據編輯器在圖片的EXIF信息中插入一句話木馬。
如禪道<=12.4.2后臺任意文件上傳漏洞;編輯器漏洞、中間件的也不容忽視,如CVE-2017-12615可直接使用put寫入木馬文件。當然,“老洞”IIS 6 開啟WebDAV可直接put寫入文件。
以下兩張圖是禪道<=12.4.2后臺任意文件上傳漏洞的利用截圖:
利用命令(代碼)執行漏洞寫入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的不同采用不同的注入方式。如:
利用解析漏洞將圖片馬等文件解析為惡意腳本文件從而GetShell,本文主要介紹在IIS、Nginx、Apache的解析漏洞。一般,該漏洞會配合文件上傳漏洞等來獲取WebShell。
a) IIS 5.x/6.0解析漏洞,其中文件名解析漏洞利用形式為*.asp;.jpg;目錄解析漏洞利用形式為/asp/1.jpg。
b) IIS 7.0/7.5解析漏洞。其實該漏洞為cgi.fix_pathinfo的配置不當引起的解析漏洞,利用形式為x.jpg%20\0.php。
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。
a) 文件后綴x.php.ss.ss2會被解析為php文件
b) 利用配置文件。上傳.htaccess配置文件,就會將.jpg解析為PHP文件,內容如下:
或者
在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) 在字段之間的以一句話木馬作為分隔符。
舉例如下圖所示:
利用文件包含漏洞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中已經對文件包含漏洞做了詳細的介紹,讀者可前往閱讀。
將其命名為“其他方式”是因為不便將其再分類,筆者便都將其歸納至此。
0day自己挖,如一些cms黑白盒滲透、代碼審計等;Nday靠收集。
創建、修改模板時寫入webshell文件。
在網站設置如“網站名稱”中插入一句話,但需要注意閉合,稍有不慎會將網站插壞的。
數據庫備份時修改備份文件后綴,在數據中插入一句話。
a) 開啟日志文件,將日志文件的路徑設置為網站的物理路徑,如:
最后在執行的SQL語句中帶有一句話木馬,這樣,日志文件內容中就包含了webshell。
b) 導出數據時,將webshell導出到文件中,詳見前文SQL注入GetShell。
如DedeCMS CSRF + 任意文件寫入。
添加上傳文件類型,如白名單中添加PHP。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“GetShell的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。