【发布时间】: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