百度Hi宠物插件XSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Author: pz Blog: http://hi.baidu.com/p__z Team: http://www.80vul.com date: 2010年5月13日 一 综述 百度空间的宠物插件对用户输入变量未经任何过滤便存储,并不经过滤输出,造成XSS. 二 分析 1.在http://hi.baidu.com/p__z/modify/sppet中,用户可以输入留言管理,提交后,未过滤直接储存. 2.在http://hi.baidu.com/ui/scripts/pet/pet.js中 将输出一段HTML:<p style="margin-top:5px"><strong>'+F[2]+"说:</strong>"+BdUtil.insertWBR(F[0], 4)+'</p> 其中BdUtil.insertWBR为 function(text, step) { var textarea = textAreaCache || getContainer(); if (!textarea) { return text; } textarea.innerHTML = text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"); var string = textarea.value; var step = step || 5, reg = new RegExp("(\\S{" + step + "})", "gi"); var result = string.replace(/(<[^>]+>)/gi, "$1<wbr/>").replace(/(>|^)([^<]+)(<|$)/gi, function (a, b, c, d) {if (c.length < step) {return a;}return b + c.replace(reg, "$1<wbr/>") + d;}).replace(/&([^;]*)(<wbr\/?>)([^;]*);/g, "&$1$3;"); return result; } 在首页中,textAreaCache 和 getContainer()均不存在,故!textarea为true,未经过滤直接return text.造成XSS. 三 利用 POC : 宠物留言管理处输入:<img src=# onerror=alert(/sobb04/)> 四 补丁[fix] 等待官方补丁 |
没有评论
暂无评论
RSS feed for comments on this post.
对不起,该文章的评论被关闭了!