Rust, Хакинг на Rust

Курс — Хакинг на Rust. #33 Продвинутые темы. Создание инструментов для пентеста. Сканеры уязвимостей (SQLi, XSS)

Здравствуйте, дорогие друзья.

Зачем использовать Rust для сканеров уязвимостей?

Rust сочетает высокую производительность с безопасностью памяти, что делает его идеальным для создания инструментов пентеста:

  • Скорость: Асинхронные запросы и многопоточность ускоряют сканирование.
  • Безопасность: Нет риска уязвимостей вроде переполнения буфера.
  • Кроссплатформенность: Бинарные файлы работают на Linux, macOS и Windows без зависимостей.

SQL-инъекции (SQLi): обнаружение и эксплуатация

Что такое SQLi?
Атака, при которой злоумышленник внедряет вредоносные SQL-запросы через пользовательский ввод (например, формы авторизации).

Пример уязвимого кода (PHP):

Если ввод user равен ' OR 1=1--, запрос становится:

— что возвращает всех пользователей.

Сканер SQLi на Rust

1. Подготовка:
Используем библиотеки:

  • reqwest для HTTP-запросов.
  • regex для анализа ответов.
  • tokio для асинхронности.

Cargo.toml:

2. Основной код:

3. Улучшения:

  • Проверка времени ответа: Задержки могут указывать на слепые SQLi.
  • Автоматизация перебора параметров: Парсинг форм и URL-параметров.
  • Интеграция с Burp Suite: Экспорт результатов в формате XML.

Межсайтовый скриптинг (XSS)

Что такое XSS?
Атака, при которой вредоносный скрипт внедряется в страницу и выполняется в браузере жертвы.

Типы XSS:

  1. Отраженный: Скрипт передается в URL-параметрах.
  2. Сохраненный: Скрипт сохраняется на сервере (например, в комментариях).
  3. DOM-based: Уязвимость возникает из-за небезопасного JavaScript.

Сканер XSS на Rust

1. Генерация полезных нагрузок:

2. Асинхронная проверка:

3. Обход фильтров:

  • Кодирование: Используйте URL- или HTML-кодирование (%3Cscript%3E).
  • Обфускация: <<script>alert()</scrip></script>t>.

Ложные срабатывания и эвристики

Проблемы:

  • Сайты могут фильтровать <script>, но разрешать onmouseover.
  • Логи могут содержать ложные ошибки SQL.

Решения:

  1. Проверка нескольких условий:
    • Код ответа HTTP (например, 500 для SQLi).
    • Наличие определенных ключевых слов в ответе.
    • Сравнение времени ответа с базовым значением.
  2. Машинное обучение:
    • Используйте rusty-machine для классификации ответов.

Интеграция с CTF и реальными проектами

Пример из практики:
Сканер SQLi помог обнаружить уязвимость в API корпоративного приложения:

  1. Параметр product_id не фильтровал ввод.
  2. Payload 1' OR SLEEP(5)-- вызвал задержку, подтвердив слепую SQLi.
  3. Эксплуатация позволила получить доступ к данным 10 000 пользователей.

Этический аспект

Важно:

  • Используйте сканеры только с разрешения владельца системы.
  • Соблюдайте законы (например, GDPR, УК РФ).
  • Не публикуйте уязвимости без ответственного раскрытия.

Заключение

Rust позволяет создавать быстрые и безопасные сканеры уязвимостей, которые можно интегрировать в инструментарий пентестера. Начните с базовых проверок SQLi/XSS, затем добавьте поддержку других уязвимостей (CSRF, SSRF). Для вдохновения изучите исходники проектов:

  • SQLMap (Python) — алгоритмы обнаружения.
  • Arjun — перебор параметров HTTP.

Совет: Автоматизируйте сканирование через cargo и CI/CD для регулярного аудита.

Хакинг на языке программирования Rust

На этом все. Всем хорошего дня!

Цикл статей по курсу — «Хакинг на Rust».