我用MCP开发了一个AI目录扫描分析工具
字数 1016 2025-08-29 22:41:44
AI目录扫描分析工具开发教学文档
1. 工具概述
本教学文档基于奇安信攻防社区分享的AI目录扫描分析工具开发经验,该工具结合了传统目录扫描工具dirsearch与AI分析能力,实现了更智能化的Web目录扫描功能。
2. 开发环境准备
2.1 基础环境
- 操作系统: Linux/Windows/MacOS均可
- Python环境: Python 3.6+
- Go语言环境: Go 1.16+
- dirsearch工具: 需要预先下载并配置
2.2 依赖安装
# Python依赖
pip install requests numpy pandas
# Go依赖
go get github.com/spf13/cobra
go get github.com/common-nighthawk/go-figure
3. 核心功能实现
3.1 目录扫描模块
// 构建扫描命令
baseCmd := []string{
"python3", // 注意这里使用python3而非python
"./dirsearch/dirsearch.py",
"-u", target,
"-e", extensions,
"-w", wordlist,
"-t", strconv.Itoa(threads),
"--random-agent",
"--full-url",
"-o", outputFile,
}
关键点:
- 必须使用
python3而非python命令 - 参数说明:
-u: 目标URL-e: 文件扩展名(如php,asp等)-w: 字典文件路径-t: 线程数--random-agent: 使用随机User-Agent--full-url: 输出完整URL-o: 输出文件路径
3.2 AI分析模块
def analyze_scan_results(results):
"""
分析扫描结果并给出风险评估
"""
# 1. 结果预处理
df = preprocess_results(results)
# 2. 特征提取
features = extract_features(df)
# 3. 风险评估
risk_scores = calculate_risk(features)
# 4. 生成报告
generate_report(df, risk_scores)
4. 工具架构设计
4.1 整体架构
├── main.go # 主入口
├── cmd/ # 命令行模块
│ ├── scan.go # 扫描命令
│ └── analyze.go # 分析命令
├── pkg/
│ ├── scanner/ # 扫描器封装
│ └── analyzer/ # 分析器封装
└── dirsearch/ # dirsearch目录
4.2 关键组件交互
- 用户通过CLI发起扫描请求
- 主程序调用dirsearch进行扫描
- 扫描结果传递给AI分析模块
- AI模块生成风险评估报告
- 结果返回给用户
5. 开发注意事项
5.1 常见问题解决
-
Python版本问题:
- 确保使用
python3命令 - 检查系统PATH配置
- 确保使用
-
dirsearch路径问题:
- 确保dirsearch目录位于正确位置
- 检查文件权限
-
并发控制:
- 合理设置线程数
- 添加延迟防止被封禁
5.2 性能优化建议
- 使用缓存机制存储历史扫描结果
- 实现断点续扫功能
- 对大型字典文件进行分块处理
6. 扩展功能开发
6.1 自定义字典生成
def generate_custom_wordlist(domain):
"""
基于目标域名生成定制化字典
"""
# 1. 提取域名特征
keywords = extract_domain_keywords(domain)
# 2. 组合常见路径
common_paths = load_common_paths()
# 3. 生成变体
variants = generate_variants(keywords)
# 4. 保存字典
save_wordlist(common_paths + variants)
6.2 智能结果过滤
func filterResults(results []ScanResult) []ScanResult {
// 1. 去除重复结果
// 2. 过滤低风险条目
// 3. 按风险等级排序
// 4. 返回过滤后结果
}
7. 安全注意事项
-
法律合规:
- 仅对授权目标进行扫描
- 获取书面授权证明
-
扫描防护:
- 添加速率限制
- 实现自动封禁检测
- 支持代理配置
-
数据安全:
- 加密存储敏感扫描结果
- 实现结果访问控制
8. 完整示例代码
8.1 Go主程序片段
package main
import (
"fmt"
"os/exec"
)
func main() {
target := "http://example.com"
cmd := exec.Command("python3", "./dirsearch/dirsearch.py", "-u", target)
output, err := cmd.CombinedOutput()
if err != nil {
fmt.Printf("扫描失败: %v\n", err)
return
}
fmt.Println(string(output))
}
8.2 Python分析模块片段
import pandas as pd
def analyze_response_codes(df):
"""
分析HTTP状态码分布
"""
code_dist = df['status_code'].value_counts()
risk_codes = [403, 401, 500]
for code in risk_codes:
if code in code_dist:
print(f"发现风险状态码 {code}: {code_dist[code]} 次")
9. 总结
本教学文档详细介绍了基于MCP开发AI目录扫描分析工具的关键技术点,包括:
- dirsearch工具的正确调用方式
- Go与Python的混合编程技巧
- 扫描结果AI分析方法
- 工具架构设计思路
- 常见问题解决方案
通过本工具,安全研究人员可以更高效地进行Web目录扫描和风险评估,提升安全检测的智能化水平。