php双扩展漏洞

问题描述 投票:0回答:2

我想了解更多关于PHP文件上传的信息。我遇到了一个问题。我阅读了一些文章并观看了一些黑客可以用双扩展攻击的视频,但是你检查了文件扩展名。喜欢

something.php.jpg

如何预防?先感谢您!

php security
2个回答
0
投票

用户上传有问题。您可以采取一些措施来降低风险。例如,如果您打算只允许图像上传,那么您可以使用内置的mime_content_type()函数来确保用户实际上传了有效的图像文件。

//  Let's assume that the name attribute of the file input field you have used is "myfile"

$tempFile =  $_FILES['myFile']['tmp_name'];  // path of the temp file created by PHP during upload
switch(mime_content_type($tempFile)) { 

 case "image/jpeg":
 // your actions go here...

    }
}
else {
    echo "This is not a valid image file";
}

进一步阅读:https://security.stackexchange.com/questions/32852/risks-of-a-php-image-upload-form


0
投票

我也对这个问题感兴趣。我在多台服务器上测试过像something.php.jpg这样的双扩展,我开始相信它不是一个真正的安全漏洞,除非在服务器上设置错误。在我测试它的所有Apache服务器上都没有执行文件中的php代码。

关于php上传漏洞的大多数讨论都来自这个网站:https://www.acunetix.com/websitesecurity/upload-forms-threat/,作者首先引用:http://httpd.apache.org/docs/2.4/mod/mod_mime.html#multipleext,其中说:

文件可以有多个扩展名;扩展的顺序通常是无关紧要的。例如,如果文件welcome.html.fr映射到内容类型text / html和语言French,则文件welcome.fr.html将映射到完全相同的信息。如果给出的多个扩展名映射到相同类型的元数据,则将使用右侧的扩展名,但语言和内容编码除外。例如,如果.gif映射到media-type image / gif并且.html映射到media-type text / html,那么welcome.gif.html文件将与media-type text / html相关联。

然后https://www.acunetix.com/websitesecurity/upload-forms-threat/的作者说:

因此,名为filename.php.123的文件将被Apache HTTP Server解释为PHP文件,并将被执行。当然,只有在Web服务器已知的MIME类型列表中未指定最后一个扩展名(在本例中为.123)时才会起作用...如果使用AddHandler指令,则所有包含.php扩展名的文件名(.php,.php.jpg)将作为PHP脚本执行。

对于Apache文档所说的内容,这似乎是相反的。如果我错过了什么,请纠正我。 Apache文档说,“welcome.gif.html将与媒体类型的text / html相关联”,因此我假设something.php.jpg将与media-type image / jpeg相关联。

然后该文章的作者指出,如果apache配置文件具有以下行,则会出现此漏洞:

AddHandler php5-script .php

我也试过那行,文件仍然没有像php一样执行。但是我在过去10年中看到的大多数AddHandler系列更像是这样:

AddHandler application / x-httpd-php .html .htm .php

那么上面这行不容易受到双扩展漏洞的影响吗?或者是否存在易受攻击的特定版本的php或Apache以及某些不易受攻击的PHP或Apache版本?

当然,我相信上传的文件仍然应该检查mime类型,但我已经读过mime类型也可以被欺骗。

© www.soinside.com 2019 - 2024. All rights reserved.