我正在强化不受信任的用户可以上传图像的PHP Web应用程序。我需要确保上传的文件实际上是100%有效,无害的图像。
我已经使用finfo和getimagesize验证了文件服务器端。我不相信用户提供的文件扩展名,但我用相应的函数来获取它。
尽管如此,我还是从多个来源中读到了“将可执行文件包装在图像中”并且在将其报告为有效图像时欺骗所述函数。现在我发现以后没有简单的方法来执行它们,但是我仍然希望立即丢弃它们:例如,我担心攻击者可以上传带有PHP的恶意JPEG代码,这对于现在,攻击者可以利用第二个无法预料的漏洞将其重命名为.php并在服务器as described here上运行。
现在我的主要兴趣是创建这样的恶意图像,看看我的代码如何反应。之后我会对抗对策。
那么......我如何“在图像中包装可执行文件”?
答案 0 :(得分:1)
好的,这样的事情可以解决问题:
GIF89a<?php
echo 'hi';
本文提供了一些其他信息http://ha.ckers.org/blog/20070604/passing-malicious-php-through-getimagesize/
在这里,我找到了一个用于修改EXIF数据的软件,并在那里添加了可执行代码:http://php.webtutor.pl/en/2011/05/13/php-code-injection-a-simple-virus-written-in-php-and-carried-in-a-jpeg-image/
HTH。