標題:記一次任意文件下載到getshell

taibeihacker

Moderator

0x01 前言

某日閒來無事,上fofa搜了xx系統,想著碰碰運氣,類似這樣
1049983-20220119225612527-1364655911.jpg

0x02 测试过程

隨便挑了一個站點打開
1049983-20220119225613163-1439267662.jpg
Em…,試試運氣,反手admin admin就進去了,是一個管理系統
1049983-20220119225613562-313120700.jpg
然後根據網站的功能點,隨便點擊幾個,發現除了常規的操作也沒啥了,翻了一會,發現有一個文件下載操作
1049983-20220119225613876-1349432502.jpg

好傢伙,藏得挺深,抓包看看,請求的地址好像是一個文件
1049983-20220119225614402-159575045.jpg
fileName改成./etc/passwd看看,好傢伙,報錯了
1049983-20220119225614938-1294885574.jpg
看來應該不是這個路徑,隨後依次嘗試了././etc/passwd和./././etc/passwd都是500錯誤,到了././././etc/passwd的時候就能訪問到了
1049983-20220119225615472-1186122569.jpg
再看看能不能讀歷史命令,如果可以讀歷史命令,可以看看有沒有網站備份文件或者網站安裝包,嘿嘿,改路徑為/root/.bash_history,訪問! ….500錯誤
1049983-20220119225615994-2012918871.jpg
看來應該是權限不夠。沒辦法了,從其他地方入手吧。
接下來可以F12看看網站源代碼,用源代碼中標誌性的語句或者文件去fofa搜索相同的系統,說不定會有root權限,大概像這樣
1049983-20220119225616528-1337144661.jpg
有了相同的系統之後,再次嘗試弱口令
1049983-20220119225616920-100761018.jpg
可能是最近運氣不錯吧,弱口令又進去了。嘿嘿
1049983-20220119225617369-1237355266.jpg
接下來嘗試剛剛的操作,下載././././etc/passwd文件看看
1049983-20220119225617822-1470359648.jpg
再試試讀歷史命令/root/.bash.history
1049983-20220119225618270-857525528.jpg
可以讀到歷史命令,慢慢翻,最終發現有網站源碼
1049983-20220119225618653-1742935129.jpg
反手下載下來
1049983-20220119225618998-757262743.jpg
解壓一下
1049983-20220119225619315-1947083995.jpg
1049983-20220119225619680-1165688496.jpg
JSP的站,沒學過java的我裂開了,先跟著歷史命令把環境搭起來,於是在自己服務器上部署了一樣的系統。
沒學過java,自動化java審計工具還收費,就手工一個方法一個方法康康把
1049983-20220119225620165-708289661.jpg
找了大半天,都快想放棄了…
不過這套系統有mysql,先看看數據裡面的結構吧。大概長這樣
1049983-20220119225620586-481103708.jpg
隨後在管理網站用戶的表裡面發現了一個系統自帶的賬戶(這裡用賬戶x表示),賬戶x比admin權限還要高
1049983-20220119225621169-770288268.jpg
把密碼放到cmd5查一下
1049983-20220119225621575-1976315723.jpg
要錢?我窮的一批,沒錢,反手找好師傅查一查,好師傅很快啊,就回了消息
1049983-20220119225621999-891368438.jpg
隨後我用這個賬戶x登錄自己搭建的系統,發現在網站是根本查不到這個賬戶存在的,也就是說可能是開發商留下的。嘿嘿,有了這個賬號,其他系統都可以登錄了。
隨後發現系統有一個上傳點可以上傳文件,既然都到白盒了,那麼可以部署一個文件實時監控工具,看看發生變化的文件,也可以看看等會要上傳的文件是否上傳了。
這裡使用了FileMonitor來監控文件
1049983-20220119225622414-783233812.jpg
上傳文件、抓包改後改後綴.jsp
1049983-20220119225622849-1570156655.jpg
提示上傳失敗
1049983-20220119225623276-2048107424.jpg
看看文件監控,已經能上傳上去了
1049983-20220119225623680-1104630029.jpg
後綴可控,但是文件名不可控,這可麻煩了,一般文件名都是以時間戳或者有特定的算法命名,再多上傳幾次看看,看起來也沒啥規律啊
1049983-20220119225624147-1308714869.jpg
翻看一下下載的網站源碼中的class文件。再看看請求的地址
Image
應該是upload類裡面的Uploadfile方法(沒學過Java,不知道對不對,別噴~)
找到了Uploadfile方法一行一行的看,頭暈啊,但是最後還是找到了生成文件名的方法=-=
1049983-20220119225625149-1811091206.jpg
讓我看看UUID.randomUUID().toString()是個啥
1049983-20220119225625633-667069781.jpg
三部分組成:當前日期和時間+時鐘序列+全局唯一的IEEE機器識別號(網卡mac地址)
突然想了想,前兩個估計還能想辦法得到,但是最後一個網卡的mac地址,就很難了,任意文件下載是下載不到帶有網卡mac地址的文件的,又一條路被堵死了
過了幾個小時,又發現一個上傳點
1049983-20220119225626147-800504049.jpg
文件監控起來
1049983-20220119225626548-1854421406.jpg
直接傳馬
1049983-20220119225627041-1428346929.jpg
回顯了地址
1049983-20220119225627401-450524635.jpg
冰蠍成功連上成功
1049983-20220119225627845-114544922.jpg
最後如法炮製,利用系統自帶的賬號登錄系統,然後用第二個上傳點傳馬即可。
1049983-20220119225628330-1035735350.jpg

0x03 总结​

1.通過fofa搜索某個開源CMS系統,點擊任意一個目標站點,輸入弱口令admin/admin進入系統2.在後台的文件下載處,出現http://www.xxx.com/filenam=xxxx.xls...讀取到內容。那麼換成././././root/.bash_history,顯示500錯誤。 4.該測試的任意目標網站是不能讀取到history記錄,那麼通過fofa搜索其他幾個類似的開源cms系統,輸入相同的弱口令admin/admin可進入系統,然後也能正常讀取到././././root/.bash_history內容。顯示讀取出目標管理員操作的記錄,包括對目標站點進行備份的壓縮包名稱以及是保存到網站的根目錄下5.可直接下載根目錄下的源碼壓縮包到本地,對其進行代碼審計。 6.發現目標源碼中包含了網站的配置文件以及mysql數據庫的備份文件。 7.通過在本地搭建環境,讓目標系統在本地能正常運行,同時也通過FileMonitor(https://github.com/TheKingOfDuck/Fi...應的密碼hash值,通過md5進行成功解密,並通過system賬號登錄到本地環境系統後台。 8.在後台的文件上傳處,存在文件上傳漏洞,上傳test.jsp,提示上傳成功,但是在FileMonitor監控顯示已有新文件建立,雖搜索上傳文件名並沒有搜索到,證明是沒有上傳成功。 9.通過搜索源代碼中的upload關鍵字,可以知道上傳後成功的文件名的規則為:當前日期和時間+時鐘序列+全局唯一的IEEE機器識別號(網卡mac地址)10.在本地環境系統後台的另一處又發現一處文件上傳,可成功上傳a.jsp,並返回了上傳的文件名,搜索該文件名,可知道保存的路徑。 12.最後如法炮製,利用系統自帶的賬號system登錄到目標系統後台,然後用第二處上傳點傳馬即可。原文鏈接:https://mp.weixin.qq.com/s?__biz=Mz...4scene=178cur_album_id=1553386251775492098#rd
 
返回
上方