20232309 2025-2026-1 《网络与系统攻防技术》实验六实验报告
1.实验内容
1.1学习内容
信息搜集技术(特别是网段和主机的扫描)、不同类型的漏洞攻击
1.2实验任务
-
前期渗透
- 主机发现(可用Aux中的arp_sweep,search一下就可以use)
- 端口扫描:可以直接用nmap,也可以用Aux中的portscan/tcp等。
- 选做:也可以扫系统版本、漏洞等。
-
Vsftpd源码包后门漏洞(21端口)
-
SambaMS-RPC Shell命令注入漏洞(139端口)
-
Java RMI SERVER命令执行漏洞(1099端口)
-
PHP CGI参数执行注入漏洞(80端口)
2.实验过程
2.1 前期渗透
2.1.1主机发现
1.确认攻击机(kali)ip192.168.203.130和靶机(metasploitable2)ip192.168.203.142


2.kali中开启root权限,msfconsole进入metasploit控制台,使用search arp_sweep查找arp_sweep,可以看到搜索结果中序号0即为我们要找的,use 0进入,set RHOSTS 192.168.203.0/24设置靶机所在网段,set THREADS 20设置同时开启的线程数,run运行,可以在结果中看到靶机ip
arp_sweep 是在局域网环境中进行主机发现最根本、最有效的手段。 它不依赖于高层的网络协议,直接利用局域网通信的核心机制——ARP协议,来准确无误地找出网络中所有活跃的设备。可靠且速度快,缺点是只能用于本地局域网,无法跨路由器。

2.1.2端口扫描
1.使用metasploit中的portscan/tcp,set RHOSTS 192.168.203.142设置靶机ip,run运行


2.1.3选做:扫描系统版本、漏洞
1.使用nmap -O --script vuln 192.168.203.142命令
-O:用于扫描系统版本
--script vuln:用于启动Nmap的漏洞扫描功能。它会运行一个特定的脚本集合,专门检测目标系统上已知的安全漏洞。
系统版本如下

系统漏洞如下(节选)


2.2 Vsftpd源码包后门漏洞(21端口)
漏洞原理:在特定版本的vsftpd服务器程序中,被人恶意植入代码,当用户名以“😃”为结尾,服务器就会在6200端口监听,并且能够执行任意代码。
1.msfconsole启动metasploit,use exploit/unix/ftp/vsftpd_234_backdoor选择漏洞,set RHOST 192.168.203.142设置靶机ip,run运行

会发现显示Exploit completed, but no session was created.说明有可能连接已建立,但注册环节出了问题,导致Metasploit认为最终没有创建出可用的会话。可以使用sessions -l查看连接,可以看到连接确实已经建立(ip有变化是因为中途切换了网络连接模式和环境,但前面的操作步骤一致),所以可以通过sessions -i 1手动在id为1的这个连接中进行交互

2.执行whoami,uname,pwd,uname -a,id等命令都可以显示出已取得靶机root的权限
2.3 SambaMS-RPC Shell命令注入漏洞(139端口)
漏洞原理:Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。
1.metasploit中use exploit/multi/samba/usermap_script选择漏洞,set RHOST 192.168.203.142设置靶机ip,run运行

2.执行whoami,uname -a,id,改变路径再pwd等命令验证结果
Q1:nobody用户是什么?
A1:nobody是一个权限非常低的特殊系统用户。系统通常会用这个用户来运行那些不需要任何特殊权限的服务或进程,目的是为了在服务被入侵时,限制攻击者能够造成的破坏,是一种安全措施。
Q2:为什么原理中说以nobody用户权限执行命令,此处显示的还是root用户?
A2:Metasploitable2是一个故意设计存在漏洞且配置不安全的测试环境。为了教学和演示最大化的攻击效果,它的某些服务(包括Samba)可能直接被配置为以root权限运行。在这种情况下,任何通过漏洞执行的命令都会继承服务进程的高权限。
2.4 Java RMI SERVER命令执行漏洞(1099端口)
漏洞原理:Java RMI Server的RMI注册表和RMI激活服务的默认配置存在安全漏洞,可被利用导致代码执行。
1.metasploit中use exploit/multi/misc/java_rmi_server 选择漏洞,set RHOST 192.168.203.142设置靶机ip,run运行,在meterpreter出现后输入shell

2.可以看到
- Metasploit创建了一个临时的HTTP服务器
- 通过RMI协议让目标下载并执行恶意JAR文件
- 最终建立了Meterpreter会话
3.执行whoami,pwd,id等命令验证结果
Q1:这个漏洞是怎么被利用的?
A1:攻击者连接到目标的RMI注册表(默认端口1099),Metasploit启动一个HTTP服务器托管恶意Java类文件,通过RMI协议诱导目标服务器从攻击者的HTTP服务器加载恶意类,加载的恶意类在目标JVM中执行,建立反向连接。可以看到默认使用的payload是java/meterpreter/reverse_tcp,针对目标的java环境,可在任何有JVM的系统上运行。这是stage型payload,目标下载并执行恶意Java类是stager,负责建立通信连接,回连攻击者,下载完整的meterpreter
2.5 PHP CGI参数执行注入漏洞(80端口)
漏洞原理:CGI脚本没有正确处理请求参数,导致源代码泄露,允许远程攻击者在请求参数中插入执行命令。
1.metasploit中use exploit/multi/http/php_cgi_arg_injection 选择漏洞,set RHOST 192.168.203.142设置靶机ip,run运行,在meterpreter出现后输入shell

2.执行whoami,pwd等命令验证结果
Q1:为什么在这个漏洞中的获取到的用户不是root?www-data是谁?
A1:www-data是Linux系统中专门用于运行Web服务(如Apache、Nginx)的低权限系统用户,Web服务不应以root权限运行(如果Web服务被攻击只能获得有限权限),符合最小化权限的设计原则。
3.问题及解决方案
-
问题1:2.2任务中第二次运行漏洞失败
![image]()
-
问题1解决方案:执行
sessions -i可以看到已经有运行的进程,也就是说第一次建立的连接没有被关闭,解决方法很简单(正文中也写了),sessions -i 1可以直接在第一个已建立的连接中交互,或者退出msfconsole重建连接。
4.学习感悟、思考等
本次实验中使用Metasploit工具和Metasploitable2靶机可以很方便地进行漏洞攻击,也让我学习到了很多漏洞攻击原理以及利用这些漏洞的攻击流程(虽然都是比较简单且过时的漏洞)。实验过程如果按部就班基本上是0难度,让我体验到了做实验久违的畅快感。


浙公网安备 33010602011771号