记录一次有意思的XSS过滤绕过
我的朋友赵一天今晚给我发了一个站,跟我说他xss绕不过去,让我试试。我正好无事,就帮她看看咯。
通过赵一天发我的站点,说实话,我自己学到了很多东西,感谢大佬的教诲。今天分享出来:
站点:xxx.com/sou

当我尝试:
xxx.com/souaaaa

我们查看源码或者f12 Ctrl+f搜索aaaa:
颇为震惊,搜索结果有400多条。。

首先是我们发现第一处利用是<input>标签,下面的都是href=""中利用
继续往下看看aaaa还在哪些标签里面:
下面大部分都是a标签。。

继续往下看:
我们发现aaaa在我们的js中。

ok我们整理好了,我们输入的aaaa在input,a和js中输出了。
现在我们以input元素为例子尝试去xss攻击:
首先我先尝试闭合标签:

然后查看源码:
真刺激,我们输入的>被转义成了全角的>

无法利用了
换个姿势我们还能" onxx=
我们试试:

查看源码:

没有对onxxx进行过滤,庆幸的是咱们可以onxxx
这里就用onmouseover了。那么我们直接 "%20onmouseover=alert(1)"

我们发现没有弹窗。。看看怎么回事吧。。

""(1)""
观察发现,过滤了alert这个弹窗事件,括号变成了中午的括号:
我这里采取的措施:把alert事件改成
过滤了alert
我们尝试其他弹窗方法,confirm和prompt,因为过滤了括号,所以使用``(反引号进行利用):
尝试:

查看源码:

prompt没被过滤掉,反引号被过滤了。。头大了 。
然后我尝试对其进行各种编码再次查看源码:

变成这个样子,现在我们来总结下我们的过滤问题:
1.全局的过滤了(),当攻击者输入()将会转义成中文的括号
2.当攻击者对()进行编码处理直接不显示信息被过滤
3.当攻击者输入>会被转义成全角的>
首先从这里看来我们无法明面上进行弹窗xss了。。
那么我们使用另一种思路
从onxxx=下手
onxxx=内容=<script>内容</script>
我首先选择document节点,因为过滤了()所以我不能document.getElementById(id)肯定会被过滤。。。
那么我现在想加载document还想要不被过滤?怎么做? 选择一个不使用()的不就可以了吗。
我尝试:看看是否可以


除了这种方法我们还有其他办法执行吗?
答案是肯定有:" onmouseover="var ccc=11111;document.body.innerHTML=ccc//

成功闭合

对于xss我们的感觉就是必须得弹窗,这里没弹窗,我们的目标,不弹窗誓不罢休:
我们知道location.hash这个属性
今天我们要讲解一个新知识点,docuemt.URL
document.URL属性包含页面完整的URL比如:{协议}://{用户名}:{密码}@{主机名}:{端口号}/{路径}/{文件}?{参数}
他的功能和location.hash类似,我们可以#xss payload利用:
我们如下:" onmouseover=document.body.innerHTML=document.URL "#<img src=1 onerror=alert(1)>
在最新版本IE下:

为什么我不用var xx=xss payload;document.body.innerHTML=xx是因为<>被转义了。。
现在这是一种弹窗方式,还有一种就是JS下的。
JS下的弹窗,我首选location.href:

简直了到处过滤
没办法了还是使用我们之前的姿势吧:"; document.body.innerHTML=document.URL// #<img src=1 onerror=alert(123)>
JS下利用

记录学习下,蛮有意思的。。。如果有其他思路欢迎留言。
记录一次有意思的XSS过滤绕过的更多相关文章
- 记录一次有意思的XSS过滤绕过2
前几天在漏洞挖掘中遇到个xss,感觉绕过过程蛮有意思的,写篇文章记录下. 接下里是我对这个xss详细的分析和绕过 存在问题站点http://******/index/appInfo?appId=784 ...
- WAF指纹识别和XSS过滤器绕过技巧
[译文] -- “Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters” 0x1 前言 之前在乌云drop ...
- Bypass xss过滤的测试方法
0x00 背景 本文来自于<Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters>其中的byp ...
- XSS插入绕过一些方式总结
详见:http://blog.csdn.net/keepxp/article/details/52054388 1 常规插入及其绕过 1.1 Script 标签 绕过进行一次移除操作: <scr ...
- (转)Bypass xss过滤的测试方法
from wooyun//五道口杀气 · 2014/01/02 19:16 0x00 背景 本文来自于<Modern Web Application Firewalls Fingerprinti ...
- xss原理绕过防御个人总结
xss原理 xss产生的原因是将恶意的html脚本代码插入web页面,底层原理和sql注入一样,都是因为js和php等都是解释性语言,会将输入的当做命令执行,所以可以注入恶意代码执行我们想要的内容 x ...
- 风炫安全WEB安全学习第二十六节课 XSS常见绕过防御技巧
风炫安全WEB安全学习第二十六节课 XSS常见绕过防御技巧 XSS绕过-过滤-编码 核心思想 后台过滤了特殊字符,比如说
- dedecms功能性函数封装(XSS过滤、编码、浏览器XSS hack、字符操作函数)
dedecms虽然有诸多漏洞,但不可否认确实是一个很不错的内容管理系统(cms),其他也不乏很多功能实用性的函数,以下就部分列举,持续更新,不作过多说明.使用时需部分修改,你懂的 1.XSS过滤. f ...
- Asp.net Mvc中利用ValidationAttribute实现xss过滤
在网站开发中,需要注意的一个问题就是防范XSS攻击,Asp.net mvc中已经自动为我们提供了这个功能.用户提交数据时时,在生成Action参数的过程中asp.net会对用户提交的数据进行验证,一旦 ...
随机推荐
- Python浅谈requests三方库
requests 三方库用于获取URL资源 1.GET请求访问一个页面 import requests r = requests.get('https://www.cnblogs.com/xqxacm ...
- C++ 虹软人脸识别 ArcFace 2.0 Demo
环境配置: 开发环境:Win10 + VS 2013 SDK版本:ArcFace v2.0 OpenCV版本:2.4.9 平台配置: x64.x86下Release.Debug SDK 下载地址:戳这 ...
- MongoDB更需要好的模式设计 及 案例赏析
一 挑战 设计从来就是个挑战. 当我们第一次接触数据库,学习数据库基础理论时,都需要学习范式,老师也一再强调范式是设计的基础.范式是这门课程中的重要部分,在期末考试中也一定是个重要考点.如果我们当年 ...
- httpservlet里单纯分页
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletExcep ...
- c/c++ 重载运算符 基本概念
重载运算符 基本概念 问题:对于int,float可以进行算数运算,但是对于一个自定义的类的对象进行算术运算,就不知道具体怎么运算了. 所以有了自定义运算符的概念. 1,自定义运算符其实就是一个以op ...
- js 学习之路4:js运行/输出中文乱码问题解决
网上找了一个简单的例子,编写出来很简单,但是乱码的问题稍微困扰了一下. 题目: 1. 大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配? js解决代码: ...
- 关于opencv模板匹配功能的项目测试记录
模板匹配功能介绍的很好的一篇博客:https://www.cnblogs.com/XJT2018/p/9934139.html 就如上述博客所言:“若原图像中的匹配目标发生旋转或大小变化,该算法无效. ...
- Dockerfile Volume指令与docker -v的区别
在学习Dockerfile的过程中有个VOLUME命令,很多教程或书中说的是用来定义匿名卷的,其作用如下: 容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文 ...
- Springboot整合Ehcache缓存
Pom.xml导包 <!-- ehcache --> <dependency> <groupId>org.springframework.boot</grou ...
- 【Python实战】使用Python连接Teradata数据库???未完成
1.安装Python 方法详见:[Python 05]Python开发环境搭建 2.安装Teradata客户端ODBC驱动 安装包地址:TTU下载地址 (1)安装TeraGSS和tdicu(ODBC依 ...