靶机-Metasploitable:1(五种方法拿到最高权限)
据官方描述,这个靶机有多个入口,本文将尝试以多种不同的方法进行入侵。
开搞
先用 Nmap 找到目标 IP:
10.0.2.7 这是我们的本机IP,目标IP应该就是 10.0.2.6 了。
对目标主机进行端口扫描和操作系统探测:
可以看到对方 Linux 内核为:Linux 2.6.x
,并且运行了非常多的服务,445 端口也是开放的,说明对方运行了 SMB 服务,探测一下版本:
没有显示确切的版本号,使用 SMBMap 再查一下:
现在得到了确切的版本号。
通过搜索发现 samba3.0.x 版本对应的一个远程命令注入漏洞:CVE-2007-2447
,使用MSF的exploit/multi/samba/usermap_script
模块利用此漏洞:
Bingo!成功返回Shell,还是root权限,至此我们已经找到了第一种入侵的办法。
使用 Nmap 进行漏洞扫描:nmap --script vuln 10.0.2.6 -p- --open
,扫描需要几分钟,先晾在那,等会再看。
通过 SMB 枚举目标系统用户:
把用户整理到一个文件中,用来爆破:
根据整理出来的用户列表逐一爆破FTP、SSH、Telnet、SMB、MySQL、PostgreSQL 服务:
通过弱口令得到了大量的帐号,看起来msfadmin
这个用户权限会高点,通过SSH登录,查看是否有 sudo 权限:
这个用户有完整的 root 权限,可通过sudo -i
直接切换到 root 用户。
我们找到了第二种入侵的方式。
MySQL服务也是开启的,手工测试一下弱口令看看:
用root:root
直接进去了……想尝试 UDF 提权,发现没有 plugin 目录,也没法创建目录,作罢。
随后找到一个适用于目标主机上的 MySQL 的缓冲区溢出漏洞:CVE-2009-4484
,但是没利用成功,这个漏洞应该是存在的,可能是数据库配置问题。不在这里耗时间了,至少我们拿到了目标主机的数据库权限。
回到 Nmap 查看漏洞扫描的结果:
很多是关于 TLS协议 的漏洞,这对我们获取权限没什么用处,不过我发现了一个可利用的漏洞:
使用 MSF 的exploit/unix/misc/distcc_exec
模块进行利用:
成功返回Shell,不是root用户,还需要提权。
发现目标系统上有crontab,看下配置文件:
是以 root 权限运行的,看了下这些目录中的脚本,都没有写的权限,作罢。
使用 Linux Exploit Suggester 2 查看目标主机系统对应的内核版本可用的提权漏洞:
为了方便操作,先把 Shell 转换为 Meterpreter Shell:
这里我用大名鼎鼎的 DirtyCOW(CVE-2016-5195)进行提权,把 Exploit 上传到目标系统(注意要上传到有写权限的目录):
在目标系统上编译&运行 Exploit:
成功提权,现在firefart:fly
帐号拥有 root 权限:
P.S:这个 Exploit 是直接把/etc/passwd
中的用户 uid 改为0(root),它把原来的 passwd 文件备份到了/tmp/passwd.bak
,在真实环境中使用了这个 Exploit 要记得把原先的passwd
文件给恢复回去。
现在我们找到了第三种入侵的方式。
前面一直是围绕服务端的服务漏洞进行入侵,现在来Web层看看,访问80端口:
检查了HTML源码,确认首页什么都没有,通过扫描之后发现有个/tikiwiki
目录:
Tiki 是一个用 PHP+MySQL 开发的开源 CMS。
尝试admin:admin
弱口令,直接进入:
简单浏览了一下,发现什么功能都没有,版本太古老了……
随后根据 CMS 版本找到一个远程代码执行漏洞:CVE-2007-5682
,使用 MSF 的exploit/unix/webapp/tikiwiki_graph_formula_exec
模块进行利用:
成功拿到 Shell,用户是www-data
,还需要提权。
前面我们已经知道可以用 DirtyCOW 来进行提权,但我不想让入侵的方法有任何重复,所以我找到了一个新的提权漏洞:CVE-2009-1185
。
MSF有对应的利用模块:exploit/linux/local/udev_netlink
,搞起来:
利用成功,返回了一个 root 权限的新 session:
现在已经找到了第四种入侵的方法!
在一开始的扫描中就发现目标主机运行了 AJP 服务,目标主机很可能运行了 Tomcat 服务,但是 Nmap 扫描中没有直接显示,通过手动验证后确定 8180 端口是 Tomcat 服务:
手工测试了几个弱口令,tomcat:tomcat
直接命中:
可以直接部署 war 包来 GetShell,这里使用 MSF 模块来简化操作:
成功 GetShell,又是一个非 root 权限,又又又要提权了……我依然想保持入侵的方法不重复,所以前面用到的那些提权漏洞我都不会在这里重复使用,尝试了其他几个适用于目标主机的内核漏洞,都不好用,决定在服务器上看看有没有可利用的地方。
发现/root/.ssh/authorized_keys
文件可读:
拿到了目标主机的 SSH 公钥,这时候想到了 Debian OpenSSL 弱随机数漏洞(CVE 2008 0166),查看后发现目标主机上的 OpenSSL 版本在漏洞范围内,这个漏洞会导致密钥生成过程中的随机值很小,所以可以利用这个漏洞来枚举密钥对,通过比对公钥来找到对应的私钥,我们就可以直接通过私钥登录目标主机的 root 用户。
网上已经有打包好的枚举出来的密钥对,直接用就行。
下载 RSA 2048位加密算法的密钥对压缩包并解压:
进入rsa/2048/
目录下,使用grep
命令找到匹配的公钥文件:
把公钥文件的后缀名去掉,就是对应的私钥文件:
使用这个私钥文件去登录目标主机的 root 用户:
登录成功!我们再次拿到了目标主机的最高权限。
就到此为止吧,我们最终通过五种截然不同的方式拿到了目标主机的最高权限,这个靶机非常简单,适合初学者用来熟悉渗透测试中常用的工具以及渗透测试的基本步骤。实际上还有其他方式可以拿到目标主机权限,留给大家探索喽。
番外篇
在一开始的漏洞扫描结果中我就发现 Nmap 报告了目标主机的 Apache 存在拒绝服务漏洞(CVE-2007-6750),不过这对我们获取权限没有帮助,所以略过了,我打算在结尾简单利用一下。
HTTP 慢速攻击(SlowLoris)是通过将 HTTP 报文的长度设置为一个很大的值,然后每隔一段时间发送一点点(很少)的数据让服务器一直等待数据,导致服务器资源被持续占用,再利用多线程等方式创建大量此类连接,让服务器无法响应正常请求,最终导致拒绝服务。
使用 MSF 的dos/http/slowloris
模块进行 HTTP 慢速攻击:
开始攻击几秒后,网页就已经无法正常响应。