2011-06-14 154 views
3

我们有一个简单的php文件捕获电子邮件。它将这些电子邮件放入一个csv文件(这是不可执行的PHP)。我们最近有人设法破解我们的网站,这似乎是其中一个切入点,但我不明白它有可能。这里的脚本:PHP代码注入。我们有安全风险吗?

$fh = fopen('cap.csv', 'a+'); 
fwrite($fh, "\r".$_GET['email']); 
fclose($fh); 

很基本的权利?无论如何,你可以想到利用这个?

+0

可能取决于您对csv文件所做的操作。 – KingCrunch 2011-06-14 13:03:19

+0

您是否在其他地方使用过'cap.csv'的内容? – 2011-06-14 13:03:35

+3

以后如何使用电子邮件?你永远不会净化输入,这意味着读取任何东西都是可能的。 – 2011-06-14 13:03:48

回答

3

是的,但可能不是你在找什么。

唯一的事情,我可以做的:

  1. 添加任何文件,只是追加。
  2. (可选/奖励)如果您没有保护它并窃取所有电子邮件地址,请直接打开该文件。

它不会允许我执行任何操作,或者访问任何内容。 (除非你处理它并导致其他地方泄漏)。但是,请保持安全!

+0

好吧,这就是我的想法。我们刚刚有一个绝对正面的人,那就是漏洞,除了将他们想要的任何数据倾倒入该文件的烦恼之外,我没有看到任何其他问题。 – Jeremy 2011-06-14 13:12:18

2

您向我们显示的代码只能用于将任何内容放入csv文件(我假设您不验证/验证$_GET['email']变量),但无法以这种方式注入并执行PHP代码。

也许你有一个脚本可以处理被攻击的csv文件。

0

对于给定的代码,我现在唯一能想到的就是Nul​​lByte攻击矢量(尽管我不确定它们是否适用于当前版本的PHP,甚至不适用于您的代码)。由于您使用的是$ _GET,因此通过电子邮件参数进行的任何攻击都应该可以在服务器的日志文件中看到。

检查您的日志文件是否有任何可疑的电子邮件字符串,例如像

http://example.com?email=foo\0somethingmalicious 

和类似的东西。

0

您发布的代码表明您对输入数据没有太大的消毒作用。因此,您可能在软件的其他部分遇到类似的问题。

除此之外,即使您不在应用程序中执行csv文件,也可以在其中注入PHP代码。

因此,如果应用程序中有另一个漏洞无法正确检查输入数据,并且可能被利用来在服务器上包含文件,然后包含该问题的csv文件,则可以执行远程代码执行。