漏洞简介
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,造成任意文件读取漏洞。
影响范围
ACME mini_httpd before 1.30
漏洞复现
题目来源:starsnow靶场-Mini_httpd 2018
抓包
伪造请求,是将Host置空,PATH的值是文件绝对路径
回包,读取到了/etc/passwd,造成任意文件读取漏洞。
利用这个漏洞,可以直接读取flag文件
参考文章:https://blog.csdn.net/xuandao_ahfengren/article/details/106854028