Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
corsair_scan — Автоматизированный сканер неправильных настроек CORS, который проверяет внедрение заголовка Origin, отражение подстановочных символов и утечку учётных данных в веб-приложениях и API. | Kitploit
Инструменты/GitHubGitHub/santandersecurityresearch/corsair_scan
Сканеры уязвимостейТестирование безопасности APIВеб-безопасностьНеправильная Конфигурация
GitHubsantandersecurityresearch/corsair_scan

corsair_scan

Автоматизированный сканер неправильных настроек CORS, который проверяет внедрение заголовка Origin, отражение подстановочных символов и утечку учётных данных в веб-приложениях и API.

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
122155 лет назадПроверено Kitploit

GitHub release Github all releases HitCount Total alerts Language grade: Python MIT license

corsair_scan

Добро пожаловать в Corsair_scan

Corsair_scan — это инструмент безопасности для тестирования неправильных конфигураций Cross-Origin Resource Sharing (CORS). CORS — это механизм, который позволяет запрашивать ограниченные ресурсы на веб-странице из другого домена, отличного от домена, с которого был предоставлен первый ресурс. Если он настроен неправильно, неавторизованные домены могут получить доступ к этим ресурсам.

Что такое CORS?

CORS — это механизм, основанный на HTTP-заголовках, который позволяет серверу указывать любые другие источники (домен, схему или порт), кроме своего собственного, из которых браузер должен разрешать загрузку ресурсов. Он работает путём добавления новых HTTP-заголовков, которые позволяют серверам описывать, какие источники могут читать эту информацию из веб-браузера.

CORS также опирается на механизм, при котором браузеры отправляют «предварительный» (preflight) запрос на сервер, размещающий ресурс из другого источника, чтобы проверить, разрешит ли сервер фактический запрос. В этом предварительном запросе браузер отправляет заголовки, указывающие HTTP-метод и заголовки, которые будут использоваться в фактическом запросе.

Самой распространённой и проблемной проблемой безопасности при реализации CORS является отсутствие проверки/добавления в белый список запрашивающих сторон. Слишком часто мы видим значение Access-Control-Allow-Origin равным '*'.

К сожалению, это значение по умолчанию, и, таким образом, оно позволяет любому домену в вебе получать доступ к ресурсам этого сайта.

Согласно Стандарту проверки безопасности приложений OWASP (ASVS), требование 14.5.3 гласит:

Убедитесь, что заголовок Access-Control-Allow-Origin механизма Cross-Origin Resource Sharing (CORS) использует строгий белый список доверенных доменов и поддоменов для сопоставления и не поддерживает источник «null».

Как работает corsair_scan?

Corsair_scan работает путём повторной отправки запроса (или списка запросов), полученного в качестве параметра, и последующей инъекции значения в заголовок Origin. В зависимости от содержимого заголовка Access-Control-Allow-Origin в ответе на этот запрос мы можем определить, правильная ли конфигурация CORS или нет. Существует три сценария, указывающих на неправильную конфигурацию CORS:

  • Поддельный источник, отправленный в запросе, отражается в Access-Control-Allow-Origin
  • Значение Access-Control-Allow-Origin равно *
  • Значение Access-Control-Allow-Origin равно null

Если обнаружено, что CORS настроен неправильно, мы проверяем, содержит ли ответ заголовок Access-Control-Allow-Credentials, что означает, что сервер разрешает включение учётных данных в межсайтовые запросы.

Часто конфигурации CORS используют подстановочные знаки, например, принимают что угодно под * example.com *. Это означает, что исходный домен domain.com.evil.com будет принят, так как он соответствует заданному регулярному выражению. Чтобы попытаться противостоять этому, corsair_scan проверяет четыре сценария:

  • Инъекция поддельного домена: мы устанавливаем заголовок origin в https://scarymonster.com, даже если исходный запрос не имеет заголовка origin
  • Если исходный запрос имеет заголовок origin (для ясности предположим, что это https://example.com):
    • Преддоменная инъекция: мы объединяем наш поддельный домен слева от исходного домена. В нашем примере origin будет установлен в https://scarymonsterexample.com
    • Постдоменная инъекция: противоположность преддоменной инъекции, просто объединение справа. Origin будет https://example.com.scarymonster.com
    • Инъекция поддомена: иногда конфигурация CORS добавляет в белый список все поддомены под определённым доменом. Хотя это само по себе не проблема, если один из доменов уязвим к XSS, это может стать серьёзной проблемой. Origin в этом сценарии будет https://scarymonster.example.com

Как установить?

Этот проект разработан на Python 3.9, но должен работать с любой версией Python 3.x. Лучший способ установки — через pip.

pip3 install corsair_scan --user

Как использовать?

Corsair можно использовать как в качестве модуля Python, так и в качестве CLI.

Модуль Python

Метод, выполняющий сканирование CORS, называется corsair_scan. Вот его определение:

corsair_scan

Принимает список запросов и параметр для включения/отключения проверки сертификата в запросе.

Входные данные:

  • data [List]: Список запросов. Каждый запрос — это словарь, содержащий соответствующие данные для запроса:

    • url_data [Dict]: Это словарь, содержащий все соответствующие данные для запроса:
      • url [String]: URL, на который отправляется запрос
      • verb [String]: Глагол для запроса (get, post, patch, delete, options...)
      • params [String]: Тело, отправленное в запросе (если есть)
      • headers [Dict]: Словарь со всеми заголовками, включёнными в запрос
  • verify [Boolean] [По умолчанию: True] : Отправляет это значение в corsair_scan_single_url для каждого запроса

Выходные данные:

  • final_report [List]: Содержит полный отчёт о выполненном тесте. Если filter установлен в true, также добавляет сводку теста в отчёт.
    • report [List]: Список подробных индивидуальных отчётов о выполненном тесте
    • summary [Dict] : Сводка обнаруженных в сканировании проблем

Пример

root@kitploit:~
import corsair_scan.corsair_scan as corsair
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.corsair_scan(data, verify=True))

Ответ:

root@kitploit:~
{'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'}]}}

CLI

В составе установки пакета pip устанавливается CLI. Синтаксис выполнения выглядит следующим образом:

corsair FILE [-nv/--noverify][-r/--report]

CLI требует файл JSON со списком запросов для выполнения сканирования. Пример файла предоставлен в составе тестов:

root@kitploit:~
[{
  "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"
  }
}]

Также есть два дополнительных параметра:

  • -nv / --noverify: Пропустить проверку сертификата, если вы тестируете сайт с самоподписанным сертификатом
  • -r / --report: Сохраняет отчёт в виде файла JSON

Пример

Отчёт CLI

Дорожная карта

  • Релиз corsair_scan как инструмента CLI ✅
  • Чтение данных URL из текстового файла ✅
  • Улучшение формата отчётов

Кто стоит за этим?

Corsair_scan был разработан командой инженеров по безопасности Santander UK, в состав которой входят:

  • David Albone
  • Javier Domínguez Ruiz
  • Fernando Cabrerizo
  • Jonathan Strong
  • James Howieson
Скачать инструмент