目录

  1. 1. 前言
  2. 2. 概述
  3. 3. 影响版本
  4. 4. 环境搭建
    1. 4.1. 安装依赖
    2. 4.2. 下载源码
    3. 4.3. 编译安装
  5. 5. 漏洞分析
  6. 6. 利用方式
  7. 7. 实战

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

CVE-2023-25690 Apache HTTP Server 请求走私漏洞

2023/7/10 Web CVE
  |     |   总文章阅读量:

前言

参考文章


概述

Apache HTTP Server 版本 2.4.0 到 2.4.55 上的某些 mod_proxy 配置允许 HTTP 请求走私攻击。

启用 mod_proxy 以及特定配置的 RewriteRule 或 ProxyPassMatch 模块时,当规则与用户提供的URL的某些部分匹配时,会因为变量替换从而造成代理请求目标错误

配置举例:

RewriteEngine on

RewriteRule "^/here/(.*)" "http://example.com:8080/elsewhere?$1"; [P]

ProxyPassReverse /here/ http://example.com:8080/

第一行启用了Apache的URL重写引擎

第二行将以“/here/”开头的URL重定向到“http://example.com:8080/elsewhere,并将原始URL的路径部分作为查询参数传递到新的地址中(在“?”后面)。[P]标志表示使用Apache的反向代理模块进行代理转发。

第三行将在代理服务器上的URL路径“/here/”替换为“http://example.com:8080/ ”,并修改HTTP响应头中的任何相关URL路径


影响版本

2.4.0 <= Apache HTTP Server <= 2.4.55


环境搭建

直接用docker复现,相关地址https://www.yuque.com/dat0u/ctf/di8uiqg78m5kr32i

操作系统使用 WSL Ubuntu 20.04

安装依赖

包括我们编译软件所需要的build-essential,以及调试C程序所需要的gdb,以及Apache所依赖的几个第三方库

sudo apt-get install build-essential gdb
sudo apt-get install --no-install-recommends libapr1-dev libaprutil1-dev libpcre3-dev

下载源码

下载apache2.4.55版本源码,Index of /dist/httpd (apache.org)

下载apr-1.7.4(找不到1.7.2)和apr-util-1.6.3的源码, Index of /apr (apache.org)

解压

tar -xvzf httpd-2.4.55.tar.gz
tar -xvzf apr-1.7.4.tar.gz
tar -xvzf apr-util-1.6.3.tar.gz

编译安装

因为wsl上面没找到./config文件夹导致卡在这一步了,回头研究下再看看,好像也可以直接用小皮修改下配置来复现就行(


漏洞分析


利用方式

读取conf/httpd.conf信息以得知mod_proxy中RewriteRuleProxyPassReverse的配置

Apache的httpd.conf通常位于 /etc/httpd/conf/httpd.conf,还有可能出现在/usr/local/apache2/conf/httpd.conf

然后根据RewriteRule相应的匹配语句进行CRLF注入

payload例:

/hello/abc%20HTTP/1.1%0d%0aHost:%20127.0.0.1%0d%0aUser-Agent:%20curl/7.68.0%0d%0a%0d%0a' + hexdata + b'GET%20/flag.txt

实战

可参考

NSSCTF ROUND#13 信息收集

SCTF 2023 ezcheck1n