我们有一个简单的 php 文件来捕获电子邮件。它将这些电子邮件放入一个 csv 文件(不能由 php 执行)。我们最近有人设法入侵了我们的网站,这似乎是切入点之一,但我不明白这是怎么可能的。这是脚本:
$fh = fopen('cap.csv', 'a+');
fwrite($fh, "\r".$_GET['email']);
fclose($fh);
很基本吧?无论如何,您可以考虑利用这一点吗?
是的,但可能不是您想要的。
我唯一能做的就是:
它不允许我执行任何东西,或者访问任何东西。(除非你处理它并在其他地方造成泄漏)。但仍然 - 确保安全!
您向我们展示的代码只能用于将任何内容放入 csv 文件中(我假设您不验证/验证$_GET['email']
变量),但您不能以这种方式注入和执行 PHP 代码。
也许您有一个适用于被利用的 csv 文件的脚本。
对于给定的代码,我现在唯一能想到的是 NullByte 攻击向量(尽管我不确定它们是否可以在当前版本的 PHP 中工作,甚至是否适用于您的代码)。由于您使用的是 $_GET,因此通过电子邮件参数进行的任何攻击都应该在您的服务器日志文件中可见。
检查您的日志文件中是否有任何可疑的电子邮件字符串,例如
http://example.com?email=foo\0somethingmalicious
和类似的事情。
您发布的代码表明您没有对输入数据进行太多清理。所以很可能你在软件的其他部分也有类似的问题。
除此之外,即使您不在应用程序中执行 csv 文件,也可以在其中注入 PHP 代码。
因此,如果应用程序中有另一个漏洞不能正确检查输入数据,并且可能被利用来包含服务器上的文件,然后包含有问题的 csv 文件,那么远程代码执行是可能的。