漏洞描述
在2.10.1之前的Apache APISIX Dashboard中,Manager API使用了兩個(gè)框架,并在框架‘gin’的基礎(chǔ)上引入了框架‘droplet’,所有的API和認(rèn)證中間件都是基于框架‘droplet’開發(fā)的,但有些API直接使用框架‘gin’的接口,從而繞過了認(rèn)證。
利用條件
Apache APISIX Dashboard < 2.10.1版本
漏洞原理
漏洞分析
對一個(gè)漏洞的分析、先提出幾個(gè)問題:
1.是什么漏洞
CVE官方給出的描述是 api 未授權(quán)漏洞

2.什么原因?qū)е鲁霈F(xiàn)了這種漏洞
分析思路(在gtihub上對提交的源碼做分析、涉及到認(rèn)證相關(guān)的代碼)
在commits中找到提交的修復(fù)記錄、發(fā)現(xiàn)中間件鑒權(quán)相關(guān)

點(diǎn)進(jìn)去看修改的代碼
移除了 filter包、中間件鑒權(quán)方式

修改了authentication文件,對login、version及未經(jīng)認(rèn)證的接口處理做了修改。

修改了authentication_test.go 做了修改,對各種狀態(tài)的請求做了修改

關(guān)鍵修復(fù)migrate_test.go中、添加了兩個(gè)接口的描述、增加了api token驗(yàn)證。

在帶有漏洞的版本中、結(jié)合migrate_test.go中的修復(fù)、判斷應(yīng)該是這兩個(gè)api存在未授權(quán)漏洞。
/apisix/admin/migrate/import
/apisix/admin/migrate/export


漏洞驗(yàn)證
通過訪問 http://127.0.0.1:9000/apisix/admin/migrate/export
下載到配置文件 apisix-config.bak


漏洞利用
手動測試:
主要利用過程就是在接口路由中執(zhí)行一個(gè)擴(kuò)展腳本 , 通過執(zhí)行系統(tǒng)命令。
通過在路由列表、查看數(shù)據(jù)時(shí)、添加script字段、后跟系統(tǒng)命令。

最終腳本執(zhí)行是在管理apache/apisix 的 9080端口的容器里

訪問創(chuàng)建的路由 http://11.22.33.101:9080/dream 執(zhí)行擴(kuò)展腳本
運(yùn)行docker命令
docker exec -it 0f643a6a69b8 /bin/sh
cd /tmp
ls
修復(fù)建議
升級到最新版本;
接口添加token驗(yàn)證;
建立白名單、做ip驗(yàn)證。