56 代码审计-JAVA项目Filter过滤器及XSS挖掘

这里写目录标题

      • Filter过滤器配置启用及查看
      • Demo代码测试引用过滤器测试
    • Jeesns过滤器分析绕过防护代码
      • Struts2框架类过滤器简要分析测试

在这里插入图片描述
过滤器是java里面找漏洞很重要的地方,如果对过滤器不了解的话,对漏洞的验证是很有问题的

看构成就是看过滤器是否在前期源码、项目中,是否有过滤器

看指向指的是对应过滤器的代码指向地方,指向的是内部文件还是外部的库文件,这样子是便于我们快速找到对应的代码进行分析

看过滤器在这里的配置信息,一般看两点,一个是触发请求、一个是触发规则,这两点主要是根据请求和规则思考有没有绕过的可能性

看配置和看代码都是在思考过滤的情况和去思考绕过思路的

简要来讲就是一句话,看构成,看指向,看配置,看代码-寻绕过

在javaweb项目中,一般在运行的过程中会经过过滤器,才会到下面去,过滤器在你还没有信息返回的时候,就已经到了过滤器,就相当于前期已经将你相关请求的东西开始进行过滤了,过滤完之后,才会带到后面的数据处理中,所以过滤器是在漏洞或者攻击的过程中,会进行拦截的一个地方,这个地方过滤器写的比较严谨的话,会阻止大部分的攻击,也是我们后期判断漏洞是否真实存在,验证这个漏洞有效性的时候,就是要根据过滤器的规则进行分析,所以过滤器是非常重要的

Filter过滤器配置启用及查看

web.xml查看Filter过滤器
名字,对应class,触发URL,生效规则等

我们打开java项目,框架对应的配置性文件里面会直接标识有没有过滤器
在这里插入图片描述
我们进行文件的搜索找到web.xml
在这里插入图片描述
打开web.xml文件,其中shiro是过滤器的名字,class是代码储存的地方
在这里插入图片描述
自身的程序代码是内部,由于代码会引用一些东西,属于外部,外部就是有些库
在这里插入图片描述
我们可以在外部里面找以下有没有对应的名字
在这里插入图片描述
初次打开jar文件是打不开的,右键选中jar,选中加载,把它编译进去
在这里插入图片描述
在这里插入图片描述
这个地方就是它过滤器代码储存的地方
在这里插入图片描述
mapping属于路由类东西的设置,后面又设置名字、访问路径,就是说请求admin目录的时候,就会触发shiro控制器,这里是可以指定单个文件、目录、后缀名,打个比方后面加个*.jsp,就是请求admin后面加个任意的jsp文件,触发过滤器里面对应的代码;下面就是以什么形式触发

在这里插入图片描述

Filter是JavaWeb中的过滤器,用于过滤URL请求。通过Filter我们可以实现URL请求资源权限验证、用户登陆检测等功能。

Filter是一个接口,实现一个Filter只需要重写 init 、doFilter、destroy 方法即可,其中过滤逻辑都在doFilter 方法中实现。

Filter和Servlet一样是Java web中最为核心的部分,使用Servlet和Filter可以实现后端接口开发和权限控制,当然使用Filter机制也可以实现MVC框架,Struts2 实现机制就是使用的Filter。

Filter的配置类似于Servlet,由 和 两组标签组成,如果Servlet版本大于3.0同样可以使用注解的方式配置Filter。

过滤器里面有比较关键的三串比较重要的代码,init初始化
在这里插入图片描述
doFilter过滤器核心代码
在这里插入图片描述
destroy销毁
在这里插入图片描述
一般要初始化之后,然后到核心代码这里来,最后销毁它就完事了

只要请求项目的任意地址都会触发规则
在这里插入图片描述

Demo代码测试引用过滤器测试

我们这边来个简单的小实例,我们打开项目,打开web.xml
在这里插入图片描述
这边有个过滤器,一般外部库都会有框架的名字,这个名字显然不在外部库
在这里插入图片描述
这是它过滤器对应的代码地方
在这里插入图片描述
在这里插入图片描述
访问这个目录下面的任意文件,都能触发到过滤器的名字,触发里面的请求
在这里插入图片描述
我们现在把项目启动起来,项目在启动的过程中,就会触发过滤器的初始化
在这里插入图片描述
现在我们随便访问一个地址,访问它的时候并没有提示我们什么
在这里插入图片描述
过滤器初始化代码已经被执行了,核心代码没有执行,因为没有访问servlet目录
在这里插入图片描述
我们访问一下servlet目录下的文件
在这里插入图片描述
我们找到xss.jsp没有这个选项
在这里插入图片描述
我们看调式信息,就是触发代码了
在这里插入图片描述

Jeesns过滤器分析绕过防护代码

Jeesns是java的一套程序开发的,打开Jeesns项目
在这里插入图片描述
首先找配置文件,一般是找关键性目录
在这里插入图片描述
我们看到这里有XssSqlFilter过滤器,很明显就是过滤xss和sql注入的,看过滤器文件名就知道是内部的
在这里插入图片描述
其实这个过滤就是创建对象,对象叫XssWrapper,它的核心代码在XssWrapper对象里面
在这里插入图片描述
我们选中对象名字,点击查找使用,跟踪代码
在这里插入图片描述
因为它的核心代码在jar包里面,这个jar包是我们反编译才能看到的
在这里插入图片描述
点击添加为库
在这里插入图片描述
打开里面也是搜不到XssWrapper对象的
在这里插入图片描述
我们这边一个个打开看一下
在这里插入图片描述
Jeesns1.3之前发现漏洞,1.4.2紧急修复漏洞,然后你具体看一下两个规则的具体写法,请求的方法名不一样
在这里插入图片描述
因为这边不是jar包,我们直接点击查找引用
在这里插入图片描述
这边构造函数就是它原始申明的地方,双击构造函数
在这里插入图片描述
自动定位到XssHttpServletRequestWrapper函数的地方
在这里插入图片描述
它使用的是替换方法,所以它是不严谨的,因为它过滤的是关键字
在这里插入图片描述
这两个事件就可以触发xss的代码,因为它在这里申明关键字,里面没有包含下面这两个,所以就会触发

<svg/onLoad=confirm(1)>
<img src="x" ONERROR=confirm(0)>

我们看1.4.2这里就加了正则表达式,然后还加了些其它东西
在这里插入图片描述
请求任意文件或任意目录,它这里过滤器过滤的是url请求,然后请求里面含有参数,所以它其实检测的就是url请求参数的东西,你可以看到它过滤器框架里面ServletRequest request的写法,所以这里面就是请求和回复,只要请求就会收到回复
在这里插入图片描述
我们找个输出地方,即可测试xss,因为跨站漏洞本身漏洞的原因,就是输出地方存在的问题,所以只要找输出的函数,就能找到漏洞存在的地方

java输出函数网上找一下就完事了,你思路懂,你网上搜资料你也会明白
在这里插入图片描述
全局搜索输出函数
在这里插入图片描述
也可以单独针对某个模块去找
在这里插入图片描述
我们找有打印的地方,打印的地方存在变量,把变量给传回去就完事了

漏洞的poc:https://www.seebug.org/vuldb/ssvid-97940
在这里插入图片描述
单独的过滤代码写到单独的过滤器里面,这样子是很便于你后期的开发维护,只要你的过滤器访问规则被绕过了,那么你就可以直接修改对应地方,不用在每个要接受验证的代码中进行修改,这肯定不现实,所以这样设计是便于后期维护的,是一种先进的写法

apk可以反编译,反编译成jar包,其实也可以进行代码审计,但是一般apk是app文件,就是我们的移动客户端,移动客户端就是app里面涉及到网站源码,如果没有,就是单纯逻辑上面的代码,不会设计到web层面的代码以及安全,如果app里面就是一些web框架在里面,app打开就是我们访问网站的模版,可能里面就是类似javaweb

Struts2框架类过滤器简要分析测试

有使用框架和没使用框架最大的区别就是构成这里,不同的框架他们的网站配置文件命名是不一样的,可以去网上搜都有的

框架的指向全在外部,文件核心代码全在外部,不可能在内部,因为你用到框架,框架自身是有它自带的过滤器的,框架就好比我们的thinkphp,有它自身的过滤规则

它们的配置请求规则也会不一样,一旦出现框架类的话,就会跟常规有区别,但是整体思路不会有问题的

载入struts2项目
在这里插入图片描述
我们分析框架有没有漏洞,看过滤器,框架是有自身的东西的,可以引用框架开发网站,框架自身的过滤器是不是要找配置文件,配置文件找不到的话,可以直接进行搜索
在这里插入图片描述
struts2过滤器的命名跟我们前面讲的拦截器的命名是有区别的
在这里插入图片描述
这个配置文件里面没有intercepter
在这里插入图片描述
那就看一下这里有没有加载一些包含文件,所以我们就去找这个文件
在这里插入图片描述
这里已经找到了
在这里插入图片描述
找到过滤器代码,过滤器的名字,过滤器储存的class文件、路径
在这里插入图片描述
找到过滤器规则的文件
在这里插入图片描述
框架一旦加载上去,漏洞一旦发现产生危害大,就是因为框架使用的人多,框架爆出漏洞一般是高危漏洞,因为框架一旦有使用,谁都不能判断框架漏洞是怎么引起的

框架漏洞就是分析它的过滤器挖出来的,把这些文件打开,分析它的过滤规则有没有绕过的

框架类的过滤器首先他的申明不一样,名字也不一样,然后他的过滤器有很多

通过过滤器的名字就能知道大概意思,比如cookie是对cookie相关的东西进行操作,我们看的话,着重看关键字,params这个是java里面代码的接收,请求方式
在这里插入图片描述
有些过滤器它仅仅只是为了网站的正常访问,防止出问题这些,就像我们刚刚说的编码,像那些就不用看了,主要是看关键字的一些过滤器,找到它里面的东西

这个代码给到我,也是要查资料慢慢看,因为我也没学过java,有些代码,我们只能简单去理解他,分析他,大概是什么意思,你要一下子看完,除非你搞过开发,我也看不懂只能去猜,从字面上去猜函数的意思,分析这个过滤器是干嘛的,怎么在过滤

简单的学一下java,了解一下架构是有必要的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/259334.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

苹果发布iOS 17.2.1版本更新

12月20日&#xff0c;苹果向iPhone用户推送了iOS 17.2.1更新。苹果公司在更新日志中称&#xff1a;“本更新包含了重要的错误修复&#xff0c;并解决了某些情况下电池电量较预期更快耗尽的问题。” 据报道&#xff0c;iOS 17系统在发布初期便出现了一系列问题&#xff0c;如发…

Unity中Animator组件Runtime控制动画的正向和反向播放

最初的想法是希望能够完全不改变美工的工作流程&#xff0c;通过代码解决所有问题。但是以笔者目前的认知水平还不行&#xff0c;还得麻烦一下美工&#xff0c;郁闷。 本来以为Animator.speed这个值设置为负数就可以倒播动画了&#xff0c;但是实际上设置为小于0的数和0没有区别…

阿里云登录镜像仓库报错: Error response from daemon: Get https://

阿里云登录镜像仓库报错: Error response from daemon: Get https:// 1. 故障现象 开发反应自用笔记本连接镜像仓库是正常的,但通过服务器连接镜像仓库一直失败. 报错信息如下: Error response from daemon: Get https://registry.cn-hangzhou.aliyuncs.com/v2/: unauthoriz…

计组之映射方式题解

标记位&#xff1a;直接映射中&#xff0c;cache的0 同时指向0&#xff0c;8&#xff0c;此时标记位区分0&#xff0c;8 1个字节8 bit位 1. 主存物理地址&#xff1a;32位计算机 or 0x1234E8F8 共8位&#xff0c;4*832位 标记主存物理地址 - cache行号 - 块内地址 2. 有效位&a…

用23种设计模式打造一个cocos creator的游戏框架----(二十二)原型模式

1、模式标准 模式名称&#xff1a;原型模式 模式分类&#xff1a;创建型 模式意图&#xff1a;用原型实例指定创建对象的种类&#xff0c;并且通过复制这些原型创建新的对象 结构图&#xff1a; 适用于&#xff1a; 1、当一个系统应该独立于它的产品创建、构成和表示时 2、…

HarmonyOS:Neural Network Runtime对接AI推理框架开发指导

场景介绍 Neural Network Runtime 作为 AI 推理引擎和加速芯片的桥梁&#xff0c;为 AI 推理引擎提供精简的 Native 接口&#xff0c;满足推理引擎通过加速芯片执行端到端推理的需求。 本文以图 1 展示的 Add 单算子模型为例&#xff0c;介绍 Neural Network Runtime 的开发流…

字符串逆序输出

逆序输出就是本来abc输出的&#xff0c;然后我想让他输出成cba&#xff0c;那么我们还是要用到for循环&#xff0c;只不过原先是从零开始往上加&#xff0c;这回呢&#xff0c;是从上面往下减 我们观察上面这个图片&#xff0c;我们想要输出olleh&#xff0c;那么我们就要从4开…

OpenHarmony 启动流程优化

目前rk3568的开机时间有21s&#xff0c;统计的是关机后从按下 power 按键到显示锁屏的时间&#xff0c;当对openharmony的系统进行了裁剪子系统&#xff0c;系统app&#xff0c;禁用部分服务后发现开机时间仅仅提高到了20.94s 优化微乎其微。在对init进程的log进行分析并解决其…

三相异步电机动态数学模型推导及矢量控制仿真

文章目录 **原文链接&#xff0c;点击跳转**三相异步电机动态数学模型及矢量控制仿真1、异步电机三相方程2、坐标变换3、磁链3/2变换推导4、两相静止坐标系下的方程5、两相旋转坐标系下的方程6、以 ω-is-Ψr 为状态变量的状态方程7、矢量控制及 matlab 仿真 原文链接&#xff…

吴恩达深度学习intuition

这里是看吴恩达课程的一些记录和联想&#xff08;因为以前听过&#xff0c;因此不会很细致&#xff0c;只做个人记录&#xff09; 课程链接 首先提到training set, validation set (dev set)&#xff0c;test set的分割问题。老师提到&#xff0c;最常用的划分方法传统方法是…

Python 正则表达式入门:轻松掌握字符串匹配的艺术

Python 正则表达式入门&#xff1a;轻松掌握字符串匹配的艺术 引言&#xff1a;什么是正则表达式&#xff1f;基础知识&#xff1a;正则表达式的语法和规则Python中的正则表达式&#xff1a;re模块的使用实战应用&#xff1a;常见的正则表达式案例最佳实践与常见错误结语&#…

听GPT 讲Rust源代码--src/tools(16)

File: rust/src/tools/rust-analyzer/crates/ide-completion/src/completions/use_.rs rust-analyzer是一个基于Rust语言的IntelliSense引擎&#xff0c;用于提供IDE自动补全、代码导航和其他代码编辑功能。在rust-analyzer的源代码中&#xff0c;rust/src/tools/rust-analyzer…

hive企业级调优策略之分组聚合优化

测试用表准备 hive企业级调优策略测试数据 (阿里网盘下载链接)&#xff1a;https://www.alipan.com/s/xsqK6971Mrs 订单表(2000w条数据) 表结构 建表语句 drop table if exists order_detail; create table order_detail(id string comment 订单id,user_id …

Axure中如何使用交互样式交互事件交互动作情形

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、Axure中交互样式 1、什么是交互样式&#xff1f; 2、交互样式的作用&#xff1f; 3、Axure中如何…

自动化测试工具选择指南

随着软件开发周期的不断缩短和需求的增加&#xff0c;自动化测试变得愈发重要。然而&#xff0c;选择适合项目的自动化测试工具并非易事。以下是一些指导原则&#xff0c;帮助你在众多自动化测试工具中做出明智的选择。 1. 项目需求分析 在选择自动化测试工具之前&#xff0c;首…

JRT打印元素绘制协议整合PDF

打印不光要能打印内部的单据&#xff0c;对于检验的打印还有外送回传的PDF报告也需要能够打印&#xff0c;所以需要把打印PDF文件整合进来&#xff0c;为此给打印元素绘制协议增加PDF类型的元素。 定义如下&#xff0c;由绘制协议按地址下载文件后和其他打印元素整合&#xff…

Java中Integer和int的区别

文章目录 一、介绍二、不同点三、相同点四、使用equals()和的区别五、解惑 一、介绍 各位小伙伴们无论在工作还是学习中&#xff0c;与Integer都有着过硬的交情&#xff0c;我说的没错吧&#xff0c;大家都知道他可以表示一个整数&#xff0c;而且也知道可以表示整数的还有int…

网工内推 | 上市公司中级网工,思科、华为认证优先,有带薪年假

01 新晨科技 招聘岗位&#xff1a;中级网络工程师 职责描述&#xff1a; 1. 负责公司网络系统的规划、设计、实施、维护和优化&#xff1b; 2. 负责网络设备的选型、采购、安装、配置和调试&#xff1b; 3. 负责网络安全策略的制定和实施&#xff0c;保障公司网络安全&#xf…

C# 将 Word 转化分享为电子期刊

目录 需求 方案分析 相关库引入 关键代码 Word 转 Pdf Pdf 转批量 Jpeg Jpeg 转为电子书 实现效果演示 小结 需求 曾经的一个项目&#xff0c;要求实现制作电子期刊定期发送给企业进行阅读&#xff0c;基本的需求如下&#xff1a; 1、由编辑人员使用 Microsoft Word…

Lucene

目录 1. Lucene概述 1.1 什么是Lucene 1.2 Lucene的原理 2. Lucene的使用 2.1 准备 2.2 生成索引 2.3 全文检索 2.4 多Field检索 2.5 中文分词器 2.6 停用词 2.7 是否索引,是否储存 1. Lucene概述 1.1 什么是Lucene Lucene是一个全文搜索框架&#xff0c;而不是应用…
最新文章