Web安全测试(五):XSS攻击—存储式XSS漏洞

这篇具有很好参考价值的文章主要介绍了Web安全测试(五):XSS攻击—存储式XSS漏洞。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

结合内部资料,与安全渗透部门同事合力整理的安全测试相关资料教程,全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试,覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬!
全部文章请访问专栏:《全栈安全测试教程(0基础)》


二、XSS攻击

XSS(cross site script)或者说跨站脚本是一种Web应用程序的漏洞,恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

存在的风险

盗取用户cookie,然后伪造用户身份登录,泄漏用户个人身份及用户订单信息。
操控用户浏览器,借助其他漏洞可能导致对https加密信息的破解,导致登录传输存在安全风险。
结合浏览器及其插件漏洞,下载病毒木马到浏览者的计算机上执行。
修改页面内容,产生钓鱼攻击效果,例如伪造登录框获取用户明文帐号密码。

三、存储式XSS漏洞

1)什么是存储式XSS

存储式XSS,持久化,代码是存储在服务器中的。
存储式XSS是当不可信的用户输入被处理并在没有任何验证的情况下保存在文件或数据库,同时该不可信的数据从存储中被获取然后在没有编码或转义的情况下反射回响应文中,导致了永久性的每次存储数据反射回响应文代码就会在浏览器中执行的一种XSS漏洞。
存储式XSS的影响有:

  1. 通过javascript获取用户的cookie,根据这个cookie窃取用户信息
  2. 重定向网站到一个钓鱼网站
  3. 重新更改页面内容,假装让客户输入用户名,密码,然后提交到黑客的服务器
  4. 生成蠕虫,迅速扩散到整个网站用户(微博等)

2)如何检测存储式XSS

攻击者向被攻击页面写入恶意代码的方法很多,最常见的就是在论坛或留言本中发帖时将html代码写入到被攻击页面中,此外在用户资料修改、签名、联系方式等地方也是攻击者写入html代码常用的地方,如果被攻击页面对用户输入过滤不严的话,就可以被攻击者写入类似如下的一段代码。

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

由于攻击者输入恶意数据保存在数据库,再由服务器脚本程序从数据库中读取数据。所以大部分的存储型XSS漏洞都是在表单提交上会发生的。
针对这种特性,我们需要做的就是在程序任何有可能提交表单上进行验证。

传统测试方式:

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

任意可以输入的地方,使用上面代码尝试是否可以有如下的弹窗:

Web安全测试(五):XSS攻击—存储式XSS漏洞,全栈安全测试(0基础),web安全,xss,安全

这个是最简单的XSS检测方式。

img标签属性跨站
第一种方法受挫后,黑客可能尝试利用img标签。

<img src=javascript:alert('1')"></img>
<img dynsrc=javascript:alert('1')"></img>

结果是与之前相同

Web安全测试(五):XSS攻击—存储式XSS漏洞,全栈安全测试(0基础),web安全,xss,安全
DIV标签属性跨站
img标签外,DIV标签也可以利用。同样也是图片载入

结果是与之前相同 ![在这里插入图片描述](https://img-blog.csdnimg.cn/aa4cb61d09b14b80b85d61a1897e20c6.png)

利用insertAjacentHTML
javascript字符被过滤了,我们也可以用其它方法:
<img src=“knownsec” οnerrοr=alert(‘1’)>
通过构造错误属性,让浏览器执行特定的javascript代码。
即使这种方式被防住,我们也可以使用自行构造事件

除了font, 还有table,a,ul等标签也可以利用

3)如何防范存储式XSS

第一是对用户输入的特殊字符进行转译
对HTML中不可信字符串进行HTML转义。

&	&amp;	
<	&lt;	
>	&gt;	
"	&quot;	
`	&#x60;	
'	&#x27;	
/	&#x2F;	

对于HTML属性中不可信字符串进行HTML转义,并且总是为你的属性加上引号,无论是( ‘ 或“ ),不要使用反引号( ` )。
除了字母数字字符,用格式(或者命名实体,如果可用)转义所有ASCII值小于256的字符以防止开关的值伸出属性。恰当的为属性加上引号可以只被对应的引号转义。不带引号的属性可以被分解为许多个字符,包括和。


对于事件触发属性中的不可信字符串,先进行JavaScript转义,然后执行HTML转义,因为浏览器在执行JavaScript字符串解码前执行HTML属性解码。对于JavaScript中的非可信数据,进行JavaScript字符串转义并且总是将属性加上引号,无论是( ‘ 或“ ),但不要使用反引号( ` )

  1. 除了字母数字字符,以格式转义小于256的所有字符,以防开关的值伸到脚本中或另一个属性。不要使用类似的转义符号,因为引号符号可能被HTML属性解析器在第一次运行被匹配。这些转义字符也容易受到”转义已转义”的攻击,攻击者发送和漏洞代码转为使得可以成为引号。如果事件触发属性被正确引号,需要通过相应的引号来闭合。不带引号的属性可以被分割为许多字符,包括另外,一个闭合标签可以闭合脚本块,即使它是一个带引号的字符串。需要注意的是,HTML解析器在JavaScript解析器

  2. 对HTML属性中的URL路径进行转义而不是完整的URL。总是为属性加上引号,无论是(‘ 或“ ),但不要使用反引号( ` )。绝不允许或包含格式像或或者他们的组合(如)。
    除了字母数字字符, 用格式转义所有ASCII值小于256的字符。如果或属性被正确的引号起来,突破需要对应的引号。未被引号属性可以使用许多字符进行突破,包括和。请注意,这种情况下,实体编码是无用的。

  3. 对HTML样式属性内的不可信字符串先做CSS字符串转义,然后进行HTML转义,因为解析器的解析顺序是先HTML解析器然后再CSS解析器。总是给你的属性加上引号,如本例子中的风格属性加上( “ ) ,CSS字符串加上( ‘ ) ,不要使用反引号( )。为在CSS中的不可信字符串做CSS字符串转义。也要确保不可信字符串在引号( ‘ 或“ ) 之间,不要使用反引号( )。也不要允许expression以及它的复杂组合,如(expre/**/ssion)。
    除了字母数字字符, 用格式转义所有ASCII值小于256的字符。不要使用任何类似的转义符号,因为引号符号可能被HTML属性解析器在第一次运行被匹配。这些转义字符也容易受到”转义已转义”的攻击,攻击者发送和漏洞代码转为使得可以成为引号。如果属性被正确引号,需要通过相应的引号来闭合。不带引号的属性可以被分割为许多字符,包括。同时, 标签会关闭风格块,即使是在一个被引号的字符串内。请注意,HTML解析器在CSS解析器前运行。

  4. 对于JavaScript字符串中不可信的HTML,先执行HTML转义,然后执行JavaScript字符串转义,保持这个顺序。
    创建个Web应用程序应该允许的来自用户的标签和属性的白名单。黑名单可以很容易的被绕过。
    使用UTF-8为默认的字符编码以及设置content为text/html
    不要将用户可以控制的文本放在标签前。通过使用不同的字符集注射可以导致XSS。
    使用告诉你的浏览器遵循标准进行HTML,CSS的渲染以及如何执行

4)常用WEB漏洞扫描工具对存储式XSS漏洞扫描方法

snuck
snuck是一款自动化的漏洞扫描工具,它可以帮助你扫描Web应用中存在的XSS漏洞。snuck基于Selenium开发,并且支持Firefox、Chrome和IE浏览器。
snuck与传统的Web安全扫描工具有显著的区别,它会尝试利用特殊的注入向量来破坏网站的XSS过滤器,并通过这种方法提高漏洞的检出成功率。基本上说,snuck所采用的检测方法与iSTAR漏洞扫描工具的检测方法较为相似,但snuck针对的是特定的XSS过滤器。
通常都是利用收集的各类XSSpayloads来进行尝试文章来源地址https://www.toymoban.com/news/detail-695621.html

到了这里,关于Web安全测试(五):XSS攻击—存储式XSS漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【安全】 Java 过滤器 解决存储型xss攻击问题

    跨站脚本( cross site script )为了避免与样式css(Cascading Style Sheets层叠样式表)混淆,所以简称为XSS。 XSS是一种经常出现在web应用中的计算机安全漏洞 ,也是web中最主流的攻击方式。 XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些

    2024年02月08日
    浏览(26)
  • 跨站脚本攻击漏洞(XSS):基础知识和防御策略

    数据来源 部分数据来源: ChatGPT   1、什么是跨站脚本攻击?         跨站脚本攻击(Cross-site scripting,XSS)是一种常见的网络安全漏洞,攻击者通过在受害网站注入恶意脚本代码,使得其他用户访问该网站时执行这些恶意代码,从而达到攻击的目的。 2、危害? 获取用户信

    2024年02月11日
    浏览(22)
  • 【web安全】XSS攻击(跨站脚本攻击)如何防范与实现

    目录 XSS介绍 防范要点 实现方法 XSS攻击(跨站脚本攻击)是一种常见的Web安全漏洞,攻击者在Web页面中插入恶意脚本代码,并在受害人访问该页面时执行脚本代码,从而获取用户敏感信息、操作受害人账号或篡改页面内容等不当行为。XSS攻击可以通过输入表单、搜索框、评论

    2024年02月12日
    浏览(15)
  • 35、WEB攻防——通用漏洞&XSS跨站&反射&存储&DOM&盲打&劫持

    XSS产生于前端的漏洞,常产生于: XSS分类: 反射型(非持久型) 存储型(持久型),攻击代码被写入数据库中。常见于:写日志、留言、评论的地方 DOM型 DOM型XSS与反射型XSS、存储型XSS的最大区别在于:DOM型XSS前端的数据是传输给前端JS代码进行处理,而反射型XSS、存储型

    2024年01月25日
    浏览(30)
  • 保护网站安全:学习蓝莲花的安装和使用,复现跨站脚本攻击漏洞及XSS接收平台

     这篇文章旨在用于网络安全学习,请勿进行任何非法行为,否则后果自负。  环境准备 攻击介绍 原理 攻击者通过向目标网站提交包含恶意脚本的请求,然后将该恶意脚本注入到响应页面中,使其他用户在查看包含注入恶意脚本的页面时运行该恶意脚本。 图片来源 使用方法

    2024年02月10日
    浏览(22)
  • 浏览器基础原理-安全: 跨站脚本攻击(XSS)

    XSS 跨站脚本 (Cross Site Scripting): 概念: XSS 攻击是指黑客往 HTML 文件中或者 DOM 中注入恶意脚本,从而在用户浏览页面时利用注入的恶意脚本对用户实施攻击的一种手段。 实现方式: 起初,这种攻击通过跨域来实现的,所以叫“跨域脚本”。但是发展到现在,往 HTML 文件中注入恶

    2024年02月11日
    浏览(16)
  • 网络安全测试中的跨站点脚本攻击(XSS):Python和FlaskSecurity实现跨站脚本攻击测试

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 跨站点脚本攻击(XSS)是一种常见的网络安全漏洞,攻击者通过在受害者的浏览器上执行自己的脚本代码,窃取、修改用户的敏感信息。随着互联网的发展,跨站点脚本攻击在各类应用中愈发普遍。为了提高网络安全水平,

    2024年02月07日
    浏览(23)
  • WEB安全之XSS漏洞与SQL注入漏洞介绍及解决方案

    这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,比较适合初学者观看。 对于防止sql注入发生,我在这里用简单拼接字符串的注入及参数化查询,如果大家对这个系列的内容感兴趣,可以在评论区告诉我! XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者

    2024年02月07日
    浏览(25)
  • 安全测试之xss漏洞的检测与防御

    整理了一些软件测试方面的资料、面试资料(接口自动化、web自动化、app自动化、性能安全、测试开发等),有需要的小伙伴可以文末加入我的学习交流qun,无套路自行领取~  最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是

    2024年02月11日
    浏览(20)
  • 常见web安全漏洞-暴力破解,xss,SQL注入,csrf

    1,暴力破解 原理:         使用大量的认证信息在认证接口进行登录认证,知道正确为止。为提高效率一般使用带有字典的工具自动化操作         基于表单的暴力破解 --- 若用户没有安全认证,直接进行抓包破解。 验证码绕过                           on s

    2023年04月12日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包