從發現SQL注入到ssh連接
某天,同事扔了一個教育站點過來,里面的url看起來像有sql注入。正好最近手癢癢,就直接開始。
一、發現時間盲注和源碼
后面發現他發的url是不存在SQL注入的,但是我在其他地方發現了SQL盲注。然后改站點本身也可以下載試用源代碼,和該站點是同一套系統:

一開始的思路是直接用時間盲注寫馬,然后遇到的問題就是如何獲取站點的絕對路徑。通過sqlmap自帶的字典去爆破,發現都失效了。(但是其實只是沒寫成功,不代表路徑是不對。)那么接下來的思路就在源碼上了。從源碼里面沒有找到啥可以直接未授權getshell的點。后面在本地搭建這套系統時,發現了其配置信息都在網站目錄下的configure.php,后面就是嘗試使用sqlmap讀取文件。通過猜測,發現了站點的路徑為/var/www/html/{站點域名}下面。然后再回頭嘗試寫馬,還是失敗。但是可以讀取文件。然后寫了個腳本去跑,成功獲取數據庫賬號密碼:

Nmap一試,3306開放,心中竊喜。使用mysql連接的時候,發現root登錄被做了限制,只能使用localhost進行登錄。然后也通過sqlmap獲取到其他賬號,有的可以登錄,但是都因為權限小,無法寫馬。

二、驚現上傳漏洞
寫馬失敗后,想著查詢下數據庫里面的管理員密碼,登錄后臺看看有沒有可利用的點。后面又回過頭來看源碼了。一邊放著dump數據,一邊又發現了新東西,這站點存在ckfinder和ckeditor編輯器,但是一個無法訪問,一個無法上傳木馬。

就在我想破腦袋也沒想到還有啥辦法之時,我同事那邊來了個好消息。他從旁站獲取到了測試賬號密碼:

然后他在個人資料處發現了一些功能點,發現了一堆xss和csrf、會話固定后,最后測了一下上傳點

這個上傳點如果你直接上傳php是可以上傳成功的,但是路徑找不到。很奇怪。
不過如果你先上傳一個jpg文件,就會發現圖片路徑為upload/fileimages/ew00000000040/user_photoa009.jpg
然后再通過bp修改文件擴展名為php,重新上傳,就可以成功在前端看到php的路徑:

通過抓包分析,我們發現他存在一個http_user字段可控,并且只在前端校驗文件類型得到重命名組合為user_photo[http_user][傳入的文件后綴(.php)]


直接寫入phpinfo(),發現解析了,上蟻劍:

成功getshell。
三、臟牛提權
雖然成功獲取權限,但是這權限很低,有執行權限,但是很多操作都被限制。前面有獲取數據庫賬號密碼,在獲取webshell后,可直接連接mysql數據庫:

這時候可以考慮udf提權,但是嘗試發現沒有/usr/lib64/mysql/plugin/路徑的上傳權限。那么久只能通過常規的提權了。使用工具linux-exploit-suggester:https://github.com/mzet-/linux-exploit-suggester

發現很多種方式可以提權,但是我用kali編譯完的程序上傳到目標機上,發現運行不了。后面直接在目標機編譯,也出現確實一些庫文件,好像因為目標機版本太低了。后面參考了這篇文章,成功進行提權。
https://www.jianshu.com/p/df72d1ee1e3e
Exp:https://github.com/FireFart/dirtycow
四、SSH連接
這個提權會刪除root用戶,新建一個用戶firefart。本來還在考慮使用內網穿透把22端口代理出來,然后直接ssh連接。但是滲透步驟不規范就會導致我這樣的結果:他的ssh并不是22端口,而是999端口。我信息收集的時候沒有發現到位。當時一開始看沒有22端口,所以才順勢覺得要穿透進去。但是其實人家999端口就是ssh。接下來就是成功使用ssh連接。

但是有個問題又出現了:如果我想連接ssh,那么久只能使用這個賬戶登錄,因為我不知道root密碼。但是這樣的話,人家登錄不了root就會發現異常。但是如果我把root恢復了,我就沒有root權限了。
誒,后面我在想,如果我把原始的passwd文件恢復,然后不斷開ssh連接是不是我還能有權限操作呢?說干就干,使用firefart執行mv /tmp/passwd.bak /etc/passwd恢復原本的賬戶。然后ssh不斷開,我發現我還是root權限。這就好辦了。useradd新建賬號edu,然后把新建的賬戶加入管理員組。具體操作可以參考:https://blog.csdn.net/llm_hao/article/details/118031154
使用新賬號edu進行登錄,發現為root權限,成功!

這時候才把原本firefart賬號的窗口關閉。重新再使用firefart賬戶登錄,發現已經無法登錄了。看來這應該是系統的一種機制吧,哈哈哈。
結尾
這次滲透其實走了很多彎路,到最后都沒用上數據庫。很多時候一個點打不進去的時候,適當的放棄,去打新的點,不要太頭鐵,特別是攻防的時候。
總結一下:發現盲注,源碼到跑取站點賬號密碼(時間盲注效率低到我現在還沒跑出后臺管理賬戶密碼),無果。到從旁站上傳木馬,獲取網站服務器權限,權限較低,使用臟牛提權,到后面的恢復原本的賬戶,并新建一個管理員。其實這個站點是還有內網在,貌似是教育局辦公內網,但目前還在嘗試,后續會隨緣更新。