首页 > 其他分享 >XSS的原理和特性

XSS的原理和特性

时间:2024-05-30 16:31:24浏览次数:22  
标签:网络安全 XSS URL 代码 特性 alert 原理 链接

XSS的原理和特性

XSS--前端代码注入

前端代码(开源的):
HTML: 网页的框架
CSS: 把网站变的更好看
Javascript(JS): 让网页功能更强大

XSS注入的本质:

传参被拼接进HTML页面,并且被执行。

注入攻击的本质,是把用户输入的数据当做代码执行

这里有两个关键条件:

第一个是用户能够控制输入

第二个是原本程序要执行的代码,拼接了用户输入的数据

SQL注入拼接的是操作数据库的SQL语句。XSS拼接的是网页的HTML代码,一般而言我们是可以拼接出合适的HTML代码去执行恶意的JS语句(总结:xss就是拼接恶意的HTML).

XSS的作用

  1. 盗取Cookie(用的最频繁的)
  2. 获取内网ip
  3. 获取浏览器保存的明文密码
  4. 截取网页屏幕
  5. 网页上的键盘记录等

XSS的类型:

  • 反射型XSS (你提交的数据成功的实现了XSS,但是仅仅是对你这次访问产生了影响,是非持久型攻击)
  • 存储型XSS (你提交的数据成功的实现了XSS,存入了数据库,别人访问这个页面的时候就会自动触发)
  • DOM型XSS  (利用DOM对象触发的XSS)

如何检测XSS

一般是想办法让浏览器弹窗(alert) 最经典的弹窗语句:<script>alert('1')</script>

xss真的执行恶意代码的实际上是JS语句,那么我们一般需要构建<script></script> (这个是定义Js的标签)

一般证明XSS是否存在,就是在正常页面传参然后构建参数让他弹窗就是存在XSS了

xss还可以通过什么来执行

事件 :

例如:  οnerrοr=alert(1)   在加载文档或图像时发生错误。

该句的意思就是在加载文档或图像时发生错误然后会执行alert(1)

类似的事件有很多

常用的有 one rror(加载错误时触发)、onload(成功加载执行)oninput (有输入框,输入的时候触发)

伪协议:

例如:

javascript:alert(1) (经典代码<a href=javascript:alert(1)>test</a>)

Javascript实际上是一个伪协议

伪协议不同于因特网上所真实存在的协议,如http://,https://,ftp://,

伪协议只有关联应用能够用,比如 php://   tencent://(关联QQ)

javascript:伪协议实际上声明了URL的主体是任意的javascript代码

javascript:alert(1)

xss的过滤方法

进行转义实体编码输出,加标签,正则匹配替换

反射型XSS具体使用方法

比如百度存在反射型XSS,然后你构建可以窃取Cookie的JS语句,然后传参点在URL那里,然后我们通过短链接将他变为短链接,然后发给想要获取别人信息的人。然后人家如果登陆状态访问了就会触发XSS

短链接是什么?

短链接,通俗来说,就是将长的URL网址,转换为简短的网址字符串,和DNS协议有点像,提供服务的网站会在数据库里面存储短链接对应的原本URL是什么,当你访问短链接,然后那边设置了302重定向跳转到原本的长URL

XSS一般在什么业务场景容易遇见?

重灾区:评论区、留言区、个人信息、订单信息等

针对型:站内信、网页即时通讯、私信、意见反馈

存在风险:搜索框、当前目录、图片属性等

XSS靶场实操

1.来到XSS靶场

1635680917_617e8295e730a5560d905.png!small?1635680916168

2.测试是否存在XSS注入

1)在搜索框里输入代码:<script>alert('1')</script> 没有触发弹窗

1635681381_617e84651ba23e226afeb.png!small?1635681379320

2)查看源代码发现<>括号被过滤了,单引号没被过滤

1635682096_617e8730d65c55076441c.png!small?1635682095065

注:不建议用右键检查元素,直接查看源代码即可,因为前端代码:兼容性(会对一些东西进行包容和处理)

如:

用检查元素和查看源代码进行对比

1635681822_617e861edd77f84cbf450.png!small?1635681821204

1635681935_617e868f91c4206596ffa.png!small?1635681933777

检查元素明显省略了一些东西。

3)用事件绕过<> 得到flag

payload1: ' οninput=alert(1314) //

payload2: ' οnkeydοwn=alert(1314) //

payload4: ' οnfοcus=alert(1314) autofocus //

1635683569_617e8cf1222e67b71ffcb.png!small?1635683567277

3.得出结论:存在反射型XSS

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

 大厂面试题

 

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

标签:网络安全,XSS,URL,代码,特性,alert,原理,链接
From: https://blog.csdn.net/2401_84488537/article/details/139295576

相关文章

  • 一次绕过waf进行xss的经历
    今天室友遇到一个好玩的网站,下面是一些尝试绕过Waf进行XSS的记录。首先该网站没有对左右尖号和单双引号做任何过滤或转义。且有未知的waf或者其他阻止恶意访问的手段。 首先我的访问为login.asp?f=1时候,页面关键源码为可能是表示登录次数的一个东西?(猜测)现在我们知道的......
  • JDK8新特性
    《Lambda表达式》一、为什么要使用Lambda表达式避免匿名内部类定义过多让代码看起来简洁去掉多余没有意义的代码留下核心逻辑Lambda是在JDK1.8中产生的二、理解FunctionalInterface(函数式接口)函数式接口是学习Java8lambda表达式的关键所在函数式接口定义:任何......
  • sql注入?xss攻击?
    昨晚斗鱼苞米没有直播,无聊的我只能打开csdngoodgoodstudydaydayup了。看到一篇将安全的博文,今天试试自己小站的安全性如何(应该是一点都不安全。。)此前开发就用过一个密码加密,对于sql注入和xss攻击,倒是没做过什么对应措施危害:sql注入:会窃取数据库的内容xss攻击:可以窃......
  • 网络原理-二
    一、前言网络原理1  ->  应用层    打交道最多的协议层     经常要自定义协议层a -> 明确需求客户端和服务器之间要传递哪些信息b -> 约定格式网络上传输的是字符串/二进制bit流需要把结构化数据转成上述的字符串/二进制bit流.  ......
  • 【源码】Spring Data JPA原理解析之Repository自定义方法命名规则执行原理(一)
     SpringDataJPA系列1、SpringBoot集成JPA及基本使用2、SpringDataJPACriteria查询、部分字段查询3、SpringDataJPA数据批量插入、批量更新真的用对了吗4、SpringDataJPA的一对一、LazyInitializationException异常、一对多、多对多操作5、SpringDataJPA自定......
  • Java 五种内部类演示及底层原理详解
    内部类什么是内部类在A类的内部定义B类,B类就被称为内部类发动机类单独存在没有意义发动机为独立个体可以在外部其他类里创建内部类的对象去调用方法类的五大成员属性方法构造方法代码块内部类内部类的访问特点内部类可以直接访问外部类的成员,包括私有外部类要......
  • 深入探索令牌桶限流的原理与实践
    在当今的互联网时代,随着用户数量和请求量的不断增加,系统的性能和稳定性面临着巨大的挑战。限流算法作为保障系统稳定性的重要手段之一,被广泛应用于各种服务和应用中。限流的核心目的是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓......
  • 深入探索Java HashMap底层源码:结构、原理与优化
    引言简述HashMap在Java集合框架中的地位及其应用场景。阐明学习HashMap底层原理的重要性,特别是在面试、性能调优和解决并发问题方面的价值。1.HashMap基础概念数据结构:介绍HashMap的核心——哈希表,包括数组加链表/红黑树的结构。线程安全性:强调HashMap是非线程安全的,以及在......
  • Windows驱动开发涉及到许多重要的概念和技术,包括调试、进程管理、文件操作、注册表访
    Windows驱动开发涉及到许多重要的概念和技术,包括调试、进程管理、文件操作、注册表访问、系统调用、IRP(I/ORequestPacket)和锁原理。以下是对每个主题的简要介绍:调试Windows驱动程序的调试通常涉及使用调试器(如WinDbg)来分析驱动程序的运行时行为,包括查看内存、寄存器状态、......
  • Windows 服务漏洞的原理和可能的利用方式
    理解Windows服务的原理以及RPC(远程过程调用)和COM(组件对象模型)接口是非常重要的,因为它们在Windows系统中扮演着关键的角色。让我简单地为您解释一下它们的基本概念:Windows服务原理:Windows服务是在后台运行的应用程序,无需用户交互界面即可执行指定的任务。服务以系统......