Section outline

  • 在这个任务和下一个任务中,我们将执行类似于 Samy 在 2005 年对 MySpace 所做的攻击(即 Samy 蠕虫)。我们将编写一个 XSS 蠕虫,使得任何访问 Samy 页面的用户都会自动将 Samy 添加为好友。这个蠕虫先不会自我传播,在后面的任务中,我们会实现自我传播。

    在这个任务中,我们需要编写一个恶意 JavaScript 程序,直接从受害者的浏览器发出“添加好友”的 HTTP 请求,从而将 Samy 添加为受害者的好友。我们已经在 Elgg 服务器上创建了一个名为 Samy 的用户(用户名为 samy)。

    要为受害者添加朋友,首先需要弄清楚在 Elgg 中用户是如何合法添加好友的。更具体地说,我们需要知道当用户添加好友时都发送了什么信息到服务器。我们可以使用 Firefox 的 HTTP 检查工具来获取这些信息,它可以显示浏览器发送的任何 HTTP 请求的内容。从内容中我们可以识别出请求中的所有参数。

    了解了添加好友时的 HTTP 请求后,我们可以通过编写一个 JavaScript 程序来发出相同的 HTTP 请求。我们提供了一个 JavaScript 代码框架。
    <script type="text/javascript">
    window.onload = function () {
      var Ajax=null;
    
      var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;          🅰
      var token="&__elgg_token="+elgg.security.token.__elgg_token; 🅱
    
      // 构建添加 Samy 为好友的 HTTP 请求。
      var sendurl=...;  //FILL IN
    
      // 创建并发送 Ajax 请求,以添加好友
      Ajax=new XMLHttpRequest();
      Ajax.open("GET", sendurl, true);
      Ajax.send();
    }
    </script>
    上述代码应放置在 Samy 个人资料(profile)页面的 "About Me" 字段中。这个字段提供了两种编辑模式:编辑器模式(默认)和文本模式。使用编辑器模式时,编辑器会在输入的文本中添加额外的 HTML 代码,而使用文本模式时不会。我们不想向攻击代码添加任何额外的字符,因此我们需要选择文本模式。点击位于 "About Me" 字段顶部右侧的 "Edit HTML" 进入文本模式。

    问题。 请回答以下问题:
    • 问题1: 解释第 🅰 行和第 🅱 行的目的,为什么它们是必要的?
    • 问题2: 如果 Elgg 应用程序仅提供编辑器模式,即你无法切换到文本模式,你能成功发起攻击吗?