- 前言
- 簡介
- 應急開始
- 準備工作
- 日誌分析
- 步驟 1
- 步驟 2
- 步驟 3
- 步驟 4
- 總結
- 補充erro.log
前言
這裡應急需要知道mysql提權的一些姿勢,還有能夠提權成功的前提。5金幣就當複習一下了。
- 這裡考察的是mysql應急響應,我們應該是根據找flag的需求去就行,但是我做了之後發現沒啥用,他這個找的flag順序其實有問題。我自己就捋順了一遍後,發現下面這種思路比較適合(新手):
伺服器疑似被入侵,日誌中發現有告警,所以我們去分析日誌,得到一些資訊後,發現駭客可能上傳或者寫入了websehll,同時在日誌中發現駭客還進行了一系列的查詢語句,並且發現能夠執行系統命令,到這裡就要懷疑是否進行了mysql的提權了。
我的思路就是: - 查webshell木馬
- 同時一邊分析日誌
- 然後mysql應急
簡介
mysql應急響應 ssh賬號 root 密碼 xjmysql
ssh root@env.xj.edisec.net -p 埠號
1.駭客第一次寫入的shell flag{關鍵字串}
2.駭客反彈shell的ip flag{ip}
3.駭客提權檔案的完整路徑 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx
4.駭客獲取的許可權 flag{whoami後的值}
應急開始
準備工作
-
這裡由於需要知道駭客寫入的webshell,其實題目中寫的不明白不清楚,如果是問:找出駭客寫入的webshell,其中藏著flag的內容。
如果是這問的話比較清楚需求一點。 -
就當他問題問的比較清楚,那我們就需要準備webshell查殺工具。D盾掃一下匯出來的web站點檔案。
-
其次我們需要了解mysql在Linux中提權知識點
mysql提權其實很容易就想到udf提權,所以這裡可以提前準備好路徑:/usr/lib/mysql/plugin/,這個目錄下就是一些mysql給使用者準備的,放udf檔案的目錄,將你寫好的功能檔案進來,就能夠像查詢語句一樣使用你寫好的一些功能函式了,這裡就是駭客經常用來提權的地方。
注意,Linux下的udf提權檔案字尾名一般是.so結尾,而在windows中的話一般是dll結尾檔案。
日誌分析
這裡我加一個日誌分析
首先匯出apache的日誌:/var/llog/apache2/access.log,
- 使用360星圖進行分析
發現攻擊ip是192.168.200.2(其實全是這個ip的日誌) - 過濾192.168.200.2的日誌,由於日誌量不是很大,我這裡就一條一條得看了,結果發現駭客大概在做:
- 進行sql注入
- 執行系統命令
- 寫入反彈shell(這裡就是base64解碼後發現是反彈shell,反彈的駭客ip也知道了)
步驟 1
1.駭客第一次寫入的shell flag{關鍵字串}
-
我們透過D盾掃描出來的sh.php這個webshell中進行檢視即可發現關鍵字串。
-
flag為:
flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b}
步驟 2
2.駭客反彈shell的ip flag{ip}
-
反彈shell,這裡在日誌分析中其實就看出來了,駭客透過mysql提權後,使用函式執行系統命令,寫入反彈shell,寫入到1.sh檔案中。
我們要麼直接檢視1.sh就可以看到駭客ip,要麼就是日誌中將base64內容進行解碼即可。- 日誌資訊為:
- 1.sh內容為:
- 日誌資訊為:
-
flag為:
flag{192.168.100.13}
步驟 3
3.駭客提權檔案的完整路徑 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx
- 提權檔案,前面提到過,按照正常邏輯的話,到這裡的時候其實就是已經發現駭客可能有透過mysql連線上來,然後進行提權了,所以就要進行mysql應急響應。首要的提權方式就是透過寫入udf檔案。
- 直接進入目錄:cd /usr/lib/mysql/plugin/
在這個目錄中,我們有可能看不懂哪些是有用哪些是沒用,這時候就是問運營了,我們安全人員不可能一個一個的給你分析,這樣的話駭客早到處撒尿了,不過一般這裡也不會有很多的udf檔案。 - 駭客的提權檔案是udf.so,這裡你就一個一個嘗試了,因為我沒專門學過,各位道友懂的話就直接看出來了。
- flag為:md5(/usr/lib/mysql/plugin/udf.so)
flag{b1818bde4e310f3d23f1005185b973e7}
步驟 4
4.駭客獲取的許可權 flag{whoami後的值}
首先我們要明白駭客是提權的話,他肯定是知道連線賬號和密碼,所以我們就要猜他怎麼知道的,我們就要去看是不是有東西洩露了密碼。
- 發現在comment.php中洩露了密碼,那駭客自然是能夠連線上資料庫然後盡心提權了。
使用者名稱:root
密碼:334cc35b3c704593
連線的資料庫名:cms
這裡就簡單了,因為我們知道了駭客是透過那個檔案進行提權的,而udf檔案是透過在檔案中寫入某些功能函式,然後使用該函式可以進行提權,甚至可以提權到root,所以我們跟駭客一樣使用一下該函式即可。
而該函式的名字我們在日誌中也能直接看到駭客是透過該功能函式直接執行了whoami等一系列系統命令, 或者你能夠透過mysql中直接查詢有哪些函式。
-
檢視命令:select * from mysql.func;
-
在日誌中也是能知道駭客使用了什麼函式進行系統命令執行
-
flag為:
flag{mysql}
總結
成果:
flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b}
flag{192.168.100.13}
flag{/usr/lib/mysql/plugin/udf.so}
flag{b1818bde4e310f3d23f1005185b973e7}
flag{mysql}
補充erro.log
這裡補充一下:mysql中的/var/log/mysql/erro.log日誌,在應急中能發揮很好的作用。
透過本題,我又複習了一遍mysql提權,udf檔案自定義功能函式,還有一個就是error.log我們沒有注意,看別人wp才發現。
GPT回答如下:(我提問的是上傳檔案大小和名字屬於什麼錯誤型別)
上傳檔案的記錄出現在 MySQL error.log 中,可能是由於應用程式將這些日誌條目寫入了 error.log,或者檔案上傳過程涉及資料庫操作並觸發了記錄。這些日誌條目有助於除錯和診斷檔案上傳過程中的問題。要確定確切原因,需要檢查應用程式的程式碼和日誌配置。
在 error.log
日誌檔案中記錄上傳檔案的大小和名字通常屬於錯誤資訊或警告資訊類別。這種日誌條目可能由以下原因觸發:
- 上傳檔案錯誤:當檔案上傳過程中出現錯誤(例如,檔案太大、格式不正確、許可權問題等),MySQL 可能會記錄這些錯誤資訊。
- 安全警告:如果上傳的檔案觸發了安全檢查或違反了安全策略,MySQL 可能會將這些警告資訊記錄到
error.log
中。 - 診斷資訊:在某些情況下,MySQL 可能會記錄詳細的診斷資訊以幫助管理員調查和解決與檔案上傳相關的問題。
儘管 MySQL 的 error.log
主要用於記錄資料庫相關的錯誤和事件,但某些應用程式或儲存過程可能會將檔案上傳活動的錯誤或警告資訊傳遞給 MySQL,從而記錄在 error.log
中。
如果你看到與檔案上傳相關的日誌條目,具體的類別可能取決於具體的錯誤或警告上下文。以下是一個示例日誌條目,展示了檔案上傳錯誤的資訊:
2024-07-10T12:34:56.789012Z 1 [ERROR] [MY-012345] [Server] File upload failed: File size exceeds limit. File name: 'example.txt', File size: 10485760 bytes.
在這個示例中,日誌條目顯示了一個錯誤(ERROR
),指出檔案上傳失敗的原因(檔案大小超過限制),並提供了檔名和檔案大小的資訊。
- 記錄上傳檔案資訊的原因
- 錯誤資訊:表示在上傳過程中發生了錯誤,需要管理員注意和解決。
- 警告資訊:提醒管理員可能存在潛在的問題,例如上傳的檔案大小接近限制。
- 診斷資訊:提供詳細資訊以幫助管理員診斷和解決檔案上傳相關的問題。
要詳細分析這些資訊,通常需要檢視具體的日誌條目內容和上下文,以確定確切的原因和類別。
透過該檔案也能定位到1.sh這個反彈shell的檔案,這裡也能夠發現一些駭客的蹤跡,所以以後應急mysql的時候不要忘記了,這裡又是一個小技巧。