真JAVA代码审计之XSS漏洞

Part1 漏洞案例demo:

没有java代码审计XSS漏洞拿赏金的案例。

所以将就看看demo吧 

漏洞原理:关于XSS漏洞的漏洞原理核心其实没啥好说的,网上一查一大堆。

反射性XSS漏洞

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>XSS Vulnerable</title>
</head>
<body>
<form action="index.jsp" method="post">Enter your name: <input type="text" name="name"><input type="submit">
</form><%String str = request.getParameter("m");<%=str%>
%></body>
</html>

图片

存储型XSS漏洞

存储型XSS漏洞和反射XSS漏洞的核心唯一区别就在于,字段入了数据库,然后又将页面取了出来。

// 留言板页面上的表单提交处理代码
@WebServlet("/postComment")
public class CommentServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 从表单中获取用户输入的评论内容String comment = request.getParameter("comment");// 将评论内容存储到数据库中saveCommentToDatabase(comment);// 重定向回留言板页面response.sendRedirect("message_board.jsp");}// 将评论内容存储到数据库中的函数private void saveCommentToDatabase(String comment) {try {// 假设这里使用 JDBC 连接数据库,并执行 SQL 语句将评论内容存储到数据库中Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");Statement statement = connection.createStatement();String sql = "INSERT INTO comments (content) VALUES ('" + comment + "')";statement.executeUpdate(sql);connection.close();} catch (SQLException e) {e.printStackTrace();}}
}

message_board.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>留言板</title>
</head>
<body><h1>留言板</h1><!-- 留言板评论 --><div id="comments"><%-- 这里使用 JSP 脚本块来动态生成评论 --%><% // 假设从数据库中获取留言板评论的数据列表List<String> comments = getCommentsFromDatabase();for (String comment : comments) {%><div class="comment"><%= comment %></div><% } %></div>
</body>
</html>

其实漏洞demo,xss的单独漏洞实在没啥可写的

图片

漏洞组合经典漏洞CS CVE-2022-39197

经典案例CS RCE漏洞 

其实这个洞在笔者看来核心不是XSS漏洞。

核心还是反射机制导致的问题 漏洞的具体细节这里就不细跟细写了,给大家简单讲一讲原理:

1.)objectview对象 可以利用反射机制动态的加载classid的类名,且当实例化对象归属于Component的子类或实现类,且类型为string类型以及为public修饰符修饰时,可以进行控制setxxx方法对值进行控制

  <object classid="javax.swing.JLabel"><param name="text" value="sample text"></object> 

如上面这个即反射动态加载javax.swing.JLabel这个类名。

2.)apache的batik包中即org.apache.batik.swing.JSVGCanvas对象 满足上面的条件,导致利用set方法可控制uri值及set方法中存在

loadSVGDocument方法可以去引用svg进而去调用loadScript方法,而该loadScript方法中如果类型为application/java-archive时,可引入外部一个jar包,且cs可将该jar包实例化为一个对象,进而导致代码执行。

3.)CS的jlabel存在无参数构造方法,可以进行控制setText的值。进而实现我们展示进程名,主机名这些。

即完整的链:

jlabel中setText控制字段名-->设置字段名为object去引用JSVGCanvas对象调用set方法-->进而控制loadSVGDocument方法-->控制加载svg标签-->svg标签去加载jar包进行实例化,进而代码执行。

实际利用脚本:cve-2022-39197 cs利用

https://github.com/its-arun/CVE-2022-39197

Part2 进一步分析与思考

漏洞自动化挖掘:

推荐利用fortify fortify效果:对于XSS漏洞的审计追踪还是较为友好。

匹配思路:

如果一定要使用匹配思路 就经典正则匹配下面的规则,限定为2条,3条规则即可。

getParamter
<%=
param.
${
典型jstl语法思路写的
<c:out
<c:if
<c:forEach
ModelAndView
ModelMap
Model
request.getParameter
request.setAttribute

漏洞进一步思考:

其实XSS的漏洞本身单独从一个漏洞的角度而要,利用效果其实不会特别好。

但是结合其他漏洞,就可以达到1click实现RCE漏洞的效果,如宝塔rce,小皮面板rce,cs rce,蚁剑反制,goby反制均为如此。

除此之外,还可以达到结合csrf实现蠕虫,同源策略问题实现账户接管漏洞,具体就得看怎么玩了。

Part3 后言:

最近看到了很多安全圈的瓜,什么不如保安。

自媒体,社群,朋友圈等等铺天盖地的宣传,安全已死的概念。

怎么说呢?

不太爱评论一些东西,但是还是想说

别太焦虑,也没必要焦虑。

有那闲工夫不如多学点东西来的有趣,任何行业再不好都有人能扎根,再好也都会有人淘汰。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2. 感知机算法和简单 Python 实现

目录 1. 感知机介绍 1.1 背景 1.2 定义 1.2.1 权重 1.2.2 阈值 1.2.3 偏置 1.3 逻辑处理&#xff1a;与门、非门、或门 2. 感知机实现 2.1 与门的 Python 实现 2.2 非门的 Python 实现 2.3 或门的 Python 实现 1. 感知机介绍 1.1 背景 感知机1957年由 Rosenblatt 提…

【全开源】JAVA国际版多语言语聊大厅语音聊天APP系统源码

国际版多语言语聊大厅语音聊天APP系统&#xff1a;跨越语言的界限&#xff0c;连接世界的声音 在全球化日益加速的今天&#xff0c;语言不再是沟通的障碍。我们很高兴地宣布&#xff0c;全新的“国际版多语言语聊大厅语音聊天APP系统”已经正式上线&#xff0c;旨在为全球用户…

【千帆AppBuidler】零代码构建AI人工智能应用,全网都在喊话歌手谁能应战,一键AI制作歌手信息查询应用

欢迎来到《小5讲堂》 这是《千帆平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景创建应用平台地址随机生成快速创建应用头像应用名称应用描述…

【基于element ui的color选择器】基于element ui的color选择器

技术版本如下&#xff1a; vue 2.6.14 less 3.13.1 element-ui 2.15.6 less-loader 5.0.0需求&#xff1a; 支持RGB、HEX编码、支持吸管吸取颜色、颜色选择器、颜色模板、透明度、色板、线性渐变颜色 效果图&#xff1a; 1.引入选择器的color-all文件 <template><…

[vue] nvm

nvm ls // 看安装的所有node.js的版本nvm list available // 查显示可以安装的所有node.js的版本可以在可选列表里。选择任意版本安装&#xff0c;比如安装16.15.0 执行&#xff1a; nvm install 16.15.0安装好了之后。可以执行&#xff1a; …

鸿蒙内核源码分析 (内核启动篇) | 从汇编到 main ()

这应该是系列篇最难写的一篇&#xff0c;全是汇编代码&#xff0c;需大量的底层知识&#xff0c;涉及协处理器&#xff0c;内核镜像重定位&#xff0c;创建内核映射表&#xff0c;初始化 CPU 模式栈&#xff0c;热启动&#xff0c;到最后熟悉的 main() 。 内核入口 在链接文件…

FreeRTOS开发一、FreeRTOS移植

1、FreeRTOS 源码下载 两个下载链接&#xff0c; 一个是官网&#xff1a;http://www.freertos.org/&#xff0c; 另外一个是代码托管网站&#xff1a;https://sourceforge.net/projects/freertos/files/FreeRTOS/ 打开代码托管网站链接&#xff0c;我们选择FreeRTOS 的版本 V9…

全域运营平台是什么?优缺点有哪些?

当下&#xff0c;全域运营赛道逐渐兴盛&#xff0c;全域运营服务商的数量也开始呈现爆发趋势。在此背景下&#xff0c;很多人都对某些品牌的全域运营平台优缺点产生了浓厚的兴趣。由于小编只使用过微火全域运营平台&#xff0c;因此&#xff0c;本期会着重分析微火运营平台的优…

【软考】设计模式之桥接模式

目录 1. 说明2. 应用场景3. 结构图4. 构成5. 适用性6. 优点7. 缺点8. java示例 1. 说明 1.将抽象部分与其实现部分分离&#xff0c;使它们都可以独立地变化。2.桥接模式&#xff08;Bridge Pattern&#xff09;属于对象结构型模式&#xff0c;又称为柄体&#xff08;Handle an…

Leetcode2105. 给植物浇水 II

Every day a Leetcode 题目来源&#xff1a;2105. 给植物浇水 II 解法1&#xff1a;双指针 设 Alice 当前下标为 i&#xff0c;初始化为 0&#xff0c;水量为 a&#xff0c;初始化为 capacityA&#xff1b;Bob 当前下标为 j&#xff0c;初始化为 n-1&#xff0c;水量为 b&am…

力扣98.验证二叉搜索树

法一&#xff08;自己思路&#xff0c;复杂了&#xff09;&#xff1a; from collections import dequeclass Solution(object):def isValidBST(self, root):""":type root: TreeNode:rtype: bool"""queue deque()if root.left!None:queue.app…

FOSS全闪对象存储--与AI/ML相向而行

行业解读需求剖析 目前&#xff0c;随着AI/ML技术得到了快速的发展及应用&#xff0c;AI/ML系统对底层高速数据访问的需求也日趋强烈&#xff0c;虽然当前业界有多种解决方案&#xff0c;但都存在一些成本或性能方面的挑战&#xff0c;就目前常用的文件存储系统来说&#xff0…

win10共享文件夹到ubuntu22

win10共享文件夹 新建用户 新建用户、设置密码。避免共享给EveryOne&#xff0c;导致隐私问题。 点击左下角的开始菜单&#xff0c;选择“设置”&#xff08;WinI&#xff09;打开设置窗口。在设置窗口中&#xff0c;搜索或直接点击“账户”进入账户设置。在账户设置中&…

机器学习中常用的几种距离——欧式、余弦等

目录 一、欧式距离&#xff08;L2距离&#xff09;二、曼哈顿距离&#xff08;L1距离&#xff09;三、汉明距离四、余弦相似度 一、欧式距离&#xff08;L2距离&#xff09; &#xff08;1&#xff09;二维空间的距离公式&#xff08;三维空间的在这个基础上类推&#xff09;&…

Windows本地部署直播录屏利器Bililive-go并实现远程添加直播间录屏

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 1. Bililive-go与套件下载1.1 获取ffmpeg1.2 获取Bililive-go1.3 配置套件 2. 本地运行测试3. 录屏…

基于单片机的光照检测系统—光敏电阻

基于单片机的光照检测系统 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.光敏电阻实时采集环境光照值&#xff1b; 2.采用ADC0804将模拟值转换为数字量&#xff1b; 3.四位数码管显示当前的光照…

Java JDK下载安装教程(2024年)

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

金士顿硬盘误删数据不用慌,这些恢复方法帮你忙

在数字化日益盛行的今天&#xff0c;硬盘作为存储数据的重要设备&#xff0c;其安全性与稳定性显得尤为关键。然而&#xff0c;即便是品质卓越的金士顿硬盘&#xff0c;也难免会遇到误删除数据的尴尬情况。面对这种情况&#xff0c;许多用户往往感到手足无措&#xff0c;甚至产…

LLM Agent智能体综述(万字长文)

前言 &#x1f3c6;&#x1f3c6;&#x1f3c6;在上一篇文章中&#xff0c;我们介绍了如何部署MetaGPT到本地&#xff0c;获取OpenAI API Key并配置其开发环境&#xff0c;并通过一个开发小组的多Agent案例感受了智能体的强大&#xff0c;在本文中&#xff0c;我们将对AI Agent…

Franz Electron + React 源码启动运行填坑指南

环境要求 安装miniconda python 环境electron/rebuild用得着&#xff0c;miniconda 默认自带的 python 是 3.11 版本&#xff0c;比较新&#xff1b; 安装virsual studio 2019 要把C桌面相关的都安装了&#xff0c;大概需要20G&#xff0c;不要安装到 C 盘&#xff0c;都安装到…