【问题标题】:Can a GIF/JPEG file contain runnable PHP code?GIF/JPEG 文件可以包含可运行的 PHP 代码吗?
【发布时间】:2012-10-26 08:56:50
【问题描述】:

测试一个 Web 应用程序,我可以上传 GIF/JPEG 文件,并且我知道在该 GIF/Jpeg 中正确包含 PHP 代码时可能存在威胁(因为它是使用 imagecreatetruecolorimagejpeg 修改的)。

我正在寻找一个现有的 GIF 文件,其中包含一个简单的 PHP 代码(如 phpinfo 或 echo 'hello world'),只是为了验证威胁是具体的。

如果是专门制作的 GIF 图像,中间包含 PHP 代码或在调色板颜色中,那就更完美了,但我没能找到。

【问题讨论】:

  • 您提到的两个函数都不会运行代码。您究竟是从哪里得知这个所谓的漏洞的?
  • seclists.org/fulldisclosure/2011/Jun/389php.webtutor.pl/en/2011/05/13/…(最后一个包含我测试过的 Jpeg“攻击”文件,但没有任何运气(标题已被删除)
  • 您可以下载GIMP,创建一个简单的图像,并将您的PHP代码添加为注释。
  • 哦,是的,没想到 :)
  • 全局颜色映射最多可容纳 256 种 24 位深度的颜色(每个 RGB 通道 8 位)。这将为您的 PHP 有效负载产生 768 字节空间。只需使用索引颜色创建一个图像,然后使用十六进制编辑器将您的有效负载插入到生成的图像中。

标签: php security gif


【解决方案1】:

我会为包含 PHP 代码执行的 jpg 链接文件回答自己,但如果其他人提供更完整的答案,我将提供接受的检查;)

Here's a link to a "compromised" JPEG file containing PHP exploit code (phpinfo)

(别担心,文件不会对你做任何事情)

此外,重要的是要注意,即使您成功上传了包含 php 代码的 gif 文件,如果该 gif 文件被读取为 gif(而不是通过 include/require 或错误配置的服务器作为 php 执行),它不会做任何事情,只是在你的服务器上有php代码,没用。

所以为了让这个攻击起作用,你需要有两个条件:

  1. 网站必须在您可以访问的某个时间点使用文件上传
  2. 存储的文件必须通过 PHP 执行,即使是图像文件(在这种情况下)。

虽然 1. 很容易拥有,但如今第二个几乎是不可能的。 PHP 的默认配置是只为 .php 文件运行 PHP 解释器,可以使用 NGinx、Apache、Lighttpd 等。

总之,这种攻击向量的成功概率确实很低。

【讨论】:

猜你喜欢
  • 2015-01-16
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 2019-10-03
相关资源
最近更新 更多