翻译来自:掣雷小组
成员信息:
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.6、从Web存储中提取信息
在HTML5之前,Web应用程序在用户计算机中持久或基于会话存储信息的唯一方法是通过cookie。在这个新版本的语言中,增加了新的存储选项,称为Web存储,即本地存储和会话存储。 这些允许应用程序使用JavaScript从客户端(浏览器)存储和检索信息,并且在本地存储的情况下或在会话存储的情况下保留此信息直到显式删除,直到保存它的选项卡或窗口关闭为止。
在本文中,我们将使用XSS漏洞从浏览器的Web存储中检索信息,表明如果应用程序容易受到攻击,攻击者可以轻松地利用这些信息。
环境准备
我们将再次使用Mutillidae II及其HTML5网络存储练习来完成此配方。
以下是步骤:
1. 在Kali VM中,浏览
Mutillidae II(http://192.168.56.11/mutillidae)并在菜单中转到HTML5| HTML 5 Web存储| HTML 5 Web存储。
2. 打开开发人员工具,然后转到存储选项卡。 然后,转到本地存储并选择服务器地址(192.168.56.11):
在这里,我们可以看到Local Storage中有三个值。
3. 现在,切换到会话存储并选择服务器地址:
在临时或每会话存储中,我们看到四个值,其中一个称为
Secure.AuthenticationToken。
4. 我们之前提到可以基于每个域访问本地存储,这意味着在同一个域中运行的任何应用程序都可以读取和操作,例如,我们在步骤2中看到的MessageOfTheDay条目。让我们尝试利用另一个漏洞应用程序来访问此数据。 在同一浏览器上,打开一个新选项卡,然后转到BodgeIt(http://192.168.56.11/bodgeit)。
5. 我们知道BodgeIt的搜索易受XSS攻击,因此输入以下有效载荷
在搜索框中执行它:
<script>alert(window.localStorage.MessageOfTheDay);</script>
6. 现在,尝试使用会话存储:
<script>alert(window.sessionStorage.getItem("Secure.AuthenticationToken"));</script>
7. 由于我们无法从其他窗口访问会话存储,请返回MutillidaeII选项卡并转至Owasp 2013| XSS | 反映的第一顺序| DNS查找。
8. 在主机名/ IP字段中,输入前面的有效内容并单击查找DNS:
原理剖析
在本文中,我们了解了如何使用浏览器的开发人员工具来查看和编辑浏览器存储的内容。我们验证了本地存储和会话存储之间的可访问性差异,以及XSS漏洞如何将所有存储的信息暴露给攻击者。
首先,我们从不同于添加存储的应用程序访问本地存储,但是在同一个域中。为此,我们使用了window.localStorage.MessageOfTheDay,
将键值作为对象名称并直接将其作为Local Storage的成员引用。 对于会话存储,我们不得不移动到创建存储的窗口并利用其中的漏洞; 在这里,我们使用不同的指令来获取我们的价值想要:window.sessionStorage.getItem(“Secure.AuthenticationToken”。两种形式(键作为类和getItem的成员)对两种类型的存储都有效。我们在会话中使用了getItem,因为键包含句点(。) ,这将由JavaScript解释器作为对象/属性定界符处理,因此我们需要使用getItem
用冒号括起来。
更多…
如果应用程序使用Web存储来保存有关用户的敏感信息,则XSS不应该是唯一的安全问题。 如果攻击者可以访问用户的计算机,则此攻击者可以直接访问保留本地存储的文件,因为浏览器保存此
本地数据库文件中的明文信息。 读者可以通过不同的浏览器和不同的操作系统来研究这些文件的存储位置,以及如何阅读它们。