首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php双扩展漏洞

php双扩展漏洞
EN

Stack Overflow用户
提问于 2019-02-27 10:24:08
回答 2查看 3.1K关注 0票数 0

我正在努力学习更多关于PHP文件上传的知识。我遇到了一个问题。我读了一些文章,看了一些视频,黑客可以用双扩展名攻击,但是你检查文件扩展名。喜欢

something.php.jpg

如何预防呢?提前谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-11 19:54:54

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

大多数关于php上传漏洞的讨论都引用了这个网站:https://www.acunetix.com/websitesecurity/upload-forms-threat/,作者第一次引用的地方是:mime.html#multipleext,其中写道:

文件可以有多个扩展名;扩展名的顺序通常是不相关的。例如,如果文件welcome.html.fr映射到内容类型text/html和法语语言,那么文件welcome.fr.html将映射到完全相同的信息上。如果给出多个扩展,将映射到相同类型的元数据,则将使用右边的扩展,但语言和内容编码除外。例如,如果.gif映射到媒体类型的映像/gif,而.html映射到媒体类型的text/html,那么文件welcome.gif.html将与媒体类型welcome.gif.html/html相关联。

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

因此,名为filename.php.123的文件将被Apache解释为PHP文件,并将被执行。当然,只有在使用web server...If AddHandler指令已知的MIME类型列表中未指定最后一个扩展(在本例中为AddHandler)时,所有包含.php扩展的文件名( .php,.php.jpg)都将作为PHP脚本执行。

这似乎与Apache文档的声明相反。如果我遗漏了什么,请纠正我。Apache声明,"welcome.gif.html将与媒体类型text/html相关联“,因此我假设something.php.jpg将与媒体类型的图像/jpeg相关联。

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

AddHandler .php 5-脚本.php

我也尝试过这一行,但是文件仍然没有以php的形式执行。但是,我在过去10年中看到的大多数AddHandler代码都是这样的:

AddHandler应用程序/x .html .htm .php

那么,上面的行是否易受双重扩展漏洞的影响?还是有特定版本的php或Apache易受攻击,某些版本的php或Apache没有易受攻击?

当然,我认为上传的文件仍然应该检查mime类型,但是我已经看到mime类型也可以被欺骗。

票数 1
EN

Stack Overflow用户

发布于 2019-02-27 10:27:44

用户上传是有问题的。你可以做一些事情来减轻风险。例如,如果您打算只允许图像上传,那么您可以使用内置的类型()函数来确保用户实际上是在上传有效的图像文件。

代码语言:javascript
复制
//  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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54903204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档