PHP 包括 - 可以注入吗?

PHP INCLUDE - injection possible?

最近我的服务器被黑了,文件被上传了。现在我正试图找到弱点,这让我进行了 php 注入。 我使用以下代码来包含文件:

if (isset($_GET['page'])) {

$page = $_GET['page'];

include("./php/$page.php");
}

我试过类似的方法:

http://badsite.com/badcode.php
example.php");include(...BADCODE HERE...);//

"allow_url_fopen=0" 在服务器配置中被禁用。我认为默认情况下过滤特殊字符和代码的白名单 and/or php 函数(htmlentities、strip...)将使它变得无懈可击。但我仍然想知道是否有可能注入错误代码,因为 $page 的值被视为字符串?

是否有任何 "user" 可以输入的内容,不会以 php 警告“...无法打开流:没有这样的文件或目录...”结束?

您的代码容易受到本地文件包含 (LFI) 的攻击。潜在的攻击者可以遍历您的文件系统并包含类似以下内容:

page=../../uploads/images/1.jpg

该示例显示了 LFI 的潜在攻击之一。如果您允许上传图片,那么有人可以上传包含 PHP 代码的图片,并且该代码将被执行。其他漏洞利用将 PHP 代码隐藏在会话文件或日志文件中;并通过漏洞包含文件。

这个问题本身不是什么大问题,但是和别的东西结合起来就成了一个问题。因此,我会将允许 $_GET['page'].

的页面列入白名单