使用 .jpg 文件上传来利用 PHP 服务器

信息安全 php 开发 上传文件
2021-09-07 02:26:49

我想问一个关于经典上传图像和在网站上执行 php 代码漏洞的问题。

所以我一直在尝试利用我应该破解的网站(它是为我们尝试破解它而设置的)

该网页允许我们上传图像,虽然使用 TamperData 更改 mime 类型很容易,但网页显然会在允许图像通过之前检查文件的最后一个字符是“.jpg”还是“.jpeg”。

无论 PHP 代码的位置如何(我只尝试了 php 代码、粘贴在图像文件末尾的 php 代码、EXIF 标头中的 php 代码等),当我在上传后打开它时,网站只会显示图像文件(或者在保存为 .jpg 的普通 php 代码的情况下出错),因为扩展名始终是 jpg。

那么在这种情况下,应该怎么做才能将文件作为.php执行呢?(空咬中毒不起作用,将代码上传为 vuln.php.jpg 或 vuln.php;.jpg 也不起作用。两者都只显示图像)

3个回答

无论 PHP 代码的位置如何 [...],当我在上传后打开它时,网站只会显示图像文件

是的,它应该是这样的。如果服务器根据内容而不是扩展名将 .jpg 文件解释为 .php 文件,那么服务器将非常容易受到攻击。

那么在这种情况下,应该怎么做才能将文件作为.php执行呢?

如果代码本身没有某种漏洞,您就无法将图像文件作为 PHP 文件执行,因为任何体面的服务器都不允许这样做。

在不了解代码的情况下,我们只能猜测。如果它应该是故意易受攻击的,我猜想扩展检查可能被破坏了。

你可以试试:

  • .htaccess: 扩展检查可能会将其解释为没有扩展,这可能没问题。如果服务器解析 .htaccess 文件,您就可以通过 .htaccess 获得图像文件的代码执行AddType application/x-httpd-php .jpg
  • vuln.jpg.php:检查可能会检查第一个扩展名,而不是最后一个扩展名。
  • vuln.php5, vuln.php4, vuln.phtml, 等:检查可能是黑名单检查,而不是白名单检查,这可能会遗漏一些可能被服务器解释为 PHP 文件的扩展名。您可以使用虚构的扩展程序轻松测试它,例如foobar,如果它通过,它就是一个黑名单过滤器。
  • LFI:您可能有一个目录,例如miscwith subdirectoriesuploadsconfigs,其中 configs 包含 PHP 文件,uploads 包含图像上传。然后你可能有代码,例如include "misc/" . $filename. 假设有一个目录遍历检查,所以这应该是错误的代码,但通常还是有点安全的,对吧?好吧,包含的 .jpg 文件会像任何其他文件一样被解析和执行,因此其中的 PHP 代码将被执行。这个例子有点牵强,但这样的东西可能存在也不是完全不可思议。

tl;dr.htaccess :您可以通过或 via将 jpg 文件作为 PHP 文件执行include此外,如果文件扩展名不安全,您可以绕过它。

只是一个想法——虽然没有真正破解服务器,但能够从 exif 上传带有嵌入式自执行 js 的 jpg 文件,这可能会在客户端计算机上造成混乱,但从用户的角度来看,这肯定是一个安全问题。见:http ://blog.trendmicro.com/trendlabs-security-intelligence/jpeg-files-used-for-targeted-attack-malware/

使用 TamperData 时,某些服务器将无法工作。但是使用 exif 编辑器可以正常工作。

.jpg 将在 http 标头或 burp 套件中替换为 .php