漏洞挖掘之前端安全
漏洞挖掘之前端安全
CORS跨域资源共享
AJAX
AJAX通过jsop或者cors来进行跨域读取资源,JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。
Asynchronous JavaScript AND XML,全称是异步的Javascript和XML。是指⼀种创建交互式、快速动态
网页应用的网页开发技术,⽆需重新加载整个网页的情况下,能够更新部分网页的技术。
- 异步
- 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页。
- 通过在后台与服务器进行少量数据交换,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 等。
漏洞检测
参考文章: