15 常见漏洞 CSRF JSONP CORS
为啥要把这三类放到一块写呢
因为我觉得他们之间很像
在利用方式上,都是需要诱导受害者访问我们构造好的恶意页面
都是利用的是服务器端对于客户浏览器的信任
CSRF
一般在你登录后,会给你一个cookie值
这个cookie就类似于一个人的身份证
来识别A是A,B是B的
但我是H,我希望让A或B做一些小操作但是不希望他们知道
这个时候就可以用到CSRF漏洞
受害者受到攻击的途径有
1.受害者登录网站后,没有退出的情况下,访问网站 b 触发
2.在存在漏洞的网站,挖掘 xss 漏洞,自动调用这 poc.html
csrf和xss有本质上的区别
虽然他们在执行出的结果可能有那么一丝丝相似的地方
csrf和反射型的xss都是构造钓鱼链接来诱使受害者点击
但是xss本质上是让受害者的页面加载和使用我构造的js代码
csrf本质上是偷偷利用本身浏览器已经拥有了的cookie信息来执行一些操作
可以用burpsuite构造欺骗页面,也可以自己写
JSONP
首先用户在包含漏洞的页面是属于一个登录的状态
JSONP是诱导用户访问恶意页面,然后恶意页面返回一个回调函数
用户将请求包含漏洞的页面
包含漏洞的页面此时会返回一个json的数据流
这个数据流则会被发送并记录到恶意页面中所引入的远程地址上
那为啥不直接构造请求访问包含漏洞的页面截取到json信息呢
这里涉及到了一个同源策略的概念(https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy)
即默认上不同源的域之间不能够使用javascript脚本进行读写信息
本质上是利用的用户对于链接的信任以及服务器端对于浏览器的信任
若是服务器端对于浏览器请求来源过滤更加严格或者用户不信任恶意链接
这个漏洞都不会被利用成功
、
这里我大体用一下月师傅的图
我觉得3有些错误,箭头应该是客户端 ---> B站
CORS本身就是对JSONP协议的一个升级
CORS 跨域资源共享
cors的一些文章
https://zhuanlan.zhihu.com/p/24411090
http://www.ruanyifeng.com/blog/2016/04/cors.html (这篇文章详细的讲解了CORS的运行机制和作用,受益匪浅)
CORS是一种放宽同源策略的机制,它允许浏览器向跨源服务器,发出XMLHttpRequest请求
以使不同的网站可以跨域获取数据
CORS 定义了两种跨域请求:简单请求 和 非简单请求。简单跨域请求就是使用设定的请求方式请求数据,
而非简单跨域请求则是在使用设定的请求方式请求数据之前,先发送一个 OPTIONS 预检请求,验证请求源
是否为服务端允许源。只有"预检"通过后才会再发送一次请求用于数据传输。
当我们需要发送一个跨域请求的时候,浏览器会首先检查这个请求,如果它是简单跨域请求,浏览器就会
立刻发送这个请求。如果它是非简单跨域请求,这时候浏览器不会马上发送这个请求,而是有一个跟服务
器预检验证的过程。
以我浅薄的理解就是
服务器对Origin做了一个限制,只有在白名单里的源才能访问到信息
本质上是一种跨服务器进行XMLHttpRequest的手段
造成用户信息泄露的原因也是由于服务器端对源过滤不当所导致的
不要配置"Access-Control-Allow-Origin" 为通配符“*”,而且更重要的是,要严格效验来自请求数据
包中的"Origin" 的值。当收到跨域请求的时候,要检查"Origin" 的值是否是一个可信的源, 还要检查是
否为 null
2.避免使用"Access-Control-Allow-Credentials: true"
3.减少 Access-Control- Allow-Methods 所允许的方法
JSONP和CORS都是一个跨域的请求手段,只不过CORS的功能要比JSONP更为强大一些
是由于对请求参数的过滤不当和配置不当所导致的漏洞

浙公网安备 33010602011771号