如何使用Corsair_scan测试跨域资源共享中的安全问题 – 作者:Alpha_h4ck

图片[1]-如何使用Corsair_scan测试跨域资源共享中的安全问题 – 作者:Alpha_h4ck-安全小百科

关于Corsair_scan

Corsair_scan是一款功能强大的安全工具,可以帮助广大研究人员测试跨域资源共享(CORS)中的错误配置问题。

什么是跨域资源共享(CORS)

CORS (Cross-Origin Resource Sharing,跨域资源共享)是一个系统,它由一系列传输的HTTP头组成,这些HTTP头决定浏览器是否阻止前端 JavaScript 代码获取跨域请求的响应。

同源安全策略 默认阻止“跨域”获取资源。但是 CORS 给了web服务器这样的权限,即服务器可以选择,允许跨域请求访问到它们的资源。

CORS是一种机制,允许从提供第一个资源的域之外的另一个域请求网页上的受限资源。如果未正确配置,未经授权的域将能够访问这些资源。

在实现CORS时,最常见的安全问题就是无法验证请求者的合法身份,我们也经常会看到Access-Control-Allow-Origin的值会被设置为“*”。不幸的是,这属于默认设置,因此将允许Web上的任何域访问该站点的资源。

工具安装

该项目基于Python 3.9开发,但理论上支持在Python 3.x环境下正常工作。

Corsair_scan被设计为以Python模块的方式使用,因此最简单的安装方式就是使用下列pip命令:

pip3 install corsair_scan --user

工具使用

当前版本的Corsair_scan需要以Python包的形式使用,但我们计划在将来发布一个命令行工具版本。

本工具中执行CORS扫描的方法为“corsair_scan”,具体定义如下:

corsair_scan

接收请求列表和用于启用/禁用请求中证书检查的参数。

输入:

data [List]:请求列表,每一个请求都是一个字典结构,其中包含请求的相关数据。其中包括url_data [Dict]:包含所有请求相关数据的字典;url [String]:请求的目标URL;verb [String]:请求的操作(GET、POST、DELETE等);params [String]:请求中的主体内容;headers [Dict]:请求中的所有Header;

verify [Boolean] [Default: True]:给每一个请求中的corsair_scan_single_url发送这个值;

输出:

final_report [List]:包含测试执行的完整报告;report [List]:每一份单独报告的详情列表;summary [Dict]:扫描所检测到的问题详情;

工具使用样例

import corsair_scan

url_data = {}

data = []

verb =  'GET'

url = 'https://example.com/'

params = 'user=user1&password=1234'

headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

           'Accept-Language': 'en-GB,en;q=0.5', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1',

           'Origin': 'https://example.com',

           'Host': 'example.com'}

 

url_data['verb'] = verb

url_data['url'] = url

url_data['params'] = params

url_data['headers'] = headers

data.append(url_data)

 

print (corsair_scan.corsair_scan(data, verify=True))

响应结果

{'report': [{'fake_origin': {'Access-Control-Allow-Origin': 'https://scarymonster.com',

                             'Origin': 'https://scarymonster.com',

                             'credentials': True,

                             'error': False,

                             'misconfigured': True,

                             'status_code': 200},

             'post-domain': {'Access-Control-Allow-Origin': 'https://example.com.scarymonster.com',

                             'Origin': 'https://example.com.scarymonster.com',

                             'credentials': True,

                             'error': False,

                             'misconfigured': True,

                             'status_code': 200},

             'pre-domain': {'Access-Control-Allow-Origin': 'https://scarymonsterexample.com',

                            'Origin': ' https://scarymonsterexample.com',

                            'credentials': True,

                            'error': False,

                            'misconfigured': True,

                            'status_code': 200},

             'sub-domain': {'Access-Control-Allow-Origin': 'https://scarymonster.example.com',

                            'Origin': 'https://scarymonster.example.com',

                            'credentials': True,

                            'error': False,

                            'misconfigured': True,

                            'status_code': 200},

             'url': 'https://example.com/',

             'verb': 'GET'}],

 'summary': {'error': [], 'misconfigured': [{'credentials': True,

                    'misconfigured_test': ['fake_origin',

                                           'sub-domain',

                                           'pre-domain',

                                           'post-domain'],

                    'status_code': 200,

                    'url': 'https://domain.com',

                    'verb': 'GET'}]}}

项目地址

Corsair_scan:【GitHub传送门

来源:freebuf.com 2021-05-24 15:28:42 by: Alpha_h4ck

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论