欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Metasploit Framework(2)Exploit模块、Payload使用

程序员文章站 2022-03-12 09:24:03
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 Exploit模块分为主动和被动(Active、Passive) 主动:主动地向目标机器发送payload并执行,使目标交出shell(反连等) 被动:利 ......

文章的格式也许不是很好看,也没有什么合理的顺序

完全是想到什么写一些什么,但各个方面都涵盖到了

能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道

 

exploit模块分为主动和被动(active、passive)

主动:主动地向目标机器发送payload并执行,使目标交出shell(反连等)

被动:利用目标机器的客户端程序的漏洞来利用,客户端程序请求服务端时候,返回漏洞代码,加载payload,交出shell

 

我将在下面使用这两种方式做示例:

 

我启动一个windowxp sp1机器,关闭防火墙,更方便演示,实际情况不可以关闭防火墙

Metasploit Framework(2)Exploit模块、Payload使用

ip配置:

kali:192.168.163.132

windows:192.168.163.133

 

active exploit:

我用到的是windows的psexec工具的漏洞:

漏洞利用前提:需要知道目标机器的一个用户名和密码

获取shell方式:反弹回连kali机器

 

use exploit:

Metasploit Framework(2)Exploit模块、Payload使用

 

设置参数:

Metasploit Framework(2)Exploit模块、Payload使用

 

依次设置好:目标ip,目标用户名密码,使用的payload,反弹回连的ip(即kali机器的ip)

 

设置好之后show options看一看结果怎么样:

Metasploit Framework(2)Exploit模块、Payload使用

 

如果执行成功的后,目标机器会反弹回连我的4444端口:

 

执行:

抱歉,这里不知道是由于什么原因,windowsxp机器这个漏洞无法被利用,我临时换了windows2003机器

windows2003机器的ip:192.168.163.130

Metasploit Framework(2)Exploit模块、Payload使用

 

 

ok,用exploit -j参数就可以在后台渗透目标机器了

 

下边看到一个session被创建了:

sessions查看,-i交互:发现已经获取了目标机器的shell,完成!!

Metasploit Framework(2)Exploit模块、Payload使用

 

不过注意:你在这台机器上的任何操作实际上都是你使用的这个用户在操作

 

 

passive exploit:

被动的方式,我甚至可以在控制面板打开防火墙

Metasploit Framework(2)Exploit模块、Payload使用

 

如果打开了防火墙,我们试一试刚才的主动渗透方式:发现失败了

Metasploit Framework(2)Exploit模块、Payload使用

 

但是,利用被动的方式或许依然可以获取shell:

 

下面我将会尝试:

我使用ms07-017_ani_loadimage_chunksizi模块:

 Metasploit Framework(2)Exploit模块、Payload使用

info查看下信息

发现这个模块适用于windowsxp、2003的ie6、ie7等

关于图片加载时候发生的漏洞

 

现在windows2003上使用,如果不行等会转xp

使用注意:需要伪造一个网站,诱使对方访问这个网站

我直接设置成kali机器的ip也可以

Metasploit Framework(2)Exploit模块、Payload使用

 

依次设置访问网站的ip和端口,payload,回连的ip(kali机器)

 

show options没问题

Metasploit Framework(2)Exploit模块、Payload使用

 

 

然后执行:

Metasploit Framework(2)Exploit模块、Payload使用

 

ok,这个漏洞网站已经构建好了,现在使用目标机器访问:

实际中:使用社会工程学诱惑使对方访问,比如访问有红包什么的

 

Metasploit Framework(2)Exploit模块、Payload使用

 

 

发现没有渗透成功:

Metasploit Framework(2)Exploit模块、Payload使用

 

 

于是我更换xp系统:

Metasploit Framework(2)Exploit模块、Payload使用

 

 

渗透成功!!!

Metasploit Framework(2)Exploit模块、Payload使用

 

 

打开session看看:乱码是中文的问题

Metasploit Framework(2)Exploit模块、Payload使用

 

接下来 就可以用shutdown命令,远程把对面关机

 

ok,虽然对方打开防火墙,但是我依然利用浏览器漏洞诱使对方中招

这就是被动方式的强大之处

 

 

总结:

active方式适用于攻击服务器端程序

passive方式适用于攻击客户端机器,因为客户端机器基本不开端口,而且有防火墙

 

 

 

其实不管怎么渗透,目的都是一致的:使目标机器执行payload

我们可以先看一看所有的payload都有哪些:

show payload

 

我接下来使用绑定端口的shell:shell_bind_tcp

Metasploit Framework(2)Exploit模块、Payload使用

 

show options看一看参数:

Metasploit Framework(2)Exploit模块、Payload使用

 

本地侦听端口默认是4444端口

 

我们发现这个payload不需要再进行额外的配置,默认会绑定本机的4444端口

这个rhost不需要配置,它存在的意义就是限制来源ip

实际中这个参数是为了防止我发现的漏洞被其他黑客所利用

 

通常我们使用payload是通过exploit模块来调用的:

比如我在exploit模块中两次用到了payload:

 

而payload模块也可以用来直接生成payload:

使用generate命令:

 

Metasploit Framework(2)Exploit模块、Payload使用

 

下面的buf就是生成的16进制ruby语言格式的payload

我可以自己写脚本发送这些shellcode,详见:kali学习笔记:缓冲区溢出漏洞利用

不过这里面有一些坏字符(比如\x00),目标系统执行时候会出问题

如何避免呢?

 

有方法:generate -b参数

Metasploit Framework(2)Exploit模块、Payload使用

 

\x00是确定的坏字符,那么有没有其他的呢?当然有

处理方式和上边一样

 

这里其实是使用了encoder模块将坏字符用其他字符代替了

generate自动选择最适当的encoder来编码

 

那么有没有方法来自己指定编码呢?

有的-e参数,但是不推荐,因为自动会分配最合适的编码

 

上边的是输出16进制格式,还可以输出exe格式:-t参数

下面做一个综合的参数:

-i 执行轮数,-k 以线程方式执行 -x 使用模板 -f 位置

Metasploit Framework(2)Exploit模块、Payload使用

 

运行完成!我把这个文件复制到windowsxp机器上去:正常启动

注意:radmin这个文件本身是一个可以执行的正常exe,可以正常执行的一个软件

好处:被害者以为自己是在安全地使用某个软件

Metasploit Framework(2)Exploit模块、Payload使用

 

这时候使用kali机器连接这个打开着的4444端口:

Metasploit Framework(2)Exploit模块、Payload使用

 

 

ok,成功了!轻松获取shell

 

 

最后值得注意地是-s参数:

Metasploit Framework(2)Exploit模块、Payload使用

 

有时候执行payload的时候,会无法执行

当cpu执行nop指令地时候,会走下一个字节,以此类推,eip寄存器会顺着nop滑,直到payload

nop sled 参数用于:没有精确知道payload地址时候,可以执行nop指令,适当地nop有一定地免杀效果

 

下面的-t参数呢,设置生成payload的类型,比如可以生成c、c#、java等等

注意:生成的payload都是一样的,不过格式不一样