漏洞挖掘之前端安全

漏洞挖掘之前端安全

CORS跨域资源共享

AJAX

AJAX通过jsop或者cors来进行跨域读取资源,JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。

Asynchronous JavaScript AND XML,全称是异步的Javascript和XML。是指⼀种创建交互式、快速动态
网页应用的网页开发技术,⽆需重新加载整个网页的情况下,能够更新部分网页的技术。

  • 异步
  1. 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页。
  2. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
  • Javascript
    AJAX是由JS来写的。

1.创建对象

var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

2、请求
xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();
3、响应

responseText属性
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

responseXML属性
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "
";
}
document.getElementById("myDiv").innerHTML=txt;

  • XML
    XML是说数据传输的格式是XML,但其实返回的数据还有可能是JSON(目前已经成为主流),文本,HTML等。

利用CORS来跨域读取资源(Cross-origin resource sharing)

CORS是⼀个W3C标准,全称是”跨域资源共享” (Cross-origin resource sharing)。通过该标准,可以允许浏览器向跨源服务器发出 XMLHttpRequest 请求,从而克服了AJAX只能同源使用的限制,进而读取跨域的资源。CORS允许Web服务器通知Web浏览器应该允许哪些其他来源从该Web服务器的回复中访问内
容。

流程详解:http://www.ruanyifeng.com/blog/2016/04/cors.html

CORS 造成相关的安全威胁

  • 任意网站跨域读取资源

头部手动添加 Origin请求头,验证是否存在cors漏洞,若返回存在Access-Control-Allow-Origin等一些头部信息,则可能存在;可用burp拦截带有的功能,每次请求都添加上该请求头,可测试
res.header("Access-Control-Allow-Origin,"*")

  • 造成XSS

Payload:

var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','http://www.target.com/login',true);
req.setRequestHeader('X-User', '<svg/onload=alert(1)>');
req.send();
function reqListener() {
location='http://www.target.com/login';
}

请求:

GET /login HTTP/1.1
Host: www.target.com
Origin: https://attacker.com/
X-User: <svg/onload=alert(1)>

响应:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://attacker.com/

Content-Type: text/html

Invalid user: <svg/onload=alert(1)>

  • 绕过Origin校验
校验方式 绕过
校验 xxx.com https://xxx.com.dark5.net/htttps://dark5xxx.com
⼦域名匹配 控制某⼦域名或存在XSS漏洞的⼦域名

漏洞验证

  • burp suite的主动扫描
  • ⼿动验证

CRLF注入(HTTP响应拆分)

CRLF 指的是回⻋符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n,%0a)。

可改写用户的原cookie值
参考文章:https://www.cnblogs.com/uestc2007/p/10880338.html

XST(Cross Site Tracing )

XST 的全称是 Cross-Site Tracing,中文译作“跨站式追踪攻击”。具体而言,是客⼾端发 TRACE / TRACK请求⾄服务器,如果服务器按照标准实现了 TRACE / TRACK 响应,则在 response body ⾥会返回此次请求的完整头信息。通过这种方式,客⼾端可以获取某些敏感的 header 字段,例如 httpOnly 的 Cookie 等。

漏洞检测

参考文章:

posted @ 2020-12-16 19:52  Black-Sweater  阅读(121)  评论(0编辑  收藏  举报