漏洞详情

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.comFILE=index.html 的时候,上述语句结果为example.com/index.html,文件正常读取。
当 HOST 为空、FILE=etc/passwd 的时候,上述语句结果为 /etc/passwd
后者被作为绝对路径,于是读取到了 /etc/passwd,造成任意文件读取漏洞。

漏洞复现

cd Tools/vulhub/mini_httpd/CVE-2018-18778

访问 http://ip:8080

任意文件读取

BP抓包去掉host,/etc/passwd可换成任意文件名,即可任意文件读取

规则防范

没有特征流量可以分析,可以采用禁止访问敏感路径的方式,进行防范

# 账户信息
/etc/passwd

规则编写。可以采用http_method 对GET进行过滤。

参考文章

https://www.wangan.com/docs/382

评论