1 实验环境

  1. 操作系统版本:Windows 11 家庭中文版23H2
  2. VMware® Workstation 16 Pro:16.2.3 build-19376536
  3. Metasploitable2虚拟机版本:2.6.24-16-server
  4. Kali虚拟机版本:6.6.9-amd64

2 实验内容

2.1 系统信息收集

2.1.1 whois

图2.1 使用whois命令查询

图2.1所示是从使用whois命令查询到的IP地址范围的结果,具体来说是192.168.0.0到192.168.255.255这个范围,以下是各个字段的解释:

  1. NetRange(网络范围):192.168.0.0~192.168.255.255,表示这个地址范围从192.168.0.0到192.168.255.255,共计65536个IP地址。
  2. CIDR(无类域间路由):192.168.0.0/16,这是用CIDR表示法表示的同样的地址范围,其中/16表示了子网掩码为255.255.0.0。
  3. NetName(网络名称):PRIVATE-ADDRESS-CBLK-RFC1918-IANA- RESERVED,这个名称用来标识这个IP地址范围的用途,它是保留给私有网络使用的地址块。
  4. NetHandle(网络句柄):NET-192-168-0-0-1,这是在网络注册数据库中给这个地址范围分配的唯一标识符。
  5. Organization(组织):Internet Assigned Numbers Authority(IANA),这是管理这个地址范围的组织。
  6. RegDate(注册日期):1994-03-15,这个地址范围被注册的日期。
  7. Updated(更新日期):2024-05-24,这是最近更新这个地址范围信息的日期。

图2.2 使用whois命令查询结果

图2.2是关于Internet Assigned Numbers Authority (IANA) 的组织信息,也是通过whois命令查询得到的。这段信息描述了IANA的基本信息和联系地址,说明了它在加利福尼亚州洛杉矶的办公地点,并提供了最近的更新日期。

2.1.2 dmitry

图2.3 使用dmitry命令查询结果

如图2.3所示是dmitry工具进行TCP端口扫描后的结果,其中显示了每个端口的状态,可以看到目标主机有21、22、23和25等端口开放,其中可以看到80端口肯定在开放,因为靶机Metasploitable2向外部提供了Web服务,而HTTP协议就是使用的80端口。最后展示了扫描了150个端口,其中141个端口是关闭的。

2.1.3 whatweb

图2.4所示是使用whatweb工具对192.168.160.136进行识别和分析后得到的结果。

图2.4 使用whatweb命令查询结果
  1. http://192.168.160.136[200 OK]:这表示对IP地址为192.168.160.136的HTTP服务进行了请求,并且服务器响应状态码为 200 OK,表示请求成功。
  2. Apache[2.2.8]:服务器使用的是Apache版本2.2.8。
  3. Country[RESERVED][ZZ]:由于IP地址 192.168.160.136 属于保留地址范围,所以其所属国家信息显示为RESERVED,ZZ则表示国家代码未知或无效。
  4. HTTPServer[Ubuntu Linux][Apache/2.2.8 (Ubuntu) DAV/2]:服务器操作系统是Ubuntu Linux,HTTP服务是Apache 2.2.8,并支持WebDAV(DAV/2是指支持WebDAV协议版本2)。
  5. IP[192.168.160.136]:显示目标主机的IP地址为 192.168.160.136。
  6. PHP[5.2.4-2ubuntu5.10]:服务器上安装的PHP版本是5.2.4-2ubuntu5.10。
  7. Title[Metasploitable2 - Linux]:网页标题显示为Metasploitable2 - Linux,这表明目标主机可能正在运行Metasploitable2,这是一个用于安全测试的演示Linux虚拟机。
  8. WebDAV[2]:指示服务器支持的WebDAV协议版本为2。
  9. X-Powered-By[PHP/5.2.4-2ubuntu5.10]:显示网页的动态内容由PHP 5.2.4-2ubuntu5.10提供。

2.1.4 dnsenum

图2.5所示,是使用dnsenum命令查询之后的结果,但是由于目标靶机没有其他任何域名,所以没有查询到任何的结果。

图2.5 使用dnsenum命令查询结果

所以再补充查询一个百度网址的域名,查询结果如图2.6所示。

图2.6 使用dnsenum命令查询结果

2.2 端口扫描

Nmap(Network Mapper)是一个开源的网络探测和安全审核工具,广泛用于网络发现和安全评估。Nmap可以快速扫描网络,发现网络上的主机和服务。通过不同的扫描技术,如TCP SYN扫描、TCP Connect扫描、UDP扫描等,可以确定主机的在线状态和开放的端口。

Nmap能够检测主机上运行的服务和开放的端口。它可以识别出每个端口上运行的具体服务(如SSH、HTTP、FTP等),并给出相应的版本信息。同时Nmap可以与其他漏洞扫描工具集成,用于扫描已知漏洞和弱点。通过识别服务和操作系统的版本信息,可以帮助安全团队找出潜在的安全问题并采取相应的措施。

Nmap作为一款强大的网络探测和安全评估工具,被广泛应用于网络管理员、安全专家和渗透测试人员的工作中,帮助他们理解网络拓扑、评估安全风险并制定有效的安全策略。

2.2.1 主机发现

图2.7 使用dnsenum命令查询结果

整个扫描过程中,对255个IP地址进行了扫描,发现有4个主机是活跃的,扫描总共花费了2.69秒。

这种类型的扫描对于快速确定一个网段中哪些主机是活跃的很有用,但它并没有深入探测主机上的具体服务和端口。

2.2.2 TCP端口扫描

图2.8 使用nmap -sS命令查询结果

扫描结果显示了该主机开放的TCP端口及其对应的服务,其中PORT展示了端口号及其协议(这里都是TCP)。STATE:端口的状态,这些端口都是开放(open)的,即主机正在监听这些端口。SERVICE:与每个端口关联的服务的名称。

2.2.3 版本侦测

图2.9 TCP版本侦测

使用-sV参数可以得到目标主机更详细的端口使用情况,如图2.9所示显示了详细的服务版本和相关信息。

2.2.4 操作系统侦测

使用Nmap工具的 -O 参数进行的操作系统检测(OS detection)的结果,结果如图2.10所示。

图2.10 操作系统侦测
  1. MAC地址:00:0C:29:21:04:06,指示设备是一个VMware虚拟机的网络适配器的MAC地址。
  2. Device type:设备类型:general purpose,表示这是一个通用用途的设备,没有特定的专用设备类型。
  3. Running:运行的操作系统:Linux 2.6.X,这表示该设备正在运行Linux内核版本为2.6的操作系统。
  4. OS CPE:操作系统的CPE标识符:cpe:/o:linux:linux_kernel:2.6,这是指对应的通用平台标识(Common Platform Enumeration),指定了Linux操作系统内核的版本为2.6。
  5. OS details:操作系统详细信息:Linux 2.6.9 - 2.6.33,这表示Nmap根据其特征匹配和检测,推测该设备运行的Linux操作系统版本范围在2.6.9到2.6.33之间。这是基于Nmap的OS检测引擎根据扫描结果推断出来的信息,而不是直接从设备上获取的精确版本号。
  6. Network Distance:网络距离:1 hop,表示从扫描源(Nmap运行的主机)到目标设备只有一个网络跳跃。

2.2.5 防火墙侦测

图2.11 防火墙侦测

在ACK扫描中,Nmap发送TCP ACK包到目标端口,然后根据目标主机的响应(或者缺乏响应)来推断端口的状态。在这种情况下,所有端口都显示为“ignored states”,可能是因为目标主机的防火墙或网络配置对ACK扫描做了特殊处理,使得Nmap无法准确地确定端口的状态。

2.3 漏洞扫描

漏洞扫描是一种计算机安全评估技术,用于识别目标系统或网络中存在的安全漏洞和弱点。这些漏洞可能是由于配置错误、未修补的软件缺陷、弱密码、不安全的网络服务或其他安全实践不当而导致的。

扫描工具会自动或半自动地对目标系统进行检测,以识别可能存在的漏洞和弱点。这些漏洞可以包括已知的软件漏洞、配置错误、缺少安全补丁等。

图2.12 漏洞扫描

图2.12展示了目标靶机Web服务的更详细的安全扫描报告,显示了更多的潜在安全风险和建议,这里选择其中一条进行分析。

在扫描结果中提示发现了一个名为phpinfo.php的测试脚本,其运行了phpinfo()函数。phpinfo()函数会显示PHP配置和系统信息,这可能泄露给攻击者有关服务器配置和版本的详细信息。这种公开信息会增加攻击面,应该限制访问或删除不必要的测试脚本。


3 实验总结

通过本次实验可以知道在攻击一个目标主机之前,可以先收集有关的信息,以更多的掌握目标主机的有关信息。同时本次实验中,也可以通过工具来发现目标主机中是否存在潜在的漏洞。

反之,我们自己在搭建系统或者为他人提供一个web服务时,也可以使用这种方法来检测一下是否存在漏洞,起到预防作用。同时,渗透测试作为一种实验性质的安全评估方法,不仅能够发现系统中的潜在风险,还能为系统管理员提供有价值的安全改进建议,是信息安全管理中不可或缺的重要环节。