cansina 目录_一个高级web目录扫描工具,功能将会强于DirBuster、Dirsearch、cansina、御剑。...
Dirmap
一个高级web目录扫描工具,功能将会强于DirBuster、Dirsearch、cansina、御剑
需求分析
经过大量调研,总结一个优秀的web目录扫描工具至少具备以下功能:
并发引擎
能使用字典
能纯爆破
能爬取页面动态生成字典
能fuzz扫描
自定义请求
自定义响应结果处理...
那么接下来看看Dirmap的特点吧
功能特点
支持n个target*n个payload并发
支持递归扫描
支持自定义需要递归扫描的状态码
支持(单|多)字典扫描
支持自定义字符集爆破
支持爬虫动态字典扫描
支持自定义标签fuzz目标url
自定义请求User-Agent
自定义请求随机延时
自定义请求超时时间
自定义请求代理
自定义正则表达式匹配假性404页面
自定义要处理的响应状态码
自定义跳过大小为x的页面
自定义显示content-type
自定义显示页面大小
按域名去重复保存结果
使用方法
环境准备
git clone https://github.com/H4ckForJob/dirmap.git && cd dirmap && python3 -m pip install -r requirement.txt
快速使用
输入目标
单目标,默认为http
python3 dirmap.py -i https://target.com -lcf
python3 dirmap.py -i 192.168.1.1 -lcf
子网(CIDR格式)
python3 dirmap.py -i 192.168.1.0/24 -lcf
网络范围
python3 dirmap.py -i 192.168.1.1-192.168.1.100 -lcf
文件读取
python3 dirmap.py -iF targets.txt -lcf
targets.txt中支持上述格式
结果保存
结果将自动保存在项目根目录下的output文件夹中
每一个目标生成一个txt,命名格式为目标域名.txt
结果自动去重复,不用担心产生大量冗余
高级使用
自定义dirmap配置,开始探索dirmap高级功能
暂时采用加载配置文件的方式进行详细配置,不支持使用命令行参数进行详细配置!
编辑项目根目录下的dirmap.conf,进行配置
dirmap.conf配置详解
#递归扫描处理配置
[RecursiveScan]
#是否开启递归扫描:关闭:0;开启:1
conf.recursive_scan = 0
#遇到这些状态码,开启递归扫描。默认配置[301,403]
conf.recursive_status_code = [301,403]
#URL超过这个长度就退出扫描
conf.recursive_scan_max_url_length = 60
#这些后缀名不递归扫
conf.recursive_blacklist_exts = ["html",'htm','shtml','png','jpg','webp','bmp','js','css','pdf','ini','mp3','mp4']
#设置排除扫描的目录。默认配置空。其他配置:e.g:['/test1','/test2']
#conf.exclude_subdirs = ['/test1','/test2']
conf.exclude_subdirs = ""
#扫描模式处理配置(4个模式,1次只能选择1个)
[ScanModeHandler]
#字典模式:关闭:0;单字典:1;多字典:2
conf.dict_mode = 1
#单字典模式的路径
conf.dict_mode_load_single_dict = "dict_mode_dict.txt"
#多字典模式的路径,默认配置dictmult
conf.dict_mode_load_mult_dict = "dictmult"
#爆破模式:关闭:0;开启:1
conf.blast_mode = 0
#生成字典最小长度。默认配置3
conf.blast_mode_min = 3
#生成字典最大长度。默认配置3
conf.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;开启:1
conf.crawl_mode = 0
#用于生成动态敏感文件payload的后缀字典
conf.crawl_mode_dynamic_fuzz_suffix = "crawl_mode_suffix.txt"
#解析robots.txt文件。暂未实现。
conf.crawl_mode_parse_robots = 0
#解析html页面的xpath表达式
conf.crawl_mode_parse_html = "//*/@href | //*/@src | //form/@action"
#是否进行动态爬虫字典生成。默认配置1,开启爬虫动态字典生成。其他配置:e.g:关闭:0;开启:1
conf.crawl_mode_dynamic_fuzz = 1
#Fuzz模式:关闭:0;单字典:1;多字典:2
conf.fuzz_mode = 0
#单字典模式的路径。
conf.fuzz_mode_load_single_dict = "fuzz_mode_dir.txt"
#多字典模式的路径。默认配置:fuzzmult
conf.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;False
conf.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 = 0
conf.response_header_content_type = 1
#是否记录页面大小。默认配置1记录
#conf.response_size = 0
conf.response_size = 1
#是否自动检测404页面。默认配置True,开启自动检测404.其他配置参考e.g:True;False
#conf.auto_check_404_page = False
conf.auto_check_404_page = True
#自定义匹配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
TODO
命令行参数解析全局初始化
engine初始化
设置线程数
target初始化
自动解析处理输入格式( -i,inputTarget)
IP
Domain
URL
IP/MASK
IP Start-End
文件读入(-iF,inputLocalFile)
bruter初始化
加载配置方式()
读取命令行参数值
读取配置文件(-lcf,loadConfigFile)
递归模式选项(RecursiveScan)
递归扫描(-rs,recursive_scan)
需要递归的状态码(-rd,recursive_status_code)
排除某些目录(-es,exclude_subdirs)
扫描模式选项(ScanModeHandler)
字典模式(-dm,dict_mode)
加载单个字典(-dmlsd,dict_mode_load_single_dict)
加载多个字典(-dmlmd,dict_mode_load_mult_dict)
爆破模式(-bm,blast_mode)
爆破目录长度范围(必选)
最小长度(-bmmin,blast_mode_min)
最大长度(-bmmax,blast_mode_max)
基于默认字符集
基于a-z
基于0-9
基于自定义字符集(-bmcc,blast_mode_custom_charset)
断点续生成payload(-bmrc,blast_mode_resume_charset)
爬虫模式(-cm,crawl_mode)
自定义解析标签(-cmph,crawl_mode_parse_html)(a:href,img:src,form:action,script:src,iframe:src,div:src,frame:src,embed:src)
解析robots.txt(-cmpr,crawl_mode_parse_robots)
爬虫类动态fuzz扫描(-cmdf,crawl_mode_dynamic_fuzz)
fuzz模式(-fm,fuzz_mode)
fuzz单个字典(-fmlsd,fuzz_mode_load_single_dict)
fuzz多个字典(-fmlmd,fuzz_mode_load_mult_dict)
fuzz标签(-fml,fuzz_mode_label)
请求优化选项(RequestHandler)
自定义请求超时(-rt,request_timeout)
自定义请求延时(-rd,request_delay)
限制单个目标主机协程数扫描(-rl,request_limit)
限制重试次数(-rmr,request_max_retries)
http持久连接(-rpc,request_persistent_connect)
自定义请求方法(-rm,request_method)(get、head)
302状态处理(-r3,redirection_302)(是否重定向)
自定义header
自定义其他header(-rh,request_headers)(解决需要401认证)
自定义ua(-rhua,request_header_ua)
自定义cookie(-rhc,request_header_cookie)
字典处理选项(PayloadHandler)
字典处理(payload修改-去斜杠)
字典处理(payload修改-首字符加斜杠)
字典处理(payload修改-单词首字母大写)
字典处理(payload修改-去扩展)
字典处理(payload修改-去除非字母数字)
响应结果处理模块(ResponseHandler)
跳过大小为x字节的文件(-ss,skip_size)
自动检测404页面(-ac4p,auto_check_404_page)
自定义503页面(-c5p,custom_503_page)
自定义正则匹配响应内容并进行某种操作
自定义正则匹配响应(-crp,custom_response_page)
某种操作(暂时未定义)
输出结果为自定义状态码(-rsc,response_status_code)
输出payload为完整路径(默认输出完成url)
输出结果展示content-type
自动去重复保存结果
状态处理模块(StatusHandler)
状态显示(等待开始、进行中、暂停中、异常、完成)
进度显示
状态控制(开始、暂停、继续、停止)
续扫模块(暂未配置)
断点续扫
选行续扫
日志记录模块(ScanLogHandler)
扫描日志
错误日志
代理模块(ProxyHandler)
单个代理(-ps,proxy_server)
代理池
调试模式选项(DebugMode)
debug(--debug)
检查更新选项(CheckUpdate)
update(--update)
默认字典文件
字典文件存放在项目根目录中的data文件夹中
dict_mode_dict.txt “字典模式”字典,使用dirsearch默认字典
crawl_mode_suffix.txt “爬虫模式”字典,使用FileSensor默认字典
fuzz_mode_dir.txt “fuzz模式”字典,使用DirBuster默认字典
fuzz_mode_ext.txt “fuzz模式”字典,使用常见后缀制作的字典
dictmult 该目录为“字典模式”默认多字典文件夹,包含:BAK.min.txt(备份文件小字典),BAK.txt(备份文件大字典),LEAKS.txt(信息泄露文件字典)
fuzzmult 该目录为“fuzz模式”默认多字典文件夹,包含:fuzz_mode_dir.txt(默认目录字典),fuzz_mode_ext.txt(默认后缀字典)
已知缺陷
“爬虫模式”只爬取了目标的当前页面,用于生成动态字典。项目将来会将“爬虫模块”与“生成动态字典功能”分离。
关于bruter.py第517行bar.log.start()出错。解决方案:请安装progressbar2。卸载progressbar。防止导入同名模块。感谢某位表哥提醒。
执行命令:
python3 -m pip uninstall progressbar
python3 -m pip install progressbar2
维护工作
若使用过程中出现问题,欢迎发issue
本项目正在维护,未来将会有新的功能加入,具体参照“TODO”列表,未打勾项
致谢声明
dirmap在编写过程中,借鉴了大量的优秀开源项目的模式与思想,特此说明并表示感谢。
联系作者
cansina 目录_一个高级web目录扫描工具,功能将会强于DirBuster、Dirsearch、cansina、御剑。...相关推荐
- web目录字典_dirmap 一个高级web目录、文件扫描工具
Dirmap 一个高级web目录扫描工具,功能将会强于DirBuster.Dirsearch.cansina.御剑 需求分析 经过大量调研,总结一个优秀的web目录扫描工具至少具备以下功能: 并发 ...
- 【安全工具】全!十大Web漏洞扫描工具
十大Web漏洞扫描工具 Acunetix Web Vulnerability Scanner[( 简称AwVS ) AwVS是一款知名的Web网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行 ...
- 2019年WEB漏洞扫描工具和软件前十名推荐
这些工具都有助于发现漏洞,从而最大限度地提高测试人员的时间和效率.这些工具,2019年更新,也可用于寻找漏洞. 为何扫描? 这资源是什么? Web应用程序对黑客具有极大的吸引力,并且出于百万种不同的原 ...
- Web漏洞扫描工具(批量脱壳、反序列化、CMS)
一.什么是Web漏洞扫描工具 即是指"扫描Web应用以查找安全漏洞(如跨站脚本,SQL注入,命令执行,目录遍历和不安全服务器配置)的自动化工具",其中许多可能是由不安全或不正确的编 ...
- 十大web安全扫描工具
本文来源:绿盟整理 <十大web安全扫描工具> 十大web安全扫描工具 扫描程序可以在帮助造我们造就安全的Web 站点上助一臂之力,也就是说在黑客"黑"你之前, 先测 ...
- Web 漏洞扫描工具 AppScan 和 AWVS 使用方式
Web 漏洞扫描工具 AppScan 和 AWVS 使用方式 文章目录 Web 漏洞扫描工具 AppScan 和 AWVS 使用方式 0x01 AppScan 基本操作 1.AppScan 简介 1. ...
- Sitadel :Web安全扫描工具
Sitadel Web安全扫描工具基本上是WAScan的更新,使其与python兼容,它为您提供了更大的灵活性,使您可以编写新模块并实现新功能: 前端框架检测 内容交付网络检测 定义风险级别以允许进行 ...
- python 漏洞扫描_Python脚本实现Web漏洞扫描工具
这是去年毕设做的一个Web漏洞扫描小工具,主要针对简单的SQL注入漏洞.SQL盲注和XSS漏洞,代码是看过github外国大神(听说是SMAP的编写者之一)的两个小工具源码,根据里面的思路自己写的.以 ...
- win10下web漏洞扫描工具:AWVS安装教程
01 AWVS安装 windows上安装其实很简单,以安装AWVS12版本为例子,具体步骤如下: 01 双击exe安装: 02 点击"Next": 03 选择我同意: 04 设置用 ...
最新文章
- JavaScript 运行机制详解:Event Loop——续
- 前牙正常覆盖是多少_个性化舌侧矫治器的前牙转矩控制技巧——赵志河教授
- 在android上面让TextView 过多的文字实现有滚动条 scrollview
- 使用 Sphinx 撰写技术文档并生成 PDF 总结
- 氧气中国·创业创新大赛企业服务专场
- 22.jsp动作元素
- arm linux 存储,linux arm的存储分布那些事
- HashMap死锁原因及替代方案
- java 注解(annotation)基础学习
- 2013数学建模B题
- 机器学习(4)——弱监督学习
- 计算机软件研究方法与技术路线,项目的研究方法与技术路线
- java不想被gc,Java GC 必知必会
- 研发管理02----嵌入式硬件设计流程之完善
- ARCGIS:软断裂线、硬断裂线、断层等名词和ARCGIS 如何操作
- 算力狂热时代的冷静之道:宁畅总裁秦晓宁分享企业的算力最优解
- OpenCv笔记(五)--图像分割与分水岭算法
- 字符编码简介:ASCII,Unicode,UTF-8,GB2312及Unicode和UTF-8如何转化
- 3DGIS第四章 视点相关的实时选择性细化
- 易微联vs602m蓝牙双模说明引脚定义
热门文章
- php 通过 curl 进行GET/POST(包含鉴权)请求
- 传统集卡变成无人驾驶,需要做出哪些改变
- FIF小组ASP互动教程作业答案
- R语言dplyr包summarise_all函数计算dataframe数据中指定因子变量的水平的个数(levels)以及缺失值的个数(missing values)
- 系统服务器无法理解您的搜索词.,关于360浏览器记录用户的百度搜索记录、常搜词问题2...
- “电子身份证”引发网游产业“新革命”
- 【Axure视频教程】固定中继器表格首尾列
- swagger使用详解
- LTE(4G) RRC消息流程
- vim之vundle