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 ~]# history1 systemctl disable firewalld2 systemctl disable --now firewalld3 setenforce 04 vim5 vi /etc/sysconfig/selinux 6 poweroff7 ip a8 cd /var/9 ls10 cd ww11 cd /home/12 ls13 mysql14 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec15 BT16 bt17 ls18 cd /www/19 cd wwwroot/20 ls21 cd 127.0.0.1/22 ls23 cd ..24 ls25 cd ..26 ls27 cd wwwlogs/28 ls29 cat 127.0.0.1.log 30 cd nodejs/31 ls32 cd ..33 ls34 cd tcp-error.log 35 cat tcp-error.log 36 cat nginx_error.log 37 cat access.log 38 ls39 cat 127.0.0.1.log 40 cd /www/41 ls42 cd wwwlogs/43 ls44 cat 127.0.0.1.log 45 bt46 ls47 cd /www/wwwroot/48 ls49 cd 127.0.0.1/50 ls51 rm -rf flag1 152 ls53 rm -rf version2.php 54 ls55 hardlink 56 hwclock 57 ls58 docker ps59 rm -rf pe9.sql 60 ls61 cd vendor/62 ls63 cd ..64 ls65 cd ..66 sl67 ls68 ls -a69 cd 127.0.0.1/70 ls71 ls -a72 vim .api73 ls74 ls -a75 mkdir .api76 ls77 ls -a78 cd .api/79 l80 ls81 cd ..82 ls83 cd ap84 cd api/85 ls86 cp * ../.api/87 ls88 cd ..89 ls90 cd .api/91 ls92 vim mpnotify.php 93 yum install vim94 ls95 vim alinotify.php 96 cat /etc/shadow97 who98 w99 history100 useradd flag3{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}101 env102 $flag3 = [root@web-server .api]# useradd flag3{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}103 useradd: invalid user name 'flag3{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}'104 $flag3 = flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}105 vim /etc/profile106 source /etc/p107 source /etc/profile108 env109 history 110 q111 e112 eexir113 exit114 history 115 ls116 chmod +X go_build_untitled.exe 117 l118 chmod +x go_build_untitled.exe 119 ls120 ./go_build_untitled.exe 121 ls122 mv go_build_untitled.exe wp123 ls124 ./wp 125 passwd root126 clear 127 ./wp 128 clear 129 pwd130 ./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}
回答正確!