(一)XSS跨站脚本攻击

(1)XSS简介

XSS攻击全称跨站脚本攻击(Cross Site Scripting),是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

(2)XSS攻击的危害

XSS攻击的危害包括:

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

3、盗窃企业重要的具有商业价值的资料

4、非法转账

5、强制发送电子邮件

6、网站挂马

7、控制受害者机器向其它网站发起攻击

(3)原因解析

主要原因:服务器端太相信客户端体检的数据

解决方法:不信任任何客户端提交的数据,只要是客户端提交的数据就应该先进行相应的过滤处理然后方可进行下一步的操作。

客户端提交的数据本来就是应用所需要的,但是恶意攻击者利用网站对客户端提交数据的信任,在数据中插入一些符号以及javascript代码,那么这些数据将会成为应用代码中的一部分了。那么攻击者就可以肆无忌惮地展开攻击啦。

(4)XSS攻击分类

xss攻击可以分成两种类型:

1.非持久型攻击

顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。

2.持久型攻击

持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。

分成三类:

反射型:经过后端,不经过数据库

存储型:经过后端,经过数据库

DOM:不经过后端,DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,dom - xss是通过url传入参数去控制触发的。

(1)反射型XSS

发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS随响应内容一起返回给浏览器,最后浏览器解析执行XSS代码,这个过程就像一次发射,所以叫反射型XSS。

简单例子

正常发送消息:

http://www.test.com/message.php?send=Hello,World!

接收者将会接收信息并显示Hello,Word

非正常发送消息:

http://www.test.com/message.php?send=!

接收者接收消息显示的时候将会弹出警告窗口

例如

XSS.png

这段代码中首先包含一个表单,用于向页面自己发送 GET 请求,带一个名为xss的参数。 然后 PHP 会读取该参数,如果不为空,则直接打印出来,这里不存在任何过滤。也就是说,如果xss中存在 HTML 结构性的内容,打印之后会直接解释为 HTML 元素。

首先在你的编译器,我用的是Hbuilder,配置外部服务器,然后php文件设置在外部服务器执行

然后在页面form表单输入123

页面展示.png

输入123xss=123.png

输入

QQ截图20180419185427.png

并没有弹出弹框,很奇怪,但可以看到

xss=

可能说明这里已经对xss攻防做出了防御,这个我接下来会说明

(2)存贮型xss攻击

又称为持久型跨站点脚本,它一般发生在XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。持久的XSS相比非持久性XSS攻击危害性更大,因为每当用户打开页面,查看内容时脚本将自动执行。谷歌的orkut曾经就遭受到XSS。

存储型XSS和反射型的XSS差别就在于,存储型的XSS提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。

简单例子:

从名字就可了解到存储型XSS攻击就是将攻击代码存入数据库中,然后客户端打开时就执行这些攻击代码。例如留言板

留言板表单中的表单域:

正常操作:

用户是提交相应留言信息;将数据存储到数据库;其他用户访问留言板,应用去数据并显示。

非正常操作:

攻击者在value填写【或者html其他标签(破坏样式。。。)、一段攻击型代码】;

将数据存储到数据库中;

其他用户取出数据显示的时候,将会执行这些攻击性代码

(3)DOMBasedXSS(基于dom的跨站点脚本攻击)

基于DOM的XSS有时也称为type0XSS。当用户能够通过交互修改浏览器页面中的DOM(DocumentObjectModel)并显示在浏览器上时,就有可能产生这种漏洞,从效果上来说它也是反射型XSS。通过修改页面的DOM节点形成的XSS,称之为DOMBasedXSS。

前提是易受攻击的网站有一个HTML页面采用不安全的方式从document.location 或document.URL 或 document.referrer获取数据(或者任何其他攻击者可以修改的对象)。

简单例子:

Welcome!

Hi

var pos=document.URL.indexOf("name=")+5;

document.write(document.URL.substring(pos,document.URL.length));

Welcome to our system

这个例子是个欢迎页面,name是截取URL中get过来的name参数

正常操作:

非正常操作:

将产生xss条件。让我们看看为什么:受害者的浏览器接收到这个链接,发送HTTP请求到www.vulnerable.site并且接受到上面的HTML页。受害者的浏览器开始解析这个HTML为DOM,DOM包含一个对象叫document,document里面有个URL属性,这个属性里填充着当前页面的URL。当解析器到达javascript代码,它会执行它并且修改你的HTML页面。倘若代码中引用了document.URL,那么,这部分字符串将会在解析时嵌入到HTML中,然后立即解析,同时,javascript代码会找到(alert(…))并且在同一个页面执行它,这就产生了xss的条件。

注意:

1. 恶意程序脚本在任何时候不会嵌入到处于自然状态下的HTML页面(这和其他种类的xss不太一样)。

2.这个攻击只有在浏览器没有修改URL字符时起作用。 当url不是直接在地址栏输入,Mozilla.会自动转换在document.URL中字符(转化为%3C 和 %3E),因此在就不会受到上面示例那样的攻击了,在IE6下没有转换,因此他很容易受到攻击。

当然,直接嵌入到HTML只是攻击的一个挂载点,有很多脚本不需要依赖漏洞,因此Mozilla通常也是无法阻止这些攻击的。

(5)XSS攻击实例分析

例1、简单XSS攻击

留言类,简单注入javascript

有个表单域:

1、假若用户填写数据为:(或者)

2、提交后将会弹出一个foolish警告窗口,接着将数据存入数据库

3、等到别的客户端请求这个留言的时候,将数据取出显示留言时将执行攻击代码,将会显示一个foolish警告窗口。

将数据改成html标签进行攻击,则会将原本的样式打乱。。。。。。。。

例2、盗取cookie

(6)XSS漏洞修复

从上面XSS实例以及之前文章的介绍我们知道XSS漏洞的起因就是没有对用户提交的数据进行严格的过滤处理。因此在思考解决XSS漏洞的时候,我们应该重点把握如何才能更好的将用户提交的数据进行安全过滤。

6.1、html实体

什么是html实体?

在html中有些字符,像(

html实体的存在是导致XSS漏洞的主要原因之一。

因此我们需要将这些实体全部转换为相应的实体编号。

6.2、HTML Encode

用户将数据提交上来的时候进行HTML编码,将相应的符号转换为实体名称再进行下一步的处理。

在PHP中已经存在这样子功能的函数,即是htmlentities($str)函数。

与之相反的就是html_entity_decode($str)函数,它将实体名称转换为相应的符号。

6.3、修复漏洞方针

【不相应用户提交的数据,过滤过滤过滤!】

1、将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了.

2、表单数据规定值的类型,例如:年龄应为只能为int、name只能为字母数字组合。。。。

4、对数据进行Html Encode 处理

5、过滤或移除特殊的Html标签, 例如:

6、过滤JavaScript 事件的标签。例如 "οnclick=", "onfocus" 等等。

【特别注意:】

在有些应用中是允许html标签出现的,甚至是javascript代码出现。因此我们在过滤数据的时候需要仔细分析哪些数据是有特殊要求(例如输出需要html代码、javascript代码拼接、或者此表单直接允许使用等等),然后区别处理!

6.4、PHP中的相应函数(这个我不会,也不太明白,没有接触过PHP)

【详细看PHP手册】

这里可能不全,想了解更多的看手册。

strip_tags($str, [允许标签]) #从字符串中去除 HTML 和 PHP 标记

htmlentities($str)函数 #转义html实体

html_entity_decode($str)函数 #反转义html实体

addcslashes($str, ‘字符’)函数 #给某些字符加上反斜杠

stripcslashes($str)函数 #去掉反斜杠

addslashes ($str )函数 #单引号、双引号、反斜线与 NULL加反斜杠

stripslashes($str)函数 #去掉反斜杠

htmlspecialchars() #特殊字符转换为HTML实体

htmlspecialchars_decode() #将特殊的 HTML 实体转换回普通字符

xss跨站攻击html转义,前端攻击和防御(一)XSS跨站脚本攻击相关推荐

  1. 如何进行渗透测试XSS跨站攻击检测

    国庆假期结束,这一节准备XSS跨站攻击渗透测试中的利用点,上一节讲了SQL注入攻击的详细流程,很多朋友想要咨询具体在跨站攻击上是如何实现和利用的,那么我们Sinesafe渗透测试工程师为大家详细的讲讲 ...

  2. WAF——针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入、XSS跨站、Webshell上传、命令注入、非法HTTP协议请求、非授权文件访问等...

    核心概念 WAF Web应用防火墙(Web Application Firewall),简称WAF. Web攻击 针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入.XSS跨站.Websh ...

  3. php mysql可以跨站_Laravel5中防止XSS跨站攻击的方法

    本文实例讲述了Laravel5中防止XSS跨站攻击的方法.分享给大家供大家参考,具体如下: Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HT ...

  4. xss跨站攻击【网络攻防CTF】(保姆级图文)

    目录 什么是xss跨站攻击 实验内容 实验步骤 如何避免xss跨站攻击 总结 欢迎关注 『网络攻防CTF』 系列,持续更新中 欢迎关注 『网络攻防CTF』 系列,持续更新中 什么是xss跨站攻击 跨站 ...

  5. web安全性测试——XSS跨站攻击

    一.什么是xss跨站攻击 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS. ...

  6. XSS跨站攻击解决办法--AntiSamy的配置及使用

    XSS跨站攻击 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击 ...

  7. Web漏洞-Xss跨站

    25.Xss跨站之原理分类及攻击方法 原理 XSS 跨站漏洞产生原理,危害,特点? 本质,产生层面,函数类,漏洞操作对应层,危害影响,浏览器内核版本等 本质 跨站脚本攻击是指攻击者往Web页面里插入恶 ...

  8. 第三十五天:XSS跨站反射存储DOM盲打劫持

    XSS跨站-原理&攻击&分类等 XSS跨站-反射型&存储型&DOM型等 XSS跨站-攻击手法&劫持&盗取凭据等 XSS跨站-攻击项目&XSS平台 ...

  9. day36 XSS跨站MXSSUXSSFlashXSSPDFXSS

    前言 #知识点: 1.XSS跨站-原理&攻击&分类等 2.XSS跨站-MXSS&UXSS&FlashXss&PDFXSS等 1.原理 指攻击者利用网站程序对用户 ...

  10. 解决jquery版本过低引发的XSS跨站安全漏洞

    解决jquery版本过低引发的安全漏洞 测试网站是否存在此XSS跨站漏洞: 以google浏览器为例,打开要测试的网站,在Console窗口输入: $.fn.jquery 回车查看版本号 $(&quo ...

最新文章

  1. 判断三角形java代码_打基础之LeetCode算法题第72篇:最大的三角形周长问题
  2. nagios配置安装
  3. ibmmq 通道命令_IBM_MQ常用命令的.doc
  4. 【BZOJ3314】 [Usaco2013 Nov]Crowded Cows 单调队列
  5. Activity启动模式 launchMode
  6. java 容器_我也来聊聊,JAVA容器与迭代器
  7. 关于有类路由协议和无类路由协议
  8. 网络操控软件兴起:思科利润率受压
  9. 从云计算到人工智能 都逃不过被炒作的命运
  10. 【dubbo源码解析】--- dubbo的服务暴露+服务消费(RPC调用)底层原理深入探析
  11. Asp.Net Core 系列教程 (三)身份认证
  12. mariadb相关说明
  13. git把一个分支的commit merge到另外一个分支
  14. Web 3.0 有哪些值得关注的项目
  15. 【技巧】只改变word背景颜色,并保持其他软件背景颜色不变
  16. 微信小程序仿网易云音乐(使用云开发,提供源码)
  17. 【NLP】第1章 什么是Transformers?
  18. 【无标题】 二手车汽车资质认证 二手车汽车资质认证
  19. 收藏几个好用的webservice
  20. 并联串联混合的电压和电流_二极管串、并联图文分析,选对方案太重要了!

热门文章

  1. Future的小使用
  2. 了解数据库的作用、特点及关系型数据库管理系统
  3. Shell基础编程--Shell变量设置
  4. web hello word
  5. 智能对话机器人:自然语言处理与人机交互
  6. Rstudio图片导出问题
  7. 降低FFmpeg的解码延时
  8. Python 求奇数分之一序列前N项和
  9. mysql创建触发器遇到的问题ERROR 1415 (0A000)
  10. 备考信息技术教师资格证-初出茅庐