Введение
В сфере кибербезопасности обнаружение уязвимости в программном обеспечении — это только первый шаг. Чтобы оценить реальный уровень риска, специалисты по безопасности должны преодолеть разрыв между обнаружением и эксплуатацией. База данных эксплойтов (Exploit Database, Exploit-DB) — это архив общедоступных эксплойтов и соответствующего уязвимого ПО, соответствующий стандартам CVE и предназначенный для использования специалистами по тестированию на проникновение и исследователями уязвимостей.
Этот мост важен, поскольку находка уязвимости имеет разное практическое значение в зависимости от того, существует ли общедоступный эксплойт, насколько он надежен и какие условия требуются для его работы. Сопоставление версий ПО со ссылками на эксплойты помогает превратить «сырые» данные об обнаружении в контекст оценки рисков.
В этой лабораторной работе вы научитесь использовать searchsploit, официальный интерфейс командной строки для Exploit-DB. Вы попрактикуетесь в обновлении локальной базы данных эксплойтов, поиске конкретных версий ПО, фильтрации больших наборов результатов и извлечении исходного кода эксплойтов для анализа. Эти навыки необходимы для сопоставления обнаруженных сервисов с известными векторами атак.
Обновление базы данных Searchsploit
На этом этапе вы узнаете, как поддерживать локальную копию базы данных эксплойтов в актуальном состоянии.
Инструмент searchsploit опирается на локальный репозиторий эксплойтов. Поскольку новые уязвимости обнаруживаются и публикуются ежедневно, крайне важно регулярно обновлять эту базу данных перед проведением любого поиска. Если вы ищете информацию в устаревшей базе, вы можете пропустить недавно опубликованные эксплойты для исследуемого вами ПО.
Поддержание актуальности ссылок на эксплойты — часть гигиены оценки безопасности. Устаревший контекст может привести как к ложному чувству безопасности, так и к неоправданной панике.
Для обновления базы данных можно использовать флаг обновления, предоставляемый командой searchsploit. Выполните следующую команду в терминале:
searchsploit -u
Вы должны увидеть вывод, указывающий на то, что инструмент загружает последние изменения из официального репозитория. Вывод будет выглядеть примерно так:
[*] Updating searchsploit...
Already up to date.
После выполнения этой команды ваш локальный каталог /opt/exploitdb синхронизируется с последними эксплойтами, шеллкодами и документами, доступными в Exploit-DB.
Примечание: Процесс обновления может занять несколько минут, особенно при проверке
exploitdb-papers(например, при отображенииNothing here (/opt/exploitdb-papers). Starting fresh...). Пожалуйста, наберитесь терпения и дождитесь завершения. Если вы не хотите ждать, вы можете безопасно нажатьCtrl+C, чтобы отменить процесс, или просто открыть новую вкладку терминала для продолжения работы, так как основная база данных эксплойтов обновляется в первую очередь.
Поиск по версии программного обеспечения
На этом этапе вы научитесь выполнять базовый поиск для конкретной версии программного обеспечения.
При сканировании целевой системы (например, с помощью Nmap) вы часто обнаруживаете точную версию запущенных на ней сервисов. Вы можете передать эти номера версий напрямую в searchsploit, чтобы найти соответствующие эксплойты. Инструмент выполняет поиск по заголовкам и описаниям эксплойтов в своей базе данных для нахождения совпадений.
Именно поэтому так важно тщательное определение версий на начальном этапе. Чем точнее вы идентифицируете ПО, тем полезнее и точнее будет корреляция с эксплойтами.
Представим, что вы обнаружили FTP-сервер, работающий на vsftpd 2.3.4. Это общеизвестная уязвимая версия данного ПО. Чтобы найти эксплойты, связанные с этой конкретной версией, введите название ПО и версию в качестве аргументов:
searchsploit vsftpd 2.3.4
Команда вернет отформатированную таблицу с заголовком эксплойта и соответствующим путем к нему в базе данных. Ваш вывод должен выглядеть так:
------------------------------------------------------------------------ ---------------------------------
Exploit Title | Path
------------------------------------------------------------------------ ---------------------------------
vsftpd 2.3.4 - Backdoor Command Execution | unix/remote/17491.rb
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit) | linux/remote/16362.rb
------------------------------------------------------------------------ ---------------------------------
Shellcodes: No Results
Обратите внимание, что результаты поиска содержат краткое описание уязвимости (в данном случае — выполнение команд через бэкдор) и путь к файлу с кодом эксплойта. Число в имени файла (например, 17491) — это уникальный идентификатор базы данных эксплойтов (EDB-ID).
Фильтрация результатов поиска
На этом этапе вы узнаете, как уточнять результаты поиска с помощью фильтров.
Иногда широкий поисковый запрос может вернуть сотни результатов, что затрудняет поиск нужного. searchsploit предоставляет несколько флагов, помогающих сузить вывод. Два наиболее полезных флага — это -t (который ограничивает поиск только заголовком эксплойта, а не всем путем к файлу или описанием) и --exclude (который удаляет результаты, содержащие определенные слова).
Предположим, вы ищете эксплойты для повышения привилегий в ядре Linux, но хотите отфильтровать эксплойты типа «отказ в обслуживании» (Denial of Service, DoS), так как они обычно не помогают в получении доступа.
Выполните следующую команду для поиска по заголовкам «linux kernel privilege escalation» с исключением термина «dos»:
searchsploit -t linux kernel privilege escalation --exclude="dos"
Вы увидите список эксплойтов, специально предназначенных для повышения привилегий в ядрах Linux. Вывод будет обширным, но гораздо более чистым, чем при обычном поиске:
------------------------------------------------------------------------ ---------------------------------
Exploit Title | Path
------------------------------------------------------------------------ ---------------------------------
Linux Kernel - 'BCC' Local Privilege Escalation | linux/local/40759.rb
Linux Kernel - 'BPF' Local Privilege Escalation | linux/local/40758.rb
Linux Kernel - 'ptrace_traceme' Local Privilege Escalation | linux/local/47133.c
...
------------------------------------------------------------------------ ---------------------------------
Использование этих методов фильтрации позволяет быстро найти именно тот тип эксплойта, который вам нужен для конкретного сценария.
Изучение деталей кода эксплойта
На этом этапе вы узнаете, как извлекать и изучать фактический код эксплойта.
Поиск эксплойта — это лишь часть процесса; вы также должны прочитать и понять код перед его запуском. Запуск неизвестных эксплойтов может быть опасным или требовать внесения определенных изменений (например, изменения целевого IP-адреса или порта) для корректной работы.
searchsploit позволяет легко скопировать (зеркалировать) эксплойт в текущий рабочий каталог с помощью флага -m, за которым следует EDB-ID. Давайте извлечем эксплойт для vsftpd 2.3.4, который мы нашли на этапе 2, имеющий EDB-ID 17491.
Выполните следующую команду, чтобы скопировать эксплойт в ваш каталог ~/project:
searchsploit -m 17491
Вы должны увидеть вывод, подтверждающий, что файл был скопирован:
Exploit: vsftpd 2.3.4 - Backdoor Command Execution
URL: https://www.exploit-db.com/exploits/17491
Path: /opt/exploitdb/exploits/unix/remote/17491.rb
Codes: CVE-2011-2523, OSVDB-73573
Verified: True
File Type: Ruby script, ASCII text
Copied to: /home/labex/project/17491.rb
Теперь, когда файл 17491.rb находится в вашем текущем каталоге, вы можете изучить его содержимое с помощью текстового просмотрщика, такого как cat, или редактора, например nano. Выполните следующую команду, чтобы просмотреть первые несколько строк кода эксплойта:
head -n 20 17491.rb
Вывод отобразит исходный код Ruby для модуля Metasploit, что позволит вам прочитать комментарии, понять суть уязвимости (вредоносный бэкдор, оставленный в исходном коде) и увидеть, как именно эксплойт активирует её.
Резюме
В этой лабораторной работе вы научились эффективно использовать searchsploit для навигации по базе данных эксплойтов непосредственно из командной строки. Вы начали с обновления локальной базы данных, чтобы убедиться в наличии актуальной информации об уязвимостях. Затем вы выполнили целевой поиск на основе конкретных версий ПО и научились отфильтровывать ненужные результаты с помощью флагов исключения. Наконец, вы попрактиковались в извлечении исходного кода эксплойтов в локальную рабочую область для безопасного просмотра и анализа. Эти методы являются фундаментальными для рабочих процессов оценки уязвимостей и тестирования на проникновение.



