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

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

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

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

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

Категории

Все категории
Loading categories
PenScope — Пассивная разведка и картограф поверхности атаки — ноль отправленных запросов | Kitploit
Инструменты/GitHubGitHub/spider12223/penscope
OSINT (Разведка открытых источников)РазведкаСканеры уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииВеб-безопасностьТестирование на ПроникновениеОбнаружение СекретовКраулер
GitHubspider12223/penscope

PenScope

3323 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

Пассивная разведка и картограф поверхности атаки — ноль отправленных запросов

РепозиторийСайт
``` ██████╗ ███████╗███╗ ██╗███████╗ ██████╗ ██████╗ ██████╗ ███████╗ ██╔══██╗██╔════╝████╗ ██║██╔════╝██╔════╝██╔═══██╗██╔══██╗██╔════╝ ██████╔╝█████╗ ██╔██╗ ██║███████╗██║ ██║ ██║██████╔╝█████╗ ██╔═══╝ ██╔══╝ ██║╚██╗██║╚════██║██║ ██║ ██║██╔═══╝ ██╔══╝ ██║ ███████╗██║ ╚████║███████║╚██████╗╚██████╔╝██║ ███████╗ ╚═╝ ╚══════╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝ ``` ### A bug bounty toolkit that lives inside your browser.

version manifest deps lines probes price license

Быстрый старт · Режим охоты · Рабочая область · Режимы · Экспорт · vs Burp · Под капотом


Что это такое

PenScope — это расширение для Chrome. Установите его, откройте сайт, который вам разрешено тестировать, и оно беззвучно нанесёт всю поверхность атаки — каждую конечную точку, каждый секрет, каждый неправильно настроенный заголовок, каждый скрытый параметр. Когда вы дадите команду, оно отправит 36 различных пробных атак, используя ваши реальные сессионные cookie, и сообщит, какие из них сработали.

Или вы устанавливаете scope, нажимаете Hunt, и PenScope делает всё самостоятельно, пока вы занимаетесь чем-то другим — составляя полноценные отчёты об уязвимостях в формате HackerOne для каждого критического и высокого срабатывания, которое оно обнаружит. Вы просыпаетесь с очередью готовых к отправке черновиков.

Это ежедневный инструмент для охотников за багами, которые хотят пропустить рутину «настроить прокси, пощёлкать по трём окнам, alt-tab к списку полезных нагрузок» и просто смотреть на сайт. Или вообще перестать смотреть и позволить инструменту охотиться за них.

Читает всё, ничего не отправляет — пока вы не скажете. Установите scope, нажмите Hunt, закройте ноутбук. Проснитесь с черновиками критических уязвимостей.


Что нового в v6.3

Аудиторный рефакторинг в 8 этапов. Ключевые дополнения:

  • Движок проб: 36 → 45 атак. SSRF param probing, NoSQL operator injection, GraphQL alias/batch DoS, cache deception, subdomain takeover heuristic, TabNabbing, postMessage origin correlation, Service Worker scope abuse.
  • Контракт уровней теперь принудительный, а не описанный. Careful = только GET, последовательно, с интервалом 200 мс. Medium = +POST для операций чтения-формы. Full = всё, включая серии гонок. Наведите на любой уровень в меню проб, чтобы увидеть полный контракт.
  • Охват: 31 новый шаблон секретов + 9 новых шаблонов тела ответа. Mapbox secret keys, Datadog (настоящий формат), Algolia admin, Twilio Auth Token, Postmark, Cloudflare API tokens, Heroku, Linear, Notion, Figma, Plaid pair, Snyk, Terraform Cloud, Pinata, SSH public keys, .env assignments, Vault s./b. prefixes — плюс детекторы Spring Boot / Rails ActiveRecord / Django DEBUG / ASP.NET YSOD / Express / Apollo / MSSQL в теле ответа.
  • 17 новых отпечатков технологий. Qwik, SolidStart, Tauri, Strapi, Sanity, Contentful, Hygraph, Clerk, Cognito, Okta, PingIdentity, Workday, ServiceNow, Salesforce Lightning, Adobe AEM, Electron renderer.
  • Обогащение JWT. Каждый обнаруженный JWT автоматически декодируется (alg, iss, sub, aud, exp, iat, role, scope...). Критичность повышается, если exp в будущем и роль имеет admin-вид.

Полный поэтапный разбор в CHANGES.md. Заметки по миграции в MIGRATION.md.


Быстрый старт```

  1. Download the latest release zip from the Releases page
  2. Unzip it
  3. Open chrome://extensions, enable Developer mode (top right)
  4. Click "Load unpacked" and pick the unzipped folder
root@kitploit:~
Закрепите расширение. Посетите любой сайт. Нажмите на иконку **P**. PenScope уже следит.

---

## Что вы можете сделать

PenScope захватывает 60+ полей данных на вкладку. Вот что это значит на практике:

**Увидеть полную поверхность атаки.** Каждая конечная точка, включая те, на которые есть ссылки в JavaScript, но которые никогда не вызывались. Пути API, скрытые в исходных картах, операции GraphQL, восстановленные из тел POST-запросов, скрытые маршруты администратора, выведенные из интроспекции фреймворка.

**Найти секреты, которые никто не собирался отправлять.** Ключи API, жёстко закодированные в пакетах `.js`. JWT в `localStorage`. Учётные данные AWS в дампах переменных окружения. Внутренние идентификаторы в телах ответов. То, что попадает в отчёт уровня P1.

**Запустить 36 шагов атаки в вашем браузере.** Обход аутентификации, BAC, IDOR, отражение CORS, JWT alg=none, SSTI, XXE, CRLF-инъекция, загрязнение прототипа, обнаружение параметров, понижение версии API. Три уровня агрессии — осторожный, средний, полный. Вставка пользовательских заголовков. Стелс-режим перемешивает порядок запросов, чтобы не сработал WAF.

**Собирать отдельные находки в реальные эксплойты.** JWT в памяти — это находка. Тот же JWT плюс конечная точка API, которая принимает неподписанные токены, плюс расшифрованная роль admin — это цепочка, и PenScope показывает её в верхней части отчёта с оценкой достоверности, командой для воспроизведения и следующими шагами.

**Редактировать и отправлять любой запрос заново.** В стиле правой кнопки мыши. Repeater открывается в новой вкладке, в полном окне. Измените параметр. Нажмите Отправить. Посмотрите ответ. Отправьте его в Diff для сравнения с базовым.

**Фаззинг с точками вставки.** Отметьте `§payload§` в любом месте запроса, выберите набор нагрузок (40 XSS-строк, 30 SQLi, 28 LFI, 18 SSTI, 22 SSRF, 24 команды для инъекций, ID 1–100, классические обходы аутентификации, распространённые имена пользователей), выберите режим атаки (Sniper / Cluster bomb / Pitchfork / Battering ram), следите за живой таблицей результатов. Строки с аномалиями помечаются звездочкой.

**Тестировать как пять разных пользователей одновременно.** Сохраняйте контексты аутентификации (Аноним, Пользователь A, Пользователь B, Администратор, Внутренний). Один клик переключает активный контекст — каждый запрос в Repeater, каждый запуск Intruder, каждый зонд использует эти учётные данные. Затем запустите **Матрицу авторизации**: PenScope проходит по каждой конечной точке × каждый контекст и раскрашивает сетку. Расхождения между строками — это ваши находки IDOR / BAC, выявленные автоматически.

**Сгенерировать CSP, который действительно подходит сайту.** Проходит по каждому запросу, сделанному страницей, классифицирует каждый по типу ресурса, строит строгую политику. Добавляет `default-src 'none'`, `frame-ancestors 'none'`, `upgrade-insecure-requests`. Обнаруживает встроенные скрипты и `eval()` и предупреждает, когда пришлось оставить `'unsafe-inline'`. Сравнивает с существующим CSP — зелёным выделено ужесточение, красным — ослабление.

**Общаться с Claude в обе стороны.** Нажмите `→ Claude`, чтобы скопировать весь скан в буфер обмена в виде структурированного брифа. Спросите Claude, что тестировать дальше. Claude отвечает огороженной JSON-очередью. Нажмите `⟳ Sync from Claude`, и PenScope разбирает очередь, запускает каждую атаку на живой цели и передаёт результаты обратно в анализатор цепочек.

**Отслеживать свою область видимости с течением времени.** Сделайте снимок сайта сегодня, снова сделайте снимок на следующем спринте, нажмите Сравнить. PenScope сообщает, какие находки новые, какие исправлены, какие не изменились. Экспортируйте различия в Markdown для командного Slack.

**Сопоставлять находки с требованиями соответствия.** Нажмите Аудит соответствия. Каждая находка сопоставляется с конкретными элементами управления в PCI-DSS v4, NESA UAE IAS, SAMA CSF, DESC ISR, ISO 27001, OWASP Top 10 2021 и CWE. Экспортируйте JSON для вашей SIEM. Экспортируйте PDF для аудитора.

---

## Режим охоты

Нажмите `🎯 Hunt` в заголовке всплывающего окна. Откроется новая вкладка. **Панель предварительной проверки** внизу показывает состояние вашего движка — захваченные конечные точки, секреты, обнаруженные технологии, сохранённые контексты аутентификации — чтобы вы знали, достаточно ли у вас поверхности для продуктивной охоты, прежде чем нажать Старт. Если конечных точек < 20, жёлтое предупреждение предлагает сначала просмотреть цель ИЛИ положиться на новый этап автоматического обхода DOM. Настройте целевую область видимости (пути в области видимости, пути вне области видимости, уровень агрессии, бюджет времени). Нажмите `▶ Start Hunt`.

PenScope автономно:

1. Выполняет пассивную разведку
2. **Автоматически включает режим Deep** (отладчик CDP подключается незаметно — без запроса пользователю)
3. **Автоматический обход DOM** — проходит по каждому `<a href>`, `<form action>`, ``, `[routerLink]`, `[ng-href]`, `[to]`, `[data-href]` на текущей странице. Фильтрует URL-адреса с тем же источником. Добавляет новые в очередь зондов. _Чистое извлечение URL — никаких кликов, навигации или побочных эффектов, изменяющих сеанс._
4. Запускает полный конвейер из 36 шагов зондирования + 8 пакетов атак с учётом стека
5. Проходит **Матрицу авторизации** по сохранённым контекстам аутентификации
6. Запускает коррелятор цепочек, фильтрует по вашим правилам области видимости
7. **Создаёт черновик полного отчёта в формате HackerOne для каждого критического и высокого уровня** — цепочек *и* отдельных находок высокой степени серьёзности (раскрытые секреты, JWT alg=none, подтверждённые SSTI/XXE/CRLF). Каждый черновик включает заголовок, степень серьёзности с оценкой CVSS, сводку, шаги для воспроизведения с двухэтапным curl (зонд без аутентификации + базовый уровень с аутентификацией для сравнения), заявление о влиянии, специфичное для данной находки, предлагаемое исправление из библиотеки фрагментов и ссылки.
8. Отправляет уведомление Chrome для каждого критического: _"Режим охоты обнаружил критический IDOR на /api/users — черновик отчёта готов"_
9. Сохраняет черновики в `chrome.storage.local` с ключом по хосту (переживают закрытие вкладки и перезапуск браузера)

Вкладка **Live** в реальном времени описывает каждый шаг фильтрации — количество цепочек до/после фильтра области видимости, распределение по степени серьёзности, что было отброшено и почему. Если охота завершилась с 0 отчётов, диагностика «Почему нет отчётов?» проводит вас через каждую точку фильтра с конкретными предложениями («снять фильтр Critical+High», «сохранить 2+ контекста аутентификации», «сначала больше просмотреть цель»). Больше не нужно гадать, почему охота ничего не дала.

**Вы просыпаетесь и видите очередь готовых черновиков отчётов для баунти.** Прочитайте каждый, нажмите Копировать или Экспортировать, вставьте в свою заявку HackerOne / Bugcrowd / Intigriti.

Это рабочий процесс, который Burp даже не пытается реализовать. Активный сканер Burp запускает атаки, но отчёт всё равно нужно писать. PenScope владеет всем путём от сканирования → эксплойта → отчёта → отправки.

> Установите область видимости. Нажмите Старт. Закройте ноутбук. Проснитесь с очередью черновиков Critical.

### Контроль качества — сохраняйте репутацию

Режим охоты активно отфильтровывает ложные срабатывания, которые могли бы подорвать вашу репутацию при отправке:

- **SPA-оболочки HTML** — загрузочные страницы Angular/React/Vue возвращают одинаковый HTML аутентифицированным и неаутентифицированным запросам, потому что JS обрабатывает аутентификацию на стороне клиента. Режим охоты обнаруживает этот шаблон (путь заканчивается на `.html` + `sameBody=true`) и подавляет находку. Настоящие API по-прежнему сообщаются.
- **Безобидные токены SAS Azure** — краткосрочные SAS-URL только для чтения для медиафайлов (`image.jpg?sv=...&sp=r&se=...`) — это легитимная доставка через CDN, а не утечка учётных данных. Режим охоты проверяет `sp=r` + расширение медиафайла + `se - st < 7 дней` и подавляет. Долгосрочные, с возможностью записи или не медиафайловые токены SAS по-прежнему сообщаются как реальные утечки.
- **Нормализация хеш-фрагментов** — `/Dashboard#!/` — это маршрут на стороне клиента, а не серверная конечная точка. Режим охоты удаляет хеш-фрагменты перед анализом цепочек, чтобы в отчёте отображался `/Dashboard` (фактический серверный путь).
- **Настоящий `baseUrl` в каждом curl** — анализатор цепочек извлекает целевой хост из `tab.url` (только HTTP/HTTPS) с запасным вариантом на первую наблюдаемую конечную точку. Больше никаких URL-заполнителей `https://target.tld` в ваших отчётах.
- **Прозрачная диагностика** — каждый шаг фильтрации (область видимости, степень серьёзности, дедупликация) записывает свои значения до/после в ленте в реальном времени. Когда охота завершается с 0 отчётов, лента заканчивается блоком «Почему нет отчётов?», в котором объясняется, где была отброшена каждая потенциальная находка, с конкретными предложениями дальнейших действий, адаптированными к вашей конкретной конфигурации.

### Настоящий черновик в режиме охоты

Вот отредактированный отрывок из реального черновика, созданного режимом охоты для государственной LMS за 4 минуты:```markdown
# Authentication bypass on sensitive endpoint: /api/DashboardApi/getUsefulLinks

**Severity:** CRITICAL (CVSS estimate: 9.0–10.0)
**Confidence:** 95%
**Target:** https://lms.example.gov/Dashboard
**Discovered:** 2026-05-01T07:31:13.151Z
**Detected by:** PenScope v6.2 Hunt Mode (chain pattern: chain-authbypass)

## Summary
PenScope's probe confirmed that GET /api/DashboardApi/getUsefulLinks returns
the same data whether or not authentication cookies are sent
(auth=200, noauth=200, sameBody=false). The path name strongly suggests this
endpoint should be role-gated — it's returning sensitive data to
unauthenticated callers.

## Steps to reproduce
# Verify unauthenticated access
curl -i "https://lms.example.gov/api/DashboardApi/getUsefulLinks"

# Compare to authenticated baseline (paste your real cookies):
curl -i "https://lms.example.gov/api/DashboardApi/getUsefulLinks" -b "session=..."

## Impact
Successful exploitation enables an attacker to bypass core security controls,
gain unauthorized access to sensitive functionality or data, and pivot to
broader compromise. This is a credible breach path warranting immediate
remediation.

## Suggested fix
Enforce server-side authentication on every endpoint that returns sensitive
data. The fact that PenScope received a 200 with no cookies means the
authorization middleware is missing or disabled for this route.

[ ... full Express/Django/Laravel snippet examples + references ... ]

Это отчет о баунти, который можно отправить. Составлен, пока вы занимались чем-то другим.


Верстак

Верстак — это то, что превращает PenScope из "инструмента пассивной разведки" в "всё, для чего вы открываете Burp". Нажмите ⌘ Workbench в заголовке всплывающего окна, и откроется полноэкранная вкладка Chrome с шестью инструментами, которые используют общее состояние с вашим сканированием.

Повторитель

Захватили запрос, который хотите модифицировать? Нажмите на него в карте сайта. Полный запрос — метод, URL, заголовки, тело — загружается в редактор. Редактируйте что угодно. Нажмите Send (или Ctrl+Enter). Ответ отображается справа с указанием статуса, размера, времени и активного контекста аутентификации, с которого он был отправлен.

Панель истории хранит последние 50 отправок. Три кнопки превращают текущий запрос в полезные артефакты: Copy as curl (для терминалов и отчетов), Send to Intruder (с теми же заголовками и телом), Send response to Diff.

Intruder

Возьмите любой запрос. Оберните значение, которое хотите фаззинговать, в §...§. Выберите набор полезной нагрузки. Нажмите Start.

Встроенная библиотека полезных нагрузок:

Или вставьте свой собственный список. Четыре режима атаки: Sniper (одна позиция за раз), Cluster bomb (все комбинации), Pitchfork (позиции синхронно), Battering ram (одна и та же полезная нагрузка везде). Таблица результатов в реальном времени с обнаружением аномалий — строки, где код статуса или размер ответа отличаются от базового, помечаются.

Жесткое ограничение: 200 запросов на атаку. Нечаянно не устроите DoS своей цели баунти.

Кодировщик

Обратимые преобразования для форматов, с которыми хантеры сталкиваются каждый день:``` Base64 ↔ B64-URL ↔ URL ↔ HTML ↔ Hex ↔ MD5 / SHA-1 / SHA-256 / SHA-512

root@kitploit:~
Plus a dedicated **JWT card**: paste a token, decode the header and payload, edit either, then forge a new one. Two forge modes:

- **alg=none** — the classic JWT auth bypass test (server trusts unsigned tokens)
- **HS256** — sign with a guessed weak secret (`secret`, `key`, `password`, `jwt-secret` are the common ones)

Output is a single token, copy-paste ready.

### Diff

Two text panes. Send responses from Repeater with one click. Hit `Compute Diff`. PenScope runs an LCS line-diff and color-codes the result: `+` for added, `−` for removed. Summary count at the top.

This is the IDOR-confirmation killer. "Is the response for User A *the same* as for User B, or did the server actually return User B's data?" Diff tells you in three seconds.

### Site Map

Hierarchical tree of every endpoint PenScope captured, organized by host → path. Method pills (`GET`, `POST`, `DELETE`...). Status code badges per node, color-coded green/yellow/orange/red. Click any path to load it into Repeater.

The full attack surface, in one view, ready to test.

### Auth Contexts + Authorization Matrix

This is the differentiator. Burp doesn't ship this.

Save named auth profiles. Each profile = a name + a set of cookies + a set of headers. Build them by logging in as each user, copying their session cookies + Authorization header, pasting into the editor. Add notes ("paid plan", "read-only role", "internal staff"). One click switches the active context. Every Repeater / Intruder / probe request now fires with those credentials.

Then click `Run authorization matrix`. PenScope hits every endpoint × every context and renders a grid:```
                     Anonymous   User A    User B    Admin
GET  /api/me         401         200       200       200
GET  /api/users      401         403       403       200
GET  /api/admin      401         403       403       200
DELETE /api/orders/5 405         403       403  ★    200
PATCH /api/users/42  401         200  ★    403       200

Звёздочки отмечают строки, где контексты расходятся. Эти строки — ваши находки IDOR и BAC, автоматически выявленные.

Типичный хантер тратит целый день на ручное тестирование каждой конечной точки для каждого пользователя, записывая заметки в документ. PenScope делает это за 30 секунд и раскрашивает результаты.


Режимы

Один и тот же движок данных, три представления. Выберите то, что подходит под вашу задачу.

Переключайте режимы с помощью пилюль Classic / Red / Blue в заголовке всплывающего окна. Каждая вкладка запоминает, в каком режиме вы были в последний раз. Цвета темы меняются вместе с режимом.


Экспорт

Нажмите Export ▾ в заголовке всплывающего окна. Десять форматов, два назначения:

Markdown-отчёт создан для обмена — все учётные данные заменяются, заголовок отчёта явно об этом сообщает. JSON создан для синхронизации с напарником по ханту — все учётные данные передаются как есть.


vs Burp

PenScope и Burp решают одну и ту же проблему с разных сторон. PenScope живёт в вашем браузере; Burp — это MITM-прокси. У каждого своё место. Вот честное сравнение.

Где PenScope побеждает: бесплатно, быстрее настройка, нативный для браузера (использует вашу реальную сессию, без танцев с сертификатами), цепочная корреляция, инструменты для защитников, AI-мост.

Где Burp побеждает: перехват на уровне TLS позволяет видеть и изменять запросы до того, как они покинут сетевой стек — полезно для нативных приложений и smuggle вебсокетов. Collaborator предоставляет инфраструктуру out-of-band callback для слепых XXE / SSRF.

Если вы занимаетесь баунти исключительно в браузере для веб-приложений, PenScope заменяет Burp примерно на 95% вашего повседневного рабочего процесса. Если вы реверсите мобильные приложения или тестируете толстых клиентов, Burp всё ещё ваш друг.


Конфиденциальность

PenScope ничего не отправляет без явного действия пользователя. Нет:

  • ❌ Никакой аналитики
  • ❌ Никакой телеметрии
  • ❌ Никакого удалённого логирования
  • ❌ Никакого сервера лицензий
  • ❌ Никакой проверки "звонка домой"

Исходящий трафик происходит только в трёх случаях:

  1. Вы нажимаете Probe — запросы отправляются на сайт, который вы сканируете, используя ваши существующие куки сессии
  2. Вы нажимаете → Claude или любую кнопку Copy — содержимое попадает в ваш локальный буфер обмена
  3. Вы нажимаете любую опцию Export — содержимое сохраняется на ваш локальный диск

Ноль npm-пакетов. Ноль CDN-скриптов. Ноль сторонних SDK. Чистый ванильный JavaScript, манифест MV3, нулевая поверхность атак через цепочку поставок.



Под капотом

Архитектура, 36 атак-зондов, 13 шаблонов цепочек, карта файлов и почему всё это не требует этапа сборки.


Архитектура```

root@kitploit:~
                ┌──────────────────────────┐
                │   state[tabId]            │
                │   60+ fields populated by │
                │   webRequest / content /  │
                │   CDP / probe layers      │
                └──────────┬───────────────┘
                           │
   ┌───────────────────────┼───────────────────────┐
   │                       │                       │

Classic mode Red mode Blue mode renderClassic() renderRed() renderBlue() │ │ │ └───────────────────────┴───────────────────────┘ │ ┌────────────────┴────────────────┐ │ │ Workbench Hunt Mode (Repeater · Intruder · Encoder (autonomous orchestrator · Diff · Site Map · Auth Matrix) drafting H1 reports)

root@kitploit:~
**Один движок, три режима, три поверхности.** Движок данных не зависит от режима — каждое поле состояния собирается одинаково независимо от того, в каком представлении вы находитесь. Режимы — это выбор темы + рендерера над одними и теми же данными. Workbench и Hunt Mode — это отдельные вкладки Chrome, которые обмениваются `state[tabId]` через обработчики фоновых сообщений.

Переопределения CSS-переменных (`body.mode-red`, `body.mode-blue`) перетемизируют всё без изменения ни одного селектора правил. Именно поэтому Classic Mode — это полностью та же v5.9, байт в байт.

---

## Производительность

PenScope находится на каждой вкладке постоянно. По умолчанию он пропускает дорогостоящее обогащение для ~50 известных шумных суффиксов хостов (видео CDN, такие как `googlevideo.com`, рекламные сети, такие как `doubleclick.net`, телеметрические конечные точки, такие как `sentry.io`, крупные статические CDN, такие как `gstatic.com`). Сотни запросов фрагментов `googlevideo.com` в минуту на YouTube больше не проходят через 14 регулярных выражений AUTH_PATTERN + обнаружение параметров пути + поиск Swagger — они регистрируются как конечные точки (так что карта сайта все еще включает их) и пропускаются для остального.

Тот же быстрый путь для типов ресурсов `image`/`media`/`font`/`stylesheet`/`object`/`ping` на любом хосте. Ошибки почти никогда не прячутся в параметрах URL `.css`.

Повторные сканирования DOM в скрипте контента выполняются через `requestIdleCallback` (с жестким минимальным интервалом в 15 секунд между сканированиями) и полностью пропускаются, когда вкладка скрыта. MutationObserver отфильтровывает только текстовые изменения (тиканье таймеров, обновления символьных данных), так что постоянное изменение DOM на YouTube не вызывает полное повторное сканирование каждые 3 секунды.

Доступно переопределение: флажок **«Полный захват на шумных хостах»** в выпадающем меню Probe. Когда вы специально аудите YouTube/Twitch/Sentry и т.д. В КАЧЕСТВЕ цели, установите его, и быстрый путь будет обойден.

---

## 45 атак Probe

Выполняются по запросу. Три уровня агрессии с обязательными условиями: **Осторожный** = только GET/HEAD/OPTIONS с минимальным интервалом 200 мс между запросами; **Средний** = добавляет POST для операций чтения (≤3 параллельно); **Полный** = все методы, включая DELETE/PUT/PATCH, а также пакеты с гонками (≤10 параллельно). Пользовательские заголовки вставляются в каждый запрос. Режим скрытности перемешивает порядок шагов с помощью Фишера-Йетса и добавляет 0–80% джиттера к задержкам между шагами. Ожидаемый метод каждого шага проверяется на соответствие активному уровню при запуске; заблокированные шаги перечислены в журнале диагностики.

| # | Атака | Что делает |
|---|---|---|
| 1 | Интроспекция GraphQL | Извлекает схему, типы, запросы, мутации |
| 2 | Сбор Source Map | Загружает `.map`, извлекает секреты и конечные точки |
| 3 | Загрузка Swagger/OpenAPI | `/swagger.json`, `/openapi.json` и т.д. |
| 4 | OPTIONS preflight | CORS preflight на каждом пути API |
| 5 | Разведка путей | `/admin`, `/.env`, `/.git/HEAD`, `/actuator` |
| 6 | Перебор префиксов/суффиксов API | `/api/v1/<word>` |
| 7 | Умный перебор суффиксов | Перемешанные в скрытном режиме префикс × суффикс |
| 8 | BAC (нарушенный контроль доступа) | Конечные точки, изменяющие состояние, без аутентификации |
| 9 | Автотест IDOR | Подстановка ID и сравнение тела ответа |
| 10 | Тест отражения CORS | Отражение Origin с учетными данными |
| 11 | Подмена метода | Замена GET/POST/PUT/PATCH/DELETE |
| 12 | Зонд открытого перенаправления | Варианты `?redirect=evil.com` |
| 13 | Зонд гонки условий | Параллельные запросы к чувствительным к идемпотентности конечным точкам |
| 14 | Загрязнение HTTP-параметров | `?id=1&id=2` |
| 15 | Перечисление поддоменов | Из логов CT и наблюдаемого трафика |
| 16 | Фаззинг полей GraphQL | Проверяет каждое проинтроспектированное поле на аутентификацию |
| 17 | Принятие JWT alg=none | Сервер доверяет неподписанным токенам? |
| 18 | Внедрение заголовка Host | Варианты `X-Forwarded-Host` |
| 19 | Отравление кэша | Внедрение безключевого заголовка |
| 20 | IDOR подтвержден sameBody | Сходство тела ответа у разных ID |
| 21 | Тест удаления аутентификации | Удалить куки, искать 200-е ответы |
| 22 | Отсутствие проверки CSRF | Конечные точки, изменяющие состояние, без токена |
| 23 | Отражение gRPC | Открытая служба отражения gRPC |
| 24 | Оракул сжатия (BREACH) | Эвристика, не выполняет реальную эксплуатацию |
| 25 | Угон WebSocket | Cross-origin WS-соединения |
| 26 | Зонд отравления кэша | Ввод на основе безключевого заголовка |
| 27 | Временной оракул | Расхождение времени ответа одной и той же конечной точки |
| 28 | Обход COOP/COEP | Сила изоляции Cross-Origin |
| 29 | Разделение хранилища | Изоляция хранилища между сайтами |
| 30 | Умное рекурсивное обнаружение | 3 волны зондирования, цепляющиеся от предыдущих ответов |
| 31 | Обнаружение параметров | Перебор 38 скрытых параметров (`debug`, `admin`, `_method`, `bypass`...) |
| 32 | Зонд SSTI | `{{7*7}}`, `${7*7}`, `<%=7*7%>` |
| 33 | Зонд XXE | XML с внешними сущностями |
| 34 | Внедрение CRLF | `%0d%0a` в параметрах перенаправления |
| 35 | Понижение версии API | `/v1/`, `/v2/` для каждого наблюдаемого `/vN/` |
| 36 | Загрязнение прототипа | `__proto__` / `constructor.prototype` в JSON-телах |
| 37 | Зонд параметров SSRF | 26 имен параметров SSRF с полезными нагрузками метаданных облака; помечает отраженное содержимое метаданных |
| 38 | Внедрение операторов NoSQL | `{"$ne":null}` / `{"$gt":""}` / `{"$exists":true}` на JSON-полях ID |
| 39 | Усиление псевдонимов GraphQL | Запрос с 50 псевдонимами → поверхность усиления DoS (только полный уровень) |
| 40 | Усиление пакета GraphQL | Пакет из 25 элементов JSON-массива → усиление DoS (только полный уровень) |
| 41 | Обман кэша | Стиль `/api/me/avatar.css` — конфиденциальное содержимое кэшируется за статическими расширениями |
| 42 | Перехват поддомена | Зонд HEAD для захваченных поддоменов; сопоставляет сигнатуры захвата GitHub Pages / S3 / Heroku / Netlify / Vercel / Bitbucket / Shopify |
| 43 | TabNabbing | Cross-origin `<a target="_blank">` без `rel="noopener"` |
| 44 | Корреляция origin в postMessage | Слушатели `addEventListener("message")` без проверки origin |
| 45 | Злоупотребление областью Service Worker | Флаги широких областей SW (особенно `/`) |

Плюс **8 наборов атак, учитывающих стек**, которые запускаются автоматически, когда Red mode обнаруживает соответствующий фреймворк: Laravel, Spring Boot, Rails, ASP.NET, Django, Next.js, GraphQL, WordPress. Каждый набор содержит от 4 до 9 тестов, специфичных для стека. Только набор Spring Boot поражает `/actuator/heapdump`, `/actuator/env`, `/jolokia/list`, `/h2-console`.

---

## 13 шаблонов цепочек

Отдельные находки — это шум. Составные находки — это эксплойты. Анализатор цепочек PenScope проходит по всему состоянию и выдает цепочки там, где несколько сигналов объединяются в нечто эксплуатируемое.

1. **Обход аутентификации на чувствительной конечной точке** — подтверждено отсутствие аутентификации + путь admin/billing/user
2. **Разрушительный BAC** — уязвимая конечная точка с `delete`/`remove`/`purge` в пути
3. **Уязвимая к CSRF мутация GraphQL** — подтверждено отсутствие CSRF + это мутация
4. **Раскрытый токен аутентификации + живое API** — JWT в памяти + соответствующие конечные точки
5. **Подтвержденный IDOR с конфиденциальными данными** — ответ с тем же скелетом для разных ID
6. **Отражение CORS С учетными данными** — полный обход SOP
7. **Открытое перенаправление в процессе аутентификации** — параметр redirect на путях обратного вызова OAuth
8. **Скрытые маршруты администратора** — 3 и более путей admin в коде, никогда не наблюдавшихся в трафике
9. **Принятие JWT alg=none** — сервер доверяет неподписанным токенам
10. **Утечка секретов через Source Map** — в производстве поставлены файлы `.map` с жестко закодированными ключами
11. **Утечка внутреннего IP через WebRTC** — частные IP-адреса раскрыты через STUN
12. **Кластер находок рекурсивного зонда** — 3 и более чувствительных находок на нескольких конечных точках
13. **Специфичная для стека поверхность RCE** — набор для стека обнаружил открытый actuator/Ignition и т.д.

Каждая цепочка имеет степень серьезности, сводку, команду воспроизведения, следующие шаги и показатель уверенности. Отсортировано по `severity × confidence`. Отображается в верхней части Red mode и в верхней части каждого отчета Claude.

---

## Оценка здоровья (Blue mode)```
score = max(10, 100 − min(90, crit×22 + high×9))

Строго намеренно. Только критичные и высокие изменяют число. Средние и низкие все еще отображаются в плитках счетчика и топ-5 исправлений — их стоит исправлять — но они не влияют на оценку.

Нижняя граница равна 10, чтобы катастрофический сайт показывал '10/100', а не '0/100' (что пользователь не смог бы отличить от 'ошибка сканирования').


Карта файлов```

PenScope/ ├── manifest.json MV3 manifest, v6.3.0, "type":"module" service worker ├── popup.html Mode UI shell — three modes, glassmorphism dark theme ├── popup.js Renderers, mode router, weaponize panels, fix snippets, │ compliance, Hunt + Workbench launchers, exports ├── content.js Content script — DOM scanning, secrets, JSON islands, │ tech fingerprints, XSS sinks, postMessage scan │ ├── workbench.html / .js Workbench tab — Repeater / Intruder / Encoder / │ Diff / SiteMap / AuthCtx + AuthMatrix │ ├── hunt.html / .js Hunt Mode tab — autonomous orchestrator │ ├── regex-pack.json 81 secret patterns + 44 response-body patterns │ (loaded by SW at boot, merged into RESP_PATTERNS, │ fetched by content script via getRegexPack message) │ ├── src/ Service worker entry + module tree (Phase 7 migration) │ ├── background.js Entry — webRequest, CDP, probe orchestrator, │ │ chain correlator, message router (~7,000 lines) │ ├── probe/ │ │ └── stack-packs.js STACK_ATTACK_PACKS (8 stacks) — extracted module │ └── (other audit-named files are stubs — see MIGRATION.md) │ ├── fonts/ Local woff2: JetBrains Mono + Plus Jakarta Sans │ (4 + 5 weights, ~590 KB total). Replaces the │ Google Fonts beacon that earlier versions hit on │ every popup open. │ ├── icons/ 16, 48, 128 px PNG ├── CHANGELOG.md Full version history v5.1 → v6.3.0 ├── CHANGES.md v6.3 per-phase fix breakdown ├── MIGRATION.md Phase 7 module-migration map (real vs stub) ├── LICENSE MIT └── README.md You are here

root@kitploit:~
Четыре старых файла-справочника (`red-attacks.js`, `blue-fixes.js`, `blue-csp.js`, `blue-compliance.js`) были удалены в версии 6.3 — их содержимое уже было встроено в `popup.js` / `background.js` начиная с версии 6.0; отдельные файлы являлись мёртвым кодом. `STACK_ATTACK_PACKS` теперь является реальным ES-модульным экспортом из `src/probe/stack-packs.js`.

---

## Без этапа сборки```bash
git clone https://github.com/spider12223/PenScope
# That's it.

Никакого npm install. Никакого webpack. Никакого babel. Никакого TypeScript. Никакого сборщика. Чистый ванильный JavaScript. Тег <script> в popup.html указывает напрямую на popup.js. Сервис-воркер загружает background.js напрямую. CSS встроен в <style>.

Реализация MD5 занимает ~50 строк встроенного эталонного RFC 1321 (потому что crypto.subtle не предоставляет MD5). LCS diff — ~30 строк. Подпись JWT использует нативный crypto.subtle.sign. Коррелятор цепочек — это просто регулярное выражение + перебор массива. Всё, что вы читаете в этой кодовой базе, именно то, что выполняется в браузере.

Инструмент разведки, который поставляется с 200 транзитивными npm-зависимостями, имеет 200 пакетов поверхности атаки цепочки поставок. У PenScope — ноль.


Разрешения


Участие в разработке

Приветствуются отчёты об ошибках и PR. Некоторые ограничения:

  • Никаких новых зависимостей. Никакого package.json. Если нужна небольшая утилита, напишите 20 строк.
  • Только ванильный JS. Никаких React, Vue, TypeScript, этапа сборки.
  • Состояние остаётся в state[tabId]. Не вводите новые глобальные хранилища.
  • Комментарии объясняют «почему», а не «что». Встроенные комментарии о назначении регулярного выражения, особенностях MV3, контракте маршрутизатора режимов.
  • Доступность. Новые интерактивные элементы должны иметь контуры :focus-visible, ARIA-метки, контраст ≥4.5:1.
  • Никакого new Function(). Сервис-воркеры MV3 запрещают динамический код. Используйте именованные объявления функций + args для chrome.scripting.executeScript.
  • Проверяйте перед отправкой. Убедитесь, что мутации куки/состояния имеют путь восстановления. Тестируйте пользовательскую криптографию на векторах. Проверяйте крайние случаи.

Лицензия

MIT. Используйте, форкайте, публикуйте.

Если PenScope найдёт вам критическую уязвимость, создайте issue и расскажите нам. Мы собираем истории из практики.


Сделано охотниками, для охотников.

Сообщить об ошибке · История изменений

Скачать инструмент
  • Дополнения CDP. Accessibility.getFullAXTree выявляет чувствительные aria-метки (кнопки admin/sudo/delete/destroy). Storage.getCookies раскрывает CHIPS-разделённые cookie, которые chrome.cookies.getAll не видит.
  • Парсер JSON islands. Блоки <script type="application/json"> (Next __NEXT_DATA__, Nuxt __NUXT__, Remix __remixContext, Apollo __APOLLO_STATE__) разбираются на конечные точки + ID-поля, а не просто сканируются регулярками.
  • Новый UX вкладки конечных точек. Кнопка curl для каждой строки, кнопка для повторной отправки без аутентификации (воспроизводит запрос без cookie, показывает вердикт рядом). Представление таблицы маршрутов, которое сворачивает /users/123, /users/124 в /users/{id} с подсчётом. Автопанель для поддоменов admin.*, api.*, internal.*.
  • Экспорт HAR + wordlist для ffuf. Зеркальные экспорты из существующего импорта HAR + wordlist для Burp. Можно сразу скормить в ffuf -w.
  • 📸 Кнопки Snap / Diff в заголовке всплывающего окна. Сохраните снимок сейчас, сравните позже в любое время. Тот же механизм, что используется в Blue режиме.
  • Diff IndexedDB. Захватите клиентское состояние, измените приложение, захватите снова, сравните. Ловит утечки состояния, которые пропускает чистый захват HTTP.
  • Критические исправления безопасности. Зонд window.__ps_ctx больше не раскрывает заголовки авторизации пользователя в контексте страницы после завершения проверки. Команды воспроизведения цепочек по умолчанию скрывают сессионные cookie (в Red режиме есть переключатель для включения реальных значений). Снимки fetch/JSON/Promise/atob/btoa/и т.д. в IIFE зонда захватываются при загрузке, чтобы страницы с аналитикой не могли перехватить зонд, переопределив глобальные переменные. Локальное встраивание шрифтов — нулевые исходящие запросы при открытии всплывающего окна.
  • Миграция на ES-модули. SW теперь загружается как "type":"module". Дерево каталогов src/ на месте; STACK_ATTACK_PACKS извлечены в src/probe/stack-packs.js. Оставшиеся модули — заглушки, документирующие путь извлечения.
  • НаборКоличествоСценарий использования
    XSS40Тестирование отражений, DOM XSS, варианты SVG/iframe
    SQLi30Boolean blind, error-based, time-based, UNION
    LFI / Path Traversal28Варианты кодирования, Windows + Linux, отравление логов
    SSTI18Jinja2, Twig, Freemarker, Velocity, Smarty
    SSRF22Варианты localhost, метаданные AWS/Azure/GCP, gopher/dict
    Command Injection24Bash, PowerShell, обход IFS
    IDs 1-100100Для перебора IDOR
    Auth bypass25Трюки с путями, повышение роли, обход SQL-аутентификации
    Common usernames25admin, root, test, support, service...
    РежимДля когоЧто на экране
    🟣КлассическийПривычный рабочий процесс, все данныеКаждая вкладка, каждая деталь. Оригинальный PenScope.
    🔴RedНаступательное тестированиеПанель цепочек эксплойтов вверху с кнопками вооружения (curl, Nuclei YAML, Burp request, H1 report draft, Claude queue). Пакеты атак, учитывающие стек, автоматически запускаются на обнаруженных фреймворках (Laravel, Spring Boot, Rails, ASP.NET, Django, Next.js, GraphQL, WordPress). В первую очередь цепочки, классические вкладки свёрнуты внизу.
    🔵BlueЗащитники / обзор безопасностиОценка здоровья (0-100, строгая — учитываются только критические и высокие). Топ-5 исправлений, отсортированных по критичности × простоте, каждое с примерами для копирования в Nginx / Apache / IIS / Express / Django / Laravel / Rails / ASP.NET. Генератор CSP на основе наблюдаемого трафика. Аудит соответствия по 7 фреймворкам. Снимок и дифф регрессии. Непрерывный мониторинг с уведомлениями Chrome при утечке новых секретов.
    ЭкспортВключает учётные данные?Для чего использовать
    JSON (полные данные)✅ ДаФормат для обмена в команде. Два хантера, работающие с одной целью, нуждаются в общих контекстах аутентификации для воспроизведения находок. Отправляйте через Signal / зашифрованный канал.
    📄 Полный отчёт (.md)❌ ЗамененоДля отправки на баунти, взаимодействия с клиентом, везде, где информация покидает вашу команду. Значения заголовков аутентификации (Authorization, Cookie, X-API-Key, X-Auth-Token, X-CSRF-Token, X-Amz-Security-Token и т.д.) заменены на <redacted, N chars>. Включает встроенные отчёты режима охоты, срабатывания пакетов атак, оповещения непрерывного мониторинга и статус триажа "Помечено как исправленное".
    Список URL для BurpТолько список URLВставьте в область целей Burp или передайте в ffuf/nuclei
    Список параметровТолько именаСловари для фаззинга — параметры запроса + имена полей форм + имена скрытых полей
    Список параметров (ffuf)Только именаТе же данные, выводимые в виде строк param=FUZZ для ffuf -w
    Конечные точки (txt)Только список URLМетод/статус/путь/хост/теги/размер, разделённые табуляцией — наблюдаемые и обнаруженные маршруты
    📤 Экспорт HARЗаголовки + телаПолный захват HAR-1.2, который можно импортировать в Chrome DevTools / просмотрщик HAR / передать коллеге
    🔧 Спецификация Swagger (.yaml)Только список URLВосстановленная спецификация OpenAPI 3.0 из наблюдаемого трафика
    🗺️ Source Maps (JSON)Только извлечения из исходниковПолные разобранные карты исходников с деревьями файлов, секретами, маршрутами, переменными окружения, зависимостями
    ⚔️ Шаблоны Nuclei (.yaml)Только URL зондовПоместите в ~/.config/nuclei/custom/ для непрерывного сканирования
    ФункцияPenScope (бесплатно)Burp Suite Pro ($449/год)
    Repeater✅✅
    Intruder (4 режима атак)✅✅
    Decoder (B64/URL/Hex/JWT)✅✅
    Comparer / Diff✅✅
    Target / Site Map✅✅
    Active scanner✅ (45 зондов + 8 стековых пакетов)✅
    Обработка контекстов сессий/аутентификации✅ (сохранённые профили + матрица)✅ (на основе правил)
    Тестер матрицы авторизации✅ (встроенный)❌ (платное расширение)
    Цепочная корреляция (составные находки)✅ (13 шаблонов)❌
    Эвристика захвата поддоменов✅ (8 сигнатур служб)❌ (платное расширение)
    Тесты поверхности DoS GraphQL (алиас + пакетная обработка)✅❌
    Кнопка повторного запроса без аутентификации для каждой конечной точки✅❌
    Импорт и экспорт HAR✅ (туда и обратно)✅ (односторонний)
    Diff IndexedDB (утечки состояния клиента)✅❌
    Захват разделённых cookie CHIPS✅❌
    Парсер JSON-островков (данные гидратации Next/Nuxt/Remix)✅❌
    Сопоставление с требованиями (PCI/NESA/SAMA/ISO/OWASP)✅ (7 фреймворков)❌
    Генератор CSP из наблюдаемого трафика✅❌
    Дифф регрессии (снимок + сравнение)✅❌
    Интеграция AI (двунаправленная связь с Claude)✅❌
    Автономный режим охоты (создаёт черновики отчётов H1, пока вы спите)✅❌
    Время настройки60 секунд~30 минут (прокси + сертификат + настройка браузера)
    Перехват на уровне TLS❌ (ограничение браузера)✅
    Out-of-band тестирование (Collaborator)❌ (планируется)✅
    Магазин расширений❌✅
    Стоимость$0$449 / пользователь / год
    СостояниеОценка
    0 крит., 0 выс.100 (чисто)
    1 выс.91
    3 выс.73
    1 крит.78
    1 крит. + 3 выс.51
    3 крит.34
    5+ крит.10 (минимум)
    РазрешениеЗачем
    webRequestПерехватывать каждый запрос/ответ без повторной загрузки
    webNavigationОбнаруживать изменения маршрута SPA через pushState/replaceState (v6.3+), чтобы конечные точки с app.com не попадали в состояние нового источника при навигации SPA между разными источниками
    activeTabЧитать URL текущей вкладки + отправлять сообщения контентному скрипту
    scriptingВнедрять запускатели зондов, стеки пакетов и запросы Workbench в контекст страницы
    tabsСопоставлять находки с правильной вкладкой; открывать Workbench в новой вкладке
    cookiesЧитать HttpOnly-куки, которые document.cookie не видит
    debuggerТребуется для режима Deep — включает CDP для полных тел ответов, интроспекции во время выполнения, извлечения исходного кода, проблем аудита, дерева доступности, сегментированных куки
    notificationsУведомления непрерывного мониторинга о новых утечках секретов
    alarmsТики с 5-минутным интервалом для непрерывного мониторинга
    storageСохранять состояние (session) и снимки (local) между перезапусками SW
    <all_urls> разрешение на хостыПерехват не привязан к цели; пользователь управляет тем, какая вкладка открыта