浏览器攻击框架BeEF Part 1
笔者发现国内很少有系统介绍BeEF框架的文章,所以笔者决定写一个系列。内容涉及攻击浏览器的技术,主要介绍这些技术的原理,并如何操作BeEF来实现,不涉及浏览器本身漏洞(门槛太高,笔者有心无力)。
预备知识
在看这个系列之前,读者最好要有一定知识储备。首先是对HTTP协议(CORS、 CSP等)要有一定的理解,其次是理解Web安全的常见攻击技术的原理和防御方法(比如XSS、CSRF、SQL inject等), 最后如果读者懂javascript语言就更好(可选,笔者的js也不咋地)。笔者认为学习BeEF框架的难度大概和学习Metasploit、 Burp Suite 的难度差不多。
下面给出学习这些知识的参考:
HTTP 协议相关文档: https://developer.mozilla.org/zh-CN/docs/Web/HTTP
浏览器攻击技术原理: 黑客攻防技术宝典浏览器实战篇 (书)
BeEF 框架相关文档: https://github.com/beefproject/beef/wiki
同源策略
说到攻击浏览器,那么就一定要说同源策略(Same Origin Policy, SOP)。 同源策略是用于限制不同来源的资源之间的交互。在浏览器上定义了对于不同的页面,如果他们的主机名、协议和端口都相同,即为同源。记得三个要素主机名、协议和端口。来个例子:
http://www.A.com/index.html 的js是不能读/写 http://www.B.com/index.html, https://www.A.com/index.html, http://www.A.com:8080/index.html 的内容。
BeEF框架
BeEF( The Browser Exploitation Framework) 是由Wade Alcorn 在2006年开始创建的,至今还在维护。是由ruby语言开发的专门针对浏览器攻击的框架。这个框架也属于cs的结构,具体可以看下图:
zombie(僵尸)即受害的浏览器。zombie是被hook(勾连)的,如果浏览器访问了有勾子(由js编写)的页面,就会被hook,勾连的浏览器会执行初始代码返回一些信息,接着zombie会每隔一段时间(默认为1秒)就会向BeEF服务器发送一个请求,询问是否有新的代码需要执行。BeEF服务器本质上就像一个Web应用,被分为前端UI, 和后端。前端会轮询后端是否有新的数据需要更新,同时前端也可以向后端发送指示, BeEF持有者可以通过浏览器来登录BeEF 的后台管理UI。
BeEF 安装和配置
BeEF 需要ruby 2.3 + 和 SQLite (或者mysql/postgres)。
在kali下使用BeEF
kali默认已经安装BeEF了。BeEF是Favorites 菜单中的一个(可以看出它的受欢迎程度和地位了),其标志是一个蓝色的公牛。命令是beef-xss:
打开五秒后,它还会使用浏览器打开管理页面的UI,默认帐号密码是:beef/beef,默认管理页面的UI 地址是:http://127.0.0.1:3000/ui/panel
kali已经把beef-xss做成服务了,推荐使用systemctl 命令来启动或关闭beef服务器
systemctl start beef-xss.service #开启beefsystemctl stop beef-xss.service #关闭beefsystemctl restart beef-xss.service #重启beef
在ubuntu17.10中安装BeEF
如果只是作为测试或者学习,使用kali中beef就已经足够了。如果是希望在真实环境中使用,那么就需要一台拥有独立ip的主机(能被访问),下面笔者介绍在一台vps,系统是ubuntu 17.10系统中安装的过程, 如果没有vps, 可以跳过这一部分。
首先在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框架的文章,所以笔者决定写一个系列。内容涉及攻击浏览器的技术,主要介绍这些技术的原理,并如何操作BeEF来实现,不涉及浏览器本身漏洞(门槛太高,笔者有心无力)。
预备知识
在看这个系列之前,读者最好要有一定知识储备。首先是对HTTP协议(CORS、 CSP等)要有一定的理解,其次是理解Web安全的常见攻击技术的原理和防御方法(比如XSS、CSRF、SQL inject等), 最后如果读者懂javascript语言就更好(可选,笔者的js也不咋地)。笔者认为学习BeEF框架的难度大概和学习Metasploit、 Burp Suite 的难度差不多。
下面给出学习这些知识的参考:
HTTP 协议相关文档: https://developer.mozilla.org/zh-CN/docs/Web/HTTP
浏览器攻击技术原理: 黑客攻防技术宝典浏览器实战篇 (书)
BeEF 框架相关文档: https://github.com/beefproject/beef/wiki
同源策略
说到攻击浏览器,那么就一定要说同源策略(Same Origin Policy, SOP)。 同源策略是用于限制不同来源的资源之间的交互。在浏览器上定义了对于不同的页面,如果他们的主机名、协议和端口都相同,即为同源。记得三个要素主机名、协议和端口。来个例子:
http://www.A.com/index.html 的js是不能读/写 http://www.B.com/index.html, https://www.A.com/index.html, http://www.A.com:8080/index.html 的内容。
BeEF框架
BeEF( The Browser Exploitation Framework) 是由Wade Alcorn 在2006年开始创建的,至今还在维护。是由ruby语言开发的专门针对浏览器攻击的框架。这个框架也属于cs的结构,具体可以看下图:
zombie(僵尸)即受害的浏览器。zombie是被hook(勾连)的,如果浏览器访问了有勾子(由js编写)的页面,就会被hook,勾连的浏览器会执行初始代码返回一些信息,接着zombie会每隔一段时间(默认为1秒)就会向BeEF服务器发送一个请求,询问是否有新的代码需要执行。BeEF服务器本质上就像一个Web应用,被分为前端UI, 和后端。前端会轮询后端是否有新的数据需要更新,同时前端也可以向后端发送指示, BeEF持有者可以通过浏览器来登录BeEF 的后台管理UI。
BeEF 安装和配置
BeEF 需要ruby 2.3 + 和 SQLite (或者mysql/postgres)。
本文来自无奈人生安全网
在kali下使用BeEF
kali默认已经安装BeEF了。BeEF是Favorites 菜单中的一个(可以看出它的受欢迎程度和地位了),其标志是一个蓝色的公牛。命令是beef-xss:
打开五秒后,它还会使用浏览器打开管理页面的UI,默认帐号密码是:beef/beef,默认管理页面的UI 地址是:http://127.0.0.1:3000/ui/panel
kali已经把beef-xss做成服务了,推荐使用systemctl 命令来启动或关闭beef服务器
systemctl start beef-xss.service #开启beefsystemctl stop beef-xss.service #关闭beefsystemctl restart beef-xss.service #重启beef
在ubuntu17.10中安装BeEF
如果只是作为测试或者学习,使用kali中beef就已经足够了。如果是希望在真实环境中使用,那么就需要一台拥有独立ip的主机(能被访问),下面笔者介绍在一台vps,系统是ubuntu 17.10系统中安装的过程, 如果没有vps, 可以跳过这一部分。
首先在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 copyright 无奈人生
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服务器会更好。