Sploitus

Exploit for CVE-2023-32784-kdbxpassdmp

kitploit · 2026-09-01

Exploit Code

MARKDOWN81 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-AMPERCLOCK-CVE-2023-32784-KDBXPASSDMP
# keepass_dumper.py

Python-порт vdohney/keepass-password-dumper (CVE-2023-32784) — вся заслуга за оригинальную C#-реализацию и лежащую в основе технику принадлежит **vdohney**.

Скрипт сканирует дамп памяти процесса на предмет остаточных строк рендеринга, которые `SecureTextBoxEx` из KeePass 2.x оставляет после себя, пока пользователь вводит мастер-пароль, и восстанавливает каждый символ этого пароля, кроме первого. При необходимости он затем перебирает неизвестный первый символ по файлу KDBX с помощью `keepassxc-cli`.

## Затронутые версии

  * **Уязвимые:** KeePass 2.53.1 и более ранние (Windows и Linux).
  * **Исправленные:** KeePass **2.54** и более поздние.
  * KeePassXC, KeePass 1.x и Strongbox **не** затронуты.



Недостаток кроется в пользовательском элементе управления `SecureTextBoxEx`: для каждого введённого символа .NET сохраняет в управляемой памяти остаточную строку вида `●a`, `●●s`, `●●●s`, … из которой можно восстановить каждый символ пароля, начиная со второго.

## Предварительные условия атаки и ограничения

  * Требуется артефакт памяти процесса KeePass: дамп процесса, файл подкачки/свопинга, файл гибернации, аварийный дамп ядра или полный снимок ОЗУ. Выполнение кода на целевом хосте не требуется.
  * Работает как при заблокированном, так и при разблокированном рабочем пространстве, а также даже после завершения процесса KeePass (если страницы памяти где-то сохранились).
  * Самый первый символ пароля **не** восстанавливается из утечки.
  * Утечка надёжно захватывает печатные ASCII-символы; не-ASCII символы менее надёжны.
  * Несколько мастер-паролей, введённых в одном сеансе, могут давать перекрывающиеся остаточные строки и снижать точность.



## Меры по устранению

Если вы использовали KeePass ≤ 2.53.1, считайте мастер-пароль скомпрометированным:

  1. Обновите KeePass до **2.54 или новее**.
  2. Смените мастер-пароль (и ротируйте любые ценные секреты, хранящиеся в базе данных, которые вводились при использовании старого мастер-пароля).
  3. Очистите артефакты памяти, которые всё ещё могут содержать остаточные строки: 
     * удалите аварийные дампы (например, `C:\Windows\memory.dmp`),
     * отключите/очистите гибернацию (`powercfg /h off` в Windows),
     * удалите или затирайте файл подкачки / своп-файл,
     * перезапишите свободное место на диске (например, `cipher /w:` в Windows), чтобы остатки нельзя было извлечь из ранее выделенных секторов,
     * перезагрузите систему — или, для сценариев с высокими требованиями к безопасности, переустановите ОС.



## Требования

  * Python 3.10+ (только стандартная библиотека — сторонние пакеты не требуются)
  * `keepassxc-cli` в `$PATH` (нужен только для `--kdbx`)



## Установка

В Debian / Ubuntu установите CLI KeePassXC, если планируете перебор:

root@kitploit:~
    
    
    sudo apt install keepassxc
    

## Использование

root@kitploit:~
    
    
    # Восстановить символы-кандидаты и вывести их
    python3 keepass_dumper.py memory.dmp
    
    # Сохранить сгенерированный список кандидатов в файл
    python3 keepass_dumper.py memory.dmp -p candidates.txt
    
    # Восстановить и перебрать недостающий первый символ по KDBX
    python3 keepass_dumper.py memory.dmp --kdbx db.kdbx
    

Выполните `python3 keepass_dumper.py --help` для получения полного списка опций.

## Чем отличается от оригинала

  * Более строгий фильтр сканирования (по умолчанию печатные ASCII) для сокращения ложных срабатываний.
  * Набор символов с приоритетным порядком (буквы → цифры → распространённые знаки препинания → остальное), чтобы наиболее вероятные кандидаты проверялись первыми.
  * Чтение дампа на основе mmap, однострочный индикатор прогресса, более тихий вывод.