<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Исповедь Пентестера</title><generator>teletype.in</generator><description><![CDATA[Исповедь Пентестера]]></description><image><url>https://img1.teletype.in/files/81/de/81deb7d7-df54-43bf-80c2-d59c59ff6ef2.png</url><title>Исповедь Пентестера</title><link>https://teletype.in/@pentesters_confessions</link></image><link>https://teletype.in/@pentesters_confessions?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=pentesters_confessions</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/pentesters_confessions?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/pentesters_confessions?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 20 May 2026 05:30:02 GMT</pubDate><lastBuildDate>Wed, 20 May 2026 05:30:02 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@pentesters_confessions/lBWiuW3DtPh</guid><link>https://teletype.in/@pentesters_confessions/lBWiuW3DtPh?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=pentesters_confessions</link><comments>https://teletype.in/@pentesters_confessions/lBWiuW3DtPh?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=pentesters_confessions#comments</comments><dc:creator>pentesters_confessions</dc:creator><title>Тестим graphql Часть1</title><pubDate>Tue, 13 May 2025 20:13:03 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/9c/59/9c594815-8489-4245-a163-f19f8660fb5d.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/66/6f/666f24d2-bd65-447d-a4df-5add9ebd441a.png"></img>В этой статье не будет теоретической части о GraphQL и его основах — сразу перейдём к практике.]]></description><content:encoded><![CDATA[
  <p id="TqTz">В этой статье не будет теоретической части о GraphQL и его основах — сразу перейдём к практике.</p>
  <h3 id="dyUQ">Поиск Endpoints</h3>
  <p id="7A1u">Первым шагом является поиск GraphQL endpoints. Для этого можно использовать любой подходящий фаззер. Я воспользуюсь <strong>Kiterunner</strong>. </p>
  <figure id="c9a8" class="m_retina">
    <img src="https://img3.teletype.in/files/66/6f/666f24d2-bd65-447d-a4df-5add9ebd441a.png" width="635.5" />
  </figure>
  <p id="pNvM">Как видно, было обнаружено два эндпоинта: <code>/graphql</code> и <code>/graphiql</code>.</p>
  <p id="irT4">Также эндпоинты можно найти в JS файлах и GitHub репозиториях</p>
  <p id="4svZ">Если эндпоинты найти не удалось, это может означать, что GraphQL не используется. Однако, если GraphQL всё же применяется, но стандартные пути недоступны, endpoint можно определить, перехватив трафик в <strong>Burp Suite</strong> — иногда он может иметь нестандартное имя. Тоесть, просто найти где идет запрос к graphql. Если нашли несколько эндпоинтов - тестируем каждый отдельно.</p>
  <p id="z3lq">Теперь давайте подробнее рассмотрим эндпоинт <code>/graphql</code>.</p>
  <figure id="dtNX" class="m_original">
    <img src="https://img2.teletype.in/files/93/21/93218957-70a9-4098-b686-7e9a42d064e9.png" width="808" />
  </figure>
  <p id="zOKW">На данном этапе ничего необычного — перед нами стандартный GraphQL-эндпоинт, принимающий POST-запросы.</p>
  <p id="lsdE">1. Тут уже можно посмотреть, может есть какие-то интересные заголовки или какие-то интересные атрибуты в куки</p>
  <p id="sBUN">2. Так же смотрим, есть ли какие-то интересные параметрры по типу debug</p>
  <p id="GfbR">3. В надежде на стек-трейс кидаем какой-то кривой запрос, например:</p>
  <p id="RSNF"><code>query {<br />  dsf {<br />    sdfsdf<br />  }<br />}</code><br /></p>
  <p id="Ukdg">4. Если в ответе видим какие-то стрек трейс ошибки, мы можем увидеть текущего пользователя/фрейморвки/фрагмент выходного кода и т.д.. Так же смотрим, может есть что в консольке интересного. Часто стек трейс могут падать именно в консоль</p>
  <p id="9tQR">Теперь перейдём к определению используемых движков и технологий. Для этого воспользуемся инструментом <strong>Graphw00f</strong>.</p>
  <figure id="1AQC" class="m_retina">
    <img src="https://img4.teletype.in/files/fc/a9/fca90515-3ba8-48b3-a388-6e1930156505.png" width="645.5" />
  </figure>
  <p id="IT0F">Как видно, используется движок <strong>Graphene</strong> на Python. Инструмент также предоставил ссылку на документацию, с которой стоит ознакомиться в первую очередь — это может дать полезную и потенциально важную информацию о реализации GraphQL на целевом сервере.</p>
  <p id="fJEo">Теперь давайте изучим поведение эндпоинта более подробно. Для этого отправим базовый запрос через <strong>Postman</strong>.</p>
  <figure id="i4uF" class="m_retina">
    <img src="https://img2.teletype.in/files/d5/7d/d57db0a4-6012-45c0-8c25-7fd9d21bbf8f.png" width="756.5" />
  </figure>
  <p id="QdsN">Как мы видим, <strong>интроспекция включена</strong>, что значительно упрощает анализ схемы GraphQL.</p>
  <p id="xSqG">Для удобства взаимодействия с GraphQL также можно использовать расширение <strong>InQL</strong> для <strong>Burp Suite</strong>. Оно позволяет автоматически извлекать доступные типы, запросы и мутации, а также формировать интерактивные запросы — это может быть полезно тем, кто предпочитает работать в Burp.</p>
  <figure id="k3Et" class="m_retina">
    <img src="https://img3.teletype.in/files/a2/51/a251494b-7cb4-4e48-ab7a-dd0a22002828.png" width="704.5" />
  </figure>
  <p id="C8fw"></p>
  <p id="UXnl">Расширение <strong>InQL</strong> доступно в <strong>BApp Store</strong></p>
  <p id="0QwV">Однако для более наглядной визуализации схемы я рекомендую воспользоваться инструментом <strong>GraphQL Voyager</strong>. Он позволяет представить структуру GraphQL API в виде диаграммы, что значительно упрощает понимание связей между типами и сущностями.</p>
  <p id="PSSY">Для этого необходимо выполнить <strong>интроспективный запрос</strong>, результат которого затем можно загрузить в Voyager.</p>
  <figure id="xn5j" class="m_retina">
    <img src="https://img4.teletype.in/files/70/73/7073a802-8f71-4dd5-9eeb-f8327f8b3f24.png" width="743.5" />
  </figure>
  <p id="naDx">После выполнения интроспективного запроса копируем полученный JSON-ответ и загружаем его в <strong>GraphQL Voyager</strong>. Это позволит визуализировать схему API, увидеть все типы, связи между ними, а также получить общее представление о структуре бэкенда.</p>
  <figure id="jijc" class="m_retina">
    <img src="https://img4.teletype.in/files/fb/9f/fb9f7b4b-f403-44c9-bf4a-2e8a49bf60d0.png" width="766" />
  </figure>
  <p id="m3Uf">Теперь у нас есть схема, описывающая структуру GraphQL API. Это значительно упрощает процесс тестирования, так как мы понимаем, какие запросы можно отправлять и какие данные ожидать в ответ.</p>
  <p id="OUsT">Давайте теперь прогоним по сканерам уязвимостей. <strong>graphql-cop</strong>:</p>
  <figure id="pW1D" class="m_retina">
    <img src="https://img3.teletype.in/files/69/db/69db36f1-61c2-4807-bcb5-759c1c2229bf.png" width="736" />
  </figure>
  <p id="r11E">И через <strong>BatchQL</strong>:</p>
  <figure id="9GtY" class="m_retina">
    <img src="https://img2.teletype.in/files/94/81/948138e2-e14f-4a8b-8cd6-8936d9802d29.png" width="621" />
  </figure>
  <p id="Kudb">Эти инструменты дают нам много информации. Как например, возможный CSRF. Если. например, graphql используеться для удаления аккаунта, и меры безопасности против csrf не соблюдаються (samesite/csrf token и т.д..), то мы можем эксплуатировать csrf</p>
  <p id="xQY0">Однако всё чаще разработчики отключают функцию интроспекции, чтобы ограничить доступ к схеме API. Это усложняет задачу тестировщика, так как схема становится недоступной для анализа. Отключение интроспекции — распространённая мера безопасности, поскольку её данные могут предоставить злоумышленнику ценную информацию о структуре приложения.</p>
  <p id="j5pT">Что делать в таком случае? Один из эффективных инструментов для решения этой проблемы — <strong>Clairvoyance</strong>. Он позволяет восстановить схему GraphQL API даже при отключённой интроспекции, анализируя ответы сервера на специально сформированные запросы.</p>
  <p id="bIyb">Подробное описание работы Clairvoyance выходит за рамки этой статьи. Если вы хотите глубже разобраться в принципах его работы, рекомендуем ознакомиться с видео по теме: <a href="https://www.youtube.com/watch?v=nPB8o0cSnvM&t=794s" target="_blank">ссылка на YouTube</a>.</p>
  <figure id="KeCW" class="m_retina">
    <img src="https://img3.teletype.in/files/6f/c3/6fc3bd02-784d-4827-9c98-52d123d63d52.png" width="685.5" />
  </figure>
  <p id="inVR">Для примера я протестировал инструмент Clairvoyance на случайном сайте, использующем GraphQL-движок Apollo. Как и ожидалось, интроспекция на этом сайте была отключена — стандартная практика для повышения безопасности. В результате работы Clairvoyance мне удалось восстановить схему API, которую я затем визуализировал для удобства анализа.</p>
  <p id="O51P">Хотя восстановленная схема не является полной заменой данных, полученных через интроспекцию, она предоставляет достаточно информации для дальнейшего тестирования. Для достижения более точных результатов рекомендую использовать обширные словари запросов, специально предназначенные для GraphQL. Такие словари можно найти, например, здесь: <a href="https://github.com/Escape-Technologies/graphql-wordlist" target="_blank">GraphQL Wordlist</a>.</p>
  <p id="1GH4">Кроме того, для более эффективной отладки и анализа советую проксировать запросы через Burp Suite. Это позволяет отслеживать взаимодействие с сервером в реальном времени, включая ответы и возможные ошибки. Например, если сервер или WAF блокирует запросы, вы сразу заметите это в Burp Suite и сможете уже решить, что делать дальше </p>
  <h3 id="R8WZ">Теперь давайте рассмотрим интересный эндпоинт graphiql</h3>
  <p id="Xuij">GraphQL часто предоставляют встроенную среду разработки<strong> (IDE)</strong> прямо на веб-приложении. Это графический интерфейс, с помощью которого можно отправлять запросы к API. Наиболее распространённые GraphQL IDE — это <strong>GraphiQL</strong>, <strong>GraphQL Playground</strong> и <strong>Altair Client</strong>. Эти интерфейсы обычно включают:</p>
  <ul id="d6ST">
    <li id="RcuJ">окно для написания запросов;</li>
    <li id="uNE8">окно для отправки запросов;</li>
    <li id="MLE1">окно для просмотра ответов;</li>
    <li id="h0fU">раздел с документацией GraphQL. (она базируеться на интроспекции)</li>
  </ul>
  <figure id="lltA" class="m_retina">
    <img src="https://img4.teletype.in/files/3f/b0/3fb077e5-daf6-45e2-92f6-d33f8ce153e7.png" width="946" />
  </figure>
  <p id="QxcG">Такие IDE могут быть защищены авторизацией. Пробуем её обойти, это может дать очень интересные результаты.</p>
  <p id="rgb4">В целом, про графический интерфейс что-то ещё нельзя сказать. Графические интерфесы это не что-то очень особенное, что может дать хакеру какую-то супер ценную информацию</p>
  <h3 id="r81i">Ищем graphql на субдоменах</h3>
  <p id="zCzU">Часто на субдоменах по типу</p>
  <ul id="3kr8">
    <li id="80xQ"><code>staging.site.com</code></li>
    <li id="AHhA"><code>dev.site.com</code></li>
    <li id="RPpq"><code>test.api.site.com</code></li>
  </ul>
  <p id="mtbV">Есть graphql ендпоинты, но с включенной интроспекцией, и возможно, каким-то дополнительным функционалом. Для хакера такое может быть на вес золота. Это может раскрыть кучу потенциальных уязвимостей или каких то важной технической информации</p>
  <h3 id="sOd4">Эксплуатация метаполя __type</h3>
  <p id="lfca">Даже, если интроспекция выключена, это ведь не значит,что она на 100 процентов заблокирована</p>
  <p id="mL3f">Большинство систем блокирует интроспекционные запросы, содержащие слово __schema. Но если этого слова нету, запросы пропускаються фаерволом</p>
  <p id="laA1">В 2022 иследователи обнаружили, что Amazon AppSync блокирует все запросы по методике, какая описанна выше. После репорта, команда Amazon тут же фиксанула дыру и обновила документации</p>
  <p id="vFVd">Чтобы проверить такой метод обхода, кидаем <em>canary</em> запрос</p>
  <p id="lk9k"><code>{<br />  __type(name:&quot;Query&quot;) {<br />    name<br />  }<br />}<br /></code>Если ответ не ошибка - интроспекция по сути не заблокирована. Но с ее получением все-равно возникнут трудности</p>
  <h2 id="DNkx" data-align="center">НАШИ ПРОЕКТЫ</h2>
  <h3 id="K4px"><strong>Канал -<a href="https://t.me/pentesters_confessions" target="_blank"> ИСПОВЕДЬ ПЕНТЕСТЕРА</a></strong></h3>
  <h3 id="np1F"><strong>Наш Чат - <a href="https://t.me/+YgxPPcFtalUyZDYy" target="_blank">t.me/+YgxPPcFtalUyZDYy</a></strong></h3>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@pentesters_confessions/WpzYcoBYZey</guid><link>https://teletype.in/@pentesters_confessions/WpzYcoBYZey?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=pentesters_confessions</link><comments>https://teletype.in/@pentesters_confessions/WpzYcoBYZey?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=pentesters_confessions#comments</comments><dc:creator>pentesters_confessions</dc:creator><title>Использование веб-краулера Katana</title><pubDate>Sun, 13 Apr 2025 19:19:08 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/b4/1c/b41c1773-505f-4cde-aeb6-8c4c27b8acf2.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/8c/58/8c58070b-ccc7-4acc-b76e-48eee9c609e1.png"></img>В этой статье рассмотрим, как использовать веб-краулер Katana. Мы подробно разберем практически весь его функционал.]]></description><content:encoded><![CDATA[
  <figure id="FCdK" class="m_retina" data-caption-align="center">
    <img src="https://img2.teletype.in/files/54/70/5470130e-c560-4882-a7e5-fbc59e0f822a.png" width="640" />
    <figcaption>https://t.me/pentesters_confessions</figcaption>
  </figure>
  <p id="EH3i">В этой статье рассмотрим, как использовать веб-краулер Katana. Мы подробно разберем практически весь его функционал.</p>
  <p id="oWOH">Katana — это мощный фреймворк для веб-краулинга и спайдеринга, разработанный командой ProjectDiscovery. Он незаменим на всех этапах тестирования на проникновение, обеспечивая гибкость и эффективность</p>
  <h2 id="gucJ">Ввод ссылки</h2>
  <p id="goSj">Katana позволяет указать цели для сканирования несколькими способами:</p>
  <p id="TaN7"><em>1. Через -u:</em></p>
  <p id="DDBV">Мы можем дать как одну ссылку, например:</p>
  <p id="Rf5r"><code>katana -u github.com</code></p>
  <figure id="RalN" class="m_original">
    <img src="https://img1.teletype.in/files/8c/58/8c58070b-ccc7-4acc-b76e-48eee9c609e1.png" width="730" />
  </figure>
  <p id="IWR5">Для нескольких ссылок (разделяются запятыми):</p>
  <p id="kQFD"><code>katana -u github.com,google.com</code></p>
  <figure id="O5nu" class="m_retina">
    <img src="https://img3.teletype.in/files/e8/c5/e8c55582-4e30-4097-84fb-f06af5ed948f.png" width="637.5" />
  </figure>
  <p id="0egm">Тогда инструмент будет кравлить их параллельно, а не в порядке очереди</p>
  <p id="4zAO"><em>2. Через -list</em></p>
  <p id="N55L"><code>katana -list list.txt</code></p>
  <p id="KrZ9">В list.txt кидаем все ссылки. Например:</p>
  <p id="3XiZ"><code>google.com</code></p>
  <p id="EF9d"><code>github.com</code></p>
  <p id="Kxfq"><code>evil.com</code></p>
  <p id="rh50"><code>....</code></p>
  <p id="XRUj"><em>3. <strong>Через STDIN</strong> (удобно для автоматизации и one-liner&#x27;ов):</em></p>
  <p id="16N0"><code>echo <a href="https://tesla.com" target="_blank">https://tesla.com</a> | katana</code></p>
  <p id="RZy5"><code>cat domains | httpx | katana</code></p>
  <h2 id="DIk6">Crawling Modes</h2>
  <p id="Q4fy">Katana поддерживает два режима сканирования:</p>
  <ol id="EDb4">
    <li id="YIFa">Стандартный</li>
  </ol>
  <p id="kGIx">Это тот режим, какой мы разобрали выше (он используеться по умолчанию). Использует стандартную http библиотеку go. Из плюсов данного режима можно выделить только скорость. </p>
  <p id="gTEn">Недостаток заключается в том, что HTTP-библиотека Go обрабатывает ответ в том виде, в каком он получен, без выполнения JavaScript и манипуляций с DOM . Это может привести к пропущенным конечным точкам, которые появляются только после рендеринга или в результате асинхронных вызовов.</p>
  <p id="d5LS">Проще говоря, если вы хотите испоьзовать потэнциал этого инструмента на максимум, то стандартный режим не подойдет. <strong>Стандартный режим подходит для быстрого сканирования, но не раскрывает полный потенциал инструмента. Если требуется глубокий анализ, лучше выбрать другой режим.</strong></p>
  <p id="po68">2. Headless браузер</p>
  <p id="ucS5">В этом режиме Katana как бы запускает браузер «внутри себя», без отображения окна. Это нужно для того, чтобы:</p>
  <ol id="oy1i">
    <li id="cnka"><strong>Притвориться настоящим браузером</strong> — так сайты воспринимают сканер как обычного пользователя и дают больше данных.</li>
    <li id="3vZ5"><strong>Получить больше информации</strong> — Katana может «увидеть» то, что появляется на сайте только после загрузки JavaScript или взаимодействия со страницей.</li>
  </ol>
  <p id="9X1K">Если ты сканируешь современный сайт, где контент загружается динамически (например, после клика по кнопке или прокрутки), включи этот режим с помощью команды <strong><code>-headless</code></strong>.<br />Он работает медленнее, чем обычный режим, но зато находит больше.</p>
  <figure id="s4WJ" class="m_retina">
    <img src="https://img3.teletype.in/files/24/79/2479e63c-51c8-4c69-ba13-b57601f0a1b2.png" width="724" />
  </figure>
  <p id="QYIg">При запуске от имени супер-пользователя, запускайте через <code>--no-sandbox</code></p>
  <h2 id="QDhF">Область сканирования</h2>
  <p id="yj5m">Одна из ключевых задач при сборе ссылок с помощью Katana — фильтрация ненужных данных. Инструмент может собирать ссылки, связанные, например, с Google Analytics или другими сторонними сервисами. Это замедляет процесс сканирования и засоряет результаты лишней информацией. Katana предлагает четыре метода для фильтрации по scope&#x27;у:</p>
  <h4 id="ZlP3"><strong>1. Field-scope</strong> — <em>&quot;Что разрешено&quot;</em></h4>
  <p id="2EBe">Ты заранее указываешь: <strong>какие сайты, домены или ссылки можно обрабатывать</strong>. Всё остальное игнорируется.</p>
  <blockquote id="okyF">Пример: сканировать только <code>example.com</code>, игнорируя всё остальное.</blockquote>
  <hr />
  <h4 id="BLNi"><strong>2. Crawl-scope</strong> — <em>&quot;Где ходить&quot;</em></h4>
  <p id="o6Fw">Определяешь, <strong>по каким ссылкам можно переходить</strong> во время сканирования.</p>
  <blockquote id="1S35">Пример: переходить только по внутренним ссылкам, не выходя на другие сайты.</blockquote>
  <hr />
  <h4 id="zOC0"><strong>3. Crawl-out-scope</strong> — <em>&quot;Смотреть, но не трогать&quot;</em></h4>
  <p id="3S5i">Katana <strong>замечает внешние ссылки</strong>, но <strong>не переходит по ним</strong>. Это помогает видеть, куда ведёт сайт, но не тратить время на лишнее.</p>
  <hr />
  <h4 id="p4yH"><strong>4. No-scope</strong> — <em>&quot;Без ограничений&quot;</em></h4>
  <p id="goJM">Katana <strong>сканирует всё подряд</strong> — любые ссылки, сайты и ресурсы.</p>
  <blockquote id="yvjQ">Используй осторожно: можно случайно обойти полинтернета :)</blockquote>
  <p id="5tSW"></p>
  <h3 id="9BZW" data-align="center"><strong>Field-scope</strong></h3>
  <p id="OqDo">Для этого режима есть 3 опции:</p>
  <p id="IRxc">1. <strong><code>rdn</code> (по умолчанию)</strong></p>
  <p id="fGob">Сканирование <strong>по основному домену и всем его поддоменам</strong>.</p>
  <p id="UBLJ">Пример: <code>example.com</code>, <code>www.example.com</code>, <code>api.example.com</code> — <strong>все войдут в сканирование</strong>.</p>
  <hr />
  <p id="Rba8">2. <strong><code>fqdn</code></strong></p>
  <p id="5XdG">Сканирование <strong>только по конкретному (под)домену</strong>, который ты указал.</p>
  <p id="BlEL">Пример: если ты указал <code>www.example.com</code>, то <code>api.example.com</code> — <strong>уже не будет сканироваться</strong>.</p>
  <figure id="H3Zo" class="m_retina">
    <img src="https://img4.teletype.in/files/74/61/746113fd-01e7-4f3a-8247-997cbcb4db70.png" width="701" />
  </figure>
  <hr />
  <p id="R1xs">3. <strong><code>dn</code></strong></p>
  <p id="sX8z">Сканирование по <strong>ключевому слову домена</strong>.</p>
  <p id="cEK2">Пример: если указано <code>example</code>, то попадут в сканирование <code>example.com</code>, <code>example.net</code>, <code>example.org</code> и т.п.</p>
  <p id="2OR6" data-align="center"><strong>Crawl-scope</strong></p>
  <p id="YG32">Флаг <code>-cs</code> (crawl-scope) работает как фильтр по регулярному выражению (regex)</p>
  <p id="zHlO">Это значит, что Katana будет <strong>возвращать только те URL, которые соответствуют заданному шаблону</strong>.</p>
  <p id="sGlC">Например, если ты сканируешь сайт <code>tesla.com</code> и используешь:</p>
  <p id="zagU"><code>-cs &quot;shop&quot;</code></p>
  <p id="XQtI">То в результатах ты увидишь только те ссылки, в которых есть слово shop, например:</p>
  <p id="ZVeH"><code>https://shop.tesla.com/</code></p>
  <p id="HhK5"><code>https://www.tesla.com/shop/accessories</code></p>
  <p id="y0hI">А все остальные ссылки, вроде <a href="https://www.tesla.com/models" target="_blank">https://www.tesla.com/models</a> или <a href="https://www.tesla.com/about" target="_blank">https://www.tesla.com/about</a>, — будут отброшены, потому что они не совпадают с фильтром.</p>
  <figure id="9Efz" class="m_retina">
    <img src="https://img1.teletype.in/files/83/88/8388d6e8-bf7e-4d83-8d85-c1d375977c43.png" width="409.5" />
  </figure>
  <h3 id="2kbn" data-align="center"><strong>Crawl-out-scope</strong></h3>
  <p id="yN7y"><strong>Crawl-out-scope (<code>-cos</code>) — фильтр на исключение URL</strong></p>
  <p id="rB1j">Флаг <code>-cos</code> работает как фильтр на исключение: он удаляет из результатов все ссылки, которые соответствуют заданному шаблону (регулярному выражению).</p>
  <p id="EjPX">Например, если ты используешь:</p>
  <pre id="rjuN">cos &quot;shop&quot;</pre>
  <p id="zWmg">Katana исключит из вывода все ссылки, в которых есть слово <code>shop</code>, например:</p>
  <ul id="DlzC">
    <li id="ywLZ"><code>https://shop.tesla.com/</code></li>
    <li id="2lsG"><code>https://www.tesla.com/shop/accessories</code></li>
  </ul>
  <p id="v9pm">Они просто не попадут в результаты. Прще говоря, этот филтр работает как crawl-scope но наоборот</p>
  <p id="PW7i" data-align="center"><strong>No-scope</strong></p>
  <h3 id="vMrv"><strong>No-scope (<code>-ns</code>) — без ограничений</strong></h3>
  <p id="7sqv">Если ты укажешь флаг <strong><code>-ns</code></strong>, Katana <strong>полностью отключит ограничения по области сканирования</strong>.</p>
  <p id="tsKg">Это значит, что:</p>
  <ul id="bmyB">
    <li id="sjFZ">Сканирование начнётся с указанного сайта (например, <code>https://tesla.com</code>)</li>
    <li id="za9Q">Но дальше Katana <strong>будет переходить по всем ссылкам, которые найдёт</strong> — даже если они ведут на другие сайты и домены.</li>
  </ul>
  <p id="oyGB">📌 <strong>Пример:</strong></p>
  <pre id="HjHi">katana -u https://tesla.com -ns</pre>
  <p id="Fnbg">В этом случае Katana может перейти на:</p>
  <ul id="ljnb">
    <li id="lirn"><code>https://twitter.com/Tesla</code></li>
    <li id="Ts6J"><code>https://shop.tesla.cn/</code></li>
    <li id="lAq1"><code>https://some-other-website.com</code></li>
  </ul>
  <p id="LsyQ">То есть ты как бы &quot;открываешь ворота&quot; для обхода <strong>всего интернета</strong>, начиная с одного сайта.</p>
  <p id="u7Qd">⚠️ Важно: такой режим может привести к <strong>слишком большому объёму данных</strong>, поэтому использовать его нужно <strong>с осторожностью</strong>. Не используем его, если нету необходимости</p>
  <figure id="9AWk" class="m_original">
    <img src="https://img2.teletype.in/files/59/b7/59b7ef00-0bb6-4b6a-aa5a-ffe117cd6f20.png" width="1200" />
  </figure>
  <p id="kufy"></p>
  <h2 id="5zp8">Глубина сканирования</h2>
  <p id="S5nn">С помощью флага <code>-depth</code> ты можешь указать, на какую глубину Katana должна следовать по ссылкам при сканировании.</p>
  <ul id="OUka">
    <li id="mBA1">Чем <strong>меньше значение</strong>, тем <strong>быстрее</strong> сканирование, но меньше найденных ссылок.</li>
    <li id="iFzH">Чем <strong>больше значение</strong>, тем <strong>глубже</strong> Katana будет заходить, найдёт больше endpoint’ов — но и займёт больше времени.</li>
  </ul>
  <p id="hUf4">По дефолту стоит значение 3. Максимальное значение - 5.</p>
  <h2 id="KwLf">Автоматическое заполнение форм</h2>
  <h3 id="umGa"><strong><code>-automatic-form-fill</code> (<code>-aff</code>) — автоматическое заполнение форм</strong></h3>
  <p id="xJHJ">Эта опция включает <strong>автоматическое заполнение веб-форм</strong> во время сканирования.</p>
  <ul id="Bz3Z">
    <li id="B5fg">Katana <strong>пытается автоматически заполнять формы</strong> на сайте — например, поля логина, поиска, подписки и т.д.</li>
    <li id="pnR5">Она умеет распознавать <strong>известные поля</strong> (например, <code>email</code>, <code>name</code>, <code>password</code>) и может заполнять даже <strong>неизвестные</strong> поля по умолчанию.</li>
    <li id="DXI8">Значения для заполнения можно <strong>настроить вручную</strong> в файле конфигурации:</li>
  </ul>
  <pre id="nW2N">$HOME/.config/katana/form-config.yaml</pre>
  <p id="DFq0">Я б советовал изменить в значении email домен на какой нибудь gmail.com. Так как иногда сайты не пропускают дальше, если email - незнакомый домен. Таким образом сайты защищаються от временных пост, спама и так далее...</p>
  <h2 id="UsdI">Дополнительный парсинг</h2>
  <h3 id="OGB7"><strong><code>-known-files</code> — сканирование robots.txt и sitemap.xml</strong></h3>
  <p id="52M7">Эта опция включает сканирование <strong>известных файлов</strong>, таких как:</p>
  <ul id="FEaq">
    <li id="ksBo"><code>robots.txt</code> — файл, в котором сайты указывают, что можно и нельзя сканировать</li>
    <li id="Uwoj"><code>sitemap.xml</code> — карта сайта, где перечислены все важные страницы</li>
  </ul>
  <p id="28iY">📌 По умолчанию <strong>эта опция отключена</strong>, так что её нужно включать вручную.</p>
  <hr />
  <h4 id="BkYC">✅ Пример:</h4>
  <pre id="RRgd">katana -u https://tesla.com -kf robotstxt,sitemapxml</pre>
  <h2 id="wWON">Работаем с js файлами</h2>
  <h3 id="wsIk"><strong><code>-jc</code> / <code>-js-crawl</code> — включить обход и парсинг JS-файлов</strong></h3>
  <p id="8ySJ">Эта опция включает <strong>поиск ссылок внутри JavaScript-файлов</strong>.</p>
  <blockquote id="fHyD">Полезно для нахождения &quot;спрятанных&quot; endpoint’ов, которые подгружаются через JS, например: <code>api.example.com/data</code> внутри <code>main.js</code>.</blockquote>
  <hr />
  <h3 id="jvGd"><strong><code>-jsl</code> / <code>-jsluice</code> — углублённый парсинг JS-файлов (ресурсоёмкий)</strong></h3>
  <p id="DkEL">Эта опция включает <strong>дополнительный парсинг с помощью инструмента jsluice</strong>, что позволяет находить ещё <strong>больше скрытых ссылок и паттернов</strong> в JS.</p>
  <blockquote id="vbYU">⚠️ <strong>Затратно по памяти</strong> — лучше использовать на мощной машине или для отдельных целей.</blockquote>
  <h2 id="TaUL">Кастомные regex скрипты</h2>
  <p id="XBkQ">Katana поддерживает мощную фильтрацию и обработку URL через <strong>регулярные выражения</strong>, что позволяет гибко управлять областью сканирования и результатами.</p>
  <p id="Vfrj">Ниже приведен пример, как Katana извлекает email-адреса с помощью пользовательского регулярного выражения (regex). Нашёл я его на гитхабе:</p>
  <figure id="pwce" class="m_retina">
    <img src="https://img2.teletype.in/files/9c/3a/9c3abe2e-897e-4ef9-8cc3-9949cb63c28d.png" width="538.5" />
  </figure>
  <h3 id="El6y">Мнение ИИ об оптимальном использовании Katana</h3>
  <p id="qSTC">В завершение я обратился к ИИ, чтобы выяснить, как, по его мнению, лучше всего использовать Katana для достижения максимальной эффективности:</p>
  <figure id="0nG3" class="m_original">
    <img src="https://img1.teletype.in/files/83/f7/83f77128-8b37-4427-964a-76b843169d77.png" width="741" />
  </figure>
  <p id="hfbJ">Для повышения эффективности сканирования добавлю от себя следуйщее:</p>
  <ul id="oJEa">
    <li id="2ShL"><strong>Добавлять Cookie</strong>: Используйте флаг -H &quot;Cookie: &lt;value&gt;&quot;, чтобы эмулировать авторизованного пользователя и получить доступ к скрытым данным.</li>
    <li id="P88y"><strong>Менять User-Agent</strong>: Применяйте разные User-Agent’ы с помощью флага -H &quot;User-Agent: &lt;value&gt;&quot; или опции -rua для случайного выбора, чтобы обойти ограничения сайтов.</li>
    <li id="7GW0"><strong>Настраивать заголовки</strong>: Добавляйте кастомные заголовки через -H для специфичных сценариев, например, для тестирования API или обхода защиты.</li>
  </ul>
  <p id="l9qm">Эти настройки помогут адаптировать Katana под конкретные задачи и увеличить объем собираемой информации.</p>
  <figure id="j0uY" class="m_original">
    <img src="https://img1.teletype.in/files/41/62/41620307-f089-4619-9211-b36b01736066.png" width="450" />
  </figure>
  <h2 id="jWAC">Заключение</h2>
  <p id="GIvd">Мы рассмотрели ключевые функции Katana — мощного инструмента для веб-краулинга. Его возможности далеко не ограничиваются описанным: Katana предлагает множество дополнительных опций, таких как настройка заголовков, использование cookie, проксирование запросов и другие технические параметры. Подробности этих функций вы можете изучить в <a href="https://github.com/projectdiscovery/katana" target="_blank">официальной документации Katana</a>. Не недооценивайте этот инструмент — он способен значительно ускорить и углубить процесс анализа веб-ресурсов.</p>
  <h2 id="DNkx" data-align="center">НАШИ ПРОЕКТЫ</h2>
  <h3 id="K4px"><strong>Канал -<a href="https://t.me/pentesters_confessions" target="_blank"> ИСПОВЕДЬ ПЕНТЕСТЕРА</a></strong></h3>
  <h3 id="np1F"><strong>Наш Чат - <a href="https://t.me/+YgxPPcFtalUyZDYy" target="_blank">t.me/+YgxPPcFtalUyZDYy</a></strong></h3>

]]></content:encoded></item></channel></rss>