Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
psa-2026-00043-recovery — Recovery notes for proxmox advisory ID: PSA-2026-00043-1 (CVE-2023-54391) | Kitploit
Tools/GitHubGitHub/disqualifier/psa-2026-00043-recovery
Cloud Infrastructure SecurityVulnerability AnalysisForensicsData RecoveryDigital ForensicsIncident Response
GitHubdisqualifier/psa-2026-00043-recovery

psa-2026-00043-recovery

Recovery notes for proxmox advisory ID: PSA-2026-00043-1 (CVE-2023-54391)

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
View Repository
2321 days agoNot yet reviewed
Share

psa-2026-00043-recovery

Recovering from a wiper that presented as ransomware, after an attack against internet-exposed Proxmox infrastructure (PSA-2026-00043-1 / CVE-2023-54391).

The attacker wiped guests and left the filesystems damaged. Two recovery tracks depending on what the guest was:

  • database guest — carve BSON documents out of raw WiredTiger pages
  • application host — carve files (nginx, systemd units, env, app roots) off the damaged filesystem

These are the tools and the methodology, generalized so they're useful to anyone in the same spot. Read-only against the source, CC0. No real recovered data is included; example output uses placeholders.


First hour

The damaged disk is now your only copy of what's left. Do not fix it. Image it.

root@kitploit:~
blockdev --setro /dev/<source>                                    # 1. read-only, immediately
dd if=/dev/<source> of=/safe/disk.img bs=4M conv=noerror,sync     # 2. image to safe storage
# 3. do NOT fsck, mount rw, or "repair"; that overwrites blocks a carver needs
# 4. wrap every source pass in scripts/source_guard.sh
# 5. recover from the image only, never the original

The scripts

Shared discipline, split carvers. Run any with -h. Python 3.8+ / bash, no third-party packages. needs Linux .

source_guard.sh
/proc/diskstats
scripttrackwhat it does
scripts/source_guard.shsharedWraps a recovery command; proves the source stayed read-only via a write-counter diff. Fails on any source write.
scripts/wt_leaf_carve.pydatabaseCarves BSON out of raw WiredTiger leaf pages. Page size by decode, not fit; mandatory positive control.
scripts/bson_frame.pydatabaseCounts/validates BSON documents by on-disk framing. Whole-file by default; a sample is flagged a FLOOR.
scripts/fs_carve_classify.pyfilesystemClassifies carved file fragments by content, not filename; writes a per-file manifest; exhaustive secret scan.
scripts/sensitivity_scan.pysharedTiers recovered data RED/AMBER/GREEN for credential/PII exposure. Prints counts, never values.
scripts/integrity_verify.pysharedProves a reorganized copy is faithful to the source. Content-keyed (survives renames); reads OK/FAILED columns, not exit codes.
scripts/make_demo.py—Generates synthetic BSON fixtures (no real data) to exercise the toolkit.

Try it

root@kitploit:~
python3 scripts/make_demo.py
python3 scripts/bson_frame.py --total demo/*.bson
python3 scripts/sensitivity_scan.py demo/*.bson
python3 scripts/integrity_verify.py --compare demo/source demo/copy

Methodology

Ran in this order. The carve step branches by guest; the setro/image bookends and the content-keyed verify are the same either way.

root@kitploit:~
damaged disk ──setro+image──► read-only image
                                    │
                database ──────────►│◄────────── filesystem
          carve WT pages            │            carve files
          count docs                │            classify by content + manifest
                                    │
                          tier exposure (RED/AMBER/GREEN)
                          verify copy (content-keyed)
                                    │
                                 recover

Failure Modes

  1. Zero is ambiguous: empty region vs blind decoder both return nothing. Positive-control every zero against a page you already hold.
  2. Choose page size by first successful decode, not first fit. Fit always picks 4096 and drops multi-block pages.
  3. A sampled count is a floor, not a total. Read the whole bin.
  4. Names over-flag (data used as map keys), values under-flag (human-formatted secrets). Require both plus context.
  5. Count populated fields, not occurrences. Null-heavy fields inflate the number.
  6. Verify by content hash, not filename; a recovery renames everything.
  7. find | sort | xargs sha256sum | sha256sum hashes paths and locale too. Use LC_ALL=C, or a per-file manifest.
  8. sha256sum -c exits 0 while printing FAILED. Read the columns, not $?.
  9. A credential-locating report must not contain credential values. Print shapes and counts only.
  10. A verification is only true when it ran. Stamp every reading; re-check current state.

Notes

Starting points, not turnkey. Production WiredTiger uses page compression (snappy/zstd) and cell encoding that the generic carver stubs out. Wire your own strong decoder for compressed pages. Cross-check every number against a positive control and a second, different instrument: two tools that share an assumption agree because of the assumption, not because it's right; reading the bytes is what catches that.

If your data isn't the same (different database, app, or filesystem), the methodology still carries: set the source read-only, image it, carve from the copy, positive-control before believing a zero, count the whole thing, verify by content. Swap the carver; keep the discipline.

Harden the root cause: the Proxmox web UI on :8006 should not be reachable from the internet. Follow the official Proxmox security advisories: https://forum.proxmox.com/threads/proxmox-virtual-environment-security-advisories.149331/

A more user-friendly writeup with the author's general advice on recovery and hardening: https://claude.ai/code/artifact/621495ce-4972-405a-ad90-f7703f7dc2f1

CC0 / public domain. See LICENSE.

Download Tool