2011-04-27 59 views
4

我正在我的朋友的网站上进行安全审计。一项功能是允许用户从html上传文件。唯一的验证是将文件重命名为当前时间戳。从上传文件执行代码

我想知道,有没有办法上传一个恶意文件,以便当用户转到该文件的URL时,它会执行代码(在服务器端)?

我尝试上传了一个hello-world php脚本,但它只是显示代码而不是执行它。如果文件扩展名是.php,它将被执行,但是没有文件扩展名(因为文件被重命名)。

编辑:我可以访问完整的源代码作为安全审计的一部分。如果我可以在不使用它的情况下解决此问题会更好,但如果需要,我可以回答有关源代码的任何问题。

+0

我可以保证,这是不被恶意。这是我正在进行的Web编程课程的一项任务。该网站存在许多安全漏洞(如SQL注入和XSS)。我试图看看它的文件上传机制是否是另一个漏洞。 – matzahboy 2011-04-27 00:14:55

+0

您可能还需要查看“跨协议脚本” – 2011-04-30 13:21:07

回答

1

据我所知,上传文件,并通过访问它。浏览器不能在服务器端执行,除非服务器设置为执行没有扩展名的文件。 但是,如果还有其他漏洞(如本地文件包含),您可能可以上传并执行php脚本。

你可以阅读一些有关文件inclution这里: Wiki on RFI (almost the same)这里 Document on LFI and how it can be used

如果可以执行该文件,取决于分配上的服务器/站点的设置,所以你必须要渗透测试如果你可以执行一个PHP脚本,你可以自己选择。

,你可以在没有扩展名的文件做的唯一事情是,因为你只在旧的浏览器提你的自我,XSS,但(IE8和向下的弱势群体,大多数其他浏览器都没有。)

+0

“自我XSS”是什么意思? – matzahboy 2011-05-09 01:53:43

+0

对不起,它拼写为wrog。 :) – 2011-05-09 07:48:42

-2

用JavaScript上传文件。有很多js漏洞。

http://en.wikipedia.org/wiki/Cross-site_scripting

+0

PS。我希望你不会这样做是恶意的...因为这不会很酷...... – Homer6 2011-04-27 00:11:56

+0

-1客户端漏洞。 – gd1 2011-04-27 00:12:19

+0

由于其他原因,该网站已经非常容易受到XSS的影响。我正在查看是否可以找到其他漏洞。 – matzahboy 2011-04-27 00:13:19

0

那么,你永远处于危险之中的一件事就是提供将恶意代码放到服务器上的可能性 - 无论他们是否能够仅仅通过查看特定文件的URL来执行它,并不是你所需要的想一想。

如果您的代码中存在一个漏洞,您可以在服务器上动态地包含或打开本地文件,那么可以简单地包含要执行的(当前)本地恶意代码。现在,对于试图在远程服务器上添加代码的用户而言,这种攻击甚至很常见,但是一些安装配置为防止包含可阻止这些攻击的远程文件。如果代码在物理上位于机器上,并且可执行代码中存在缺陷,那么这样的配置仍会使您易于受到攻击。

这只是一个想法 - 我不会担心或恐慌太多,但我不会完全排除它。

+0

好想法,但PHP从不使用“包含”或“要求”声明。 – matzahboy 2011-05-01 16:44:54

1

安全扫描器Chorizo!可能会感兴趣:

https://chorizo-scanner.com/

该解决方案由一个公司,这确实白天PHP咨询和编码实现。

这是一项付费服务​​。一次扫描是免费的。

0

从我的理解,很多网络输出依赖于读取文件没有实际执行它们。服务器需要特定的权限才能执行文件。

该解决方案首先检查是否允许上传的文件类型。如果你只上传图片 - 你不会期待.php脚本。但是这并不能阻止我创建bad.php并将其上传为bad.jpg。

我例如(在我的Ubuntu机器上)上传了一个777权限的PHP文件,只能通过输入php hello.php来运行它。您通常不会在某人上传的文件上执行include(),因此我相信大部分代码都与可读性有关。在文件包含

的维基百科页面是一个好的开始,包括PHP例子: https://en.wikipedia.org/wiki/File_inclusion_vulnerability