Ysoserial工具-CommonsCollections1
参考链接https://zhuanlan.zhihu.com/p/349838623
https://leihehe.top/2021/07/31/Java%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E4%B9%8B%E5%88%A9%E7%94%A8%E9%93%BE%E5%88%86%E6%9E%90%E9%9B%86%E5%90%88-4/
https://www.guildhab.top/2020/08/java-%e5%8f%8d%e5%ba%8f%e5%88%97%e5%8c%96%e6%bc%8f%e6%b4%9e6-%e8%a7%a3%e5%af%86-ysoserial-urldns-pop-chain/
https://xz.aliyun.com/t/7157#toc-1
https://www.freebuf.com/articles/web/312175.html
Java代码审计-RBAC管理系统
0X01 环境搭建gitee下载地址:https://gitee.com/witmy/my-springsecurity-plus
导入 IEDA 项目后,自动根据 pox.xml 下载依赖包
注意:需要在 settings–plugins 中搜索并安装 lombok 插件,不然会报错
创建 rbac 空数据库,导入 sql 文件
默认端口是 8088 ,可自行在 RefiningStone-RBAC(最终版)/src/main/resources/application.yml 中修改端口。
至此环境搭建成功。
0X02 SQL注入RBAC 管理系统 使用 Mybatis 框架操作数据库
搜索 $
UserMapper.xml id 为 getFuzzyUserByPage
根据分层架构 ,我们找到对应的 dao 层映射文件
RefiningStone-RBAC(最终版)/src/main/java/com/codermy/myspringsecurityplus/admin/dao/UserDao.java
实现层在 service
Java代码审计-OFCMS
0X01 环境搭建Gitee 下载: https://gitee.com/oufu/ofcms
导入 IEDA ,Maven 根据 pox.xml 自动下载依赖组件创建 ofcms 空数据库
修改
ofcms-master/ofcms-admin/src/main/resources/dev/conf/db-config.properties改为ofcms-master/ofcms-admin/src/main/resources/dev/conf/db.properties
Tomcat 配置
启动,安装CMS
重启容器
安装成功!
0X02 SQL注入漏洞分析漏洞点:ofcms-admin/src/main/java/com/ofsoft/cms/admin/controller/system/SystemGenerateController.java
47 行处,语句直接获取,未经过任何过滤
跟进 update
此处获取数据库资源连接,然后传送sql语句
跟进
pst.executeUpdate 执行了 sql 语句
而这个对象方法只允许执行 ins ...
向日葵RCE漏洞复现
漏洞版本:
向日葵个人版for Windows 11.0.0.33 <=
向日葵简约版 V1.0.1.43315(2021.12)
11.1.1
10.3.0.27372
11.0.0.33162
版本下载:
官方网址下载然后抓包遍历ID即可
工具下载:
https://github.com/Mr-xn/sunlogin_rce
procexp64下载
http://www.xitongzhijia.net/soft/210933.html
第一步:获取向日葵监听的端口
打开 procexp ,右键点击向日葵,选中属性
监听端口
端口号:53921
第二步:获取 verify_string 值
http://10.211.55.6:53921/cgi-bin/rpc?action=verify-haras
verify_string: 0243aFf9X19BCrB9vrfSLludf4jc9lai
第三步:拼接 payload 执行命令
http://10.211.55.6:53921/check?cmd=ping..%2F..%2F..%2F..%2F. ...
Java代码审计-Log4j2漏洞分析
0X01 Log4j2 组件Log4j2 日志组件是一款比较优秀的 Java程序日志监控组件,同属于 Java全生态中的基础组件之一。最近被爆出 RCE 漏洞,据不完全统计,影响多达60644个开源软件,涉及相关版本软件包更是达到321094个。且利用方式简单,之前测 XSS 的点,都可以用来插入恶意代码,被称为核弹级漏洞。
0X02 RMIRMI 概念要分析 Log4j2 漏洞 就得了解一下 RMI 和 JNDI。
RMI 全称 Remote Method Invocation,是 JAVA 实现远程过程调用的应用程序编程接口,存储于 java.rmi 包中,使用期方法调用对象时,必须实现 Remote远程接口。它可以让客户机上运行的程序调用远程服务器上的对象。而远程方法调用的特性可以让开发者能够在网络环境中分布操作。RMI 宗旨就是尽可能简化远程接口对象的使用。
RMI 三层架构
客户端
存根/桩(Stub):远程对象在客户端上的代理。
远程引用层(Remote Reference Layer):解析并执行远程引用协议。
传输层(Transport):发送调用、传递远程方法参数、接 ...
Java反序列化-shiro-721反序列化(五)
收集了网上很多关于 shiro 721序列化的文章,发现都有讲加密这一块,所以也准备跟着文章来学习一下。
0X01 AES 加解密目前的密码体制可以分为两种:“对称加密” 和 “非对称加密”
对称加密 – 加解密密钥都是同一个,既可加密又可解密
- AES
- DES
非对称加密 – 一对密钥由公钥和私钥组成,公私钥都可用来加解密。私钥不能外泄,公钥可以交给所有请求方
RSA
ECC
Rabin
背包算法
Elgamal
……
目前对称加密 AES 和非对称加密 RSA 使用的比较广泛。
AES 算法我们都知道 shiro 是用的 AES 加密方法,AES 属于分组加密算法
明文长度固定为 128 位。
密钥长度可以是 128、192 、256 位
分组加密模式共有五种
ECS ( Electronic Codebook Book , 电话本模式 )
CBC ( Cipher Block Chaining , 密码分组链接模式 )
CTR ( Counter , 计算器模式 )
CFB ( Cipher FeedBack , 密码反馈模式 )
OFB ( Output ...
Java反序列化-shiro-550反序列化漏洞(四)
0X01 shiro-550反序列漏洞最近审计到一套CMS,发现存在shiro反序列化漏洞,但之前没有分析复现过,审计的时候比较吃力。所以有了本篇文章,迟早要学,不如就现在。
环境搭建下载地址:https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4
注意:主目录是shiro-root-1.2.4/samples/web
修改 shiro-root-1.2.4/samples/web 目录下的 pox.xml,添加如下内容
<!-- 需要设置编译的版本 --> <properties> <maven.compiler.source>1.6</maven.compiler.source> <maven.compiler.target>1.6</maven.compiler.target> </properties>... <dependencies> <dep ...
Java代码审计-MCMS
0X01 环境搭建项目地址下载:https://gitee.com/mingSoft/MCMS
当前版本:5.2.5 也可下载的releases版本 5.2.4
PS:注意Mysql版本需大于5.6以上
创建一个mcms数据库,并且导入doc/数据库文件
在application-dev中修改数据库账户密码
运行MSApplication.java main方法,如下图,环境无问题
管理员:msopen/密码:msopen
外置环境配置搭建Tomcat环境
注意:环境最好使用1.8版本,作者使用15版本,打包war时一直报错,版本不对,最后将1.8设置默认版本后才成功。
编辑 pox.xml 修改打包方式为 war 包
<!-- 打包成war包 --><packaging>war</packaging>
添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-start ...
Java反序列化-反射(二)
0x01 Java反射
Java反射(Reflection)是Java非常重要的动态特性,通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等信息,还可以动态创建Java类实例、调用任意的类方法、修改任意的类成员变量值等。Java反射机制是Java语言的动态性的重要体现,也是Java的各种框架底层实现的灵魂。
- 摘抄知识盒子园长代码审计系列
什么是反射?Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法,本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。
Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁。
反射的原理如下图
1、创建一个·Per ...
Java反序列化-基础(一)
OXO1 序列化介绍 序列化(Serializable)是将数据对象转换成有序的字节流,便于保存在内存、文件、数据库中。而当需要使用数据时通过反序列化(Deserializable)的操作将字节流对象重建。
在Java中序列化使用 ObjectiOutputStream类的writerObject()方法实现,反序列化使用ObjectInputStream类的readObjetion()方法实现。
ObjectiOutputStream 对象序列化流
writerObject() 序列化
ObjectInputStream 对象反序列化流
readObjetion() 反序列化
Serializable、Externalizable
标记接口,没有方法或字段,一旦实现该接口,标志该类的对象是可序列化
而序列化的目的是为了让java对象脱离java运行环境的一种手段,可以实现网络传输(RMI RPC),对象持久化存储。
0x02 序列化漏洞原理测试代码:通过下面的小栗子来了解序列化
package com.time.Serializable; ...