webshell 漏洞 資訊安全 Virtualbox Docker

低成本惡意腳本防不勝防 易用難查成網站伺服器安全夢魘

演練生成WebShell攻擊 用DVWA模擬實際駭侵(下)

上集文章詳細說明了WebShell的運作方式、常見家族種類、分析其植入到網站伺服器的原因、常見語法,並利用圖解方式介紹其實際攻擊手段與流程。本集文章將實際操作和情境模擬中使用Kali Linux內建的Weevely工具產生WebShell並架設DVWA漏洞平台以模擬實際的WebShell的植入手法。

上集文章詳細介紹過WebShell,因此在了解其相關背景知識後,接下來將使用Docker建立DVWA漏洞平台,搭配Kali Linux內建的Weevely工具建立PHP惡意腳本(因模擬WebShell,故以下稱其為PHP WebShell),模擬攻擊者如何透過網頁的漏洞上傳WebShell。

本次操作是在VirtualBox中開啟Kali Linux虛擬機,VirtualBox使用的是6.1版,Kali Linux則使用2023.2版,相關安裝教學可到對應的官網中查詢,分別是「https://www.virtualbox.org/wiki/Download_Old_Builds」和「https://www.kali.org/get-kali/#kali-platforms」。

並且,將DVWA和Weevely工具放在同一台機器上,節省電腦空間,以利於大家跟著實作。

DVWA與Weevely介紹

DVWA是「Damn Vulnerable Web Application」的縮寫,它是以PHP程式語言撰寫而成的網頁服務,特點是集結各種不同的漏洞於一身,也就是可以使用它來練習各種不同的網頁型漏洞,為了讓不同程度的使用者都能夠參與,DVWA可以自由地針對不同程度的使用者調整難易度,分為Low、Medium、High和Impossible等,難度越高能破解的難度也就越高,在本操作中會帶大家做Low等級的「檔案上傳(File Upload)」漏洞。

Weevely是一個由Python程式語言寫的工具,可用於產生PHP WebShell,攻擊者透過將Weevely生成的PHP WebShell上傳到準備攻擊的主機,就能夠從遠端控制被駭主機,達到攻擊的最終目的,且Weevely生成的PHP WebShell檔案很小且多態(Polymorphic),加上Weevely也完全開源免費,所以被很多人拿來當作生成PHP WebShell的練習工具。

安裝DVWA

DVWA的安裝方式有以下兩種,分別加以介紹:

‧安裝Docker於Kali Linux:在Kali Linux中安裝Docker,可以參照其官網教學,網址為「https://www.kali.org/docs/containers/installing-docker-on-kali/」。

‧使用容器安裝DVWA:由於想要使用PHP 5版的DVWA程式,因此使用Docker的方式安裝可以較為自由地選擇適合版本的DVWA,安裝的語法可參考Docker Hub上的指令,網址為「https://hub.docker.com/r/benoitg/dvwa」。

可以在Kali Linux的任一位置建立一個檔名為「run.sh」的腳本檔,再將對應的語法放到該腳本檔後使用root權限執行腳本檔,如圖1~圖2所示,若成功安裝DVWA,打開Firefox瀏覽器並在網址列輸入「127.0.0.1/login.php」,便會看到執行在網頁上的DVWA服務,其預設的帳號及密碼分別是「admin」和「password」,登入成功後的預設畫面如圖3所示。

圖1  將建立DVWA容器的Docker指令貼到腳本中。
圖2  使用root權限執行安裝DVWA的腳本。
圖3  DVWA登入成功畫面。

操作DVWA和Weevely

接下來,示範DVWA和Weevely的操作方法。

使用DVWA

DVWA本身有非常多的網頁型漏洞,像是常見的Brute Force、CSRF、SQL Injection、XSS和File Upload等等,如圖4所示。

此外,DVWA可以調整難易度,點選圖4左下方的「DVWA Security」,就會進入調整難易度的畫面,該畫面會有一個調整難易度的選項,預設是「Impossible」,本實作選擇「Low」,選擇之後按下〔Submit〕。

圖4  DVWA操作。

Weevely操作介紹

Weevely在Kali Linux是內建的工具,直接點擊左上角的Icon,再輸入Weevely後選擇下方的Weevely即可開啟,如圖5所示。另外,以表1至表3整理Weevely常用語法。

圖5  開啟weevely。
圖6  產生密文的PHP WebShell指令。
圖7  密文的PHP WebShell。
圖8  產生明文的PHP WebShell指令。
圖9  明文的PHP WebShell。

Weevely搭配DVWA平台

學會使用基本的Weevely語法和DVWA操作後,接下來要使用DVWA的File Upload漏洞,並將由Weevely產生的PHP WebShell上傳到DVWA的伺服器上,這樣就可以使用Weevely的語法連線到已上傳至DVWA伺服器上且開啟後門的PHP WebShell,以得到DVWA伺服器的控制權。

在DVWA上使用File Upload的漏洞,並上傳產生的PHP WebShell,如圖10所示。上傳成功後,將出現如圖11所示的提示訊息。

圖10  使用DVWA的File Upload漏洞。
圖11  PHP WebShell成功上傳至DVWA。

成功上傳PHP WebShell後,可以在本地端使用Weevely的語法連線。連線的語法為「weevely http://127.0.0.1/hackable/uploads/shell.php 123456」,意思是使用Weevely連線到「http://127.0.0.1/hackable/uploads/shell.php」這個伺服器位置,密碼是「123456」,該密碼是在產生PHP WebShell時所設定的密碼,指令如圖12上方框選所示,若連線成功後,會出現圖12中間的畫面。

圖12  使用Weevely指令連線到WebShell伺服器。

連線成功後,可以使用常見的Linux指令查看是否取得DVWA伺服器的掌控權,如「whoami [取得當前使用者]」、「id [取得使用者資訊]」等等。若成功取得掌控權,應該就可以取得DVWA伺服器的系統資訊,分別如圖13和圖14所示。

圖13  輸入「whoami」取得當前使用者。
圖14  輸入「id」取得使用者資訊。

情境演練說明

央央資訊教育機構(文中簡稱央央)是專門為高中生與大學生舉辦資訊課程與實務工作坊的單位,近年來因為資安教育的盛行,央央的課程規劃也逐漸朝向資安領域發展,也舉辦過相當多場的實務工作坊。

在2024年第一季度,央央也陸續接到一些學校單位的請求,希望可以規劃一系列與網頁相關的工作坊,所以央央內部經過討論後,決定由網頁專業的魚貫老師規劃課程大綱。魚貫老師認為工作坊要辦得成功,就是要讓學生動手做並且跟老師有互動,因此魚貫老師決定本次工作坊的型態要使用競賽解題的方式進行。

魚貫老師團隊會先將題目放在某一台特定主機上,學生要根據提示使用特定的工具連線到該主機並取得對應的資訊。正常情況下,放置題目的機器和學生解題的機器會是不同台,因此在這裡模擬魚貫老師團隊的主機與學生的主機是使用不同台,魚貫老師團隊使用Ubuntu Linux架設DVWA平台,稱之為「靶機」,而學生們則是在同網域內使用的另一台Kali Linux以操作Weevely,以下將針對魚貫老師團隊架設題目過程與給學生作答的題目資訊進行模擬。

題目設計環節

首先,魚貫老師團隊先在一台Ubuntu的機器上架設了DVWA的服務,該機器的IP是「10.0.2.15」,稱這台機器為「靶機」。接著,Ubuntu Linux預設是沒有Weevely工具需要自行安裝,只要執行指令「sudo apt install -y weevely」即可。安裝完畢,魚貫老師團隊使用Weevely產生PHP WebShell並利用「File Uploads」漏洞將其上傳至伺服器,產生指令和檔案如圖15所示,最後上傳至DVWA伺服器,如圖16所示,除了上傳PHP WebShell外,也將另一個檔案run.sh上傳到伺服器內以滿足題目設計。

圖15  使用產生之WebShell的指令。
圖16  上傳Weevely產生之WebShell。

魚貫老師團隊將題目設計完成後,便將題目公布出來讓學生來解題,題目說明如下:

請使用Kali Linux內建的NMAP工具掃描網段「10.0.2.0/24」中有哪些主機?並試圖找出哪一台是靶機。 找到後,請使用Weevely工具取得靶機控制權,密碼的部分請使用base64將該「cGFzc3dvcmQgaXMgMTIzNDU2」編碼過的文字解碼以取得真正的密碼。

WebShell檔案被放在靶機的「/hackable/uploads/」路徑下,檔案名稱為shell.php。最後,請善用Linux指令將檔案名稱為run.sh的檔案刪除和找出伺服器上除了當前的使用者外,還有哪些其他使用者?

學生解題環節

學生名志在看完該題的題目後心領神會,他給出的解題方式如下:

第一步:名志使用Kali Linux主機,其IP是「10.0.2.5」,接著使用NMAP掃描網段「10.0.2.0/24」,掃出的主機只有IP為「10.0.2.5」和另一台IP是「10.0.2.15」,指令如圖17上方框選,掃描結果如圖17下方的兩處框選。很明顯地,由於IP為「10.0.2.5」的主機是名志自己的主機,因此IP為「10.0.2.15」的主機就是「靶機」。

圖17  使用NMAP掃描之結果。

第二步:名志使用Weevely工具下指令以取得控制權,密碼的部分使用base64將「cGFzc3dvcmQgaXMgMTIzNDU2」解碼後取得的明文是「password is 123456」,因此名志使用指令「weevely http://10.0.2.15/hackable/uploads/shell.php 123456」成功取得控制權,指令和取得控制權如圖18所示。

圖18  使用Weevely連線到伺服器。

除此之外,也可以看到原本伺服器上的檔案分別有shell.php、run.sh和一張PNG圖片檔,如圖19所示。

圖19  WebShell伺服器上的檔案。

第三步:成功取得控制權後,名志使用Linux指令「rm run.sh」將run.sh刪除,可以看到原本有的檔案如圖20左上框選,使用刪除指令(如圖20右邊框選)刪除後剩下的檔案如圖20左下框選。另外,名志使用指令「cat /etc/passwd」列出系統上的其他使用者。

圖20  使用指令刪除run.sh檔案。

名志將這兩題解完後,成為本次工作坊最快完成答題的學生。

透過這次的答題,也讓名志學到即使是一個簡單由Weevely產生的PHP WebShell,若能夠真的將該PHP WebShell上傳到被駭的伺服器且成功連線到後門的話,是可以讓系統受到非常大的傷害。

結語

從上述的說明及案例中,可對WebShell有更深入的認識,也透過詳解實務工具的操作,使WebShell不再是空泛的概念,且在了解其危險性並在不違反法律的情況下,也有機會動手製作屬於自己的WebShell。

<本文作者:社團法人台灣E化資安分析管理協會(ESAM, https://www.esam.io/)國立中央大學平行與分散計算實驗室(簡稱PaDiC實驗室)創立於2006年,由王尉任教授率領成員致力於雲端運算之研究,其領域包含分散式程式技術、邊緣運算、虛擬機器容錯與高可用性技術、網路應用程式和科學計算。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!