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

本文阅读 3 分钟

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的值是文件绝对路径: img

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/sycamorelg/article/details/120902506
-- 展开阅读全文 --
Web安全—逻辑越权漏洞(BAC)
« 上一篇 03-13
Redis底层数据结构--简单动态字符串
下一篇 » 04-10

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复