AEM-Hacker开发者指南:扩展自定义检测模块的完整教程

AEM-Hacker开发者指南:扩展自定义检测模块的完整教程

【免费下载链接】aem-hacker 【免费下载链接】aem-hacker 项目地址: https://gitcode.com/gh_mirrors/ae/aem-hacker

AEM-Hacker是一款专门用于检测Adobe Experience Manager(AEM)Web应用安全漏洞的Python工具集。这款AEM安全测试工具能够自动化扫描AEM系统中的多种安全风险,包括SSRF、XSS、RCE等常见漏洞。对于安全研究人员和渗透测试人员来说,掌握如何扩展AEM-Hacker的自定义检测模块是提升检测能力的关键技能。📊

🎯 AEM-Hacker核心功能概览

AEM-Hacker主要包含以下几个核心脚本:

脚本名称主要功能使用场景
aem_hacker.py主扫描脚本,检测AEM漏洞全面安全评估
aem_discoverer.py从URL列表中识别AEM应用目标发现阶段
aem_ssrf2rce.pySSRF到RCE漏洞利用漏洞利用阶段
aem_server.py辅助服务器用于SSRF检测漏洞验证

主要检测模块包括:

  • 敏感信息泄露检测:DefaultGetServlet、QueryBuilderJsonServlet等
  • SSRF漏洞检测:SalesforceSecretServlet、ReportingServicesServlet等
  • RCE漏洞检测:Groovy Console、ACS AEM Tools等
  • XSS漏洞检测:WCMDebugFilter、WCMSuggestionsServlet等
  • 认证漏洞检测:默认密码、暴露的登录相关Servlet

🔧 自定义检测模块架构解析

AEM-Hacker采用模块化设计,所有检测功能都通过装饰器注册机制实现。让我们深入了解其核心架构:

1. 检测函数注册机制

aem_hacker.py中,检测函数通过@register装饰器进行注册:

def register(name):
    def decorator(func):
        registered[name] = func
        return func
    return decorator

@register('get_servlet')
def exposed_get_servlet(base_url, my_host, debug=False, proxy=None):
    # 检测逻辑
    return results

这种设计使得添加新的检测模块变得非常简单!

2. 检测函数的标准接口

每个检测函数都遵循相同的接口:

def your_detector(base_url, my_host, debug=False, proxy=None):
    # 检测逻辑
    return results  # 返回Finding对象列表

参数说明:

  • base_url: 目标AEM应用的基础URL
  • my_host: SSRF检测使用的回连主机地址
  • debug: 调试模式开关
  • proxy: 代理设置

🚀 创建自定义检测模块的5个步骤

步骤1:理解检测逻辑模式

查看现有的检测函数,你会发现它们通常包含以下元素:

  1. 路径构造:使用itertools.product生成各种可能的URL路径
  2. 请求发送:使用http_request函数发送HTTP请求
  3. 响应分析:检查状态码和响应内容
  4. 结果返回:返回Finding对象列表

步骤2:编写新的检测函数

假设我们要创建一个检测新漏洞的函数:

@register('new_vulnerability')
def detect_new_vuln(base_url, my_host, debug=False, proxy=None):
    results = []
    r = random_string(3)
    
    # 构造检测路径
    paths = itertools.product(
        ('/new/vuln/path', '/another/vuln/path'),
        ('.json', '.html', f';%0a{r}.html'),
        ('?param=test',)
    )
    
    for path_tuple in paths:
        path = ''.join(path_tuple)
        url = normalize_url(base_url, path)
        
        try:
            resp = http_request(url, proxy=proxy, debug=debug)
            
            # 检测条件
            if resp.status_code == 200 and 'vulnerable_indicator' in resp.text:
                finding = Finding(
                    'NewVulnerability', 
                    url,
                    '发现新的安全漏洞,可能导致信息泄露或RCE'
                )
                results.append(finding)
                break
                
        except Exception:
            if debug:
                error('检测异常', check='new_vulnerability', url=url)
    
    return results

步骤3:注册并测试新模块

  1. 注册检测函数:使用@register('your_detector_name')装饰器
  2. 运行测试:使用--handler参数单独测试新模块
python3 aem_hacker.py -u https://target-aem.com --host your-vps --handler new_vulnerability

步骤4:优化检测逻辑

最佳实践建议:

  • 🔍 多种路径变体:考虑不同的URL编码和路径分隔符
  • 🛡️ 错误处理:完善的异常处理避免扫描中断
  • 性能优化:合理使用并发和缓存
  • 📊 详细日志:在调试模式下提供有用的信息

步骤5:集成到主流程

新检测函数会自动集成到:

  • 全量扫描:当不指定--handler时自动运行
  • 并行处理:通过线程池并发执行
  • 结果输出:统一格式化的漏洞报告

📋 实战案例:创建自定义Servlet检测

让我们通过一个实际案例来演示如何创建自定义检测模块:

案例目标:检测CustomServlet的暴露

@register('custom_servlet')
def detect_custom_servlet(base_url, my_host, debug=False, proxy=None):
    """检测自定义Servlet的暴露情况"""
    results = []
    
    # 常见自定义Servlet路径模式
    custom_paths = [
        '/bin/custom/servlet',
        '/apps/custom/components/servlet',
        '/content/custom/servlet',
        '/etc/custom/servlet'
    ]
    
    for base_path in custom_paths:
        # 生成变体路径
        variants = itertools.product(
            (base_path, base_path.replace('/', '///')),
            ('.json', '.html', '.xml', ';.css', ';.html'),
            ('', '?test=1', '?debug=true')
        )
        
        for path_tuple in variants:
            path = ''.join(path_tuple)
            url = normalize_url(base_url, path)
            
            try:
                resp = http_request(url, proxy=proxy)
                
                # 检测条件:200状态码且包含特定内容
                if resp.status_code == 200:
                    content = resp.text.lower()
                    # 检查是否为Servlet响应
                    if any(indicator in content for indicator in 
                           ['servlet', 'jcr:', 'sling', 'aem']):
                        finding = Finding(
                            'CustomServletExposed',
                            url,
                            '发现暴露的自定义Servlet,可能泄露敏感信息或存在安全风险'
                        )
                        results.append(finding)
                        break
                        
            except Exception:
                if debug:
                    error('检测异常', check='custom_servlet', url=url)
    
    return results

🔍 调试与优化技巧

1. 使用调试模式

python3 aem_hacker.py -u https://target.com --host vps-ip --debug --handler your_detector

2. 分析现有检测模块

研究aem_hacker.py中的成功案例:

  • exposed_get_servlet:敏感信息泄露检测
  • exposed_groovy_console:RCE漏洞检测
  • salesforcesecret_servlet:SSRF漏洞检测

3. 性能优化建议

  • 🎯 减少不必要的请求:优先检查最有可能的路径
  • 🔄 复用会话:利用现有的http_request函数
  • 📈 并行处理:检测函数本身支持并发执行

🛠️ 高级功能扩展

1. 添加新的检测类型

除了现有的漏洞类型,你可以扩展支持:

  • 配置错误检测
  • 权限绕过检测
  • 业务逻辑漏洞检测
  • API安全检测

2. 集成外部工具

将AEM-Hacker与其他安全工具集成:

  • 与Burp Suite联动
  • 集成到CI/CD流水线
  • 自动化报告生成

3. 自定义输出格式

修改结果输出,支持:

  • JSON格式导出
  • HTML报告生成
  • 与漏洞管理平台集成

📚 学习资源与参考

官方文档参考

相关检测技术

  • 路径遍历检测:检查....4.2.1....等绕过技巧
  • 参数污染检测:多个相同参数名的处理
  • 编码绕过检测:URL编码、双重编码等

🎉 总结与下一步

通过本教程,你已经掌握了AEM-Hacker自定义检测模块的扩展方法。记住几个关键点:

  1. 理解架构:熟悉装饰器注册机制和标准接口
  2. 模仿成功案例:参考现有检测函数的实现模式
  3. 充分测试:使用调试模式和单独handler参数测试
  4. 持续优化:根据实际扫描结果调整检测逻辑

下一步建议:

  • 🧪 从简单的检测模块开始实践
  • 🔍 分析真实AEM应用的响应模式
  • 🤝 参与开源社区贡献你的检测模块
  • 📊 收集统计数据进行检测优化

AEM-Hacker的强大之处在于其可扩展性,通过添加自定义检测模块,你可以不断提升对AEM应用安全风险的检测能力。现在就开始创建你的第一个自定义检测模块吧!🚀

提示:在实际使用中,请确保遵守相关法律法规,仅在授权范围内进行安全测试。

【免费下载链接】aem-hacker 【免费下载链接】aem-hacker 项目地址: https://gitcode.com/gh_mirrors/ae/aem-hacker

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值