跨站脚本(XSS)漏洞

跨站脚本漏洞概述

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;

XSS漏洞一直被评估为web漏洞中危害比较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。

XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户。

形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

XSS漏洞可以用来进行钓鱼攻击、前端js挖矿、用户cookie获取。甚至可以结合浏览器自身的漏洞对用户主机进行远程控制等。

跨站脚本漏洞概述-XSS(窃取cookie)攻击流程

跨站脚本漏洞常见类型

危害:存储型>反射型>DOM型

反射型

交互的数据一般不会被存在数据库里面,一次性,所见即所得,一般出现在查询类页面等。

存储型

交互的数据会被存在数据库里面,永久性存储,一般出现在留言板,注册等页面。造成持久性损害

DOM型

不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候参生的问题,一次性也属于 反射型。

XSS漏洞形成原因

跨站脚本漏洞测试流程

当我们去找一个目标站点上面是否存在xss漏洞的时候,我们一般会按照什么思路去进行xss漏洞的手动挖掘?
① 在目标站点上找到输入点,比如查询接口,留言板等;
②输入一组“特殊字符(比如尖括号、单引号双引号等)+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理;
③通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);
④提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞;

TIPS:
①一般查询接口容易出现反射型XSS,留言板容易出现存储型XSS;
②由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效,或者环境限制了执行(浏览器);
③通过变化不同的script,尝试绕过后台过滤机制;

XSS实验演示

实验环境:
测试目标:pikachu–xss
测试工具:Firefox+浏览器开发者工具(Chrome安全措施比较严格)

从一个反射型的XSS(get)弹窗开始认识XSS漏洞




按照刚刚的思路,去查看一下页面源代码:
然后ctrl+F输入6666,可以找到输出点,可以看到’"<>6666被输出在p标签里面,也就意味 着,我们输入的特殊字符又原封不动的输出到p标签,是不是意味着,我们在找个地方输入一些正确的js代码,它也会原封不动的返回回来呢?

<script>alert('xss')<script>

当在输入框输不了那么长的字符,可以通过F12——》选择元素进行修改

因为是反射型的xss,按照刚刚的逻辑,刷新过后源码中的alert就没了,不会弹窗。

反射型跨站脚本漏洞之get&post

GET方式的XSS漏洞更加容易被利用,一般利用的方式是将带有跨站脚本的URL伪装后发送给目标而POST方式由于是以表单方式提交,无法直接使用URL方式进行攻击,如何利用?

GET和POST典型区别:
GET是以url方式提交数据;
POST是以表单方式在请求体里面提交。

存储型xss和DOM型XSS的解析

存储型XSS漏洞

存储型XSS漏洞跟反射型形成的原因一样,不同的是存储型xss下攻击者可以将脚本注入到后台存储起来,构成更加持久的危害。因此存储型XSS也称为“永久型”XSS。

存储型XSS漏洞演示


输入’"<>?&66666试试看

查看网页源代码

在留言板上输入

<script>alert('xss')</script>


每次刷新的时候都会弹出弹框,因为刚刚这个留言已经被存到数据库里面了,每次去访问这个页面的时候,都会从数据库里面把这个留言加载出来触发js脚本的运行。

DOM型XSS


HTML DOM教程:https://www.w3school.com.cn/htmldom/index.asp

DOM型XSS漏洞演示

DOM是纯前端的


通过构造闭合,去执行我们预期的代码。

<a href='#'onclick="alert(111)">'>what do you see?</a>

构造了一个payload:

#'onclick="alert(111)">




构造闭合

<a href='"+xss+"'>就让往事都随风,都随风吧</a>

构造了一个payload:

#'onclick="alert(111)">


这其实跟反射型xss一样,只需要把下面这段URL发送给需要攻击的用户,它只要打开这个链接,我们构造的js代码就会被插入到用户的页面里面去

http://127.0.0.1/pikachu/vul/xss/xss_dom_x.php?text=%23%27onclick%3D%22alert%28111%29%22%3E#

跨站脚本(XSS)漏洞 (一)相关推荐

  1. Web安全之跨站脚本攻击漏洞

    跨站脚本(XSS)漏洞 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为 XSS . ...

  2. toxssin:一款功能强大的XSS漏洞扫描利用和Payload生成工具

    关于toxssin toxssin是一款功能强大的XSS漏洞扫描利用和Payload生成工具,这款渗透测试工具能够帮助广大研究人员自动扫描.检测和利用跨站脚本XSS漏洞.该工具由一台HTTPS服务器组 ...

  3. 开源web应用中存在三个XSS漏洞,可导致系统遭攻陷

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 PT Swarm 公司的研究人员在热门的开源开发应用Evaluation CMS.FUDForum 和 GitBucket中发现了三个跨站脚本 ...

  4. XSS(跨站脚本攻击)漏洞解决方案

    XSS(跨站脚本攻击)漏洞解决方案 参考文章: (1)XSS(跨站脚本攻击)漏洞解决方案 (2)https://www.cnblogs.com/boboxing/p/9261996.html 备忘一下 ...

  5. 跨站脚本攻击漏洞(XSS):基础知识和防御策略

    数据来源 部分数据来源:ChatGPT 一.跨站脚本攻击简介 1.什么是跨站脚本攻击? 跨站脚本攻击(Cross-site scripting,XSS)是一种常见的网络安全漏洞,攻击者通过在受害网站注 ...

  6. XSS(Cross-site Script,跨站脚本)漏洞笔记

    起源 最早的 XSS 漏洞可追溯到 1999 年末,微软安全工程师发现一些网站遭到攻击,网站被插入了一些恶意脚本和图像标签.随后,微软对此类漏洞进行研究分析,并在 2000 年 1 月,正式使用&qu ...

  7. XSS跨站脚本攻击漏洞

    XSS(跨站脚本攻击)是一种常见的网络安全漏洞,它允许攻击者在网站中植入恶意的脚本代码,当其他用户访问该网站时,这些脚本代码会在用户的浏览器中执行.这可能会导致严重的安全后果,比如窃取用户的敏感信息, ...

  8. burpsuite靶场系列之客户端漏洞篇 - 跨站脚本(XSS)专题

    https://www.anquanke.com/post/id/245953 本系列介绍 PortSwigger是信息安全从业者必备工具burpsuite的发行商,作为网络空间安全的领导者,他们为信 ...

  9. XSS(跨站脚本)漏洞详解之XSS跨站脚本攻击漏洞的解决

    XSS(跨站脚本)漏洞详解 XSS的原理和分类 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆, ...

  10. XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析

    2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...

最新文章

  1. Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)
  2. Swift 扩展存储属性
  3. POJ1741 Tree(树分治——点分治)题解
  4. MySQL 调优基础(三) Linux文件系统
  5. aix oracle监听配置_Oracle数据库03用户权限与数据库的连接
  6. MongoDB 基础(六)安全性(权限操作)
  7. PyTorch学习—1.深入浅出PyTorch(如何学习PyTorch)
  8. hysbz 2243 染色(树链剖分)
  9. idea 编译jar_Flink1.9.2源码编译和使用
  10. 面经个人向(算法岗)
  11. 基于PLC控制的液压控制系统,QY-QDYY05
  12. 基于掷色子规则的c语言编程,掷骰子游戏-C语言
  13. vue3 权限菜单( 树形菜单)无限循环
  14. 好嗨游戏:20款最好玩的运动游戏:足球、篮球、网球等等(上)
  15. B - Gary's Calculator
  16. 查看SQL语句执行耗费的时间
  17. 号外号外 !新媒之家APP2.1.0版本震撼上线!!!
  18. 【大疆智图】| 重建三维模型
  19. 2019美团机器学习/数据挖掘算法实习生笔试 编程题修改矩阵
  20. PIR热释电传感器使用笔记

热门文章

  1. 2007年度最具投资价值100强网站揭晓——博客园榜上有名
  2. SQL Server 创建用户及权限管理
  3. NYOJ 933 Bob's Print Service
  4. LeetCode--11_974_Subarray_Sums_Divisible_by_K
  5. SQL注入到EXP编写
  6. (转)Mat, vectorpoint2f,Iplimage等等常见类型转换
  7. 第七章之main函数和启动例程
  8. ubuntu下使用pidgin(pidgin-lwqq)登陆qq
  9. JS基础之undefined与null的区别
  10. URL、Session、Cookies、Server.Transfer、Application和跨页面传送。