代码审计——Java过滤器

 

目录

必备知识:

案例一

1、xml文件

2、对应指向

案例二

1、xml配置

2、分析代码

 

案例3

1、xml文件

 2、找到过滤规则

案例4:


代码审计——Java过滤器_第1张图片

看构成——>指向——>配置——>寻绕过

必备知识:

  1. Filter是JavaWeb中的过滤器,用于过滤URL请求。通过Filter我们可以实现URL请求资源权限验证、用户登录检测等功能。
  2. Filter是一个接口,实现一个Filter只需要重写init、doFilter、destroy方法即可,其中过滤逻辑都在doFilter方法中实现。
  3. Filter和Servlet一样是JavaWeb中最为核心的部分,使用Servlet和Filter可以实现后端接口开发和权限控制,当然使用Filter机制也可以实现MVC框架,Struts2实现机制就是使用的Filter。
  4. Filter的配置类似于Servlet,由两组标签组成,如果Servlet版本大于3.0同样可以使用注解的方式配置Filter。

案例一


1、xml文件


        查看web.xml或pom.xml,判断是否存在过滤器

 这样我们就找到了指向:

-->shiro为框架过滤器,指向外部项目库,触发请求为/admin/*地址

2、对应指向


代码审计——Java过滤器_第2张图片

案例二


1、xml配置

代码审计——Java过滤器_第3张图片

  -->jfinal为自主编写过滤器,指向内部项目库,触发请求为/*,即所有地址

2、分析代码

看配置,看代码,寻绕过思路-->找触发规则,可以通过标签找到过滤器代码,主要由init、doFilter、destroy方法构成,其中doFilter方法中是核心代码。

代码审计——Java过滤器_第4张图片

 

案例3


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

JEESNS是一款基于JAVA企业级平台研发的社交管理系统,依托企业级JAVA的高效、安全、稳定等优势,开创国内JAVA版开源SNS先河,JEESNS可以用来搭建门户、论坛、社区、微博、问答、知识付费平台等。

  • 开发语言:JAVA
  • 数据库:MYSQL
  • JAVA开发框架:SpringBoot2+Mybatis
  • 前台前端开发框架:ZUI+JQuery+Bootstrap
  • 前台模板引擎:Freemarker

1、xml文件

代码审计——Java过滤器_第5张图片

 2、找到过滤规则

代码审计——Java过滤器_第6张图片

 找到了源码,就好办了,不太了解XSS的小伙伴可以看看这个,明显是设置了黑名单,xss原理是输出不受控制,那当我们测试这个漏洞时,可以直接通过功能点测试,也可以全局搜索输出函数println,然后找到对应的接口进行测试。经过测试,发现使用如下payload绕过过滤:


 

jeesns-v1.4修复了这个漏洞,我们看下它的源码,了解它是如何修复的:

感兴趣的可以看看官方的https://www.seebug.org/vuldb/ssvid-97940

代码审计——Java过滤器_第7张图片

 xss过滤使用了正则表达式等方式,过滤规则严谨了许多,但是还是有问题(prompt,其他的都是编码8):

http://localhost:8080/error?msg=%3CScript%3Eprompt(/xss/)%3C/Script%3E

案例4:


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

Struts2拦截器的配置和使用:http://c.biancheng.net/view/4106.html

Struts2拦截器的配置是在 struts.xml 文件中完成的,它通常以 标签开头,以 标签结束。

在struts.xml中找interceptor关键字,没找到,但是发现这个文件引用了struts-default.xml文件

代码审计——Java过滤器_第8张图片

 打开struts-default.xml文件,发现拦截器,通过class 属性找到指定拦截器的实现类,分析过滤逻辑,寻找绕过方法

代码审计——Java过滤器_第9张图片

 

你可能感兴趣的:(渗透与攻防,java,网络安全,安全,web安全,开发语言)