我正在强化一个PHP网络应用程序,不受信任的用户可以在其中上传图像。我需要确保上传的文件实际上是 100% 有效、无害的图像。
我已经在用finfo和getimagesize验证文件服务器端了。我不信任用户提供的文件扩展名,但我使用上述功能获取它。
尽管如此,我还是从多个来源阅读了">将可执行文件包装在图像中"并欺骗所述功能将其报告为有效图像并不难。现在我认为没有简单的方法可以在之后执行它们,但我仍然希望立即丢弃它们:例如,我担心攻击者可以上传恶意的带有PHP的JPEG代码,到目前为止这是无害的,但是攻击者可以利用第二个不可预见的漏洞将其重命名为.php并在服务器上运行它,如此处所述。
现在我的主要兴趣是创建这样一个恶意图像,看看我的代码如何反应。之后我会讨论对策。
那么......如何">将可执行文件包装在图像中"?
好的,这样的事情应该可以解决问题:
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/
呵呵。