Commons-collections

Shiro RememberMe 漏洞检测的探索之路

点点圈 提交于 2021-01-13 07:28:40
作者:Koalr @ 长亭科技 原文链接: https://mp.weixin.qq.com/s/jV3B6IsPARRaxetZUht57w 本文为作者投稿,Seebug Paper 期待你的分享,凡经采用即有礼品相送! 投稿邮箱:paper@seebug.org 前言 Shiro 是 Apache 旗下的一个用于权限管理的开源框架,提供开箱即用的身份验证、授权、密码套件和会话管理等功能。该框架在 2016 年报出了一个著名的漏洞——Shiro-550,即 RememberMe 反序列化漏洞。4年过去了,该漏洞不但没有沉没在漏洞的洪流中,反而凭借其天然过 WAF 的特性从去年开始逐渐升温,恐将在今年的 HW 演练中成为后起之秀。面对这样一个炙手可热的漏洞,这篇文章我们就来讲下,我是如何从 0 到 1 的将该漏洞的自动化检测做到极致的。 漏洞成因 网上相关分析已经很多,使用了 Shiro 框架的 Web 应用,登录成功后的用户信息会加密存储在 Cookie 中,后续可以从 Cookie 中读取用户认证信息,从而达到“记住我”的目的,简要流程如下。在 Cookie 读取过程中有用 AES 对 Cookie 值解密的过程,对于 AES 这类对称加密算法,一旦秘钥泄露加密便形同虚设。若秘钥可控同时 Cookie 值是由攻击者构造的恶意 Payload,就可以将流程走通,触发危险的

【基础回溯2】Java 基础知识疑难点/易错点

﹥>﹥吖頭↗ 提交于 2021-01-12 06:31:38
本文已经收录自 https://github.com/Snailclimb/JavaGuide (59k+ Star):【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。 阅读原文即可获取最新更新! ps: 之前发过这篇文章,不错后面又对内容重新完善和增加了部分内容,而且为了应读者要求做一个文章分类目录菜单,为了保证文章的质量和准确性重新发送了一遍。 1. 基础 1.1. 正确使用 equals 方法 Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 举个例子: // 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常 String str = null ; if (str.equals( "SnailClimb" )) { ... } else { .. } 运行上面的程序会抛出空指针异常,但是我们把第二行的条件判断语句改为下面这样的话,就不会抛出空指针异常,else 语句块得到执行。: "SnailClimb" .equals(str); // false 不过更推荐使用 java.util.Objects#equals (JDK7 引入的工具类)。 Objects.equals( null , "SnailClimb" ); // false 我们看一下 java.util

Apache Shiro 漏洞检测

余生颓废 提交于 2020-12-17 13:50:37
检测工具 https://pan.baidu.com/s/1qCpm_E_Gw1VqSwkNyaWhEw udwt 检测命令 检测是否使用shiro:java -cp shiro_tool.jar shiro.Check http://url java -jar shiro_tool.jar https://xx.xx.xx.xx nocheck --> skip check target is shiro or not. key= --> set a shiro key. req= --> request body file 抓包保存到文件里,这里写文件名 keys= --> keys file 自定义key的文件,key按行分割,即每行写一个 (存在默认密钥:kPH+bIxk5D2deZiIxcaaaA==攻击者可利用漏洞远程执行任意命令入侵服务器) java -jar shiro_tool.jar https://xx.xx.xx.xx [-] target: http://47.110.35.164:8080 [-] target is use shiro [-] start guess shiro key... [-] use shiro key: kPH+bIxk5D2deZiIxcaaaA== [-] check CommonsBeanutils1 [-] check

Apache的commons-collections4集合工具类CollectionUtils工具类

孤者浪人 提交于 2020-11-10 18:04:48
这篇讲的CollectionUtils工具类是在apache下的, 而不是springframework下的CollectionUtils。 个人觉得CollectionUtils在真实项目中,可以使你的代码更加简洁和安全。 所以需要倒入相关jar包,目前从maven找到最新jar包如下: <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.3</version> </dependency> 一、API常用方法 /** * 1、除非元素为null,否则向集合添加元素 */ CollectionUtils.addIgnoreNull(personList,null); /** * 2、将两个已排序的集合a和b合并为一个已排序的列表,以便保留元素的自然顺序 */ CollectionUtils.collate(Iterable<? extends O> a, Iterable<? extends O> b) /** * 3、将两个已排序的集合a和b合并到一个已排序的列表中,以便保留根据Comparator c的元素顺序。 */ CollectionUtils.collate(Iterable<? extends O> a,

maven处理多版本jar包依赖冲突

拟墨画扇 提交于 2020-11-09 20:09:21
mvn dependency:tree的用法 一.参考文档 https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html https://maven.apache.org/plugins/maven-dependency-plugin/examples/filtering-the-dependency-tree.html https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html 二.查看jar包的间接依赖 1.如果发现某个jar包,自己的pom中并没有定义,想看一下是被哪个jar包间接引用的,两种方法 (1)用mvn dependency:tree>temp/tree.txt,直接输出到当前项目下,然后在idea中打开,搜索要找的jar包名字即可. 这里的 "+-" 和"\-"并没有什么意义,只是为了让分级看起来更直观 参考:https://stackoverflow.com/questions/34006740/what-is-the-difference-between-and-in-maven-dependency

逆向学习 fastjson 反序列化始末

末鹿安然 提交于 2020-10-03 16:20:40
作者:summersec 本文为作者投稿,Seebug Paper 期待你的分享,凡经采用即有礼品相送! 投稿邮箱:paper@seebug.org 前言    Fastjson这款国内知名的解析json的组件,笔者在此就不多介绍,网络上有很多分析学习fastjson反序列化漏洞文章。笔者在此以一种全新角度从分析payload构造角度出发,逆向学习分析fastjson反序列化漏洞始末。 ps:漏洞学习环境以代码均在上传 Github项目 。 初窥Payload    下面是一段最简单 Fastjson的版本号反序列化--URLDNS 代码,观察发现可以提出一个问题 @type 作用? import com.alibaba.fastjson.JSON; public class urldns { public static void main(String[] args) { // dnslog平台网站:http://www.dnslog.cn/ String payload = "{{\"@type\":\"java.net.URL\",\"val\"" + ":\"http://h2a6yj.dnslog.cn\"}:\"summer\"}"; JSON.parse(payload); } } @type的作用    下面是一段实验代码,帮助理解分析 @type 的由来。

防止数据重复提交的6种方法(超简单)!

本秂侑毒 提交于 2020-07-25 10:33:29
有位朋友,某天突然问磊哥: 在 Java 中,防止重复提交最简单的方案是什么 ? 这句话中包含了两个关键信息,第一: 防止重复提交 ;第二: 最简单 。 于是磊哥问他,是单机环境还是分布式环境? 得到的反馈是单机环境,那就简单了,于是磊哥就开始装*了。 话不多说,我们先来复现这个问题。 模拟用户场景 根据朋友的反馈,大致的场景是这样的,如下图所示: 简化的模拟代码如下(基于 Spring Boot): import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RequestMapping("/user") @RestController public class UserController { /** * 被重复请求的方法 */ @RequestMapping("/add") public String addUser(String id) { // 业务代码... System.out.println("添加用户ID:" + id); return "执行成功!"; } } 于是磊哥就想到:通过前、后端分别拦截的方式来解决数据重复提交的问题。 前端拦截 前端拦截是指通过 HTML

Jeecg-Boot2.1.2 版本,手工集成Online在线开发模块(Online表单、Online报表)

∥☆過路亽.° 提交于 2019-12-12 11:01:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Jeecg-Boot2.1.2 版本,手工集成Online在线开发模块(Online表单、Online报表) 友情提醒: 如果你想去掉Online模块,也可以参考此文档 1、ant-design-jeecg-vue前端项目引入 online 依赖 Install安装 yarn add @jeecg/antd-online-re 修改ant-design-jeecg-vue/src/main.js 引入online import "@jeecg/antd-online-re" import '@jeecg/antd-online-re/dist/OnlineForm.css' 2、项目jeecg-boot-module-system 引入 online-form JAR包 修改jeecg-boot\jeecg-boot-module-system\pom.xml,增加依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-re</artifactId> <version>2.1.2</version> </dependency> <dependency> <groupId>org.hibernate</groupId>

java简单的从数据库查询数据使用POI导出excel文件

寵の児 提交于 2019-12-04 14:38:01
个人公众号:Java技术大杂烩,每天10点精美文章准时奉上 使用java简单的从数据库中查询数据,然后写入到excel中,数据的类型为 List<Map<String, Object>>格式的数据。 首先下载POI的jar包,网址: https://poi.apache.org/download.html#POI-3.16-beta2 然后导入jar包到工程下 : 此外还需要 commons-collections4-4.1.jar 和 xmlbeans-2.6.0.jar 两个额外的jar包,因为我使用的是 3.15 版本的,所以 commons-collections4-4.1.jar 需要使用 4.1 版本的,原来使用的是 4.0 ,报错了。 这两个包可以在这里下载: https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans/2.6.0 https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.1 导入的类: import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.BorderStyle; import org