PHP扩展模块突破Disable_functions执行命令技巧

3星 · 超过75%的资源 需积分: 34 8 下载量 41 浏览量 更新于2024-09-17 收藏 200KB PDF 举报
"利用PHP扩展模块突破Disable_functions执行命令" 在网络安全领域,PHP是一种常见的服务器端脚本语言,广泛用于构建动态网站。然而,其内置的一些功能如`system`, `exec`, `passthru`, `shell_exec`, 和 `proc_open`等可以执行系统命令,这在不当使用或被恶意攻击者利用时,会给服务器安全带来严重风险。因此,管理员通常会在`php.ini`配置文件中使用`disable_functions`选项来禁用这些函数,以防止潜在的安全威胁。 然而,尽管这些危险函数被禁用,攻击者仍有可能寻找其他方法来执行命令。其中一种方法就是利用PHP的`dl()`函数,该函数允许在运行时动态加载PHP扩展模块。如果`enable_dl`选项被设置为`on`(默认情况下是开启的),并且管理员没有特别禁用它,攻击者就可以创建自定义的PHP扩展来绕过`disable_functions`的限制。 例如,在一个测试环境中,如RedhatLinux9搭配Apache2.0.59和PHP4.4.7,攻击者可能已经获得了WebShell(即一个能够执行命令的后门)。当`system`等函数被禁用时,攻击者不能直接使用常规方法执行本地提权攻击。但是,如果`enable_dl`是启用的,他们可以通过编写一个扩展模块,然后使用`dl()`函数加载这个模块来执行自定义的系统命令。 以一个实际的场景为例,假设攻击者发现了一个WebShell,如`http://www.69ngo.com/include/cmd_class.php?cmd=info`,并检查了`phpinfo()`信息,确认了`system`, `exec`等函数被禁用,同时`enable_dl`为`on`且`safe_mode`为`off`。在这种情况下,攻击者可以创建一个PHP扩展,包含一个可以执行系统命令的函数,然后通过WebShell中的`dl()`调用来加载这个扩展,从而绕过`disable_functions`的限制,执行他们想要的命令。 为了防御此类攻击,系统管理员应该采取以下措施: 1. 禁用`enable_dl`选项,防止动态加载扩展。 2. 定期更新PHP到最新版本,修复已知的安全漏洞。 3. 对服务器进行定期的安全审计,检查是否有未授权的WebShell或其他恶意代码。 4. 使用严格的访问控制策略,限制对敏感系统的访问。 5. 监控PHP的`dl()`函数调用,以便及时发现异常行为。 6. 设置适当的`disable_functions`,除了基本的命令执行函数外,还应考虑其他可能被滥用的功能。 理解并防范这种利用PHP扩展模块突破`disable_functions`的攻击方法对于维护服务器安全至关重要。管理员需要不断更新知识,适应新的安全威胁,而攻击者则会持续寻找新的漏洞和绕过机制,使得网络安全成为一个持续的攻防战。