玄机靶场 | 应急响应 - Webshell查杀

Webshell查杀及Flag获取方法

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}

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 的一行,只输出 - -后面的这一部分

工具特征函数/关键词
蚁剑(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

### 玄机应急响应靶场中的Tomcat配置、部署与故障排除 #### 1. Tomcat 的基本安装与配置 对于在Linux环境中安装Apache Tomcat,通常需要先下载适合操作系统的版本并解压到指定目录。为了确保安全性和性能优化,在`conf/server.xml`文件中可以调整如下参数: - **Connector Port**: 修改默认HTTP端口8080为其他未占用端口号以避免冲突。 - **Shutdown Port**: 关闭不必要的关闭命令监听端口提高安全性。 ```xml <Server port="8005" shutdown="SHUTDOWN"> <!-- 定义服务 --> </Server> ``` - **设置JVM内存大小**:编辑`bin/setenv.sh`来设定启动时的最大最小堆栈空间[^1]。 #### 2. Web应用部署流程 Web应用程序可以通过WAR包形式上传至`webapps/ROOT.war`实现自动解压缩发布;也可以手动创建项目结构放置于相同路径下。需要注意的是,如果遇到权限不足的情况,则应该赋予适当读写执行权限给相应文件夹及其内部资源[^3]。 #### 3. 日志监控与错误排查技巧 当面对Tomcat运行期间产生的异常状况时,查看日志是最直接有效的方式之一。主要关注以下几个方面: - `logs/catalina.out`: 记录了整个容器生命周期内的标准输出和错误信息; - `logs/host-manager.log`, `manager.log`: 提供管理界面访问记录以及相关操作详情; - 使用工具如ELK Stack (Elasticsearch, Logstash, Kibana) 或者Splunk来进行集中化管理和可视化展示有助于快速定位问题根源[^2]。 #### 4. 增强安全性措施建议 鉴于之前提到过可能存在由于Redis弱密码甚至无密码保护而遭受攻击的风险案例,针对Tomcat也应当采取必要的防护手段防止类似事件发生: - 开启身份验证机制限制非法登录尝试次数; - 对外网暴露的服务接口实施严格的防火墙策略只允许特定IP地址范围内的请求接入; - 及时更新官方发布的补丁修复已知漏洞保持软件处于最新状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值