Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
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
CVE-2026-90817 — Python checker and exploit hook for CVE-2026-90817, a critical unauthenticated REDCap RCE via survey __passthru routing, with mass scanning and FOFA target import. | Kitploit
Tools/GitHubGitHub/murrez/cve-2026-90817
ReconnaissanceVulnerability ScannersExploitationScripting & AutomationWeb Application ExploitationInformation GatheringWeb SecurityPenetration Testing
GitHubmurrez/cve-2026-90817

CVE-2026-90817

Python checker and exploit hook for CVE-2026-90817, a critical unauthenticated REDCap RCE via survey __passthru routing, with mass scanning and FOFA target import.

View Repository
19h 50m agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-90817 — REDCap Survey Passthru + Data Import RCE

Python 3 checker (and configurable exploit hook) for CVE-2026-90817 (Securifera / Ryan Wincey).

ProductREDCap (Vanderbilt)
Affected≥ 13.3.0 (until branch patch)
Fixed16.0.49 LTS, 17.3.10 LTS, 17.4.4 Standard+
CVSS 3.19.8 Critical
AuthNone — valid public survey hash (s=) required for full chain
CWECWE-73, CWE-94

Summary

From a public survey context, attackers can abuse __passthru (survey passthrough) routing to reach unintended controllers (e.g. Data Import), then trigger unsafe file-path / stream handling → RCE.

Securifera has not published the full HTTP chain yet (no public PoC on GitHub / Exploit-DB at repo publish time).

ModeWhat it does

exploit_chain.example.json is placeholder only (guessed routes/params). It will not RCE.
Research dry run: --allow-placeholder-chain (sends requests; expect failure).

Requirements

  • Python 3.9+
  • pip install -r requirements.txt

Usage

root@kitploit:~
pip install -r requirements.txt

# Single target (survey hash required for survey + passthru tests)
python poc.py -u https://redcap.example.edu/redcap --hash Ab12Xy34Zq --mode check

# Shorthand: base|hash
python poc.py -u "https://redcap.example.edu/redcap|Ab12Xy34Zq" --mode check

# Mass check (one URL per line, optional |hash)
python poc.py --list targets.example.txt --mode check -j 20 -q

# Live stream: every host + test summary (recommended for long lists)
python poc.py --list targets.example.txt --mode check -j 20 -q --flow

# Exploit (after advisory → real exploit_chain.json)
cp exploit_chain.example.json exploit_chain.json   # edit with real values
python poc.py -u https://redcap.example.edu/redcap --hash XXX --mode exploit -c id \
  --chain exploit_chain.json

FOFA export → target list

root@kitploit:~
# Place export as fofa_csv_7561.csv (or any fofa*.csv), then:
python fofa_to_list.py
# Writes list.txt (gitignored) and normalizes the CSV with a url column
python poc.py --list list.txt --mode check -j 20 -q --flow

Target list format

root@kitploit:~
https://uni.edu/redcap|SurveyHash10
https://uni.edu/redcap?s=SurveyHash10
https://uni.edu/redcap

Without a hash, check can still fingerprint REDCap and flag version windows, but cannot validate survey or run passthru probes.

Screenshot (--flow mass check)

Mass check live output

CLI options

Output (mass check)

FileContent
cve_2026_90817_results.jsonlPer-target JSON
hits.txtCandidates (exploitable_candidate)

Common status values (check)

Limitations

  • Exploit requires exact __passthru route and parameter names from Securifera/vendor; defaults are placeholders.
  • Many instances hide version strings; vulnerable_version may be null.
  • FOFA title="REDCap" rows often lack survey hashes — CVE preconditions need s= from public links.
  • Authorized testing only.

FOFA / discovery hints

root@kitploit:~
title="REDCap"
body="redcap_version"
body="/surveys/?s="

Repository layout

root@kitploit:~
.
├── poc.py
├── fofa_to_list.py
├── exploit_chain.example.json
├── poc.png                 # example --flow terminal output
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore

References

  • NVD — CVE-2026-90817
  • CVE Record
  • Securifera advisories

Legal

For authorized security testing only. You are responsible for compliance with applicable laws and program rules.

Download Tool
checkREDCap fingerprint, version heuristics, valid s= survey (if hash given), __passthru → DataImport probes
exploitRuns only with a verified exploit_chain.json (not the placeholder example)
OptionDescription
-u, --urlSingle base URL (or URL|hash)
--hashPublic survey hash (s= value)
--listTarget file (one URL or URL|hash per line)
--modecheck or exploit
--chainJSON chain for exploit mode (default exploit_chain.json)
--allow-placeholder-chainAllow example JSON in exploit mode (no real RCE)
-c, --commandShell command (exploit mode; needs working chain)
--threads, -jMass concurrency (default 15)
--timeoutHTTP timeout seconds (default 25)
--proxyHTTP(S) proxy URL
--outputJSONL results (default cve_2026_90817_results.jsonl)
--vuln-listCheck → hits.txt; exploit → exploited.txt
--quiet, -qSuppress periodic progress ticks
--flow, -fOne line per completed target (site + test summary)
StatusMeaning
passthru_dataimport_reachableValid survey + passthru route looks like Data Import
passthru_probe_reachablePassthru returned non-blocked HTTP
likely_vulnerable_versionVersion in affected window (survey OK, probes inconclusive)
redcap_version_hot_no_hashAffected version heuristics, no survey hash supplied
redcap_no_survey_hashREDCap OK, no hash, version unknown
patched / patched_no_surveyAt or above fixed version for branch
no_valid_surveyHash invalid or survey not public
no_redcapHost does not look like REDCap
survey_ok_version_unknownSurvey OK, version string not found