首页 > 其他分享 >xss专题1-原理解析和简单利用

xss专题1-原理解析和简单利用

时间:2023-12-06 16:47:46浏览次数:43  
标签:脚本 XSS 专题 xss 代码 DOM 解析 服务端

XSS原理解析

跨站脚本攻击(XSS)是一种常见的网络安全漏洞,其原理涉及恶意用户向网页注入客户端脚本代码,使其在用户的浏览器中执行。攻击者利用输入栏或其他用户可输入内容的地方,注入包含恶意脚本的数据。当其他用户访问包含恶意注入内容的页面时,这些脚本将在其浏览器中执行,导致攻击者能够窃取用户信息、篡改页面内容、跳转到恶意网站等。
XSS漏洞可以分为三个类型:
1.反射型
反射型的XSS通常是通过URL参数等方式传递到服务端,然后服务端再反射回页面,用户点击包含恶意脚本的链接时脚本再执行。这种类型的XSS通常需要诱导用户点击构造的链接才能利用。
2.存储型
顾名思义,就是能够存储在服务器上的XSS。恶意脚本通过存储在服务器上,达到持续化利用,每当用户访问时,这些脚本就会执行。例如,在论坛、留言板等地方,输入恶意代码,当其他用户访问脚本便会执行。
3.DOM型
DOM型的XSS利用了浏览器解析HTML页面时的漏洞,恶意脚本通过修改DOM文档对象模型来触发漏洞。这种漏洞不涉及服务器端的漏洞,而是利用了客户端脚本在浏览器中执行时的弱点。
以上三种类型的XSS,显然存储型的造成的危害是最大的。
当然枯燥的理论和讲述是必要又是让人感到烦恼的,下面我使用搭建的简易靶场来对这三种类型的XSS进行解析。

简单利用

存储型

现在我们提交一句简单的代码进行尝试 <script>alert(1)</script>

可以看到js语句已经存储到服务端了,那么每一次访问,都会触发这个弹窗。

前端渲染评论列表时,解析了 <script>alert(1)</script>为js代码并执行,所以并没有作为文本显示
我们也可以提交一个<h1>hhh</h1> 看看

看来他不仅会解析js代码,也会解析html代码
可以来看看代码:

反射型


还记得反射型的原理吗?就是通过URL参数将恶意代码传递到服务端,再由服务端反射回页面,和存储型的最大区别就是并没有进行一个存储的操作。
看看代码:

那么就可以构造一个这样的链接
http://localhost:8081/test/xss/1.php?search=<script>alert(1)</script>
试想一下此时搜索内容回显应该是<script>alert(1)</script>
而前端会解析这个js代码,那么只要访问这个链接就会触发脚本

DOM型

DOM型XSS,在原理中我们提到要利用document文档

直接分析代码可以看到
这里的document添加了一个监听器,来获取URL中的message参数值,看起来好像和反射型XSS有点像,但是他们有一个很大的区别:反射型XSS需要服务端,而DOM型XSS不需要服务端。这里是直接通过前端本身的js代码获取到URL中的message参数值,然后通过document将内容直接显示到页面上。

这里的回显内容是在p标签中的,所以我们也要使用html中的标签如img标签

那么其他用户访问了构造的链接,就会触发脚本执行。

标签:脚本,XSS,专题,xss,代码,DOM,解析,服务端
From: https://www.cnblogs.com/hhuang888/p/17879199.html

相关文章

  • torch反向传播backward()函数解析
    参考网址:https://blog.csdn.net/weixin_44179269/article/details/124573992?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170167791616800197042802%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170167791616800197042802&a......
  • Java Spring Boot controller的使用之参数解析
    SpringBoot作为Java中广受欢迎的框架,其controller的使用必须掌握了解,本篇的学习将从以下几个方面展开:动态URL组路由参数解析Restfulcontroller本篇假设你已经了解SpringBoot开发的基本流程,以下示例主要从controller角度学习。1.动态URL说到此,做过web开发的......
  • 神经网络Python代码完整版及其代码解析
     1、读取数据集和标签集1defloadDataSet():2data=[]3label=[]4fr=open('testSet.txt')5forlineinfr.readlines():#循环读写,fr是一个已经打开的文件对象,readline()函数会读取文件中的一行内容6lineArr=lin......
  • Flink State 状态原理解析
    一、FlinkState概念State用于记录Flink应用在运行过程中,算子的中间计算结果或者元数据信息。运行中的Flink应用如果需要上次计算结果进行处理的,则需要使用状态存储中间计算结果。如Join、窗口聚合场景。Flink应用运行中会保存状态信息到State对象实例中,State对象实......
  • MatrixSSL
    MatrixSSL是针对小型应用程序和设备设计的嵌入式、开放源码SSLv3协议栈(商业版支持TLS协议)。它减少了将SSL整合进嵌入式工程的复杂性,使用一个简单的API和安全层,用户可以很容易地将MatrixSSL整合到它们的应用程序。Matrixssl使用工业界标准的加密算法(RC4、DES3、AES、......
  • foxy与galactic解析rosbag的不同之处
    前言foxy和galactic版本在rosbag2_storage这个包的调整有点大(头文件及接口的命名空间),下面的代码仅供参考使用foxy#include"db3_reader.h"#include<pcl/common/transforms.h>#include<pcl/point_types.h>#include<pcl_conversions/pcl_conversions.h>#include<rosba......
  • Unity Transform接口的几个常用方法解析_unity基础开发教程
    UnityTransform接口常用方法解析1.Transform.position2.Transform.right、Transform.forward、Transform.up3.Transform.Rotate4.Transform.Translate在Unity中,Transform类是游戏对象位置、旋转和缩放的表示。在日常开发中我们回经常用到Transform接口的几个常用方法,这些方......
  • 【专题】2023年中国人工智能医学影像产品生态路线研究报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34466原文出处:拓端数据部落公众号未来,生成式人工智能将推动AI医学影像企业的指数级增长,而综合性医学人工智能模型与医学影像领域的结合将释放巨大潜力。为加速自身商业化落地能力,AI医学影像企业将依托生态路线。阅读原文,获取专题报告合集全文,解锁......
  • 【专题】智能汽车云服务白皮书报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34111随着新一轮技术革命和产业变革的推动,以及国家政策的大力扶持,电动化、智能化、网联化已经成为汽车行业发展的新趋势。在这种背景下,各大企业纷纷争夺数字化人才,以推动产品的规模化落地和商业化创新应用。阅读原文,获取专题报告合集全文,解锁文末53......
  • cw 字符串专题
    KMP和AC自动机都只会背板子怎么办啊/kk。模板AC自动机不会,但我会背板子。for(inti=0;i<26;i++)ch[0][i]=1;queue<int>q;q.push(1);while(!q.empty()){intu=q.front();q.pop();for(inti=0;i<26;i++)if(!ch[u][i])ch[u][i]=ch[fail[u]][i];......