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.py | SSRF到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应用的基础URLmy_host: SSRF检测使用的回连主机地址debug: 调试模式开关proxy: 代理设置
🚀 创建自定义检测模块的5个步骤
步骤1:理解检测逻辑模式
查看现有的检测函数,你会发现它们通常包含以下元素:
- 路径构造:使用
itertools.product生成各种可能的URL路径 - 请求发送:使用
http_request函数发送HTTP请求 - 响应分析:检查状态码和响应内容
- 结果返回:返回
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:注册并测试新模块
- 注册检测函数:使用
@register('your_detector_name')装饰器 - 运行测试:使用
--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自定义检测模块的扩展方法。记住几个关键点:
- 理解架构:熟悉装饰器注册机制和标准接口
- 模仿成功案例:参考现有检测函数的实现模式
- 充分测试:使用调试模式和单独handler参数测试
- 持续优化:根据实际扫描结果调整检测逻辑
下一步建议:
- 🧪 从简单的检测模块开始实践
- 🔍 分析真实AEM应用的响应模式
- 🤝 参与开源社区贡献你的检测模块
- 📊 收集统计数据进行检测优化
AEM-Hacker的强大之处在于其可扩展性,通过添加自定义检测模块,你可以不断提升对AEM应用安全风险的检测能力。现在就开始创建你的第一个自定义检测模块吧!🚀
提示:在实际使用中,请确保遵守相关法律法规,仅在授权范围内进行安全测试。
【免费下载链接】aem-hacker 项目地址: https://gitcode.com/gh_mirrors/ae/aem-hacker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



