根据我的理解,许多Web输出依赖于读取实际上不执行它们的文件。服务器需要特定权限才能执行文件。
解决方案首先要检查是否允许上传的文件类型。如果您只上传图片 - 您不需要.php脚本。但这并不能阻止我创建bad.php并将其上传为bad.jpg。
我举例说(在我的ubuntu盒子上)上传了一个具有777权限的php文件,只能通过输入来运行它 php hello.php 。你通常不会对某人上传的文件进行include(),所以我相信大多数代码都与可读性有关。
php hello.php
文件包含的维基百科页面是一个良好的开端,包括一个PHP示例: https://en.wikipedia.org/wiki/File_inclusion_vulnerability
据我所知,上传文件并通过访问它。除非服务器设置为执行没有扩展名的文件,否则浏览器无法在服务器端执行。 但是,如果存在其他漏洞,例如本地文件包含,您可以上传并执行php脚本。
你可以在这里阅读一些关于文件包含的内容: RFI上的维基(几乎相同) 和这里 有关LFI的文件及其使用方法
如果您可以执行该文件取决于服务器/站点设置,那么如果您可以执行php脚本,则必须自行测试它。
你可以在一个没有扩展名的文件中做的唯一事情是,正如你提到你自己的XSS,但只有在旧浏览器中(IE8和down是易受攻击的,大多数其他浏览器都不是。)
使用javascript上传文件。有很多js漏洞。
http://en.wikipedia.org/wiki/Cross-site_scripting
安全扫描器 香肠! 可能有趣:
https://chorizo-scanner.com/
该解决方案由一家公司实施,该公司负责白天的PHP咨询和编码。
这是一项付费服务。一次扫描是免费的。
好吧,你永远存在风险的一件事是提供将恶意代码放到服务器上的可能性 - 无论他们是否只能通过查看特定文件的URL来执行它并不是你所需要的全部想一想。
如果您的代码中存在一个漏洞,您可以在服务器上动态包含或打开本地文件,那么可以简单地包含要执行的(现在)本地恶意代码。现在授予此类攻击的人甚至会尝试在远程服务器上包含代码,但是某些设置被配置为阻止包含可以阻止这些攻击的远程文件。如果代码在物理上位于机器上并且在可执行代码中发现了弱点,那么这样的配置仍然会使您容易受到攻击。
这只是一个想法 - 我不会担心或恐慌太多,但我也不会完全排除它。