Webshell 查杀
题目列表:
- 黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
- 黑客使用的什么工具的shell github地址的md5 flag{md5}
- 黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx
- 黑客免杀马完整路径 md5 flag{md5}
Flag1
这里选择先使用 netstat 命令来看一下 80 端口的连接以及进程 PID 和程序名
-a:显示所有连接和监听端口(包括 TCP、UDP、UNIX 套接字等)-n:以数字形式显示 IP 和端口号,不解析域名或服务名-p:显示每个连接对应的进程 PID 和程序名(需要 root 权限才能看到完整信息)

可以看到 80 端口使用的是 apache2 的服务器,那么他的日志文件就存放在/var/log/apache2 下
然后到/var/www/html 目录下先进行查看
find / -type f -name “.jsp" | xargs grep “exec(”
#-type指定查找的文件还是文件夹,-name是名字
find / -type f -name ".php” | xargs grep “eval(”
find / -type f -name “.asp" | xargs grep “execute(”
find / -type f -name ".aspx” | xargs grep “eval(”

发现有三个文件中存在符合的语句,一个一个进行查看
这里 shell.php 就是一个简单的一句话木马,密码是 1

然后就是 gz.php,是一个 shell 程序,在注释中也找到了 flag1

Flag2
之后是找到 webshell 的连接工具
这里选择查看 apache2 的日志文件,在 /var/log/apache2下

可以看到内容非常多,可以使用 awk 对于文件进行筛选
awk -F "- -" '/php/ {print $2}' access.log
使用 - - 作为分隔符,然后匹配有 php 的一行,只输出 - -后面的这一部分

- https://blog.youkuaiyun.com/Bossfrank/article/details/130502488
- https://www.cnblogs.com/B0like/p/17486657.html
| 工具 | 特征函数/关键词 |
|---|---|
| 蚁剑(AntSword) | eval, base64_decode, gzuncompress, 自定义加密;payload 中常有 getBasicsInfo |
| 菜刀(ChinaChopper) | eval($_POST['pass']);,或 @eval(gzinflate(base64_decode($_POST['xxxx']))) |
| Weevely | 一整套加密机制 + 回调函数结构,通常包含 preg_replace, assert, urldecode, xor 运算 |
| Behinder(冰蝎) | 典型有 AES 密钥、payload, getBasicsInfo, define('pass','xxx') |
| Godzilla(哥斯拉) | 有 @session_start(), 自定义 encode(), 数据从 php://input 读入,常配合 payload 加密 |
看了这几篇文章,基本可以把工具定在冰蝎和哥斯拉中,蚁剑和菜刀感觉大多是一句话木马,而 gz.php 中使用一个密钥,但是蚁剑和菜刀加密方法没有冰蝎和哥斯拉那样使用密钥,所以更大概率是哥斯拉和冰蝎
同时根据上面 awk 筛选出来的日志文件,可以看到 shell.php 的交互的一些 ua 头还是比较少的,就三四个在交换,而文章中说到冰蝎内置十几个 ua 头进行随机,但是哥斯拉 ua 头是可以自己进行定义的,再加上 gz.php 文件中存在使用 php://input进行读入,所以应该是哥斯拉
https://github.com/BeichenDream/Godzilla
对其进行了 md5,就是 flag2
Flag3

第三个任务要找到隐藏的 shell 的路径,可以想到之前使用 find 命令时,确实存在一个 .开头的隐藏文件,使用 vim 命令查看了这个文件,发现这确实就是一个 webshell,对他的路径进行 md5,我们就拿到了 flag3

Flag4
要查找到一个免杀马的路径,由于做了免杀,我们使用 find 命令和 grep 也没有找到,所以就只能对于 apache2 日志进行分析
使用 awk -F "- -" '/php?/ {print $2}' access.log查找存在 php? 来传递命令的日志,找到 top.php
不过它传入了一堆字符串,没有啥意义,我们可以看看文件到底写了啥

这里接取到两个参数,func 和 as 进行拼接,组成了 assert这个函数来执行一个 fun 变量的代码,不过这里使用了异或到底是什么,所以可以使用 php 运行一下,看看结果

使用在线平台,可以看到是 phpinfo()这个代码就是一个 shell,所以他的路径的 md5 也就是 flag4

Webshell查杀及Flag获取方法
2282

被折叠的 条评论
为什么被折叠?



