跨站脚本攻击XSS-存储型XSS(上)

admin 2022年9月8日15:21:26评论64 views字数 2059阅读6分51秒阅读模式
在本节中,将解释下什么是存储型跨站脚本,描述存储型XSS攻击的影响,并说明如何找到存储型XSS漏洞。

什么是存储型XSS
应用程序从不信任的来源接收数据并以不安全的方式将该数据包含在其以后的HTTP响应中时,就会出现存储型跨站脚本。
假设一个网站允许用户提交对博客文章的评论,这些评论会显示给其他用户,用户使用如下HTTP请求提交评论:
跨站脚本攻击XSS-存储型XSS(上)
提交这个评论后,任何访问这篇文章的用户都将在应用程序的响应中收到以下内容:
跨站脚本攻击XSS-存储型XSS(上)
假设应用程序不对数据执行任何其他处理,攻击者可以提交如下恶意评论:
跨站脚本攻击XSS-存储型XSS(上)
在攻击者的请求中,此评论将被URL编码为:
跨站脚本攻击XSS-存储型XSS(上)
任何访问这篇文章的用户现在都将在应用程序的响应中收到以下内容:
跨站脚本攻击XSS-存储型XSS(上)
然后,攻击者提供的脚本将在受害者的浏览器中,在他们与应用程序的会话上下文中执行。

场景试验-存储型XSS漏洞的利用:
https://portswigger.net/web-security/cross-site-scripting/stored/lab-html-context-nothing-encoded
场景说明:
这个试验场景在搜索功能中包含一个简单的存储型跨站脚本漏洞。
试验目的:
要完成这个试验,需要提交一条评论,在查看文章时调用alert()函数功能。
攻击过程:
打开一篇文章,在评论处提交JS脚本的内容

跨站脚本攻击XSS-存储型XSS(上)

再次访问这篇文章时,就会出现弹窗,完成本试验

跨站脚本攻击XSS-存储型XSS(上)



存储型XSS攻击的影响
如果攻击者可以控制在受害者浏览器中执行的脚本,那么他们通常可以完全危害该用户,攻击者可以执行任何适用于反射型XSS漏洞影响的操作。
在可利用性方面,反射型XSS和存储型XSS之间的主要区别在于,存储型XSS漏洞会导致在应用程序本身内部就包含攻击。攻击者不需要寻求外部方法来诱导其他用户发出包含其漏洞利用的特定请求,而是将漏洞利用放入应用程序本身,并等待用户来访问。
存储型的跨站脚本攻击的自包含特性在XSS漏洞仅影响当前登录到应用程序的用户。
如果是反射型XSS,那么攻击就会是偶然的:一个在没有登录时被诱导出攻击请求的用户是不会被破坏的。
相反,如果是存储型XSS,那么用户在遇到漏洞时可以保证是登录的。


存储在不同上下文中的XSS
存储型的跨站脚本有很多种,存储数据在应用程序响应中的位置决定了利用它需要什么类型的Payload,并且还可能影响漏洞所造成的影响。
此外,如果应用程序在数据存储之前或在将存储的数据合并到响应中时对数据执行任何验证或其他处理,这通常会影响需要哪种XSSPayload


如何查找和测试存储型XSS漏洞
手动测试存储型XSS漏洞可能很具有挑战性,需要测试所有相关的“入口点”,攻击者可控制的数据可以通过这些“入口点”进入应用程序的处理,以及该数据可能出现在应用程序响应中的所有“出口点”、
应用程序处理的入口点包括:
URL查询字符串和消息正文中的参数或其他数据。
URL文件路径。
●与反射XSS相关的HTTP请求标头可能无法利用。
●攻击者可以通过其将数据传递到应用程序的任何带外路由。存在的路由完全取决于应用程序实现的功能:网络邮件应用程序将处理电子邮件中收到的数据;显示微博提要的应用程序可能会处理第三方推文中包含的数据等。
存储型XSS攻击的出口点是在任何情况下返回给任何类型应用程序用户的所有可能HTTP响应。
测试存储型XSS漏洞的第一步是定位入口点和出口点之间的链接,由此提交到入口点的数据是从出口点发出的,这可能具有挑战性的原因是:
●提交给任何入口点的数据原则上可以从任何出口点发出。例如,用户提供的显示名称可能出现在仅对某些应用程序用户可见的审计日志中。
●由于应用程序中执行的其他操作,当前由应用程序存储的数据通常容易被覆盖。例如,搜索功能可能会显示最近的搜索列表,这些搜索会在用户执行其他搜索时快速替换。
要全面识别入口点和出口点之间的链接,需要分别测试每个排列,并将特定值提交到入口点,直接导航到出口点,并确定该值是否出现在那里。但是,这种方法在页面多于几页的应用程序中并不实用。
相反,更现实的方法是通过数据输入点系统地工作,向每个输入点提交特定值,并监控应用程序响应以检测提交值出现的情况。可以特别关注相关的应用功能,比如博客文章的评论。当在响应中观察到提交的值时,需要确定数据是否确实存储在不同的请求中,而不是简单地反应在即使响应中。
当在应用程序的处理过程中识别出入口点和出口点之间的链接后,需要对每个链接进行专门测试,以检测是否存在存储型XSS漏洞。这涉及确定存储数据出现的响应中的上下文,并测试适用于该上下文的合适的候选Payload,此时,测试方法与查找反射型XSS漏洞的方法大致相同。

跨站脚本攻击XSS-存储型XSS(上)


服务器端请求伪造(SSRF)-概念梳理

文件上传漏洞-概念梳理

访问控制和权限提升漏洞-概念梳理

信息泄露漏洞-概念梳理

业务逻辑漏洞-概念梳理

命令注入攻击(上)
目录遍历攻击(上)

身份验证漏洞-概念梳理

SQL注入攻击-检索隐藏的数据
HTTP Host头漏洞攻击-概念梳理


原文始发于微信公众号(H君网安白话):跨站脚本攻击XSS-存储型XSS(上)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月8日15:21:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   跨站脚本攻击XSS-存储型XSS(上)http://cn-sec.com/archives/1285252.html

发表评论

匿名网友 填写信息