
Простая уязвимость на основе C в Webmin версий с 1.890 по 1.920
Введение:
Эксплойт для Webmin — это целевой эксплойт для сервиса Webmin, который может быть использован на старых версиях Webmin. Данный эксплойт применяет различные техники для выполнения вредоносного кода и получения несанкционированного доступа к целевой системе.
Он включает:
Использование как C, так и ассемблерного кода для выполнения команд на целевой системе.
Применение таких техник, как антиотладка, XOR-дешифрование и системные вызовы, такие как execve и prctl, для запуска обратного шелла.
Возможности: Антиотладка: использует системный вызов ptrace для предотвращения отладки эксплойта.
XOR-дешифрование: расшифровывает зашифрованные строки, такие как kthreadd и /bin/sh, в памяти с помощью XOR-шифрования.
Системный вызов prctl: изменяет имя процесса на kthreadd, чтобы скрыть эксплойт из списка процессов.
Системный вызов execve: выполняет обратный шелл /bin/sh на целевой системе для получения полного доступа к системе.
Сочетание C и ассемблера: этот эксплойт объединяет гибкость C с мощью ассемблерного языка для реализации пользовательских системных вызовов.
Требования: Операционная система: Linux или любая Unix-подобная ОС.
Необходимые библиотеки:
libcurl для установления соединений между клиентом и сервером.
GCC для компиляции эксплойта.
Библиотека -lcurl для подключения библиотеки curl в C.
Как использовать: Настройка окружения: Убедитесь, что у вас есть права root, так как некоторые действия, например execve, требуют повышенных привилегий.
Установите необходимые библиотеки:
sudo apt-get install libcurl4-openssl-dev
Компиляция эксплойта: Загрузите файл webmin_exploit.c на вашу машину.
Скомпилируйте код эксплойта с помощью GCC с опцией -no-pie для отключения PIE (Position Independent Executable):
gcc -no-pie webmin_exploit.c -o webExploit -lcurl
Примечание: Если у вас возникнут проблемы, связанные с PIE, обязательно используйте -no-pie, как показано выше.
Запуск эксплойта: Настройте параметры эксплойта: измените целевой URL, LHOST (локальный хост) и LPORT (локальный порт) в коде по необходимости.
Запустите эксплойт: после компиляции выполните эксплойт на целевой машине:
./webExploit
Получение обратного шелла:
После успешного выполнения эксплойта он должен установить соединение обратного шелла с вашим LHOST и LPORT (например, 192.168.0.174:4444).
Убедитесь, что вы слушаете указанный порт с помощью Netcat или аналогичного инструмента:
nc -lvnp 4444
Технический разбор: Ключевые инструкции в коде: Антиотладка: системный вызов ptrace используется для предотвращения отладки эксплойта такими инструментами, как gdb. Это усложняет анализ эксплойта исследователями.
XOR-дешифрование: строки kthreadd и /bin/sh зашифрованы XOR в бинарном файле с ключом 0x41 (ASCII 'A'). Эти строки расшифровываются во время выполнения в памяти.
Системные вызовы:
prctl(PR_SET_NAME, "kthreadd"): изменяет имя процесса на kthreadd, помогая эксплойту избежать обнаружения.
execve("/bin/sh"): запускает обратный шелл к /bin/sh, предоставляя атакующему полный доступ к системе.
Основные инструкции: mov: загружает значения в регистры.
xor: выполняет операцию XOR над данными.
syscall: выполняет системные вызовы, такие как execve и prctl, для запуска шелла и переименования процесса.
lea: загружает адрес в регистр.
Устранение неполадок: Если у вас возникли проблемы во время компиляции, перепроверьте, что вы используете флаг -no-pie для отключения Position Independent Executables (PIE).
Если проблемы сохраняются, убедитесь, что ваша среда разработки обновлена и содержит необходимые библиотеки.
Предупреждения: Используйте этот эксплойт только в тестовых средах. Никогда не запускайте этот эксплойт на рабочих системах или системах, на тестирование которых у вас нет явного разрешения.
При необходимости отключите брандмауэры на целевой машине, чтобы обратный шелл мог успешно подключиться.
Убедитесь, что вы слушаете порт с помощью Netcat или аналогичного инструмента, чтобы перехватить соединение обратного шелла.