可以将php shell注入图像吗?这怎么样?

GSt*_*ock 11 php code-injection

我记得看过图像上传功能的漏洞利用,其中包括将恶意php代码隐藏在tiff图像中.

我正在制作自己的图片上传脚本,我认为我必须保护自己免受这种可能性.除了,我不知道它是如何工作的.有谁知道隐藏在图像中的php shell会如何执行?是否需要以某种方式加载?

谢谢.

小智 5

重新编码图像不会阻止某人上传 shell。防止这种情况的唯一可靠方法是重新编码并扫描图像是否存在 php 标签。

一个可以在重新编码后继续存在的 PHP PNG shell的示例


Lon*_*ars 1

是的,它需要加载,可能是通过包含路径中用户提供的变量来加载,例如:

include('templates/' . $_GET['page']);
Run Code Online (Sandbox Code Playgroud)

他们还可以允许用户使用 .php 扩展名设置整个文件名,因此他们所需要做的就是将其加载到浏览器中。

检查是否getimagesize()返回 false,使用随机文件名,并强制执行文件扩展名。如果可能的话,不要将上传的图像存储在可通过网络访问的位置,因为它也可能包含 JS,因此是 XSS 向量。

重新编码图像还可以让您在末尾删除讨厌的元数据和垃圾,这是多种格式(例如 JPEG)所允许的