【问题标题】:PHP INCLUDE - injection possible?PHP INCLUDE - 注入可能?
【发布时间】:2018-09-30 22:16:38
【问题描述】:

最近我的服务器被黑了,文件被上传了。现在我正在尝试定位弱点,这让我进行了 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”在服务器配置中被禁用。我认为默认情况下过滤特殊字符和代码的白名单和/或php函数(htmlentities,strip ...)会使其防弹。但是我仍然想知道是否有可能注入错误代码,因为 $page 的值被视为字符串?

是否有任何“用户”可以输入,不会出现 php 警告“...无法打开流:没有这样的文件或目录...”?

【问题讨论】:

  • 不是说这是你的问题,但我发现使用普通 FTP 的人经常会被黑客入侵。如果您使用的是普通 FTP,那么简单地使用加密的 FTP、SFTP 等将是保证您的网站安全的一个很好的开始。当我与一台带有恶意软件的计算机在同一个网络上时,我以艰难的方式吸取了这一教训。这实际上是我妈妈的电脑。它正在嗅探网络流量并将我的 FTP 凭据发送到中国。
  • PHP 不是这样工作的;它不会用它提供的值重写代码,除非你使用像eval() 这样的东西。它只是解释值并将其放入变量中。您唯一真正的风险在于可能会尝试将../ 放入路径以尝试包含不应包含的文件的遍历攻击。
  • inculde 你能改正那个错字吗?除非它不是一个?
  • 感谢您的回答。我使用加密的 FTP,但我正在考虑类似的方法,黑客可能已经获得了控制权......我知道 eval() 函数,preg_replace() 和其他函数,这实际上只是关于包含,但 jh1711 给了我一个很好的提示空字节注入。 @Funk 四十九:错字已修复-谢谢! :)

标签: php include code-injection


【解决方案1】:

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

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

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

这个问题本身并不是一个大问题,但是当它与其他东西结合起来时,它可以成为一个问题。因此,我会将允许使用 $_GET['page'] 的页面列入白名单。

【讨论】:

  • OP 将.php 附加到变量中,这将在一定程度上缓解问题。
  • 你是对的。我完全错过了。攻击场景应该仍然是真实的,但我需要检查哪些 PHP 版本仍然允许空字节中毒绕过硬编码扩展。明天我会更新答案。
  • 该死!我从我的提供商那里获得了一个完整的新帐户,所以我不知道运行的是哪个 PHP 版本。从我发现“空字节注入已在 PHP 5.3.4 中修复”... 可能我运行的是旧版本。 THX 到目前为止的提示!!!
  • 我也该死。我忘了我想回到这个问题。过失。似乎空字节已经固定了很长时间;这应该是最近才发生的事情。但据我所知,路径截断(添加一堆毫无意义的././(大约 4kB),扩展名将被截断)仍然是一个问题。至少那是一些快速测试鞋的原因。如果您的配置将 $_GET 字符串的长度限制为短于该长度,它可能不会显示在您的设置中。
  • 花了我一段时间......但也非常感谢您的最后回复。我对此进行了更深入的研究,希望可以解决我网站上的问题:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 2013-03-15
  • 2011-01-18
  • 2021-12-06
  • 1970-01-01
相关资源
最近更新 更多