目录

1.概述

2.风险

3.存储式XSS漏洞

4.反射式XSS漏洞

5.DOM式XSS漏洞


1.概述

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

2.风险

1.盗取用户cookie,然后伪造用户身份登录,泄漏用户个人身份及用户订单信息。

2.操控用户浏览器,借助其他漏洞可能导致对https加密信息的破解,导致登录传输存在安全风险。

3.结合浏览器及其插件漏洞,下载病毒木马到浏览者的计算机上执行。

4.修改页面内容,产生钓鱼攻击效果,例如伪造登录框获取用户明文帐号密码。

3.存储式XSS漏洞

1.概念

存储式XSS,持久化,攻击代码是存储在Web服务器中的。

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

2.影响

1.通过javascript获取用户的cookie,根据这个cookie窃取用户信息

2.重定向网站到一个钓鱼网站

3.重新更改页面内容,假装让客户输入用户名,密码,然后提交到黑客的服务器

4.生成蠕虫,迅速扩散到整个网站用户(微博等)

参考:http://www.freebuf.com/articles/web/19408.html

3.检测

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

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

由于攻击者输入恶意数据保存在数据库,再由服务器脚本程序从数据库中读取数据。所以大部分的存储型XSS漏洞都是在表单提交上会发生的。

针对这种特性,我们需要做的就是在程序任何有可能提交表单上进行验证。

1.传统测试方式:

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

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

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

2.img标签属性跨站

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

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

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

结果是与之前相同

3.DIV标签属性跨站

img标签外,DIV标签也可以利用。同样也是图片载入

<DIV STYLE="background-image: url(javascript:alert('1'))">

结果是与之前相同

4.HTML标签属性的一些特点

javascript字符被过滤了,我们也可以用其它方法:

<img src="knownsec" οnerrοr=alert('1')>

通过构造错误属性,让浏览器执行特定的javascript代码。

即使这种方式被防住,我们也可以使用自行构造事件

<font style="TEST:expression(alert('1'));">

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

4.存储式XSS的安全防护

浏览器解析顺序:

HTML语言

CSS语言

JavaScript语言

浏览器解码顺序:

HTML编码

URL编码

JavaScript编码

第一是对用户输入的特殊字符进行转译

对HTML中不可信字符串进行HTML转义。

& &

< <

> >

" "

` `

' '

/

对于HTML属性中不可信字符串进行HTML转义,并且总是为你的属性加上引号,无论是( ‘ 或“ ),不要使用反引号(  ` )。

除了字母数字字符,用格式(或者命名实体,如果可用)转义所有ASCII值小于256的字符以防止“控制”字符引伸出属性来。恰当的为属性加上引号可以只被对应的引号转义。不带引号的属性可以被分解为许多个其它字符。

对于JavaScript字符串中不可信的HTML,先执行HTML转义,然后执行JavaScript字符串转义,保持这个顺序。

创建Web应用程序应该定义允许的来自用户的标签和属性的白名单。黑名单很容易的被绕过。不推荐使用黑名单。

使用UTF-8为默认的字符编码以及设置content为text/html

不要将用户可以控制的文本放在<meta>标签前。通过使用不同的字符集注入也可能导致XSS攻击。

使用<!DOCTYPE html>告诉你的浏览器遵循标准进行HTML解码,以及CSS的渲染如何执行。

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

snuck

1.snuck是一款自动化的漏洞扫描工具,它可以帮助你扫描Web应用中存在的XSS漏洞。snuck基于Selenium开发,并且支持Firefox、Chrome和IE浏览器。

2.snuck与传统的Web安全扫描工具有显著的区别,它会尝试利用特殊的注入向量来破坏网站的XSS过滤器,并通过这种方法提高漏洞的检出成功率。基本上说,snuck所采用的检测方法与iSTAR漏洞扫描工具的检测方法较为相似,但snuck针对的是特定的XSS过滤器。

通常都是利用收集的各类XSSpayloads来进行尝试

4.反射式XSS漏洞

1.概念

反射式XSS一般是提交信息的一部分内容通过服务器解析后反馈到浏览器,而不存储到服务器。

与存储式XSS不同的是,不能存储在服务器中

攻击方法一般都是构造了有恶意代码的链接(一般都是可信度高的网站)发送给受害者,受害者点击后会执行注入的XSS代码。

2.如何促发反射式xss

1.构造有问题的链接

http://.../dvwa/vulnerabilities/xss_r/?name=a%3Cscript%3Ealert%281%29%3C%2Fscript%3E

2.发送给受害者

受害者打开页面

3.服务器解析了地址,然后返回给用户

4.用户收到有scirpt注入的页面

受害者浏览器根据script内容运行

3.反射式XSS的利用与修复

基本原理:就是通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特定的代码参数会被HTML解析,执行,如此就可以获取用户的COOIKE,进而盗号登陆。

检测与修复方式与存储式XSS类似。区别仅仅是不能存储到服务端。

4.安全防范

1.第一是对用户输入的特殊字符进行转译

对HTML中不可信字符串进行HTML转义。

& &

< <

> >

" "

` `

' '

/

对于HTML属性中不可信字符串进行HTML转义,并且总是为你的属性加上引号,无论是( ‘ 或“ ),不要使用反引号(  ` )。

除了字母数字字符,用格式(或者命名实体,如果可用)转义所有ASCII值小于256的字符以防止开关的值伸出属性。恰当的为属性加上引号可以只被对应的引号转义。不带引号的属性可以被分解为许多个字符,包括和。

2.对于JavaScript字符串中不可信的HTML,先执行HTML转义,然后执行JavaScript字符串转义,保持这个顺序。

3.创建个Web应用程序应该允许的来自用户的标签和属性的白名单。黑名单可以很容易的被绕过。

4.使用UTF-8为默认的字符编码以及设置content为text/html

5.不要将用户可以控制的文本放在<meta>标签前。通过使用不同的字符集注射可以导致XSS。

6.使用<!DOCTYPE html>告诉你的浏览器遵循标准进行HTML,CSS的渲染以及如何执行

5.DOM式XSS漏洞

1.特点

此类漏洞也是不存储在服务器里的。

此类漏洞不需要服务器进行任何解析

漏洞是利用js代码中提取了url地址中的部分内容

JS中下面代码可以提取URL地址

document.location.href

只要网站的代码中有这类代码或类似的取URL内容的代码,就可能会有DOM式的XSS漏洞

触发形式跟反射式XSS类似,也是需要访问页面

2.检测与修复方式

与之前两类XSS漏洞不同的是:

漏洞发生原因跟服务器解析无关,存粹是JS代码读取了URL内容

因此检测JS代码:

document.location

document.URL

document.referrer

或其它类似的

修复方式主要是“在浏览器这一端对JS代码过滤”

1.写入页面前先转义

2.慎用危险的“eval”

3.编写安全的函数方法,从看似“可靠”的数据源获取参数值

4.参考/使用filter.js库

web漏洞--xss攻击(跨站脚本攻击漏洞)相关推荐

  1. 反射型xss(跨站脚本攻击)

    反射型xss(跨站脚本攻击) 通常人们会把跨站脚本攻击(Cross Site Scripting)缩写为CSS),但是这与浏览器的层叠样式表css会混淆,所以人们把跨站脚本攻击缩写为xss. xss原 ...

  2. [Web安全之实战] 跨站脚本攻击XSS

    文章Points: 1. 认识XSS 2. XSS攻击 3. XSS防御(重点) 一.认识XSS先 先说个故事吧,在上一篇,我还想说这个案例.其实什么叫攻击,很简单.获取攻击者想要的信息,就黑成功了. ...

  3. Web安全 学习日记7 - XSS(跨站脚本攻击)

    文章目录 何为XSS XSS存在原因 XSS危害 XSS分类 1.反射型XSS 2.存储型XSS 3.DOM型XSS XSS的简单绕过WAF DVWA 反射型XSS 1.Low 2.Medium 3. ...

  4. 渗透测试之XSS(跨站脚本攻击)

    文章目录 XSS 漏洞概述 XSS 分类 XSS 危害 XSS 漏洞的验证 XSS 的构造 XSS 的变形(绕过方式) Shellcode 的调用 远程调用JS windows.location.ha ...

  5. DVWA学习之XSS(跨站脚本攻击)(超级详细)

    DVWA学习之XSS XSS 跨站脚本攻击 0x01 XSS(Cross Site Script)简介 0x02 何为XSS 0x03 XSS存在的原因 0x04 XSS漏洞的危害 0x05 XSS ...

  6. 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  7. 【转载】关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  8. DVWA靶场系列(六)—— XSS(跨站脚本攻击)

    #免责声明: 本文属于个人笔记,仅用于学习,禁止使用于任何违法行为,任何违法行为与本人无关. 漏洞原理 XSS又叫CSS(Cross Site Script),跨站脚本攻击.它指的是恶意攻击者往Web ...

  9. XSS(跨站脚本攻击)理论知识

    XSS Ex01 什么是XSS? 跨站点脚本(XSS)是向真实网站添加恶意代码以便恶意收集用户信息的过程.XSS攻击可能通过Web应用程序中的安全漏洞进行,并且通常通过注入客户端脚本来利用,简单来说就 ...

  10. XSS(跨站脚本攻击)攻击与防御

    一. XSS攻击原理 XSS原称为CSS(Cross-Site Scripting),因为和层叠样式表(Cascading Style Sheets)重名,所以改称为XSS(X一般有未知的含义,还有扩 ...

最新文章

  1. 通过python利用哈希值实现比较两个文件的一致性
  2. 中国AI专利申请量超美国,百度居国内首位
  3. Markdown简单语法
  4. Java集合框架(二)—— HashSet、LinkedHashSet、TreeSet和EnumSet
  5. 机器学习之kNN算法(纯python实现)
  6. 《系统集成项目管理工程师》必背100个知识点-43项目成本控制的主要内容
  7. 库克的采访给我们带来的思考!
  8. sass学习记录及vue实践
  9. 90%的程序员都没有完全回答对 Cookie 和 Session 的区别?
  10. python返回json数据_python和flask中返回JSON数据的方法
  11. strictmath_Java StrictMath log1p()方法与示例
  12. IntentService解析
  13. macOS 使用手册
  14. FastDB内存数据库API
  15. spring实战笔记6---springMVC的请求过程
  16. ios tableView截长屏图片,第三方分享
  17. window下postgresql启动服务失败 Access is denied
  18. python如何读取文件数据恢复_如何找回丢失的文件数据
  19. 紫光同创 FPGA 开发跳坑指南(五)—— DDR3 控制器 IP 的仿真
  20. 静态HTML旅行主题网页设计与实现——联途旅游网服务平台网(39页)html css javascript

热门文章

  1. 上行ofdm 信号生成_两种LTE上行SC_OFDMA信号生成方式
  2. mysql学习笔记。着重号、IFNULL、常量查询、 DESCRIBE
  3. ZBrush常用快捷键汇总,游戏建模小白入门必备,收藏起来
  4. 如何在 2023 年创造出色的电子商务客户体验
  5. Android最简单的实现View拖拽跟随手指移动效果
  6. 【深度好文】二维图像离散余弦变换
  7. VIM学习笔记 缩进 (Indent)
  8. 寻找误删电脑微信照片的办法,这里有三个好方法
  9. 投诉建议html界面,投诉_1.html
  10. 关于JDK 11 更新的17个最终JEP预览