Новое Распределяем каналы MAX по категориям и территориям. Читать новость

Репост из «Хакер | Этичный хакинг с Михаилом Тарасовым»

💻 LabProbe: пишу свой сканер на Rust и проверяю его на OWASP Juice Shop



«Сервер вернул 200 - значит, путь найден!» Звучит красиво. Пока не выясняется, что на любой выдуманный адрес приложение отдаёт одну и ту же HTML-страницу 😏

Именно с этой проблемой я разбирался, когда дорабатывал свой небольшой сканер HTTP-путей - LabProbe.

🔍 Что сделал

Вместо простого перебора адресов добавил калибровку. Перед основной проверкой сканер отправляет три запроса на случайные, предположительно несуществующие пути и сохраняет ответы для сравнения.

Дальше сравнивает не только размер страницы, но и:
▪ HTTP-статус;
▪ тип содержимого;
▪ заголовок перенаправления;
▪ тело ответа целиком.

Совпадения не скрываются, а помечаются отдельно. Почему это важно? Потому что в моём тесте даже главная страница совпала с калибровочными ответами. Если бездумно отбрасывать всё одинаковое, можно спрятать от себя вполне реальный маршрут.

⚙️ Что умеет текущая версия

🦀 Асинхронные запросы на Rust.
🇷🇺 Русскоязычные описания параметров и результаты.
🎛 Настройка параллельности и таймаута.
📦 Ограничение размера тела ответа.
🔀 Работа через явно заданный прокси - в том числе Burp Suite.
🛑 Отключённые автоматические редиректы.
🏠 Ограничение целей локальными адресами.
📊 Итоговая статистика без молчаливого проглатывания ошибок.

🧪 Что получилось на стенде

Запустил инструмент на Parrot Security OS против локального OWASP Juice Shop.

Результат проверки словаря:
- 6 запросов;
- 4 совпадения с калибровочными ответами;
- 2 отличающихся ответа;
- 0 ошибок запросов и задач.

Отдельно выделились /robots.txt и JSON-ответ /rest/products/search?q=apple. А выдуманные пути возвращали HTML по 9984 байта с кодом 200 - тот самый случай, когда один HTTP-статус ничего толком не говорит.

В карусели - четыре этапа: проверка и сборка проекта, справка, запуск на стенде и итоговая статистика. 📸

⚠️ Главное: «ответ отличается» не означает «найдена уязвимость». А «совпадает с заглушкой» не означает «пути не существует».

Пока это лабораторный инструмент для сбора наблюдений, а не волшебная кнопка «найти все дыры». Точное сравнение тоже не всесильно: динамические заглушки могут отличаться от запроса к запросу.

Мне в таких проектах нравится сам процесс: написать, запустить, увидеть слабое место в своей логике и исправить. Иногда главный баг на пентесте - не у приложения, а в предположениях сканера 😎

Тестирую только свой локальный стенд. Без чужих целей и приключений.
Просмотры: 7
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти