XSS总结

发布于:2025-07-27 ⋅ 阅读:(12) ⋅ 点赞:(0)

什么是XSS攻击

跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混 淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之 时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层 面的攻击!

XSS漏洞分类

1. 反射性xss

反射型XSS 是非持久性、参数型的跨站脚本。反射型XSS 的JS 代码在Web 应用的参数(变量)中,如搜 索框的反射型XSS。在搜索框中,提交PoC[scriptalert(/xss/)/script],点击搜索,即可触发反射型XSS。 注意到,我们提交的poc 会出现在search.php 页面的keywords 参数中。

2.存储型XSS

存储型XSS 是持久性跨站脚本。持久性体现在XSS 代码不是在某个参数(变量)中,而是写进数据库或 文件等可以永久保存数据的介质中。存储型XSS 通常发生在留言板等地方。我们在留言板位置留言,将 恶意代码写进数据库中。此时,我们只完成了第一步,将恶意代码写入数据库。因为XSS 使用的JS 代 码,JS 代码的运行环境是浏览器,所以需要浏览器从服务器载入恶意的XSS 代码,才能真正触发XSS。 此时,需要我们模拟网站后台管理员的身份,查看留言。

3.基于DOM的 XSS

DOM XSS 比较特殊。owasp 关于DOM 型号XSS 的定义是基于DOM 的XSS 是一种XSS 攻击,其中攻击 的payload由于修改受害者浏览器页面的DOM 树而执行的。其特殊的地方就是payload 在浏览器本地修 改DOM 树而执行, 并不会传到服务器上,这也就使得DOM XSS 比较难以检测。

4.反射型XSS与DOM型区别:

1、反射型XSS攻击中,服务器在返回HTML文档的时候,就已经包含了恶意的脚本;
2、DOM型ⅩSS攻击中,服务器在返回HTML文档的时候,是不包含恶意脚本的;恶意脚本是在其执行了非恶意脚本后,被注入到文档里的
通过JS脚本对对文档对象进行编辑,从而修改页面的元素。也就是说,客户端的脚本程序可以DOM动态修改页面的内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的XSS漏洞不需要与服务器端交互,它只发生在客户端处理数据的阶段。

三、XSS漏洞的危害

四、XSS 漏洞的验证

可以用一段简单的代码,验证和检测漏洞的存在,这样的代码叫做PoC(Proof of Concept)。验证 XSS 漏洞存在的PoC 如下:

  (1)scriptalert(/xss/)/script      

  (2)scriptconfirm('xss')/script        

  (3)scriptprompt('xss')/script

五、XSS漏洞的黑盒测试

尽可能找到一切用户可控并且能够输出在页面代码中的地方,比如下 面这些:

URL的每一个参数、URL本身、表单、搜索框、常见业务场景 重灾区:评论区、留言区、个人信息、订单信息等 针对型:站内信、网页即时通讯、私信、意见反馈 存在风险:搜索框、当前目录、图片属性等


六、XSS漏洞的白盒测试

关于XSS的代码审计主要就是从接收参数的地方和一些关键词入手。 PHP中常见的接收参数的方式有$GET、$POST、$_REQUEST等等,可以搜索所有接收参数的地方。然后 对接收到的数据进行跟踪,看看有没有输出到页面中,然后看输出到页面中的数据是否进行了过滤和 html编码等处理。 也可以搜索类似echo这样的输出语句,跟踪输出的变量是从哪里来的,我们是否能控制,如果从数据库 中取的,是否能控制存到数据库中的数据,存到数据库之前有没有进行过滤等等。 大多数程序会对接收参数封装在公共文件的函数中统一调用,我们就需要审计这些公共函数看有没有过 滤,能否绕过等等

实战


网站公告

今日签到

点亮在社区的每一天
去签到