成为高级黑客必须了解的,cors跨域和jsonp劫持漏洞

那么我们今天就来了解一下cors跨域和jsonp劫持漏洞
同源策略
为什么还要讲一遍同源策略 , 我们之前写xss的时候有讲到过 , 不了解的同学可以看看我们的那篇xss文章 , 那么该策略是浏览器的一个安全基石 , 如果没有同源策略 , 那么 , 你打开了一个合法的网站 , 又打开了一个恶意网站 , 恶意网站的脚本能够随意的操作合法网站的任意可操作资源 , 没有任何限制 。
cors(跨域资源共享)
CORS(Cross Origin Resource Sharing) , 跨域资源共享 , 为了弥补JSONP等跨域常见技术的缺陷 , 而提出的安全方便的跨域方案 。它允许浏览器想跨域服务器 , 发出XMLHttpRequest请求 , 从而克服AJAX只能同源使用的限制 。
CORS需要浏览器和服务器同时支持 , 相比JSONP更加复杂 , 但是一般目前的浏览器都是支持的 , 服务器只需要进行相应配置 , 其通信过程都是浏览器自动完成 , 对于开发人员来说 , 跟写AJAX的代码没有区别 , 只是会在发送跨域请求时在HTTP请求头中添加一些字段来验证 , 关键字段如下:
1、Access-Control-Allow-Origin:指定哪些域可以访问域资源 。例如 , 如果requester.com想要访问provider.com的资源 , 那么开发人员可以使用此标头安全地授予requester.com对provider.com资源的访问权限 。
2、Access-Control-Allow-Credentials:指定浏览器是否将使用请求发送cookie 。仅当allow-credentials标头设置为true时 , 才会发送Cookie 。
3、Access-Control-Allow-Methods:指定可以使用哪些HTTP请求方法(GET , PUT , DELETE等)来访问资源 。此标头允许开发人员通过在requester.com请求访问provider.com的资源时 , 指定哪些方法有效来进一步增强安全性 。
CORS实现流程
1、服务器配置支持CORS , 默认认可所有域都可以访问
2、浏览器客户端把所在的域填充到Origin发送跨域请求
3、服务器根据资源权限配置 , 在响应头中添加ccess-Control-Allow-Origin Header , 返回结果
【成为高级黑客必须了解的,cors跨域和jsonp劫持漏洞】4、浏览器比较服务器返回的Access-Control-Allow-Origin Header和请求域的Origin , 如果当前域获得授权 , 则将结果返回给页面
怎么判断是否存在cors跨域 。
请求投存在origin参数且可控(不存在可自行添加不影响结果)
响应头存在下面两个:1、Access-Control-Allow-Orighin:指定哪些域可以访问域资源 , 2、Access-Control-Allow-Credentials:指定浏览器是否存将使用请求发送cookie , 仅当allow-credentials标头设置为true时 , 才会发送cookie
Access-Control-Allow-Methods:PUT,GET,POST //请求方式
靶机是这样的 , 然后我们开启burp监听 , 刷新这个靶机抓取数据包 , 比如说我们在测试网站的时候 , 抓到数据包

成为高级黑客必须了解的,cors跨域和jsonp劫持漏洞

文章插图
 
那我们就访问该网页抓请求包
成为高级黑客必须了解的,cors跨域和jsonp劫持漏洞

文章插图
 
将其发送到repeater模块 , 并且点击go , 可以看见它这里返回了一些信息 , 就是我们上面所说的一些信息 。
成为高级黑客必须了解的,cors跨域和jsonp劫持漏洞

文章插图
 
返回包看见这两个的时候 , 可以去测一下这个跨域攻击 。怎么测呢??
成为高级黑客必须了解的,cors跨域和jsonp劫持漏洞

文章插图
 
那我们添加Origin:http://www.baidu.com这样一条参数 , 看它是否可控 , 那么执行之后 , 我们返回包原本是星号 , 添加了这一条参数后 , 就变成了百度的域名
成为高级黑客必须了解的,cors跨域和jsonp劫持漏洞

文章插图
 
Cors跨域攻击有什么用???可以获取一个用户的铭感信息 , 如果能获取到敏感信息 , 那么它就是个高危了 , 可以看见我们的靶机 , 那么我们就可以确定了他这里存在跨域攻击
成为高级黑客必须了解的,cors跨域和jsonp劫持漏洞

文章插图
 
利用的话 , 就用这个cors的利用靶机 。那我们就选择get , 然后生成poc利用的包


推荐阅读