前言

本人是一名立志安全开发的大学生,有一年安全测试经验,有时在刷src的时候,需要检查所有target的web业务系统是否泄露敏感目录、文件,工作量十分庞大,于是Dirmap诞生了~

知名的web目录文件扫描工具有很多,如:御剑1.5、DirBuster、Dirsearch、cansina。

其他开源的各种轮子,更是数不胜数。

这次我们不造轮子,我们需要造的是一辆车!open source的那种XD

需求分析

何为一个优秀的web目录扫描工具?

经过大量调研,总结一个优秀的web目录扫描工具至少具备以下功能:

并发引擎

能使用字典

能纯爆破

能爬取页面动态生成字典

能fuzz扫描

自定义请求

自定义响应结果处理...

功能特点

你爱的样子,我都有,小鸽鸽了解下我吧:

支持n个target*n个payload并发

支持递归扫描

支持自定义需要递归扫描的状态码

支持(单|多)字典扫描

支持自定义字符集爆破

支持爬虫动态字典扫描

支持自定义标签fuzz目标url

自定义请求User-Agent

自定义请求随机延时

自定义请求超时时间

自定义请求代理

自定义正则表达式匹配假性404页面

自定义要处理的响应状态码

自定义跳过大小为x的页面

自定义显示content-type

自定义显示页面大小

按域名去重复保存结果

扫描效果

递归扫描

字典模式

爆破模式

爬虫模式

fuzz模式

Q:这么棒棒呀!那Dirmap该怎么使用呢?

A:啊哈,你往下滑。

使用方法

环境准备

git clone https://github.com/H4ckForJob/dirmap.git && cd dirmap && python3 -m pip install -r requirement.txt

单个目标

python3 dirmap.py -iU https://target.com -lcf

多个目标

python3 dirmap.py -iF urls.txt -lcf

Q:哎呀,扫描结束了,我的结果呢qwq?

A:莫慌自动保存的呀。

结果保存

结果将自动保存在项目根目录下的output文件夹中,每一个目标生成一个txt,命名格式为目标域名.txt。结果自动去重复,不用担心产生大量冗余。

Q:矮油,不错呦,但是我还想学习下高级用法呢。

A:好嘞,这就来,屏住呼吸,往下看。

高级使用

自定义dirmap配置,开始探索dirmap高级功能,暂时采用加载配置文件的方式进行详细配置,不支持使用命令行参数进行详细配置

编辑项目根目录下的dirmap.conf,进行配置。

dirmap.conf配置详解:

#递归扫描处理配置[RecursiveScan]#是否开启递归扫描:关闭:0;开启:1conf.recursive_scan = 0#遇到这些状态码,开启递归扫描。默认配置[301,403]conf.recursive_status_code = [301,403]#设置排除扫描的目录。默认配置空。其他配置:e.g:['/test1','/test2']#conf.exclude_subdirs = ['/test1','/test2']conf.exclude_subdirs = ""#扫描模式处理配置(4个模式,1次只能选择1个)[ScanModeHandler]#字典模式:关闭:0;单字典:1;多字典:2conf.dict_mode = 1#单字典模式的路径conf.dict_mode_load_single_dict = "dict_mode_dict.txt"#多字典模式的路径,默认配置dictmultconf.dict_mode_load_mult_dict = "dictmult"#爆破模式:关闭:0;开启:1conf.blast_mode = 0#生成字典最小长度。默认配置3conf.blast_mode_min = 3#生成字典最大长度。默认配置3conf.blast_mode_max = 3#默认字符集:a-z。暂未使用。conf.blast_mode_az = "abcdefghijklmnopqrstuvwxyz"#默认字符集:0-9。暂未使用。conf.blast_mode_num = "0123456789"#自定义字符集。默认配置"abc"。使用abc构造字典conf.blast_mode_custom_charset = "abc"#自定义继续字符集。默认配置空。conf.blast_mode_resume_charset = ""#爬虫模式:关闭:0;开启:1conf.crawl_mode = 0#解析robots.txt文件。暂未实现。conf.crawl_mode_parse_robots = 0#解析html页面的xpath表达式conf.crawl_mode_parse_html = "//*/@href | //*/@src | //form/@action"#是否进行动态爬虫字典生成:关闭:0;开启:1conf.crawl_mode_dynamic_fuzz = 0#Fuzz模式:关闭:0;单字典:1;多字典:2conf.fuzz_mode = 0#单字典模式的路径。conf.fuzz_mode_load_single_dict = "fuzz_mode_dir.txt"#多字典模式的路径。默认配置:fuzzmultconf.fuzz_mode_load_mult_dict = "fuzzmult"#设置fuzz标签。默认配置{dir}。使用{dir}标签当成字典插入点,将http://target.com/{dir}.php替换成http://target.com/字典中的每一行.php。其他配置:e.g:{dir};{ext}#conf.fuzz_mode_label = "{ext}"conf.fuzz_mode_label = "{dir}"#处理payload配置。暂未实现。[PayloadHandler]#处理请求配置[RequestHandler]#自定义请求头。默认配置空。其他配置:e.g:test1=test1,test2=test2#conf.request_headers = "test1=test1,test2=test2"conf.request_headers = ""#自定义请求User-Agent。默认配置chrome的ua。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"#自定义请求cookie。默认配置空,不设置cookie。其他配置e.g:cookie1=cookie1; cookie2=cookie2;#conf.request_header_cookie = "cookie1=cookie1; cookie2=cookie2"conf.request_header_cookie = ""#自定义401认证。暂未实现。因为自定义请求头功能可满足该需求(懒XD)conf.request_header_401_auth = ""#自定义请求方法。默认配置get方法。其他配置:e.g:get;head#conf.request_method = "head"conf.request_method = "get"#自定义每个请求超时时间。默认配置3秒。conf.request_timeout = 3#随机延迟(0-x)秒发送请求。参数必须是整数。默认配置0秒,无延迟。conf.request_delay = 0#自定义单个目标,请求协程线程数。默认配置30线程conf.request_limit = 30#自定义最大重试次数。暂未实现。conf.request_max_retries = 1#设置持久连接。是否使用session()。暂未实现。conf.request_persistent_connect = 0#302重定向。默认False,不重定向。其他配置:e.g:True;Falseconf.redirection_302 = False#payload后添加后缀。默认空,扫描时,不添加后缀。其他配置:e.g:txt;php;asp;jsp#conf.file_extension = "txt"conf.file_extension = ""#处理响应配置[ResponseHandler]#设置要记录的响应状态。默认配置[200],记录200状态码。其他配置:e.g:[200,403,301]#conf.response_status_code = [200,403,301]conf.response_status_code = [200]#是否记录content-type响应头。默认配置1记录#conf.response_header_content_type = 0conf.response_header_content_type = 1#是否记录页面大小。默认配置1记录#conf.response_size = 0conf.response_size = 1#自定义匹配404页面正则#conf.custom_404_page = "fake 404"conf.custom_404_page = ""#自定义匹配503页面正则。暂未实现。感觉用不着,可能要废弃。#conf.custom_503_page = "page 503"conf.custom_503_page = ""#自定义正则表达式,匹配页面内容#conf.custom_response_page = "([0-9]){3}([a-z]){3}test"conf.custom_response_page = ""#跳过显示页面大小为x的页面,若不设置,请配置成"None",默认配置“None”。其他大小配置参考e.g:None;0b;1k;1m#conf.skip_size = "0b"conf.skip_size = "None"#代理选项[ProxyHandler]#代理配置。默认设置“None”,不开启代理。其他配置e.g:{"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}#conf.proxy_server = {"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}conf.proxy_server = None#Debug选项[DebugMode]#打印payloads并退出conf.debug = 0#update选项[CheckUpdate]#github获取更新。暂未实现。conf.update = 0

Q:我倒,配置文件这么多,终于看完了,可是我还想了解下默认的字典,还有怎么添加自己的字典?

A:哦呼,这里有默认字典文件介绍。还有添加自定义字典,需要将你的字典放入data文件夹,并修改dirmap.conf就可以使用了。

默认字典文件

字典文件存放在项目根目录中的data文件夹中:

dictmodedict.txt “字典模式”字典,使用dirsearch默认字典;

crawlmodesuffix.txt “爬虫模式”字典,使用FileSensor默认字典;

fuzzmodedir.txt “fuzz模式”字典,使用DirBuster默认字典;

fuzzmodeext.txt “fuzz模式”字典,使用常见后缀制作的字典;

dictmult该目录为“字典模式”默认多字典文件夹,包含:BAK.min.txt(备份文件小字典),BAK.txt(备份文件大字典),LEAKS.txt(信息泄露文件字典);

fuzzmult该目录为“fuzz模式”默认多字典文件夹,包含:fuzzmodedir.txt(默认目录字典),fuzzmodeext.txt(默认后缀字典)。

Q:哇哦~

A:hhh,怎么啦?还有其他问题吗?

Q:嘻嘻,Dirmap看来是有点像小车车啦,话说完成这个项目,你参考了多少个轮子呀?

A:有很多很多,大多数都是gayhub上找到的项目,这里对这些项目贡献者表示感谢~!

致谢声明

dirmap在编写过程中,借鉴了大量的优秀开源项目的模式与思想,特此说明并表示感谢。

Sqlmap(架构参考)

POC-T(架构参考)

Saucerframe(架构参考)

gwhatweb(并发参考)

dirsearch(递归扫描实现参考)

cansina(解析header参考)

weakfilescan(爬虫动态字典模式参考)

FileSensor(爬虫动态字典模式参考)

BBscan(并发参考)

werdy(纯爆破模式参考)

还有很多开源的小脚本(字典模式参考)

还有很多的互联网文献资料(debug参考)

*本文作者:H4ckForJob,转载请注明来自FreeBuf.COM

推荐阅读

web目录字典_Dirmap:一款高级Web目录文件扫描工具相关推荐

  1. Dirmap:一款高级Web目录文件扫描工具

    前言 本人是一名立志安全开发的大学生,有一年安全测试经验,有时在刷src的时候,需要检查所有target的web业务系统是否泄露敏感目录.文件,工作量十分庞大,于是Dirmap诞生了~ 知名的web目 ...

  2. web目录文件扫描工具 dirmap 简介

    知名的web目录文件扫描工具有很多,如:御剑1.5.DirBuster.Dirsearch.cansina. 其他开源的各种轮子,更是数不胜数. 这次我们不造轮子,我们需要造的是一辆车!open so ...

  3. web目录字典_dirmap 一个高级web目录、文件扫描工具

    Dirmap 一个高级web目录扫描工具,功能将会强于DirBuster.Dirsearch.cansina.御剑 需求分析 经过大量调研,总结一个优秀的web目录扫描工具至少具备以下功能:   并发 ...

  4. Mip22:一款高级网络钓鱼安全测试工具

    关于Mip22 Mip22是一款功能强大的高级网络钓鱼安全测试工具,在该工具的帮助下,广大研究人员可以研究和测试组织内部抵御网络钓鱼攻击的能力和抗风险等级. 该工具出于安全研究和教育目的而开发,请在授 ...

  5. 2022渗透测试-3款最常用的漏洞扫描工具

    目录 1.nessus 2.AWVS 3.WPscan 1.nessus 1.Nessus软件是什么? 如图,我们可以从百度百科得知:Nessus 是全世界最多人使用的系统漏洞扫描与分析软件.总共有超 ...

  6. 10款最佳的Linux文件比较工具

    https://www.cnblogs.com/logsharing/p/7986825.html https://www.scootersoftware.com/download.php 1前言 程 ...

  7. 9款最佳的Linux文件比较工具

    程序员和撰稿人在编写程序文件或平常的文本文件时,有时想知道两个文件或同一文件的两个版本之间的差异.你在Linux上比较两个计算机文件时,文件内容之间的差异就叫diff.这一描述来源于提到diff的输出 ...

  8. 主流七款web服务器软件点评,7款主流WEB服务器软件.pdf

    如今互联网的 WEB平台种类繁多, 各种软硬件组合的 WEB系统更是数不胜数, 下面就来介绍 一下几种常用的 WEB服务器 : 1.Microsoft IIS Microsoft 的 Web服务器 产 ...

  9. 推荐一款免费的大文件传输工具

    从国内访问海外VPS主机,文件传输速度不太理想,经常是只有几十KB/秒的速度.今天给大家推荐一款免费文件传输软件 – 镭速FTP传输. 下载与安装: 镭速FTP传输软件下载:进入官方网站 www.ra ...

最新文章

  1. NIX***检测方法
  2. 火星浏览器_「超详细Filecoin矿工手册」IPFS的应用以及意义 | 火星号精选
  3. 042_JDK的Map接口
  4. python卷积神经网络cnn的训练算法_【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理...
  5. java dcl 失效解决_DCL失效原因和解决方案
  6. 【IDE插件】- XCode6代码注释之VVDocumenter
  7. php编写大型网站问题集
  8. c语言学习-判断一个年份是否闰年
  9. 对付镜像网站非常有效的办法
  10. 为什么要对1000000007取模
  11. χ² 分布到 F 分布到 ANOVA
  12. FreeType 使用FT_MEM_ALLOC/FT_FREE内存操作
  13. 第十五章、实现属性以访问字段
  14. 探索关系抽取中的多变知识
  15. 叮铃铃~: 一个Vue铃声/提示音组件
  16. PS学习总结一:入门版必备的基础功能
  17. 基于TCP的网络应用程序
  18. 服务器被腾讯云助手告警通知有木马文件
  19. 如何系统地学习 C++ 语言?太全面了
  20. 用区块链解决电子证据司法存证

热门文章

  1. [PATCH] UBUNTU: SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1(v3.4.x kernel)
  2. Java--随机数和随机数种子(转)
  3. 已知: 每个飞机只有一个油箱, 飞机之间可以相互加油(注意是相互,没有加油机) 一箱油可供一架飞机绕地球飞半圈,问题:为使至少一架飞机绕地球一圈回到起飞时的飞机...
  4. shell监控磁盘使用情况
  5. 史上最高效Shell四剑客实操案例
  6. Zabbix server is not running:the information displayed may not be current
  7. Mysql数据库中,大小写区分
  8. 会议之后,对应内容的再次确认
  9. 使用doc下的copy命令复制文件时,注意文件分割符
  10. 【PostgreSQL-9.6.3】表空间