靶机源自于微信公众号:知攻善防实验室

应急响应靶机-Linux(2)

挑战内容

前景需要:看监控的时候发现webshell告警,领导让你上机检查你可以救救安服仔吗!!

1,提交攻击者IP

2,提交攻击者修改的管理员密码(明文)

3,提交第一次Webshell的连接URL(http://xxx.xxx.xxx.xx/abcdefg?abcdefg只需要提交abcdefg?abcdefg)

3,提交Webshell连接密码

4,提交数据包的flag1

5,提交攻击者使用的后续上传的木马文件名称

6,提交攻击者隐藏的flag2

7,提交攻击者隐藏的flag3

环境

Web:http://192.168.242.232,后台管理员:peadmin/Network@2020 【这个密码是从宝塔进入数据库拿到的管理员密码】

BT:https://192.168.242.232:8888/LingJing,账号密码:LingJing/LingJing

ssh:22端口,ssh root@192.168.242.232 账号密码: root/zgsf2025

连上ssh后,在/root路径下运行./wp查看题目

注意:该靶机存在许多非预期解,请合理练习应急响应技能。

宝塔:

WEB:

SSH:

挑战

1,提交攻击者IP【192.168.20.1】

进入宝塔查看网站日志:

看到日志中 IP 为 192.168.20.1\131 的用户很不老实,进行了大规模的自动化漏洞扫描

进行了路径遍历

返回数据包和正常 core 页面一致,路径遍历没有成功

大规模漏洞扫描

虽然有返回 200 1993 的,但是返回的响应大小和正常页面都是一样的

192.168.20.1 同样也进行了漏洞扫描、爆破、webshell 利用,并且攻击成功:

攻击者使用了 NAT 网络,真实 IP 被隐藏在网关 192.168.20.1 后面。但从服务器日志角度,192.168.20.1 就是攻击流量的来源

日志分析只能基于服务器所见,而服务器看到的攻击源就是这个网关地址。

但是如果日志很多,一条一条看去效率低下,所以要熟练使用查找功能:

一种是可以在宝塔进行日志扫描:

很容易就可以找到攻击者 IP

另一种是在网站的日志文件,进行筛选:

cat /www/wwwlogs/*.log | awk '{print $1}' | sort | uniq -c

也可以确认攻击者 IP

2,提交攻击者修改的管理员密码(明文)【Network@2020】

用数据库账号密码: kaoshi/5Sx8mK5ieyLPb84m 登录 phpmyadmin

在用户表中找到加密的密码:f6f6eb5ace977d7e114377cc7098b7e3

Network@2020

另外也可以去查找数据库常用配置文件:

find / -name config.inc.php(数据库常用配置文件名)

cat /www/wwwroot/127.0.0.1/lib/config.inc.php

找到数据库账号密码:

define(‘DU’,‘kaoshi’);//MYSQL数据库用户名

define(‘DP’,‘5Sx8mK5ieyLPb84m’);//MYSQL数据库用户密码

之后的数据库查询的另一种方法:

3,提交第一次Webshell的连接URL(http://xxx.xxx.xxx.xx/abcdefg?abcdefg只需要提交abcdefg?abcdefg)【index.php?user-app-register】

官方的 WP 是进入 web 页面找到了一句话木马,从而确认是“注册协议”的路由,但是下一步如何去找“注册协议”的路由呢?

首先要确认 webshell 文件,在宝塔目录下搜索(如果进入 web 网页,一个模块一个模块看过去。。):

grep -irn '@eval(' /www

找到 webshell 的位置content/tpls/master/blocks_modify.html

进入 web 页面查看:

账号密码:peadmin/Network@2020

这里如果直接拼接路径是不对的,观察后台的其他页面,得出应该访问的是:http://192.168.242.70/index.php?content-master-blocks

在模板修改中发现了一句话木马:

该标签对应的位置是 “注册页面”,因此 “注册页面” 的 url 就是 webshell 的 url,即 index.php?user-app-register:

因为之前看到有流量包,所以也可以分析流量进行确认:

wireshark 打开流量包

从流量包中看到请求的链接 URL 为 index.php?user-app-register和version2.php

并且还发现了 flag1: flag1{Network@_2020_Hack}

可以对 index.php?user-app-register的内容分析,以确认是 webshell 的流量包:

4,提交Webshell连接密码【Network2020】

连接密码在上一步的流量包分析中已经找到:Network2020

5,提交数据包的flag1【flag1{Network@_2020_Hack}】

分析流量包得出:

flag1{Network@_2020_Hack}

6,提交攻击者使用的后续上传的木马文件名称【version2.php】

在流量包中,进行了 URL 解码后的内容中,最后一行是需要执行的参数,因为蚁剑会将参数进行 base64 编码,然后在最前面随机添加两个字母,

进行base64解码,得到参数为/www/wwwroot/127.0.0.1/

结合前面的 x0b6b31b98f31d是蚁剑随机生成的 POST 参数名,用于向 Webshell 传递操作参数

&x0b6b31b98f31d=TtL3d3dy93d3dyb290LzEyNy4wLjAuMS8=

这一整个 php 代码的调用链就是:

其他的数据包大概意思就是创建并写入 flag1,创建木马 shell.php 后改名为 version2.php,最后访问 version2.php

所以后续上传的木马就是 version2.php

7,提交攻击者隐藏的flag2【flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}】

试试直接搜索 flag2:

grep -inr flag2 /www

$flag2 = “flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}”;

8,提交攻击者隐藏的flag3【flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}】

在 env 中找到 flag3=flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}

提交 wp

参考文章

应急响应靶机-Linux(2)

https://mp.weixin.qq.com/s/xf2FgkrjZg-yWlB9-pRXvw

应急响应靶机训练-Linux2题解

https://mp.weixin.qq.com/s/5ibP6E8R-GPtOEJeFK8qZA

知攻善防Linux Web2靶场入侵排查

https://lusensec.github.io/2024/03/23/Emergency-Linux-web2/index.html

完整入侵排查

参考知攻善防Linux Web2靶场入侵排查,进行一次完整的入侵排查。

一、账户安全

排查可登录账户

cat /etc/passwd | grep -v nologin

只有 root 具有完整的交互式 shell ,没有攻击新增的后门账户

排查有密码的账户

awk '/\$1|\$6/{print $1}' /etc/shadow#在 /etc/shadow 中筛选包含 $1(MD5 加密)或 $6(SHA-512 加密)的行,即有实际密码哈希的账户

只有 root 一个账户设置了密码

检查 /home 目录

ls -alsh /home

/home 下只有 www 一个用户目录

查看 www 用户信息

cat /etc/passwd | grep www

www 用户 shell 为 nologin,是宝塔自动创建的服务账户

查看当前登录用户

tty 本地登陆 pts 远程登录

who

2 个 root 会话,都是本人远程连接的

历史登录记录

last #读取 /var/log/wtmp,显示所有用户的历史登录记录,包括登录时间、来源 IP、会话时长。

192.168.20.1 有大量 SSH 登录

二、历史命令排查

history

这里因为是灵境开的靶机,只能 ssh 连接,所以看到的历史命令其实大都是自己的,所以这一部分暂且略过

三、端口、进程排查

网络连接检查

netstat -antlp#查看所有 TCP 监听端口和已建立的连接

进程检查

ps -aux

资源占用检查

top -c -o %CPU #按 CPU 占用排序,检查是否有异常高负载进程(如挖矿)

四、开机启动项排查

/etc/rc.local#开机启动脚本

内容只有默认的 touch /var/lock/subsys/local,无异常

/etc/profile#全局环境变量,每个用户登录时都会加载此文件,攻击者可能在此植入后门

文件主体是 CentOS 默认内容,最后一行是 flag3:

export flag3=“flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}”

~/.bashrc#root 用户配置


五、定时任务排查

crontab -l

六、日志排查

1、系统安全日志审计

安全日志文件存放路径:/var/log/secure,是ssh登陆成功与否的一个安全日志

cat /var/log/secure* |grep "Failed" | awk '{print $11}' | sort | uniq -c | sort -nr

cat /var/log/secure* |grep "Accepted" |awk '{print $11}' | sort | uniq -c | sort -nr

2、web日志审计

在之前的排查中知道该机器配置有宝塔,即存在web服务,查看web 日志,路径:/www/wwwlogs/access.log

下载日志文件后

利用在线网站进行分析:

https://logdog.tech/

七、异常文件排查

1、tmp临时文件排查

2、ssh目录排查

SSH 密钥后门发现异常

authorized_keys 97字节 创建时间: 2024-03-20 10:30:24

id_ed25519 私钥

id_ed25519.pub 公钥

时间 2024-03-20 10:30 与 last 中 localhost 登录时间完全吻合:

root pts/1 localhost Wed Mar 20 10:30 - 10:30 (00:00)

这说明攻击者在 03-20 10:30 通过蚁剑:

  1. 生成了 SSH 密钥对(id_ed25519)

  2. 写入了 authorized_keys(免密登录后门)

  3. 本地测试了一次 SSH 登录(localhost,验证密钥是否生效)

3、root家目录排查

4、.pcapng文件流量分析

之前已经分析过,不再多此一举

八、命令替换排查

九、被修改的密码

重新看了一下/etc/shadow,发现除了www用户还存在mysql 用户,再联想到之前web日志中的phpmyadmin的访问,猜测密码会不会藏在数据库中

数据库的配置文件lib/config.inc.php文件中找到数据库的账号密码

cat /www/wwwroot/127.0.0.1/lib/config.inc.php

之后就可以登录数据库了

十、完整 WP