Atlassian Confluence是一款企業級協作和文檔管理軟件,由澳大利亞公司Atlassian開發和維護。它提供了一個集成的平臺,使團隊能夠協作創建、共享和管理項目文檔、知識庫、會議記錄等內容。
2024年1月16日,Atlassian 官方披露了CVE-2023-22527 Atlassian Confluence模板註入代碼執行漏洞。攻擊者可在無需登錄的情況下構造惡意請求導致遠程代碼執行。建議盡快修復漏洞。
漏洞復現
1. 靶場環境搭建
使用以下docker-compose.yaml文件搭建靶場環境。
![](https://news.xinpengboligang.com/upload/keji/6dc5a370526691e8493661a7b64a2f6e.jpeg)
啟動容器後,訪問http://your-ip,出現以下界面說明靶場成功。
![](https://news.xinpengboligang.com/upload/keji/57afe22ee45b3925f49ef47eb45da429.jpeg)
2. 漏洞利用
使用BurpSuite發送以下數據包:
![](https://news.xinpengboligang.com/upload/keji/51d08af9ebd8d4235d9b8f6d2c8eb094.jpeg)
![](https://news.xinpengboligang.com/upload/keji/1bd552edd670663a5e43a28ef3e625b5.jpeg)
根據響應頭可以看到,Confluence成功回顯了/etc/passwd文件信息。
漏洞分析
通過接口地址我們找到了該漏洞使用的模版
![](https://news.xinpengboligang.com/upload/keji/9c80dfe918e5b743ea6f91ee3d3b9982.jpeg)
首先,需要說明的是這裡使用的是Velocity模版引擎,Velocity 主要用於將模板與數據合並,生成文本輸出。在 Web 開發中,Velocity 常用於生成動態網頁、電子郵件模板、文檔等。它支持在模板中嵌入變量、條件語句、循環結構等,使得模板能夠根據給定的數據動態地生成內容。
在以上代碼的首行中使用了$parameters.label去獲取請求體中label參數的值,當我們傳入label參數後,這行代碼就變成了下面這樣:
在這段代碼中$stack.findValue的功能是通過變量名稱去獲取參數的值。
我們通過findValue調試來理解漏洞利用的過程,我們通過調試找到了該方法的位置:
![](https://news.xinpengboligang.com/upload/keji/bd5ed9ec536b660fc24c50cad56a7864.jpeg)
該方法執行時會進入下方findValue(String expr, boolean throwExceptionOnFailure)方法,並將傳入的label參數交由
this.tryFindValueWhenExpressionIsNotNull方法處理。
![](https://news.xinpengboligang.com/upload/keji/5d239e40d2a9ac41482aa893d43f164e.jpeg)
tryFindValueWhenExpressionIsNotNull把參數交給tryFindValue處理。
在tryFindValue中,調用getValueUsingOgnl進行處理。
![](https://news.xinpengboligang.com/upload/keji/f209ea35aefbe709e29c3e32dab30dc9.jpeg)
在getValueUsingOgnl中可以看到程序將payload直接傳入到了this.ognlUtil.getValue方法中,該方法會將傳入的參數進行unicode解碼並執行。
![](https://news.xinpengboligang.com/upload/keji/e2afa0ff878945dfe7c7531ab8881677.jpeg)
一步步跟進後,最終執行payload的方法為compileAndExecute(),在下面斷點調試中可發現,this.expressions.get()方法在解析payload時會將內部的unicode編碼\u0027及單引號等進行處理,使aaa前面的引號與\u0027解碼後的引號閉合,所以能夠順利執行後面註入的代碼,導致攻擊成功。
![](https://news.xinpengboligang.com/upload/keji/66494a9974cf5f9dd80c1675bb4e42a6.jpeg)
塞訊驗證規則
針對該漏洞的攻擊模擬已經加入到塞訊安全度量驗證平臺中,您可以在塞訊安全度量驗證平臺中搜索關鍵詞“CVE-2023-22527”或“Atlassian Confluence”獲取相關攻擊模擬驗證動作,從而驗證您的安全防禦體系是否能夠有效應對該漏洞,平臺以業界獨有方式確保您的驗證過程安全無害。
![](https://news.xinpengboligang.com/upload/keji/7000475ca303adfeddfd4a2992540dcc.jpeg)