Django < 2.0.8 任意URL跳轉漏洞(CVE-2018-14574)
Django默認配置下,如果匹配上的URL路由中最后一位是/,而用戶訪問的時候沒加/,Django默認會跳轉到帶/的請求中。(由配置項中的django.middleware.common.CommonMiddleware、APPEND_SLASH來決定)。
在path開頭為//example.com的情況下,Django沒做處理,導致瀏覽器認為目的地址是絕對路徑,最終造成任意URL跳轉漏洞。
該漏洞利用條件是目標URLCONF中存在能匹配上//example.com的規則。
漏洞環境
運行如下環境編譯及運行一個基于django 2.0.7的網站:
docker-compose build
docker-compose up -d
環境啟動后,訪問http://your-ip:8000即可查看網站首頁。
漏洞復現
訪問http://your-ip:8000//www.example.com,即可返回是301跳轉到//www.example.com/:

Vulhub 文檔
推薦文章: