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

文章目录

  • 一、mini_httpd简介
  • 二、漏洞简介
  • 三、漏洞复现


一、mini_httpd简介

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

它实现了 HTTP 服务器的所有基本功能,包括:
GET、HEAD和POST方法;
CGI;
基本身份验证;
防止“..”文件名窥探的安全性;
常见的MIME类型;
尾随斜线重定向;
index.html、index.htm、index.cgi;
目录列表;
多宿主/虚拟主机;
标准日志记录;
自定义错误页面;
配置 SSL/HTTPS 和 IPv6。
漏洞信息:
1.30版本:修复允许远程用户读取任意文件的安全漏洞(CVE-2018-18778)。
1.28版本:修复 htpasswd 中的缓冲区溢出错误(CVE-2017-17663)。
1.23版本:修复nprintf 导致的缓冲区溢出(CVE-2015-1548)。

二、漏洞简介

在mini_httpd开启虚拟主机模式的情况下,用户请求http://host/file将会访问到当前目录下的host/file文件。

虚拟主机模式开启方法:
命令行利用-v参数开启(mini_httpd -v -C mini_httpd.conf)

当虚拟主机模式开启后,网络请求文件的绝对路径为:host+url
因此,当我们访问服务器文件时,如果将host头改为空值,那么我们将以文件的绝对路径进行请求。

(void) snprintf( vfile, sizeof(vfile), "%s/%s", req_hostname, f );

见上述代码,分析如下:

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


三、漏洞复现

访问web页面,任意请求抓包,将Host置空,PATH的值是文件绝对路径:
漏洞复现----16、mini_httpd任意文件读取漏洞(CVE-2018-18778)_第1张图片

你可能感兴趣的:(#,漏洞复现,渗透测试,CVE-2018-18778,mini_httpd)