Dirsearch 工具的安装、使用详细教程

news/2024/9/17 18:56:57/ 标签: 安全性测试, web安全, 网络安全

Dirsearch 工具的安装、使用详细教程

  • Dirsearch简介
  • 安装步骤
  • 语法及参数
  • 常见Payload
  • 渗透实例
  • 总结
Dirsearch简介

Dirsearch 是一个用于探测Web服务器上的隐藏目录和文件的工具。它通过发送HTTP请求来尝试访问可能存在的路径,从而找到不列在网站目录页面上的隐藏资源。

Dirsearch 的主要特点包括:

1.多线程:Dirsearch 采用多线程方式进行目录扫描,充分利用系统资源提高扫描效率。
2.字典支持:它支持使用自定义字典文件来进行目录爆破,你可以使用自己的字典文件或使用内置的常用字典。(注:字典必须是文本文件)
3.支持多种形式的网页(asp,php)
4.支持HTTP代理
5.启发式检测无效的网页
6.指定扩展名:你可以选择限制扫描的文件扩展名范围,以便更加精确地进行目录扫描。
7.进度追踪:Dirsearch 提供实时进度追踪,你可以看到当前扫描的进度和已发现的目录和文件。
8.结果输出:完成扫描后,Dirsearch 会生成详细的扫描报告(纯文本,JSON),展示已发现的隐藏目录和文件。


安装步骤

由于dirsearch是基于python3的,所以需保证本机含有python3环境。

python3环境读者可自行安装配置,本文不再赘述。

注意,当同时存在python3和python2时,要将两者的exe文件重命名为下图:

图片-20230202192656524
python3改为python.exe,python2改为python2.exe即可。

dirsearch下载地址: https://github.com/maurosoria/dirsearch

在这里插入图片描述

将zip包解压后放入python3的Dirsearch目录中

在这里插入图片描述

接着进入 C:\Python3\Dirsearch\dirsearch-master目录中,输入cmd:

在这里插入图片描述

在这里插入图片描述

进入命令行后,输入 PIP3 install DirSearch

图片-20230202202048236

下载失败,但我们看一下警告:

图片-20230202203507481

这个警告表示当前使用的 pip 版本为 21.2.4,但是还有更新的版本可用(版本号为 23.0),建议通过命令 C:\Python3\python.exe -m pip install --upgrade pip 来升级 pip。

于是我们输入 C:\Python3\python.exe -m pip install --upgrade pip

图片-20230202203603213

但还是下载失败,原因是依赖项未升级。

因此我们输入 pip install --upgrade -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

该命令会根据 requirements.txt 文件中列出的依赖项,自动安装或升级所需的包,并使用指定的阿里云镜像源来获取依赖项的安装文件。

图片-20230202205437734
下载成功:

图片-20230202205857415

现在,就可以开始正常使用dirsearch了。

接下来将介绍dirsearch的使用方法。

注意:dirsearch的命令必须在C:\Python3\Dirsearch\dirsearch-master目录下运行


语法及参数

输入 python dirsearch.py -h得到dirsearch帮助

翻译如下:
用法:dirsearch.py [-u|--url] 目标 [-e|--extensions] 扩展名 [选项]

选项:
–version 显示程序的版本号并退出
-h, --help 显示此帮助消息并退出

必需:
-u URL, --url=URL 目标URL,可以使用多个选项指定多个目标URL
-l PATH, --urls-file=PATH
URL列表文件
–stdin 从标准输入读取URL
–cidr=CIDR 目标CIDR
–raw=PATH 从文件加载原始HTTP请求(使用’–scheme’标志设置方案)
-s SESSION_FILE, --session=SESSION_FILE
会话文件
–config=PATH 配置文件路径(默认为’DIRSEARCH_CONFIG’环境变量,否则为’config.ini’)

字典设置:
-w WORDLISTS, --wordlists=WORDLISTS
单词列表文件或包含单词列表文件的目录(以逗号分隔)
-e EXTENSIONS, --extensions=EXTENSIONS
扩展名列表,以逗号分隔(例如:php,asp)
-f, --force-extensions
在每个单词列表条目的末尾添加扩展名。默认情况下,dirsearch只替换%EXT%关键字为扩展名。
-O, --overwrite-extensions
使用指定的扩展名覆盖单词列表中的其他扩展名(通过’-e’选择)
–exclude-extensions=EXTENSIONS
排除的扩展名列表,以逗号分隔(例如:asp,jsp)
–remove-extensions 删除所有路径中的扩展名(例如:admin.php -> admin)
–prefixes=PREFIXES 将自定义前缀添加到所有单词列表条目中(以逗号分隔)
–suffixes=SUFFIXES 将自定义后缀添加到所有单词列表条目中,忽略目录(以逗号分隔)
-U, --uppercase 单词列表转为大写
-L, --lowercase 单词列表转为小写
-C, --capital 单词首字母大写

通用设置:
-t THREADS, --threads=THREADS
线程数
-r, --recursive 递归地进行强制破解
–deep-recursive 在每个目录深度上执行递归扫描(例如:api/users -> api/)
–force-recursive 对找到的每个路径执行递归强制破解,而不仅仅是目录
-R DEPTH, --max-recursion-depth=DEPTH
最大递归深度
–recursion-status=CODES
用于执行递归扫描的有效状态码,支持范围(以逗号分隔)
–subdirs=SUBDIRS 扫描给定URL的子目录(以逗号分隔)
–exclude-subdirs=SUBDIRS
在递归扫描期间排除以下子目录(以逗号分隔)
-i CODES, --include-status=CODES
包括的状态码,以逗号分隔,支持范围(例如:200,300-399)
-x CODES, --exclude-status=CODES
排除的状态码,以逗号分隔,支持范围(例如:301,500-599)
–exclude-sizes=SIZES
根据大小排除响应,以逗号分隔(例如:0B,4KB)
–exclude-text=TEXTS 根据文本排除响应,可以使用多个标志
–exclude-regex=REGEX
根据正则表达式排除响应
–exclude-redirect=STRING
如果此正则表达式(或文本)与重定向URL匹配,则排除响应(例如:‘/index.html’)
–exclude-response=PATH
排除类似于此页面响应的响应,路径作为输入(例如:404.html)
–skip-on-status=CODES
每当命中这些状态码之一时跳过目标,以逗号分隔,支持范围
–min-response-size=LENGTH
响应的最小长度
–max-response-size=LENGTH
响应的最大长度
–max-time=SECONDS 扫描的最大运行时间
–exit-on-error 发生错误时退出

请求设置:
-m METHOD, --http-method=METHOD
HTTP请求方法(默认为GET)
-d DATA, --data=DATA HTTP请求数据
–data-file=PATH 包含HTTP请求数据的文件
-H HEADERS, --header=HEADERS
HTTP请求标头,可以使用多个标志
–headers-file=PATH 包含HTTP请求标头的文件
-F, --follow-redirects
跟随HTTP重定向
–random-agent 每个请求选择一个随机User-Agent
–auth=CREDENTIAL 认证凭据(例如:user:password或bearer token)
–auth-type=TYPE 认证类型(basic、digest、bearer、ntlm、jwt)
–cert-file=PATH 包含客户端证书的文件
–key-file=PATH 包含客户端证书私钥的文件(未加密)
–user-agent=USER_AGENT
–cookie=COOKIE

连接设置:
–timeout=TIMEOUT 连接超时时间
–delay=DELAY 请求之间的延迟
-p PROXY, --proxy=PROXY
代理URL(HTTP/SOCKS),可以使用多个标志
–proxies-file=PATH 包含代理服务器的文件
–proxy-auth=CREDENTIAL
代理认证凭据
–replay-proxy=PROXY 用于重放已发现路径的代理
–tor 使用Tor网络作为代理
–scheme=SCHEME 原始请求的协议或URL中没有协议时使用的协议(默认为自动检测)
–max-rate=RATE 每秒请求数最大值
–retries=RETRIES 失败请求的重试次数
–ip=IP 服务器IP地址

高级设置:
–crawl 在响应中爬取新路径

显示设置:
–full-url 在输出中显示完整URL(在静默模式下自动启用)
–redirects-history 显示重定向历史记录
–no-color 不使用彩色输出
-q, --quiet-mode 安静模式

输出设置:
-o PATH/URL, --output=PATH/URL
输出文件或MySQL/PostgreSQL数据库URL(格式:
scheme://[username:password@]host[:port]/database-
name)
–format=FORMAT 报告格式(可用:simple、plain、json、xml、md、csv、html、
sqlite、mysql、postgresql)
–log=PATH 日志文件

常见Payload

1.扫描单个URL,并限制线程数和扩展名:

python dirsearch.py -u http://example.com -t 10 -e php,asp --exclude-extensions=html
  • 1
  • 2

该命令将对 http://example.com 进行目录扫描,使用最多 10 个线程并仅检查扩展名为 phpasp 的路径,同时排除扩展名为 html 的路径。

2.从URL列表文件中批量扫描:

python dirsearch.py -l urls.txt -t 5 -e php
  • 1
  • 2

该命令将从 urls.txt 文件中读取目标URL列表,并使用最多 5 个线程对每个URL进行目录扫描,仅检查扩展名为 php 的路径。

3.使用自定义字典和深度递归扫描:

python dirsearch.py -u http://example.com -w custom-wordlist.txt -r --deep-recursive
  • 1
  • 2

该命令将对 http://example.com 进行目录扫描,使用自定义的单词列表文件 custom-wordlist.txt,并启用深度递归扫描,即在每个目录的所有深度上执行递归扫描。

4.在请求中使用自定义HTTP头:

python dirsearch.py -u http://example.com -H "X-Custom-Header: Value" -H "Authorization: Bearer token"
  • 1
  • 2

该命令将对 http://example.com 进行目录扫描,并在每个请求中包含自定义的HTTP头,如 X-Custom-HeaderAuthorization

5.指定线程数和延迟时间:

python dirsearch.py -u http://example.com -t 20 --delay 0.5
  • 1
  • 2

上述命令将使用20个线程并设置每个请求之间的延迟为0.5秒。

6.使用自定义的请求头和超时时间:

python dirsearch.py -u http://example.com -H "Custom-Header: value" --timeout 10
  • 1
  • 2

这个命令将在每个请求中添加一个自定义的请求头 “Custom-Header: value”,并将超时时间设置为10秒。

7.包含和排除特定状态码:

python dirsearch.py -u http://example.com -i 200,302 -x 404,500
  • 1
  • 2

上述命令将只包含状态码为200和302的响应,并排除状态码为404和500的响应。

8.使用代理进行扫描:

python dirsearch.py -u http://example.com -p http://127.0.0.1:8080
  • 1
  • 2

这个命令将通过指定的HTTP代理(例如Burp Suite)对目标URL进行扫描。

9.保存输出到文件中:

python dirsearch.py -u http://example.com -o output.txt
  • 1
  • 2

上述命令将扫描结果输出到指定的文件 output.txt

10.使用代理链进行扫描:

python dirsearch.py -u http://example.com -p http://proxy1:8080 -p http://proxy2:8080
  • 1
  • 2

上述命令将通过两个代理服务器 proxy1proxy2 进行目标URL的扫描。

11.从标准输入读取URL:

cat urls.txt | python dirsearch.py --stdin -t 10
  • 1
  • 2

这个命令通过管道从 urls.txt 中读取URL,并使用最多 10 个线程对每个URL进行目录扫描。

12.启用递归扫描和重定向跟随:

python dirsearch.py -u http://example.com -r -F
  • 1
  • 2

上述命令将启用目录的递归扫描,并且在扫描时跟随HTTP重定向。

13.排除指定大小范围的响应:

python dirsearch.py -u http://example.com --exclude-sizes 0-100B,500KB-1MB
  • 1
  • 2

该命令将排除大小在 0 到 100 字节以及 500千字节到 1 兆字节范围内的响应。

14.设定最大运行时间和最大重试次数:

python dirsearch.py -u http://example.com --max-time 300 --retries 5
  • 1
  • 2

上述命令将设置最长运行时间为 300 秒,并允许失败请求最多重试 5 次。

15.指定自定义的User-Agent头:

python dirsearch.py -u http://example.com --user-agent "Custom User Agent"
  • 1
  • 2

上述命令将在HTTP请求中指定自定义的User-Agent头。

16.使用代理认证进行扫描:

python dirsearch.py -u http://example.com -p http://proxy.example.com --proxy-auth "username:password"
  • 1
  • 2

这个命令将使用指定的代理服务器 proxy.example.com 进行扫描,并提供代理认证的用户名和密码。

17.启用递归扫描并限制最大递归深度:

python dirsearch.py -u http://example.com -r -R 5
  • 1
  • 2

上述命令将启用递归目录扫描,并限制最大递归深度为5层。

18.排除特定文本出现的响应:

python dirsearch.py -u http://example.com --exclude-text "Not Found" --exclude-text "Error"
  • 1
  • 2

该命令将排除响应中包含指定文本(如 “Not Found” 和 “Error”)的路径。

19.设置最小和最大响应长度:

python dirsearch.py -u http://example.com --min-response-size 1000 --max-response-size 50000
  • 1
  • 2

上述命令将只包含响应长度在1000到50000字节之间的路径。


渗透实例

Dirsearch具体实战可参考CTF赛题: 极客大挑战PHP解题详析 【Dirsearch使用实例+php反序列化】

本文举个简单的渗透例子:

在C:\Python3\Dirsearch\dirsearch-master路径下输入 python dirsearch.py -u http://101.43.57.52:41080/ (某题目地址)

得到如下结果:

图片-20230202212317473

成功发现该网站目录页面上的隐藏资源,之后进行访问等操作即可实现命令执行等。


总结

以上为Dirsearch 工具的安装、使用详细教程,读者可结合官方文档躬身实践。

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


http://www.ppmy.cn/news/1507070.html

相关文章

河工院首届工业设计大赛程序组(挑战赛)题解

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 寻找ACMer 思想&#xff1a; 签到题按照题意遍历字符串&#xff0c;不断向后寻找包含 ACMer 完整字符串的数量即可 std标程&#xff1a; #include <iostream> #include <cstring> #include …

人工智能时代,程序员如何保持核心竞争力?

人工智能时代&#xff0c;程序员如何保持核心竞争力&#xff1f; 在人工智能的浪潮中&#xff0c;程序员的角色和工作方式正在经历前所未有的变革。AIGC技术的兴起&#xff0c;如ChatGPT、Midjourney、Claude等&#xff0c;预示着AI辅助编程工具的日益普及。面对这一趋势&…

海量日志数据收集监控平台应该怎么设计和实现

设计和实现一个海量日志数据收集和监控平台&#xff0c;需要考虑以下几个关键方面&#xff1a;数据采集、数据存储、实时处理、监控与告警、可视化分析、扩展性和高可用性。以下是一个详细的设计和实现方案&#xff1a; 1. 需求分析 日志来源&#xff1a;明确日志的来源&…

图谱驱动的智能:如何用Django实现GraphRAG的高效检索

前言 前面一章讲述了构建知识图谱来提高基于 RAG 的应用程序的准确性,并且使用 Neo4j 和 LangChain 在 RAG 应用程序中构建和检索知识图谱信息。 图形检索增强生成 (Graph RAG) 这种方法利用图形数据库的结构化特性,将数据组织为节点和关系,以增强检索信息的深度和上下文性…

HDFS写入数据的流程图

1.客户端向namenode发送请求&#xff0c;请示写入数据 2.namenode接受请求后&#xff0c;判断这个用户是否有写入权限&#xff0c;如果不具备直接报错&#xff1b;如果有写入权限&#xff0c;接着判断在要写入的目录下是否已经存在这个文件&#xff0c;如果存在&#xff0c;直…

Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式

目录 摘要目的安装和卸载特别说明 Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式 摘要 Ubuntu版本&#xff1a;ubuntu24.04 主题下载地址&#xff1a;https://github.com/vinceliuice/WhiteSur-gtk-theme 参考的安装教程&#xff1a;https://blog.51cto.com/u_…

Mybatis的详细讲解

1.前情提要 1.1三层架构 &#xff08;1&#xff09;表现层 Controller 表现层是表示的事数据的接受&#xff0c;参数的校验&#xff0c;参数的转换&#xff0c;结果的转换&#xff0c;结果的返回 &#xff08;2&#xff09;业务逻辑层 Service 介于表现层和业务逻辑层之…

使用Cisco软件进行模拟万维网配置访问服务器过程

万维网(www)实验 文章目录 万维网(www)实验1.实验目的2.实验流程3.实验步骤 1.实验目的 1&#xff09;理解www站点 2&#xff09;理解上层应用和下层通信网络的关系 2.实验流程 开始 → 布置拓扑 → 配置路由及IP地址 → 配置web服务器→ 访问服务器 →结束 3.实验步骤 1&…

Vercel Error: (Azure) OpenAI API key not found

题意&#xff1a;Vercel 错误&#xff1a;(Azure) OpenAI API 密钥未找到 问题背景&#xff1a; I implemented openAI API in my Next.js app with the help of langchain library and it works superb on localhost, but in Vercel (ProVersion) it throws an error: 我使用…

js函数的arguments 对象

arguments对象是函数中传递的参数值的集合。 它是⼀个类似数组的对象&#xff0c;因为它有⼀个length属性&#xff0c; 我们可以使⽤数组索引表示法arguments[1]来访问单个值&#xff0c;但它没有数组中的内置⽅法&#xff0c; 如&#xff1a;forEach、reduce、filter和map。 …

AI的IDE:Cursor配置虚拟python环境(conda)

AI的IDE&#xff1a;Cursor配置虚拟python环境&#xff08;conda&#xff09; Cursor是一个AI的IDE&#xff0c;是从VSCode源代码中fork出来的&#xff0c;专注于和AI一起Coding而生。https://www.cursor.com/是官方地址。最近开始逐渐的试用Cursor&#xff0c;之前一直是VSCod…

机器学习之随机森林

文章目录 1. 随机森林概述1.1 定义与起源1.2 与其他算法的比较 2. 随机森林的工作原理2.1 决策树基础2.2 Bagging机制2.3 随机性的引入 3. 随机森林的构建过程3.1 数据准备3.2 特征选择3.3 多棵树的集成 4. 随机森林的优缺点分析4.1 优势4.2 局限性 5. 随机森林的应用场景5.1 分…

Kali Linux——网络安全的瑞士军刀

一、引言 在网络安全的领域中&#xff0c;Kali Linux 宛如一把强大而全能的瑞士军刀&#xff0c;为安全研究人员和专业人士提供了丰富的工具和资源。本文将深入探讨 Kali Linux 的特点、优势、常用工具以及实际应用场景&#xff0c;带您领略这一强大操作系统的魅力。 二、Kal…

OpenCV||超详细的图像金字塔

图像金字塔是一种图像的多尺度表示方法&#xff0c;它通过对原始图像进行一系列的处理&#xff0c;生成一系列分辨率逐渐降低的图像集合。这些图像按照分辨率从高到低&#xff08;或从低到高&#xff09;的顺序排列&#xff0c;形成类似金字塔的结构&#xff0c;因此得名图像金…

Basic‘ attribute type should not be a container解决方法

在使用Spring Data JPA的时候&#xff0c;实体类中定义一个用List修饰的成员ip&#xff0c;IDEA会提示Basic‘ attribute type should not be a container错误&#xff0c;导致编译不通过。 查阅一些博客和文档说是Spring Data JPA这个框架会把实体类的属性当做是MySQL数据库中…

深入理解Transformer技术原理

一、什么是注意力机制 在深入了解Transformer的架构原理之前&#xff0c;我们首先要了解下&#xff0c;什么是注意力机制。人类的大脑对于信息的获取也存在注意力机制&#xff0c;下面我举几个简单的例子&#xff1a;从上面的图片中&#xff0c;我们可能更容易关注&#xff0c…

【Next】全局样式和局部样式

不同于 nuxt &#xff0c;next 的样式绝大部分都需要手动导入。 全局样式 使用 sass 先安装 npm i sass -D 。 我们可以定义一个 styles 文件&#xff0c;存放全局样式。 variables.scss $fs30: 30px;mixin border() {border: 1px solid red; }main.scss use ./variables …

APP UI自动化测试框架有哪些

UI&#xff08;用户界面&#xff09;自动化测试是软件测试中的一种重要方式&#xff0c;它可以帮助验证应用程序的图形用户界面是否按照预期工作。对于移动应用&#xff08;如iOS和Android应用&#xff09;&#xff0c;有多种自动化测试框架可以选择&#xff0c;它们各有特色&a…

Python爬虫(8)

JsonPath介绍使用 JsonPath是一种轻量级的查询库&#xff0c;可以从JSON文本数据中进行筛选和提取操作。有点类似于使用XPath在HTML数据中提取数据的功能。JsonPath 也可以通过使用类似于 XPath 的表达式来访问 JSON对象中的属性和元素&#xff0c;并支持通配符、筛选器和函数…

NET8环境WebAPI实现文件的压缩及下载

目录 1、文件下载的原理2、具体实现2.1 提前准备2.2 服务器端的实现2.3 请求端的实现 3、代码下载4、更多特性4.1 单独压缩文件4.2 解析4.2.1 整体解析4.2.2 单个文件解析 4.3 其他4.3.1 设置压缩级别4.3.2 密码保护4.3.3 进度反馈 5、参考资料 1、文件下载的原理 在实际应用环…