Gobuster与Nmap结合使用的目标发现方法
引言 在这个实验里,你会接触到一套非常实用的目标发现方法:把 Nmap 和 Gobuster 结合起来使用。前者是功能很全面的网络扫描工具,主要用来发现网络中的主机和服务;后者则更擅长对 URI(目录和文件)以及 DNS 子域名进行暴力枚举。两者配合后,就可以把识别指定网段中潜在 Web 服务器的过
引言
在这个实验里,你会接触到一套非常实用的目标发现方法:把 Nmap 和 Gobuster 结合起来使用。前者是功能很全面的网络扫描工具,主要用来发现网络中的主机和服务;后者则更擅长对 URI(目录和文件)以及 DNS 子域名进行暴力枚举。两者配合后,就可以把识别指定网段中潜在 Web 服务器的过程自动化,再进一步系统地挖掘这些服务器上隐藏的目录和文件。这样做的价值很直接:侦察能力会更强,发现过程也会更高效、更完整。
使用 Nmap 扫描网络范围内的开放 Web 端口(80, 443)
这一步要做的事情很明确:使用 Nmap 扫描本地网络范围,找出哪些主机开放了常见的 Web 端口,也就是 80(HTTP)和 443(HTTPS)。这其实就是识别潜在 Web 服务器的第一步。这里将扫描 `172.17.0.0/24` 这个网络范围,它通常是 Docker 用于内部网络的地址段。
开始之前,先确认 Nmap 已经安装好。在 LabEx VM 里,它通常是预装的。
```bash
nmap --version
```
如果安装正常,你会看到类似下面的输出:
```plaintext
Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with:
```iblua-5.3.3 openssl-1.1.1f libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6nCompiled without:nA vailable nsock engines: epoll poll selectn```nn现在,执行 Nmap 扫描。我们将使用 `-p` 标志指定端口 80 和 443,并使用 `-oG` 以 Grepable 格式输出结果,这种格式更易于解析。nn```bashnnmap -p 80,443 -oG nmap_web_scan.txt 172.17.0.0/24n```nn此命令将扫描指定的网络范围,查找开放了端口 80 或 443 的主机,并将输出保存到 `nmap_web_scan.txt`。扫描可能需要几分钟才能完成。nn扫描完成后,你可以查看输出文件的内容:nn```bashncat nmap_web_scan.txtn```nn你将看到指示已发现主机及其开放端口的行。例如:nn```plaintextn## Nmap 7.80 scan initiated Mon Jan 1 00:00:00 2024 as: nmap -p 80,443 -oG nmap_web_scan.txt 172.17.0.0/24nHost: 172.17.0.2 ()tPorts: 80/open/tcp//http///, 443/open/tcp//https///nHost: 172.17.0.3 ()tPorts: 80/open/tcp//http///n## Nmap done at Mon Jan 1 00:00:00 2024 -- 256 IP addresses (2 hosts up) scanned in 5.00 secondsn```n","need_verify":true,"has_solution":false},{"position":2,"title":"解析 Nmap 输出以创建 Web 服务器 URL 列表","layout":"doc-workbench-split","text":"## 解析 Nmap 输出以创建 Web 服务器 URL 列表nn在此步骤中,你将解析 `nmap_web_scan.txt` 文件,提取具有开放 Web 端口的主机的 IP 地址,并将它们格式化为 URL 列表。此列表随后将用作 Gobuster 的输入。nn我们将使用 `grep` 和 `awk` 来处理 `nmap_web_scan.txt` 文件。目标是提取包含“open”端口 80 或 443 的行,然后提取 IP 地址,最后构建 URL(例如 `https://172.17.0.2` 或 `https://172.17.0.2`)。nn执行以下命令来解析 Nmap 输出并创建 `web_servers.txt`:nn```bashngrep "open" nmap_web_scan.txt | awk '/80\/open/ {print "https://" $2} /443\/open/ {print "https://" $2}' | sort -u > web_servers.txtn```nn让我们分解一下这个命令:nn- `grep "open" nmap_web_scan.txt`: 从 `nmap_web_scan.txt` 中过滤包含单词“open”的行,这表示一个开放的端口。n- `awk '/80\/open/ {print "https://" $2} /443\/open/ {print "https://" $2}'`: 处理过滤后的行。n - `/80\/open/ {print "https://" $2}`: 如果一行包含“80/open”,则打印“https://”后跟第二个字段(`$2`),即 IP 地址。n - `/443\/open/ {print "https://" $2}`: 如果一行包含“443/open”,则打印“https://”后跟第二个字段(`$2`),即 IP 地址。n - 注意:一个主机可能同时开放 80 和 443 端口,这将为同一个 IP 生成两个 URL。n- `sort -u`: 对 URL 进行排序并删除任何重复的条目。n- `> web_servers.txt`: 将最终输出重定向到一个名为 `web_servers.txt` 的新文件中。nn现在,查看 `web_servers.txt` 文件的内容:nn```bashncat web_servers.txtn```nn你应该会看到一个 URL 列表,每行一个,类似如下:nn```plaintextnhttps://172.17.0.2nhttps://172.17.0.2nhttps://172.17.0.3n```nn此文件现在包含了我们 Gobuster 扫描的目标。n","need_verify":true,"has_solution":false},{"position":3,"title":"编写一个简单的 Bash 脚本来循环遍历 URL 列表","layout":"doc-workbench-split","text":"## 编写一个简单的 Bash 脚本来循环遍历 URL 列表nn在此步骤中,你将创建一个 Bash 脚本,该脚本将读取 `web_servers.txt` 中的每个 URL,并为 Gobuster 扫描做准备。此脚本将作为我们结合 Nmap 和 Gobuster 工作流的自动化骨干。nn首先,让我们使用 `nano` 创建一个名为 `gobust_scan.sh` 的新脚本文件:nn```bashnnano gobust_scan.shn```nn将以下内容粘贴到 `gobust_scan.sh` 文件中:nn```bashn#!/bin/bashnn## 定义 Gobuster 的单词列表nWORDLIST="/usr/share/wordlists/dirb/common.txt" ## 用于目录暴力破解的常用单词列表nn## 检查单词列表是否存在nif [ ! -f "$WORDLIST" ]; thenn echo "Error: Wordlist not found at $WORDLIST. Please ensure it exists."n echo "You might need to install 'dirb' or 'wordlists' package, e.g., sudo apt install dirb"n exit 1nfinn## 检查 web_servers.txt 是否存在nif [ ! -f "web_servers.txt" ]; thenn echo "Error: web_servers.txt not found. Please run Step 2 first."n exit 1nfinnecho "Starting Gobuster scans..."necho "-------------------------"nn## 循环遍历 web_servers.txt 中的每个 URLnwhile IFS= read -r url; don echo "Scanning $url..."n ## Gobuster 命令的占位符 - 将在下一步添加n ## gobuster dir -u "$url" -w "$WORDLIST" -o "gobuster_$(echo $url | sed -e 's/https:\/\///g' -e 's/https:\/\///g' -e 's/\//_/g').txt"
echo "对 $url 的扫描已完成。"
echo "-------------------------"
done < web_servers.txtnnecho "All scans completed."n```nn通过按 `Ctrl+X`,然后按 `Y` 确认,最后按 `Enter` 以当前文件名保存,来保存文件。nn接下来,使脚本可执行:nn```bashnchmod +x gobust_scan.shn```nn现在,让我们测试脚本以确保它能正确地循环遍历 URL。它还不会运行 Gobuster,但会为每个 URL 打印消息。nn```bashn./gobust_scan.shn```nn你应该会看到类似以下的输出,表明脚本正在正确读取和处理每个 URL:nn```plaintextnStarting Gobuster scans...n-------------------------nScanning https://172.17.0.2...nFinished scanning https://172.17.0.2.n-------------------------nScanning https://172.17.0.2...nFinished scanning https://172.17.0.2.n-------------------------nScanning https://172.17.0.3...nFinished scanning https://172.17.0.3.n-------------------------nAll scans completed.n```nn这证实了我们的脚本已准备好集成 Gobuster 命令。n","need_verify":true,"has_solution":false},{"position":4,"title":"在脚本中为每个发现的目标调用 Gobuster","layout":"doc-workbench-split","text":"## 在脚本中为每个发现的目标调用 Gobusternn在此步骤中,你将修改 `gobust_scan.sh` 脚本以集成 Gobuster 命令。对于 Nmap 发现的每个 URL,Gobuster 将尝试使用常用的单词列表查找隐藏的目录和文件。nn首先,让我们确保 Gobuster 已安装。它应该已预装在 LabEx VM 上。nn```bashngobuster --versionn```nn你应该会看到类似以下的输出:nn```plaintextngobuster v3.1.0n```nn现在,再次打开 `gobust_scan.sh` 脚本进行编辑:nn```bashnnano gobust_scan.shn```nn找到占位符行:n`## gobuster dir -u "$url" -w "$WORDLIST" -o "gobuster_$(echo $url | sed -e 's/https:\/\///g' -e 's/https:\/\///g' -e 's/\//_/g').txt"`nn取消注释此行,并确保其外观与此完全一致:nn```bashn#!/bin/bashnn## 定义 Gobuster 的单词列表nWORDLIST="/usr/share/wordlists/dirb/common.txt" ## 用于目录暴力破解的常用单词列表nn## 检查单词列表是否存在nif [ ! -f "$WORDLIST" ]; thenn echo "Error: Wordlist not found at $WORDLIST. Please ensure it exists."n echo "You might need to install 'dirb' or 'wordlists' package, e.g., sudo apt install dirb"n exit 1nfinn## 检查 web_servers.txt 是否存在nif [ ! -f "web_servers.txt" ]; thenn echo "Error: web_servers.txt not found. Please run Step 2 first."n exit 1nfinnecho "Starting Gobuster scans..."necho "-------------------------"nn## 循环遍历 web_servers.txt 中的每个 URLnwhile IFS= read -r url; don echo "Scanning $url..."n ## Gobuster 命令n gobuster dir -u "$url" -w "$WORDLIST" -o "gobuster_$(echo $url | sed -e 's/https:\/\///g' -e 's/https:\/\///g' -e 's/\//_/g').txt"n echo "Finished scanning $url."n echo "-------------------------"ndone < web_servers.txtnnecho "All scans completed."n```nn保存修改后的脚本(`Ctrl+X`,`Y`,`Enter`)。nn现在,执行脚本。这将为每个 URL 运行 Gobuster,并将结果保存到单独的文件中。nn```bashn./gobust_scan.shn```nn脚本现在将为每个 URL 执行 Gobuster。你将在终端中直接看到 Gobuster 的输出,它还会将结果保存到名为 `gobuster_172.17.0.2.txt`、`gobuster_172.17.0.2_443.txt` 等的文件中(具体文件名取决于 URL)。nn脚本完成后,你可以列出生成的 Gobuster 输出文件:nn```bashnls gobuster_*.txtn```nn你应该会看到类似以下的文件:nn```plaintextngobuster_172.17.0.2.txt gobuster_172.17.0.2_443.txt gobuster_172.17.0.3.txtn```n","need_verify":true,"has_solution":false},{"position":5,"title":"整合所有目标的 Gobuster 结果","layout":"doc-workbench-split","text":"## 整合所有目标的 Gobuster 结果nn在最后一步中,你将把所有单独的 Gobuster 输出文件整合到一个全面的报告中。这样可以更轻松地查看所有扫描的 Web 服务器上发现的所有目录和文件。nn我们将使用 `cat` 命令将所有匹配 `gobuster_*.txt` 的文件合并到一个名为 `all_gobuster_results.txt` 的文件中。nn```bashncat gobuster_*.txt > all_gobuster_results.txtn```nn此命令将获取所有以 `gobuster_` 开头并以 `.txt` 结尾的文件内容,并将它们合并到 `all_gobuster_results.txt` 中。nn现在,你可以查看整合后的结果:nn```bashncat all_gobuster_results.txtn```nn你将看到 Gobuster 在扫描的 Web 服务器上找到的所有目录和文件的合并输出。输出将根据 Web 服务器的内容而有所不同,但可能看起来像这样:nn```plaintextn===============================================================nGobuster v3.1.0n...n[+] Found: /index.html (Status: 200)n[+] Found: /css (Status: 301)n[+] Found: /js (Status: 301)n...n===============================================================nGobuster v3.1.0n...n[+] Found: /admin (Status: 301)n[+] Found: /login.php (Status: 200)n...n```nn此整合文件为所有发现的 Web 资产提供了一个单一的参考点,从而完成了你的自动化目标发现过程。n","need_verify":true,"has_solution":false},{"position":6,"title":"总结","layout":"doc-fullscreen","text":"## 总结nn在此次实验中,你成功地结合了 Nmap 和 Gobuster 来自动化 Web 服务器和目录发现过程。你首先使用 Nmap 扫描网络范围内的开放 Web 端口,然后解析其输出以创建目标 URL 列表。接下来,你开发了一个 Bash 脚本来遍历这些 URL,为每个 URL 调用 Gobuster 以查找隐藏的目录和文件。最后,你将所有 Gobuster 结果整合到一个报告中,展示了一个高效且全面的侦察工作流程。这种集成方法对于任何从事网络安全或 Web 应用程序测试的人来说都是一项宝贵的技能。n","need_verify":false,"has_solution":false}
来源:https://labex.io/zh/tutorials/kali-combine-gobuster-with-nmap-for-target-discovery-594092
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。
相关推荐
补充同频道和同主题内容,方便继续浏览更多相关内容。
同类最新
继续查看同栏目最近更新的文章。
DDoS攻击的三大主要形式:原理、特征与防御重点
DDoS攻击主要分为基于流量(Volume)、基于应用层(Application)和基于协议(Protocol)三种形式。流量型攻击通过海量数据淹没带宽;应用层攻击利用Web漏洞耗尽服务器资源;协议层攻击则利用TCP握手缺陷导致系统挂起。了解这些原理是制定针对性防御策略的基础。
如何有效预防和缓解DDoS攻击:5大核心策略详解
面对DDoS攻击,单纯增加带宽已非长久之计。本文详解5大核心防护策略:优化网络硬件配置、建立DNS冗余机制、部署透明缓解技术、引入负载平衡器及专用Anti-DDoS模块。通过合理组合这些技术手段,可有效抵御SYN泛洪、Slowloris等常见攻击,保障业务连续性与网站可用性。
DDoS防护四大误区:CDN、防火墙与黑名单的局限性解析
许多企业误以为CDN、防火墙或黑名单能完全抵御DDoS攻击。本文深入解析四大常见误区:CDN仅提供部分缓解、静态黑名单易失效、防火墙算力有限且可能成为目标、阈值警报仅具滞后性。了解这些局限性,有助于构建更立体的防御体系,避免在攻击发生时措手不及。
常见DDoS攻击类型详解:原理、特征与防御策略
本文详细解析四种常见DDoS攻击类型:SYN Flood利用TCP三次握手缺陷耗尽资源;UDP Flood通过海量数据包造成带宽拥塞;ICMP Flood利用Ping请求消耗系统算力;应用层Flood针对Web脚本进行高频请求。了解其原理是制定有效防御策略的基础。
如何有效抵御DDOS攻击:4种核心防护方案解析
面对DDOS攻击,企业需构建多层防护体系。本文详解四大核心策略:利用反向路由器查询进行流量清洗,通过GCDN智能分配节点隐藏源站IP,部署负载均衡硬件分担压力,以及接入高防机房抵御数百G恶意流量。掌握这些技术,可最大程度保障业务连续性。
