讓文件讀取漏洞與shell環環相扣
前言
作為一個漏洞挖掘者,你會拿任意文件讀取漏洞做些什么?
作為一個系統維護人員,你會在系統維護主機桌面保存什么重要信息?
背景
前不久,我接到一個滲透測試項目,一共8個域名。領導給的期限是2周。我總覺得一個人做項目缺少點激情。想起我的狗友-單身狗大強。我跟領導申請,我和大強共同完成這個滲透測試的項目。很快,在項目周期改為一周的前提下,我們兩個開干了。客戶只提供了多個用戶系統的測試賬號,未提供管理系統的測試賬號,但是管理系統還在測試范圍。經過四天的艱苦卓絕的努力下,不負所望,我和大強挖到了不少漏洞,細數戰果,邏輯漏洞一大堆,系統漏洞也不少,可以愉快的交差了。但是,唯一缺少的就是一個shell,作為一個資深漏洞挖掘人員,知道滲透測試的目標是更多的發現問題,不以shell為終點。但沒有拿到shell心里總覺得有一絲絲遺憾。就像將軍拿下城池但未見敵軍首領一般。
過程
在整理報告的時候,我發現大強的漏洞報告里有一個XXE漏洞,并且還是回顯的。仔細的研究后發現,這個接口是整個系統登錄后的的統一參數入口。系統解析到xml里的方法后,再根據對應的方法執行響應的邏輯。按耐不住內心的躁動,我和大強開始了通過fuzz找各種敏感文件。
經過各種嘗試,讀取了大量系統敏感信息。但是對Get shell幾乎無任何幫助。大強幾乎要放棄了。此時,我盯著大強的電腦屏幕、發現他桌面放著1.txt、2.txt等等文件。真巧,我桌面也使用簡單命名,放著一些重要的臨時文件。靈機一動、是不是有不少人也為了圖方便,在桌面存儲一些不易記錄的敏感信息。接著,我們直接對管理員桌面文件進行了fuzz。在一番嘗試下,我們找到了111.txt、123.txt、pwd.txt臨時文件。其中發現pwd.txt文件中存儲著一些網址及對應的賬號密碼,以及一些零散的字符串,貌似像密碼。此時我和大強笑出了鵝叫聲,他叫囂著要教管理員如何做人。
我和大強立即對這個目標主機進行了全端口服務掃描。發現這個主機開放著21、80、443、3389、6379、8080、8085、8086服務。我和大強盤算著,利用讀到的6對賬號密碼中的某一個直接登入3389。懷著激動的心情,進行了一次又一次的嘗試。然而畫風是這樣的:
進入3389失敗。。。
進入ftp失敗。。。
進入redis失敗。。。
由于讀取到的鏈接地址是內網系統,根本沒有進入的機會。
......
各種服務進入失敗后,我們嘗試進行了對3389、ftp等服務的爆破。仍然沒有結果。我們對目標地址的8085和8086端口直接訪問時,也沒有任何服務直接展示。但是發現8085和8086服務連通性很不錯。
我們通過度娘努力尋找著可能存在8085和8086默認端口的服務信息。但依然無所獲。
此刻,大強教管理員做人的叫囂聲也消失了。
等等,這不是結束,這樣結束太草率了。我閉上眼,隱隱約約~仿佛好像在哪見過把這兩個端口做默認端口的服務。經過大腦高速運轉,以及一些殘余的記憶。想起了多年以前遇到的treeNMS和treeDMS兩個管理系統,默認端口就是8086和8085。經過驗證,這次沒讓我和大強失望,就是這一對兄弟系統。我們利用通過XXE任意文件讀取漏洞讀取到的admin賬號密碼組合。首先成功的進入了treeNMS系統。
登錄到treeNMS
查看系統數據,What F**K,這個管理端是空的。Redis沒有任何的信息。莫慌莫慌,還有DMS系統呢。懷著忐忑的心里繼續嘗試登入下一個。
登入treeDMS
此刻心情是無比激動的,大強的叫囂聲又回來了。管理端一共有三個賬戶,密碼是通過MD5存儲的。經過反查,成功查到兩個賬號的密碼。直接登入。看看能不能有所收獲。
登入后臺
果然不出所料。這個商品管理后臺系統還是比較脆弱的。對上傳類型的文件沒有做限制,我們通過圖標設置模塊,進行文件上傳直接拿到了shell。當然內心的那份遺憾已經得到了很好的彌補。
本著一顆紅心,既然進到了后臺,并且在測試范圍,我們在客戶的授權下,對這個后臺系統做了全面的漏洞挖掘。也挖到了不少的漏洞。我們在項目截止時間的最后一刻,完成了所有目標的測試工作。交了一份比較完美的成果,也沒有留下什么遺憾。雖然過程沒有多么跌宕起伏,但還是值得我們總結。
總結
漏洞挖掘與利用的過程,不僅僅是挖到一個漏洞,就簡單的利用該漏洞可能帶來的直接效果。而是通過某一漏洞不斷尋找,突破思維限制,在任何可以關聯的事件中,尋找最大化的利用程度。為什么在漏洞挖掘與利用的過程中,你總是覺得別人都夠能找到一些你找不到的突破口。這個問題可能是你知識面比較窄,但也可能是你的思維受到限制。所以,不要讓慣性思維限制了你能力的進步。所以漏洞挖掘就是先拼技術能力,再拼思維。在技術達到某一程度后,思維決定了發展的高度。