
Dieser Exploit wurde erstellt, um eine XXE (XML External Entity) auszunutzen. Dadurch habe ich den Backend-Code des Webservices gelesen und einen Endpunkt gefunden, an dem ich gopher verwenden konnte, um interne Anfragen auf einem für RCE anfälligen Zabbix zu stellen.
python exploit.py --ip <Zabbix_IP> --sid <LowPrivileged_SID> --hostid <HostID> --phpsessid <PHPSESSID> --false_time <FalseTime> --true_time <TrueTime>
Dieser Exploit wurde erstellt, um eine XXE (XML External Entity) auszunutzen. Dadurch las ich den Backend-Code des Webdienstes und fand einen Endpunkt, an dem ich gopher verwenden konnte, um interne Anfragen an die Zabbix-Version 6.0.27 zu stellen, die anfällig für Remote Code Execution ist.
Während der Erkundungsphase führte ich einen Brute-Force-Angriff auf den externen Webserver durch, um die Datei docker-compose.yml zu erhalten, die den Containernamen der internen Zabbix-Server bereitstellte. Mit diesen Informationen sendete ich eine POST-Anfrage an den Root der Webanwendung über gopher, und der Webserver gab die Host-ID und die Sitzungs-ID eines Benutzers mit niedrigen Privilegien in einem JSON zurück, das in base64 im Cookie kodiert war.
Mit diesen Details konnte ich den ursprünglichen Exploit anpassen, um eine SQL-Injection-Schwachstelle in zabbix-server:10051 auszunutzen, um die Sitzungs-ID des Administrators zu erhalten, und dann ein Skript zu erstellen und auszuführen, um Remote Code Execution zu erreichen.
Falls Sie diese Zabbix-Schwachstelle mit gopher ausnutzen müssen, können Sie die Funktion InternalRequest so ändern, dass die Anfrage so gestellt wird, wie Sie es benötigen.
10.0.46.27:5555 im Skript) herstellt.Stellen Sie sicher, dass Ihr Rechner auf dem angegebenen Port (5555 im Skript) lauscht, um die Reverse-Shell zu empfangen. Sie können netcat dafür verwenden:
nc -lvnp 5555
Ersetzen Sie die IP 10.0.46.27 und den Port 5555 in der Funktion CreateScript durch Ihre eigene IP und den gewünschten Port, um die Reverse-Shell zu empfangen.