DAY52WEB 攻防-XSS 跨站反射型存储型DOM 型标签闭合输入输出JS 代码解析

ops/2024/10/21 16:31:48/

#知识点:

1、XSS跨站-输入输出-原理&分类&闭合

2、XSS跨站-分类测试-反射&存储&DOM

演示案例:

➢XSS跨站-输入输出-原理&分类&闭合

➢XSS跨站-分类测试-反射&存储&DOM

#XSS跨站-输入输出-原理&分类&闭合

漏洞原理:接受输入数据,输出显示数据后解析执行

基础类型:反射(非持续),存储(持续),DOM-BASE

拓展类型:jquery,mxss,uxss,pdfxss,flashxss,上传xss

常用标签:https://www.freebuf.com/articles/web/340080.html

攻击利用:盲打,COOKIE盗取,凭据窃取,页面劫持,网络钓鱼,权限维持等

安全修复:字符过滤,实例化编码,http_only,CSP防护,WAF拦截等

测试流程:看输出想输入在哪里,更改输入代码看执行(标签,过滤决定)

1.反射型XSS:(简单案例)

常见情况是攻击者通过==构造一个恶意链接的形式==,诱导用户传播和打开,由于**链接内所携带的参数会回显于页面中或作为页面的处理数据源,最终造成XSS攻击。**

简单案例:

设置x值为什么,相应就会解析执行什么

利用嵌套js格式,生成嵌套网址:192.168.137.1:84/xss.php?x=<iframe src="http://www.xiaodi8.com">test</iframe>

如果这段代码被插入到一个网页中,并且该网页的用户受到攻击者的控制,那么该用户的浏览器将加载 http://www.xiaodi8.com 这个地址,并在页面中嵌入一个 <iframe> 元素,显示该地址的内容。

那么就可能导致跨站脚本攻击。攻击者可能会尝试利用这种方式来==窃取用户的信息、劫持用户会话,或者进行其他恶意活动。==

真实的XSS攻击语句,需要考虑输入和输入的格式

输入可能会有过滤,输出可能会有其他符号的拼接造成攻击语句执行失败

可能会造成如下的:攻击语句存在导致格式问题不能被正常解析和执行

解决方式:使用特定的语句进行替换,如**x οnerrοr=”alert(1)”**如果你将 οnerrοr="alert(1)" 嵌入到某个 HTML 元素中,那么当该元素加载失败时(例如图像加载失败、脚本加载失败等),JavaScript 中的 alert(1) 将会被执行,弹出一个带有 “1” 的警告框。

2.存储型XSS:(简单案例)

存储型XSS是持久化的XSS攻击方式,将恶意代码存储于服务器端,

当其他用户再次访问页面时触发,造成XSS攻击。

简单案例:

打开之前创建的留言板功能,依据ip访问http://192.168.137.1:84/gbook.php

xss攻击写入在用户名处==:<script>alert(1)</script>== 内容随便填写,然后提交

发现每次访问页面的时候,都会弹出1的提示框,说明xss攻击成功

3.DOM-base型XSS:(简单案例)

通过**修改原始的客户端代码,受害者浏览器的DOM环境改变,导致有效载荷的执行。**

页面本身没有变化,但由于DOM环境被恶意修改,有客户端代码被包含进了页面并执行。

寻找可操纵的DOM元素: 攻击者会寻找页面上的DOM元素,例如URL参数、cookie、用户输入等,这些DOM元素的值可能会被动态地嵌入到页面中。

构造恶意载荷: 攻击者通过在寻找到的DOM元素中注入恶意代码,构造出一个特殊的输入值。这个输入值在后续被浏览器解释执行时,将导致恶意代码执行。

修改DOM环境: 攻击者通过修改DOM元素的值,或者在页面中插入特殊的HTML或脚本标签,改变了原始的DOM环境。

触发和执行: 当**页面加载或用户与页面交互时,浏览器解析修改后的DOM环境,执行了包含恶意代码的DOM元素,导致攻击生效。**

简单案例:

创建对应的html代码,

通过URL访问该页面http://192.168.137.1:84/domxss.html#https://www.baidu.com)并在**#后面跟上,想要跳转的页面,访问即可成功跳转**

<!--

    dom-xss-test 页面

    

    1. 设置页面标题为 "dom-xss-test"。

    2. 引入 jQuery 库,版本为 1.6.1。

    3. 利用 JavaScript 检查当前 URL 的哈希部分。

    4. 如果存在哈希部分,提取其中的 URL,并将页面重定向到该 URL。

-->

<html>

<head>

    <!-- 设置页面标题 -->

    <title>dom-xss-test</title>

    

    <!-- 引入 jQuery 库 -->

    <script src="https://code.jquery.com/jquery-1.6.1.min.js"></script>

    

    <script>

        // JavaScript 代码

        var hash = location.hash;

        

        // 如果 URL 中有哈希部分

        if(hash){

            // 提取 URL

**//hash.substring(1): 对 hash 字符串调用 substring(1) 方法。

//substring 方法用于提取字符串的一部分,参数为开始索引。

//在这里,从索引 1 开始提取,即去掉了 # 号。**

            var url = hash.substring(1);

            

            // 重定向页面到提取的 URL

            location.href = url;

        }

    </script>

</head>

<body>

    <!-- 页面主体内容 -->

    dom xss test.

</body>

</html>

#XSS跨站-分类测试-反射&存储&DOM

数据交互的地方


get、post、headers
反馈与浏览
富文本编辑器
各类标签插入和自定义

数据输出的地方
用户资料


数据输出


评论,留言等
关键词、标签、说明
文件上传

1.反射型XSS:(某案例测试)鸡肋,需要自己创建构造,还需要目标人物触发条件限制太多

重点:
1.页面输入的数据的是否能被自己掌控
2.进行判断是否是符号没有闭合还是存在过滤

2.存储型XSS:(某案例测试)交互性的方式和功能越多越容易实现入侵

存储型XSS是持久化的XSS攻击方式,将恶意代码存储于服务器端,

当其他用户再次访问页面时触发,造成XSS攻击。

测试靶场:小皮面板(phpStudy 服务器运维管理面板)

登录面板,发现存在==日志操作等功能,提示登录操作等信息 (可以使用XSS恶意代码在用户名上,当管理员访问日志的时候,自动触发==)

3.DOM-base型XSS:(某案例测试)

通过修改原始的客户端代码,受害者浏览器的DOM环境改变,导致有效载荷的执行。

页面本身没有变化,但由于DOM环境被恶意修改,有客户端代码被包含进了页面并执行。

测试对象:使用"edu.cn inurl:url=http" 在谷歌里面搜索对应网址

您提供的搜索字符串 “edu.cn inurl:url=http” 意味着您正在寻找包含 “edu.cn” 且在 URL 中包含 “http” 的网页。这样的搜索字符串通常用于在搜索引擎中查找具有特定特征的网站或页面。

“edu.cn”: 这是一个域名后缀,通常表示网站与教育机构相关,是中国的高等教育机构的域名后缀。通过在搜索中包含 “edu.cn”,您限定了搜索结果仅包含这一类域名。

“inurl:”: 这是搜索引擎查询语法中的一部分,用于指定搜索结果中必须包含特定字符串的 URL。在这里,“inurl:url=http” 表示搜索结果中的 URL 必须包含 “url=http” 这个字符串。

http://www.192011.com/export.php?url=http%3A%2F%2Fwww.nufe.edu.cn%2F(通过官方数据库,锁定URL,如果不是数据库中的网址,禁止替换)


http://www.ppmy.cn/ops/127315.html

相关文章

CICD持续集成交付与持续交付

一 CICD是什么 CI/CD 是指持续集成&#xff08;Continuous Integration&#xff09;和持续部署&#xff08;Continuous Deployment&#xff09;或持续交付&#xff08;Continuous Delivery&#xff09; 1.1 持续集成&#xff08;Continuous Integration&#xff09; 持续集成…

Taro构建的H5页面路由切换返回上一页存在白屏页面过渡

目录 项目背景&#xff1a;Taro与Hybrid开发问题描述&#xff1a;白屏现象可能的原因包括&#xff1a; 解决方案解决后的效果图 其他优化方案可参考&#xff1a; 项目背景&#xff1a;Taro与Hybrid开发 项目使用Taro框架同时开发微信小程序和H5页面&#xff0c;其中H5页面被嵌…

Linux安装、启动Nginx

前言&#xff1a; Nginx 安装 需要 gcc g perl openssl pcre zlib 依赖&#xff0c;没有安装的话需自行安装 一 下载安装Nginx Nginx下载地址如下 下载地址 网盘分享地址 将安装包解压至/usr/local tar -zxvf nginx-1.24.0.tar.gz -C /usr/local/进入/usr/local/nginx-1.2…

【Postman】如何导出导入数据文件?Postman链接分享?

方式一&#xff1a;postman分享链接 1.1 导出 1.2 导入 1.3 导入完成后删除分享的链接 方式二&#xff1a;postman导出导入json 2.1 导出 2.2 post导入json数据

基于BERT的语义分析实现(论文复现)

基于BERT的语义分析实现(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 基于BERT的语义分析实现(论文复现)概述语义分类文本分类情感分类实现原理核心逻辑test_demo.py实现方式&演示效果训练阶段测试阶段概述 在之前的文章中,我们介绍了BERT模型。BER…

Redis-1

Redis简介 Redis是一个基于内存的key-value结构数据库 基于内存存储&#xff0c;读写性能高 适合存储热点数据&#xff08;热点商品&#xff0c;咨讯&#xff0c;新闻&#xff09; 企业应用广泛 Redis的Windows版属于绿色软件&#xff0c;直接解压即可使用。 启动redis方法 在…

ab命令深入解析:ApacheBench性能测试工具

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 引言 在Web开发和运维领域&#xff0c;性能测试是评估服务器和应用性能的重要手段。ApacheBench&#xff08;简称ab&#xff09;是Apache HTTP服务器自带的…

OpenCV高级图形用户界面(6)获取指定窗口中图像的矩形区域函数getWindowImageRect()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 提供窗口中图像的矩形区域。 该函数 getWindowImageRect 返回图像渲染区域的客户端屏幕坐标、宽度和高度。 函数原型 Rect cv::getWindowImage…