告别御剑和Dirsearch!用Python3写的dirmap,如何配置.conf文件实现高效目录扫描?
高效Web目录扫描新选择dirmap高级配置实战指南在Web安全测试领域目录扫描工具一直是渗透测试人员和开发者的必备利器。从早期的御剑、DirBuster到后来的Dirsearch工具不断迭代升级。而今天一款基于Python3开发的全新工具dirmap正以其灵活的配置和高效的扫描能力逐渐成为专业人士的新宠。1. 为什么选择dirmap传统目录扫描工具虽然功能强大但往往存在一些局限性。御剑虽然简单易用但缺乏灵活的配置选项DirBuster功能全面但性能较差Dirsearch轻量快速但功能相对单一。dirmap的出现恰好弥补了这些工具的不足。dirmap的核心优势体现在三个方面高度可定制化通过配置文件实现细粒度控制满足不同场景需求多种扫描模式支持字典、爆破、爬虫和Fuzz四种模式可自由切换智能递归处理基于状态码和URL长度的智能递归策略避免无效扫描更重要的是dirmap完全基于Python3开发这意味着它可以轻松集成到自动化测试流程中与其他Python工具无缝协作。2. dirmap.conf配置文件深度解析dirmap的强大功能很大程度上依赖于其配置文件dirmap.conf。这个文件采用INI格式分为多个配置段每个段控制不同的功能模块。2.1 递归扫描配置递归扫描是目录扫描中的重要功能但不当的配置会导致扫描效率低下。dirmap提供了精细的递归控制选项[RecursiveScan] conf.recursive_scan 1 conf.recursive_status_code [301,403] conf.recursive_scan_max_url_length 60 conf.recursive_blacklist_exts [html,htm,shtml,png,jpg,webp,bmp,js,css,pdf,ini,mp3,mp4] conf.exclude_subdirs 关键配置项说明recursive_scan是否开启递归扫描0关闭1开启recursive_status_code遇到这些状态码时开启递归扫描recursive_scan_max_url_lengthURL长度超过此值则停止扫描recursive_blacklist_exts这些后缀的文件不进行递归扫描exclude_subdirs排除扫描的特定目录2.2 扫描模式配置dirmap支持四种扫描模式但一次只能选择一种。以下是各种模式的典型配置字典模式[ScanModeHandler] conf.dict_mode 1 conf.dict_mode_load_single_dict dict_mode_dict.txt conf.dict_mode_load_mult_dict dictmult字典模式是最常用的扫描方式适合使用预定义的目录/文件字典进行扫描。dict_mode1表示使用单字典dict_mode2则启用多字典模式。爆破模式conf.blast_mode 1 conf.blast_mode_min 3 conf.blast_mode_max 3 conf.blast_mode_custom_charset abc爆破模式适合当没有合适字典时通过字符组合生成可能的目录名。blast_mode_min和blast_mode_max控制生成目录名的最小和最大长度。爬虫模式conf.crawl_mode 1 conf.crawl_mode_dynamic_fuzz_suffix crawl_mode_suffix.txt conf.crawl_mode_parse_html //*/href | //*/src | //form/action conf.crawl_mode_dynamic_fuzz 1爬虫模式会解析页面中的链接适合对已知网站进行深度爬取。crawl_mode_parse_html定义了从HTML中提取链接的XPath表达式。Fuzz模式conf.fuzz_mode 1 conf.fuzz_mode_load_single_dict fuzz_mode_dir.txt conf.fuzz_mode_load_mult_dict fuzzmult conf.fuzz_mode_label {dir}Fuzz模式适合测试动态生成的路径fuzz_mode_label定义了字典内容的插入位置。3. 请求与响应处理配置精细控制HTTP请求和响应处理是dirmap的另一大特色这些配置直接影响扫描的隐蔽性和准确性。3.1 请求头定制[RequestHandler] conf.request_headers conf.request_header_ua Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 conf.request_header_cookie conf.request_method get通过定制User-Agent、Cookie等请求头可以更好地模拟正常浏览器行为避免被WAF拦截。3.2 请求控制参数conf.request_timeout 3 conf.request_delay 0 conf.request_limit 30 conf.redirection_302 False这些参数控制请求的并发和频率request_timeout单个请求超时时间request_delay请求间延迟秒request_limit并发线程数redirection_302是否跟随302重定向3.3 响应处理配置[ResponseHandler] conf.response_status_code [200] conf.response_header_content_type 1 conf.response_size 1 conf.auto_check_404_page True conf.skip_size None响应配置决定了哪些结果会被记录response_status_code记录哪些状态码的响应auto_check_404_page是否自动检测404页面skip_size跳过特定大小的页面4. 实战配置案例根据不同的测试场景我们需要调整dirmap的配置。以下是几种常见场景的推荐配置方案。4.1 快速扫描配置适合对目标进行初步探测快速获取明显的目录和文件[ScanModeHandler] conf.dict_mode 1 conf.dict_mode_load_single_dict fast_scan_dict.txt [RequestHandler] conf.request_limit 50 conf.request_delay 0 [RecursiveScan] conf.recursive_scan 0特点使用精简字典高并发50线程关闭递归扫描4.2 深度扫描配置适合对重要目标进行全面检查[ScanModeHandler] conf.dict_mode 2 conf.dict_mode_load_mult_dict dictmult [RequestHandler] conf.request_limit 20 conf.request_delay 1 [RecursiveScan] conf.recursive_scan 1 conf.recursive_status_code [301,403,401]特点使用多字典组合适度并发20线程加延迟开启智能递归扫描4.3 隐蔽扫描配置适合需要避免触发WAF的敏感环境[ScanModeHandler] conf.dict_mode 1 conf.dict_mode_load_single_dict stealth_dict.txt [RequestHandler] conf.request_limit 10 conf.request_delay 3 conf.request_header_ua Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 [ProxyHandler] conf.proxy_server {http:http://127.0.0.1:8080,https:https://127.0.0.1:8080}特点低并发10线程加长延迟3秒使用常见浏览器UA配置代理进行流量转发5. 性能优化技巧要让dirmap发挥最佳性能除了基本配置外还需要注意以下优化点5.1 字典选择策略根据目标技术栈选择合适字典如PHP站点使用PHP专用字典定期更新字典文件加入新的常见路径对大型字典进行分组使用多字典模式5.2 并发控制内网环境可提高线程数50-100外网目标建议控制在20-30线程敏感目标建议10线程以下并添加延迟5.3 结果过滤通过响应处理配置可以有效减少无效结果[ResponseHandler] conf.response_status_code [200,403,401,500] conf.skip_size 1k conf.auto_check_404_page True这样配置会只记录200、403、401和500状态码跳过小于1KB的页面自动过滤404响应5.4 日志与输出dirmap默认将结果保存在output目录每个目标一个文件。对于长时间扫描建议定期检查输出文件使用-lcf参数记录完整扫描日志结合其他工具对结果进行二次分析在实际测试中我发现合理配置的dirmap扫描效率可以达到传统工具的2-3倍且误报率明显降低。特别是在处理大型网站时智能递归和状态码过滤功能可以节省大量时间。