欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > XSS攻击(反射型、存储型、dom型、PDF、SWF、SVG)

XSS攻击(反射型、存储型、dom型、PDF、SWF、SVG)

2025/5/16 2:31:54 来源:https://blog.csdn.net/weixin_46013320/article/details/147224580  浏览:    关键词:XSS攻击(反射型、存储型、dom型、PDF、SWF、SVG)

一、XSS攻击是什么

XSS是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。

二、XSS分类

  • 反射型XSS
    常见情况是攻击者通过构造一个恶意链接的形式,诱导用户传播和打开, 由于链接内所携带的参数会回显于页面中或作为页面的处理数据源,最终造成XSS攻击。 在这里插入图片描述
  • 存储型XSS
    存储型XSS是持久化的XSS攻击方式,将恶意代码存储于服务器端, 当其他用户再次访问页面时触发,造成XSS攻击。
    在这里插入图片描述
  • dom型XSS
    dom型XSS和反射型XSS类似,都是通过构造一个恶意链接的形式,诱导用户传播和打开,但是操作的对象是dom文档
    在这里插入图片描述
  • SVGXSS
    SVG(Scalable Vector Graphics)是一种基于XML的二维矢量图格式,和我们平常用的jpg/png等图片格式所不同的是SVG图像在放大或改变尺寸的情况下其图形质量不会有所损失,并且我们可以使用任何的文本编辑器打开SVG图片并且编辑它,目前主流的浏览器都已经支持SVG图片的渲染。为什么这样的SVG图片会造成跨站脚本问题呢?
    这是因为SVG是支持通过脚本语言来动态访问和修改SVG的任何内容,这点和HTML中的DOM类似,或者说完全一致。因为SVG中的所有标签和属性都已经对应了已经定义的DOM,而这种脚本语言就是JavaScript,所以我们在SVG中插入JavaScript脚本是完全能够被解析的。
//我们在一张SVG图片里面插入一个JavaScript代码。我们用浏览器打开它会发现它会造成XSS。
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"><circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" /><script>alert(1)</script>
</svg>
  • PDFXSS
    PDF是一次常见的电子文档,攻击者可以通过在PDF中插入恶意代码(JavaScrip脚本)来实现PDF XSS攻击。当用户打开恶意的PDF,就会触发恶意代码,攻击者可以利用PDF XSS攻击来窃取用户的敏感信息、篡改网站信息、实施钓鱼等行为。
  • SWFXSS
    swf是flash的文件格式,flash有可以调用js的函数,也就是可以和js通信,因此这些函数如果使用不当就会造成xss。常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等

三、区别

  • dom型XSS和反射型XSS的区别
    二者同样都是构造恶意的链接,但是反射型XSS数据需要流经服务器,但是dom型XSS不需要,操作的对象是本地的dom对象。
  • 反射型XSS和存储型XSS的区别
    反射型XSS是一次性的,访问一次恶意链接就执行一些,源头来自构造的恶意代码;存储型XSS是持久型的,恶意代码存储在服务器,当访问该数据时候就会执行。

四、绕过

五、有什么用

COOKIE盗取,凭据窃取,页面劫持,网络钓鱼,权限维持

六、什么是HTML实体

HTML 实体是用于在 HTML 文档中表示特殊字符的一种方式。在 HTML 里,有些字符具备特殊含义,像 < 和 > 分别用于定义 HTML 标签的开始和结束。要是你直接在 HTML 文档里使用这些字符,浏览器会把它们解析为 HTML 标签的一部分,而非普通文本。所以,为了在 HTML 中显示这些特殊字符,就得使用 HTML 实体。
实体的构成
HTML 实体由三部分构成:一个和号(&)、实体名称或者实体编号、一个分号(;)。

  • 实体名称:是易于记忆的字符串,例如 lt 代表小于号(<),gt 代表大于号(>)。
  • 实体编号:是对应的 Unicode 字符编码,例如 < 表示小于号(<),> 表示大于号(>)。

在这里插入图片描述

六、漏洞利用

  • 反射型XSS

  • 存储型XSS

  • Dom型XSS

  • PDF-XSS
    用PDF编辑器(Adobe Acrobat Reader)打开PDF文件,然后在里面写入js代码,然后找到注入点,上传PDF文件,若存在漏洞,访问上传的地址,即可触发脚本

  • SWF-XSS
    1、用Adobe Flash Professional编写一个带js脚本的恶意flash文件,然后找到注入点,上传SWF文件,若存在漏洞,访问上传的地址,即可触发脚本。
    2、用JPEXS Free Flash Decompiler 反编译工具,查看代码,找到常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等,然后找到对应的注入点,尝试注入恶意的js代码。

  • SVG-XSS
    用任意的文本编辑打开SVG文件,然后在里面写入js代码,然后找到注入点,上传SVG文件,若存在漏洞,访问上传的地址,即可触发脚本

七、漏洞利用工具

八、如何防范

  • 字符过滤
    字符过滤指的是对用户输入和输出的数据进行检查,把可能用于 XSS 攻击的特殊字符过滤掉或者转义。比如在 Web 应用里,当用户提交表单时,要对输入的内容进行检查,把 <、>、"、’ 等字符转换为 HTML 实体,防止攻击者通过输入恶意脚本来注入代码。

  • 实例化编码
    实例化编码是将用户输入的数据进行编码,让其在浏览器中以文本形式呈现,而非作为代码执行。像 HTML 实体编码、URL 编码等都是常见的编码方式。在输出用户输入内容时,对其进行 HTML 实体编码,能避免浏览器将其中的特殊字符解释为 HTML 标签或脚本代码。

  • http_only
    HttpOnly 是一个用于设置 Cookie 的属性。当一个 Cookie 被设置为 HttpOnly 后,它只能通过 HTTP 协议访问,JavaScript 脚本无法对其进行读写操作。这样就能防止攻击者通过 XSS 攻击窃取用户的 Cookie 信息。

  • CSP防护
    在这里插入图片描述

  • WAF拦截
    waf内置很多漏洞监测库,对于访问的链接都会进行检擦,若存在恶意链接会直接被禁用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com