应急响应靶机练习-Linux2

1.背景

前景需要:看监控的时候发现webshell告警,领导让你上机检查你可以救救安服仔吗!!
挑战内容:
(1)提交攻击者IP
(2)提交攻击者修改的管理员密码(明文)
(3)提交第一次Webshell的连接URL(http://xxx.xxx.xxx.xx/abcdefg?abcdefg只需要提交abcdefg?abcdefg)
(4)提交Webshell连接密码
(5)提交数据包的flag1
(6)提交攻击者使用的后续上传的木马文件名称
(7)提交攻击者隐藏的flag2
(8)提交攻击者隐藏的flag3

2.环境准备

(1)创建虚拟机

(2)登录虚拟机

账号密码:root/Inch@957821.
(ps:这个密码很坑,我一开始试了很多遍都不对,密码第一个字符是大写的i,最后一个字符是点. )

(3)XShell连接虚拟机

这里使用xshell是为了方便操作,好看一点

3.开始

(1)last

发现192.168.20.1多次登录

[root@web-server ~]# last
root     pts/0        192.168.76.1     Sat Mar 15 23:48   still logged in   
root     tty1                          Sat Mar 15 23:46   still logged in   
reboot   system boot  3.10.0-1160.el7. Sat Mar 15 23:45 - 23:48  (00:02)    
root     pts/1        192.168.20.1     Wed Mar 20 15:36 - crash (360+08:09) 
root     pts/0        192.168.20.1     Wed Mar 20 15:04 - 15:39  (00:34)    
root     pts/0        192.168.20.1     Wed Mar 20 14:30 - 15:04  (00:33)    
reboot   system boot  3.10.0-1160.el7. Wed Mar 20 14:29 - 23:48 (360+09:19) 
root     pts/1        localhost        Wed Mar 20 10:30 - 10:30  (00:00)    
root     pts/0        192.168.20.1     Wed Mar 20 07:59 - crash  (06:30)    
reboot   system boot  3.10.0-1160.el7. Wed Mar 20 07:58 - 23:48 (360+15:49) 
root     pts/0        192.168.20.1     Thu Mar  7 15:36 - crash (12+16:21)  
root     pts/0        192.168.20.1     Thu Mar  7 15:25 - 15:36  (00:11)    
root     pts/0        192.168.20.1     Thu Mar  7 14:39 - 15:25  (00:45)    
root     pts/0        192.168.20.1     Thu Mar  7 14:07 - 14:09  (00:01)    
reboot   system boot  3.10.0-1160.el7. Thu Mar  7 14:06 - 23:48 (373+09:42) 
root     pts/0        192.168.20.1     Thu Mar  7 11:37 - 11:52  (00:15)    
reboot   system boot  3.10.0-1160.el7. Thu Mar  7 11:36 - 23:48 (373+12:11) 
root     pts/0        192.168.20.1     Mon Mar  4 09:48 - down   (00:01)    
root     tty1                          Mon Mar  4 09:47 - 09:50  (00:02)    
reboot   system boot  3.10.0-1160.el7. Mon Mar  4 09:47 - 09:50  (00:03)

(2)lastlog

[root@web-server ~]# lastlog
Username         Port     From             Latest
root             pts/0    192.168.76.1     Sat Mar 15 23:48:06 +0800 2025
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
lp                                         **Never logged in**
sync                                       **Never logged in**
shutdown                                   **Never logged in**
halt                                       **Never logged in**
mail                                       **Never logged in**
operator                                   **Never logged in**
games                                      **Never logged in**
ftp                                        **Never logged in**
nobody                                     **Never logged in**
systemd-network                            **Never logged in**
dbus                                       **Never logged in**
polkitd                                    **Never logged in**
sshd                                       **Never logged in**
postfix                                    **Never logged in**
ntp                                        **Never logged in**
www                                        **Never logged in**
mysql                                      **Never logged in**

(3)grep "Failed" /var/log/secure*

[root@web-server ~]# grep "Failed" /var/log/secure*
/var/log/secure:Mar 20 15:36:25 web-server sshd[4377]: Failed password for root from 192.168.20.1 port 1378 ssh2

(4)grep "Accepted" /var/log/secure*

同(1)

[root@web-server ~]# grep "Accepted" /var/log/secure*
/var/log/secure:Mar 20 10:30:25 web-server sshd[4111]: Accepted publickey for root from 127.0.0.1 port 55976 ssh2: ED25519 SHA256:5wjncpQo9MtvNtk8t3A1CdOx2horMhYTghdrKk4ey0k
/var/log/secure:Mar 20 14:30:21 web-server sshd[2365]: Accepted password for root from 192.168.20.1 port 9509 ssh2
/var/log/secure:Mar 20 15:04:22 web-server sshd[4068]: Accepted password for root from 192.168.20.1 port 12423 ssh2
/var/log/secure:Mar 20 15:36:28 web-server sshd[4377]: Accepted password for root from 192.168.20.1 port 1378 ssh2
/var/log/secure:Mar 15 23:48:06 web-server sshd[2550]: Accepted password for root from 192.168.76.1 port 61662 ssh2
/var/log/secure-20240320:Mar  4 09:48:23 web-server sshd[8287]: Accepted password for root from 192.168.20.1 port 11035 ssh2
/var/log/secure-20240320:Mar  7 11:37:01 web-server sshd[1436]: Accepted password for root from 192.168.20.1 port 7796 ssh2
/var/log/secure-20240320:Mar  7 14:07:42 web-server sshd[2375]: Accepted password for root from 192.168.20.1 port 7322 ssh2
/var/log/secure-20240320:Mar  7 14:39:51 web-server sshd[5216]: Accepted password for root from 192.168.20.1 port 13752 ssh2
/var/log/secure-20240320:Mar  7 15:25:23 web-server sshd[5673]: Accepted password for root from 192.168.20.1 port 3129 ssh2
/var/log/secure-20240320:Mar  7 15:36:49 web-server sshd[5849]: Accepted password for root from 192.168.20.1 port 10490 ssh2
/var/log/secure-20240320:Mar 20 07:59:13 web-server sshd[2476]: Accepted password for root from 192.168.20.1 port 5237 ssh2

(5)history

history里面有很多关键信息,是很重要的命令。

[root@web-server ~]# history
    1  systemctl disable firewalld
    2  systemctl disable --now firewalld
    3  setenforce 0
    4  vim
    5  vi /etc/sysconfig/selinux 
    6  poweroff
    7  ip a
    8  cd /var/
    9  ls
   10  cd ww
   11  cd /home/
   12  ls
   13  mysql
   14  yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
   15  BT
   16  bt
   17  ls
   18  cd /www/
   19  cd wwwroot/
   20  ls
   21  cd 127.0.0.1/
   22  ls
   23  cd ..
   24  ls
   25  cd ..
   26  ls
   27  cd wwwlogs/
   28  ls
   29  cat 127.0.0.1.log 
   30  cd nodejs/
   31  ls
   32  cd ..
   33  ls
   34  cd tcp-error.log 
   35  cat tcp-error.log 
   36  cat nginx_error.log 
   37  cat access.log 
   38  ls
   39  cat 127.0.0.1.log 
   40  cd /www/
   41  ls
   42  cd wwwlogs/
   43  ls
   44  cat 127.0.0.1.log 
   45  bt
   46  ls
   47  cd /www/wwwroot/
   48  ls
   49  cd 127.0.0.1/
   50  ls
   51  rm -rf flag1 1
   52  ls
   53  rm -rf version2.php 
   54  ls
   55  hardlink 
   56  hwclock 
   57  ls
   58  docker ps
   59  rm -rf pe9.sql 
   60  ls
   61  cd vendor/
   62  ls
   63  cd ..
   64  ls
   65  cd ..
   66  sl
   67  ls
   68  ls -a
   69  cd 127.0.0.1/
   70  ls
   71  ls -a
   72  vim .api
   73  ls
   74  ls -a
   75  mkdir .api
   76  ls
   77  ls -a
   78  cd .api/
   79  l
   80  ls
   81  cd ..
   82  ls
   83  cd ap
   84  cd api/
   85  ls
   86  cp * ../.api/
   87  ls
   88  cd ..
   89  ls
   90  cd .api/
   91  ls
   92  vim mpnotify.php 
   93  yum install vim
   94  ls
   95  vim  alinotify.php 
   96  cat /etc/shadow
   97  who
   98  w
   99  history
  100  useradd flag3{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}
  101  env
  102  $flag3 = [root@web-server .api]# useradd flag3{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}
  103  useradd: invalid user name 'flag3{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}'
  104  $flag3 = flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}
  105  vim /etc/profile
  106  source /etc/p
  107  source /etc/profile
  108  env
  109  history 
  110  q
  111  e
  112  eexir
  113  exit
  114  history 
  115  ls
  116  chmod +X go_build_untitled.exe 
  117  l
  118  chmod +x go_build_untitled.exe 
  119  ls
  120  ./go_build_untitled.exe 
  121  ls
  122  mv go_build_untitled.exe wp
  123  ls
  124  ./wp 
  125  passwd root
  126  clear 
  127  ./wp 
  128  clear 
  129  pwd
  130  ./wp 

从上面18-29中多次发现/www目录,并且有127.0.0.1.log文件,可以跟webshell的访问和上传有关。

使用scp命令将虚拟机中的文件复制到本机中。

scp root@192.168.76.128:/www/wwwlogs/127.0.0.1.log D:\桌面

(6)挑战一 

查看日志文件,发现几乎都是ip192.168.20.1的记录,判定是攻击者ip

(7)挑战二

要查看管理员密码,密码应该存在mysql数据中,同时,在/www网站目录查看是否存在mysql连接信息。

思路:在/www目录发现/wwwroot,因为含有root,含有配置信息可能性更大,进入/wwwroot,再进入127.0.0.1,使用命令 grep "MYSQL" -r /www/wwwroot/127.0.0.1递归搜索关键字,成功发现配置信息(PS:当然不是一开始就搜索MYSQL,是慢慢试出来的,一开始可能是mysql,Mysql等等)

成功发现mysql配置信息

连接数据库

查看数据库

选择kaoshi数据库

 查看x2_user表,有多个用户,暂时无法确认哪个是管理员

查看x2_user_group表,groupid为1代表管理员,确认peadmin用户为管理员

将userpassword字段拿去md5解密,成功发现管理员密码

MD5在线解密 - 土薯在线工具Toolshu.com

(8)挑战三、挑战四

上面在127.0.0.1.log中发现很多连接的记录,怀疑是webshell的连接url但是暂时无法确定,在root目录下发现存在流量包,还是使用scp命令复制到本地进行分析

scp root@192.168.76.128:/root/数据包1.pcapng D:\桌面

过滤出HTTP协议进行分析

发现都是192.168.20.1与服务器连接

选中第一条数据进行追踪

将请求体中编码的数据进行url解码,发现存在蚁剑的特征,发现第一次连接webshell的url,webshell连接密码为Network2020(脚本中开头部分)

1. 代码特征
核心代码:蚁剑的核心代码部分来源于中国菜刀,因此其连接时的流量特征与中国菜刀较为相似。
常见函数:连接时通常会包含以下PHP函数:
@ini_set("display_errors", "0");:关闭错误显示。
@set_time_limit(0);:取消脚本执行时间限制。
@set_magic_quotes_runtime(0);:禁用魔术引号。
eval() 或 assert():用于执行动态代码。

(9)挑战五 

在流量包中发现访问了flag1

进行追踪流,发现flag1

 

(10)挑战六

观察发现在后半部分,攻击者使用get请求验证version2.php是否存在,后续都是使用它来进行post

 

追踪流,发现是冰蝎的特征,所以version2.php就是后续使用的脚本

冰蝎4.0
加密方式:支持自定义传输协议,取消了固定的连接密码,加密算法和密钥由用户自定义。
流量特征:
Accept字段为application/json, text/javascript, */*; q=0.01。
Content-Type字段为application/x-www-form-urlencoded。
使用长连接,请求头和响应头带有Connection: Keep-Alive。
固定请求头和响应头,请求头为m7nCS8n4OZG9akdDlxm6OdJevs/jYQ5/IcXK,响应头为mAUYLzmqn5QPDkyI5lvSp6DmrC24FW39Y4YsJhUqS7。
默认连接密钥为e45e329feb5d925b。

 

(11)挑战七

在history中看到,曾经对文件进行修改

对这两个文件进行查看(PS:是.api目录,不是api目录,需要使用ls -a命令)

[root@web-server 127.0.0.1]# pwd
/www/wwwroot/127.0.0.1
[root@web-server 127.0.0.1]# ls
api  app  data  files  index.php  lib  tasks  vendor
[root@web-server 127.0.0.1]# ls -a
.  ..  api  .api  app  data  files  index.php  lib  tasks  .user.ini  vendor
[root@web-server 127.0.0.1]# cd .api
[root@web-server .api]# ls
alinotify.php  alireturn.php  mpnotify.php  payjsnotify.php  wxnotify.php
[root@web-server .api]# cat alinotify.php

发现flag2

 (12)挑战八

直接在history中看到 

4.验证 

[root@web-server ~]# ./wp
提交攻击者IP?
192.168.20.1
回答正确!
提交攻击者修改的管理员密码(明文)
Network@2020
回答正确!
提交第一次Webshell的连接URL(http://xxx.xxx.xxx.xx/abcdefg?abcdefg只需要提交abcdefg?abcdefg)
index.php?user-app-register
回答正确!
提交Webshell连接密码
Network2020
回答正确!
提交数据包的flag1
flag1{Network@_2020_Hack}
回答正确!
提交攻击者使用的后续上传的木马文件名称
version2.php
回答正确!
提交攻击者隐藏的flag2
flag2 = "flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}
回答错误!
提交攻击者隐藏的flag3
flag3 = flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}
回答错误!
[root@web-server ~]# ./wp
提交攻击者IP?
192.168.20.1
回答正确!
提交攻击者修改的管理员密码(明文)
Network@2020
回答正确!
提交第一次Webshell的连接URL(http://xxx.xxx.xxx.xx/abcdefg?abcdefg只需要提交abcdefg?abcdefg)
index.php?user-app-register
回答正确!
提交Webshell连接密码
Network2020
回答正确!
提交数据包的flag1
flag1{Network@_2020_Hack}
回答正确!
提交攻击者使用的后续上传的木马文件名称
version2.php
回答正确!
提交攻击者隐藏的flag2
flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}
回答正确!
提交攻击者隐藏的flag3
flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}
回答正确!

### 关于应急响应靶机练习中的Web3资源 在进行应急响应靶机练习时,针对Web3技术的学习和实践尤为重要。对于希望深入理解并掌握Web3全性的个人而言,可以从以下几个方面获取相关资源和支持。 #### Web3应急响应靶机介绍 为了更好地理解和应对Web3环境下的攻击模式和技术手段,可以利用专门设计用于模拟真实世界网络攻击场景的虚拟实验室——即所谓的“靶机”。这类平台允许参与者在一个受控环境中测试自己的技能,并通过解决实际问题来提高技术水平[^2]。 #### 获取Web3应急响应靶机的方法 有多种途径可以获得适合做Web3应急响应训练的靶机- **官方渠道**:一些知名的CTF竞赛网站会不定期发布基于区块链或去中心化应用(DApps)构建的任务挑战赛;这些活动通常伴随着详细的文档说明以及必要的装包下载链接。 - **社区分享**:活跃的技术交流平台上经常会有开发者上传自己制作的小型实验项目供他人参考学习。例如,在优快云博客上就有作者提供了名为`windows-web3`的一系列教程及其配套使用的镜像文件下载地址。 ```bash wget https://pan.quark.cn/s/1fb45a02f814 -O windows-web3.zip unzip windows-web3.zip ``` #### 学习路径建议 除了直接参与具体的攻防演练外,还应该注重理论知识体系的建设。这包括但不限于熟悉常见的智能合约漏洞类型、Solidity编程语言特性等基础知识。同时也要关注行业动态和发展趋势,及时更新自身的认知框架[^1]。 #### 实战技巧总结 当面对复杂的Web3应用场景时,有效的分析方法论不可或缺。这里列举几个实用性强的原则作为参考: - 始终保持怀疑态度对待任何未经验证的信息输入; - 对每一行代码都执行严格的审计流程; - 积极参加各类线上线下培训课程以拓宽视野范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值