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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2019-19634 — 这是一个过滤器绕过漏洞,可在 class.upload.php <= 2.0.4 中实现任意文件上传和远程代码执行。 | Kitploit
工具/GitHubGitHub/jra89/cve-2019-19634
Payload生成漏洞分析代码分析漏洞利用Web应用程序漏洞利用渗透测试
GitHubjra89/cve-2019-19634

CVE-2019-19634

这是一个过滤器绕过漏洞,可在 class.upload.php <= 2.0.4 中实现任意文件上传和远程代码执行。

查看仓库
3686年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2019-19634 - class.upload.php <= 2.0.4 任意文件上传

  • 作者 - Jinny Ramsmark
  • 受影响供应商 - Verot.net
  • 受影响产品 - class.upload.php <= 2.0.4
  • 测试环境:全新安装的 Ubuntu 14.04,PHP5 和 Apache
  • 特别发现 Debian/Ubuntu 存在漏洞,因为它们将 pht 扩展名以及其他扩展名添加到了可用的 PHP 处理器中。在这种情况下,class.upload.php 没有将 pht 扩展名加入黑名单。
  • 此 CVE 与 CVE-2019-19576 直接相关

描述

这是一个过滤器绕过漏洞,导致任意文件上传和远程代码执行。 class.upload.php 脚本会过滤“危险文件和内容”并将其重命名为 txt 扩展名。 它还会对上传的图像进行不同类型的转换,这通常会破坏任何注入的有效载荷,即使文件扩展名过滤器可以被绕过。

文件扩展名过滤器是一个黑名单,因此每当引入新的扩展名(本例中为 pht),或遗漏了某个扩展名时,就可以上传 PHP 文件。 但内容仍然必须是一张有效的图像,并且仍然会经过 imagecreatefromjpeg 及类似函数的处理。 为此,我编写了 inject.php 脚本,它基本上会通过暴力尝试不同的图像,直到找到一个有效载荷不会被 class.upload.php 处理过程破坏的图像。这实质上为我们提供了任意文件上传功能,并且由于它仍然是一张有效图像,在页面上会像普通图像一样显示,从而实现非常隐蔽的代码执行。

inject.php 脚本很快会被重写,成为针对此类攻击的更通用工具,但现在它仅作为独立脚本包含在此类 CVE 发布中。

时间线(默认 90 天截止日期)

  • 2019-12-07 - 向开发者及 JoomlaWorks 的 K2 报告(他们受影响)
  • 2019-12-07 - 开发者回复并已发布补丁
  • 2019-12-08 - 开发者回复并同意公开信息

此 PoC 中包含的文件

  • composer.json
  • upload.php
  • inject.php

使用方法

upload.php 脚本是 verot.net 的 GitHub 上的示例代码。 我认为最好使用他们自己的示例代码来演示此漏洞。

  • 在终端中运行 "php inject.php",它会在文件中生成一个带有简单有效载荷的示例图像。
  • 脚本完成后,将生成一个名为 "image.jpg.pht" 的文件。
  • 浏览到 upload.php 文件并上传 image.jpg.pht,它会被处理,之后你将会获得一个 shell。

示例

root@kitploit:~
user@ayu:/var/www/html# php inject.php 
-=Imagejpeg injector 1.8=-
[+] 从 http://lorempixel.com/100/100/ 获取图像 (100 X 100)
[+] 跳转到末尾字节
[+] 搜索有效的注入点
[!] 临时解决方案:如果在此处收到 'recoverable parse error',表示可能失败
[+] 看起来成功了!
[+] 结果文件:image.jpg.pht
root@kitploit:~
user@ayu:/var/www/html# curl -v -o - http://localhost/images/image_resized.phar?c=uname%20-a | grep -aPo "(Linux.*GNU)"
Linux ayu 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 UTC 2019 x86_64 x86_64 x86_64 GNU

建议解决方案

  • 不要使用文件扩展名黑名单。
  • 默认改用允许的扩展名白名单。
  • 或者,上传的文件根本不要使用任何扩展名,而是将原始名称存储在其他位置。

参考

  • https://github.com/verot/class.upload.php/blob/2.0.5/src/class.upload.php#L3068
下载工具