JAVA代码审计XSS及Filter动态代理过滤

2023-11-08

1.介绍

最近写了个小玩意儿,主要功能为用户信息管理,例如新增 删除 添加等。但在没写过滤之前,全是xss

所以拿出来给大家进行简单分析,后续通过动态代理进行过滤。

2.代码分析

这里就只分析用户添加的页面了,可以看到在未做任何过滤的情况触发XSS

1635318350_6178fa4ee99b3f091a9f8.png!small

在add.jsp页面发现了Servlet

1635318472_6178fac8ae1c09d174c75.png!small

之后跟进该Servlet,通过获取用户输入进行发送到Service,Service在发送到Dao进行处理1635318527_6178faff9e02fa45ba010.png!small[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-15nqFJFM-1691635152462)(https://image.3001.net/images/20211027/1635318628_6178fb649bf28522ac167.png!small)]

Dao层用的是JDBCtemplate实现,经过测试发现如果使用PreparedStatement连接数据库的话,PreparedStatement会过滤掉常见的XSS代码

<script>alert(xss)</script><img src=x onerror=alert(1) />...

但是PreparedStatement过滤一般常用的确实可以,但是鸡肋一点的话,就很轻松绕过了。

<input onmouseover=alert(1)>//鸡肋点的语句...

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Ue0fj33-1691635152466)(https://image.3001.net/images/20211027/1635318694_6178fba608924b8a0c10a.png!small)]

在AddServlet可以看到,最后进行了重定向,而ListUser就是首页

resp.sendRedirect(“/Students/ListUser”);

跟进AddServlet之后,可以发现该Servlet执行了findALL(),该方法其实就是service层–>Dao层的查询全部用户信息。并存储到了list中。之后设置setAttribute之后进行了请求转发到list.jsp

1635319082_6178fd2a726f07e6959ae.png!small

跟进list.jsp之后,可以发现将用户的信息使用JSTL遍历出并显示。全程毫无过滤。

1635319234_6178fdc270c2c1841e74d.png!small

3.Filter动态代理过滤

这里本人简单写了一下过滤。只过滤了< >标签。后续可以根据自己需求进行改进。

写的很简单,就不多说了。

@WebFilter("/*")
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        ServletRequest servlet = (ServletRequest)Proxy.newProxyInstance(servletRequest.getClass().getClassLoader(), servletRequest.getClass().getInterfaces(), new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

                if(method.getName().equals("getParameter")){
                    String value = (String)method.invoke(servletRequest,args);//获取输入的value
                    value = value.replaceAll(">","*");//将值替换
                    value = value.replaceAll("<","*");
                    return value;
                }else{
                    System.out.println("没有匹配成功");
                }

                return method.invoke(servletRequest,args);
            }
        });
        filterChain.doFilter(servlet,servletResponse);
    }

    @Override
    public void destroy() {

    }
}

之后可以发现过滤成功

1635319548_6178fefc21929ae6af153.png!small?1635319561465

roy() {

    }
}

之后可以发现过滤成功

[外链图片转存中…(img-0Mrfgap9-1691635152475)]

网络安全学习路线

这是一份网络安全从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jmGgmIWr-1691635152477)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

阶段一:基础入门

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p00lxHqK-1691635152479)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

网络安全导论

渗透测试基础

网络基础

操作系统基础

Web安全基础

数据库基础

编程基础

CTF基础

该阶段学完即可年薪15w+

阶段二:技术进阶(到了这一步你才算入门)

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zAKMxQgp-1691635152481)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

弱口令与口令爆破

XSS漏洞

CSRF漏洞

SSRF漏洞

XXE漏洞

SQL注入

任意文件操作漏洞

业务逻辑漏洞

该阶段学完年薪25w+

阶段三:高阶提升

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EP6FUamR-1691635152483)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

反序列化漏洞

RCE

综合靶场实操项目

内网渗透

流量分析

日志分析

恶意代码分析

应急响应

实战训练

该阶段学完即可年薪30w+

阶段四:蓝队课程

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AORk2GVK-1691635152485)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

蓝队基础

蓝队进阶

该部分主攻蓝队的防御,即更容易被大家理解的网络安全工程师。

攻防兼备,年薪收入可以达到40w+

阶段五:面试指南&阶段六:升级内容

img

需要上述路线图对应的网络安全配套视频、源码以及更多网络安全相关书籍&面试题等内容

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA代码审计XSS及Filter动态代理过滤 的相关文章

随机推荐

  • NDK开发——FFmpeg实现视频转YUV、视频转RGB显示、音频转PCM、音频播放、音视频同步

    项目演示 前提准备 编译FFmpeg CMake并能运行 详细可见我博客 下载libyuv库并编译成libyuv so库 用于实现转换RGB格式功能 FFmpeg库简介 avcodec 编解码 包含 avformate 封装格式处理 avf
  • Linux makefile 教程 非常详细,且易懂

    最近在学习Linux下的C编程 买了一本叫 Linux环境下的C编程指南 读到makefile就越看越迷糊 可能是我的理解能不行 于是google到了以下这篇文章 通俗易懂 然后把它贴出来 方便学习 后记 看完发现这篇文章和 Linux环境
  • 烟雾调节器

    先看效果 烟雾调节展示 再看代码
  • 【深度学习基础】损失函数

    深度学习基础 性能评估指标 超参数介绍 损失函数 前言 本文主要总结一下常见目标检测的损失函数以及一些基础的函数 主要损失函数为mask rcnn涉及到的损失函数包括 MSE均方误差损失函数 Cross Entropy交叉熵损失函数 目标检
  • Java项目:设计管理系统(java+SSM+JSP+MYSQL+layui+Maven)

    源码获取 博客首页 资源 里下载 一 项目简述 功能包括 课题管理 学生管理 内容管理 文件管理 提问管理 教师管理 进度管理等等 二 项目运行 环境配置 Jdk1 8 Tomcat8 5 mysql Eclispe IntelliJ ID
  • 新规明确所有APP必须备案!附备案指引

    2023年8月底前 新APP需要先备案才能上线 2024年4月前 存量APP完成备案 未履行备案手续的 不得从事APP互联网信息服务 网络接入服务提供者 分发平台 智能终端生产企业不得为未履行备案手续的APP提供网络接入 分发 预置等服务
  • SQL server 安装问题

    安装sqlserver2008中遇到的一些问题和解决办法 安装过程中遇到restart computer 导致不能成功安装 解决办法 1 打开注册表编辑器 2 找到以下路径 HKEY LOCAL MACHINE SYSTEM Current
  • 2020蓝桥杯省赛Java B组一等奖

    大家觉得写还可以 可以点赞 收藏 关注一下吧 也可以到我的个人博客参观一下 估计近几年都会一直更新 和我做个朋友吧 https motongxue cn 文章目录 A 门牌制作 问题描述 答案提交 代码 B 寻找 2020 问题描述 答案提
  • php用session防CC

  • 带头双向循环链表的增删查改

    带头双向循环链表的增删查改 简介 首先我们来看一下带头双向循环链表的结构示意图 在实际内存中并非是这样的结构 画图是为了我们能更好的理解链表 带头双向循环链表的结构最复杂 一般用在单独存储数据 实际中使用的链表数据结构 都是带头双向循环链表
  • 多机器人路径规划算法及其在CVD算法下的实现

    多机器人路径规划算法及其在CVD算法下的实现 在多机器人协同工作的场景中 路径规划问题是非常重要的 而对于存在障碍物的情况下 Voronoi图算法可以用于寻找机器人的最佳路径 本文将介绍一种基于CVD算法的多机器人路径规划算法 并提供相应的
  • 【MVCC多版本并发控制】MVCC 机制的原理及实现,什么是MVCC,多版本并发控制

    什么是 MVCC MVCC Multiversion Concurrency Control 中文全程叫多版本并发控制 是现代数据库 包括 MySQL Oracle PostgreSQL 等 引擎实现中常用的处理读写冲突的手段 目的在于提高
  • no matching key exchange method found

    问题描述 今天升级Ubuntu系统到16 04之后 之前通过git管理的一个项目add和commit之后无法push到服务器 每次提交都报以下错误 Unable to negotiate with xx xx x xxx port xxxx
  • 2021年数学建模国赛C题问题二详细思路和代码

    2021年数学建模国赛C题问题一详细思路和代码 说明 本思路仅为小编个人思路 其中关于本文中给出的AdaBoost回归预测模型于今年的 国赛参考评分标准有所出入 所以本题思路为个人创新思路 不一定符合评分标准 符号说明 1 问题分析 问题二
  • 深度学习学习日记_FCN_(1) shift_and_stitch

    当网络最后一层输出的 prediciton map size 和 label map size 大小不匹配时 除了bilinea interpolation 等暴力措施 且不采取 unpooling deconvolution 等decod
  • [Shell]文本处理工具(grep,cut,sort,uniq,tee,diff,paste,tr)以及bash的特性

    Shell 提示 Shell脚本基础 第一章 文本处理工具以及bash的特性 文章目录 Shell TOC 文章目录 前言 一 文本处理工具 1 grep工具 2 cut工具 3 sort工具 4 uniq工具 二 使用步骤 1 引入库 2
  • CORS解决跨域问题

    1 跨域问题 1 1 什么是跨域 跨域是指跨域名的访问 以下情况都属于跨域 跨域原因说明 示例 域名不同 www jd com 与 www taobao com 域名相同 端口不同 www jd com 8080 与 www jd com
  • java命令行运行小记

    JDK6中提供了java io Console类专用来访问基于字符的控制台设备 你的程序如果要与Windows下的cmd或者Linux下的Terminal交互 就可以用Console类代劳 类似System in和System out 但我
  • spawn cmd ENOENT错误处理方法

    点击此电脑 gt 高级系统设置 gt 环境变量 gt 用户变量 gt 点击Path gt 点击新建 gt 添加一行 C WINDOWS system32 gt 重启电脑即可
  • JAVA代码审计XSS及Filter动态代理过滤

    1 介绍 最近写了个小玩意儿 主要功能为用户信息管理 例如新增 删除 添加等 但在没写过滤之前 全是xss 所以拿出来给大家进行简单分析 后续通过动态代理进行过滤 2 代码分析 这里就只分析用户添加的页面了 可以看到在未做任何过滤的情况触发
Powered by Hwhale