一个绕过某SRC厂商三处XSS过滤的payload

  • 前言

在某次src的漏洞挖掘过程中,发现了一个payload绕过了三处xss过滤,个人觉得还是挺有意思的,所以记录一下。

  • 从一个被忽略的self xss说起

在某页面信息如下,我决定对回复内容进行xss测试:

插入一个<img/src=1>以后可以看到标签成功解析:

继续深入测试的时候却发现了问题,我们的payload应该是触发了xss防御机制无法提交成功,所以服务器放回501错误。

开始慢慢探测xss filter的规则,首先我们使用<img/src=1>可以,<img/src=1 onerror=alert(1)>后触发了规则,所以首先想到可能是onerror一类的事件属性被拦截,实际发现并不是。

没有拦截事件属性,猜测是拦截alert,使用prompt和comfirm均被拦截

证明xss一定要弹窗吗?并不是(虽然我的习惯是这样),然而......

大部分标签无法使用,还可以使用一个<a>标签,尝试之,em......,果然不出意外不可以

测试发现,当有javascript:alert()、javascript:‘‘alert()"、onerror=alert()、onerror=‘‘alert()"时会被拦截,而javascript:aalert()和onerror=aalert()时并不会拦截

证明规则不是拦截alert这个关键字,而是组合(猜测是正则匹配),峰回路转,所以我们需要使用一个既不会触发这个规则有可以正常执行的payload,首先想到的是混淆绕过过滤

nice~

通过进一步分析,发现该处是一个self xss,因为问题id参数是自己的,无csrf等其他漏洞辅助,而且数据POST提交无法change method,相当鸡肋。

  • 某处存储型XSS

在对厂商进一步测试的时候,发现某站点编辑简历时的存储型XSS,和上面的过滤规则一毛一样,所以直接:

  • 某处CSRF+存储型XSS

在进一步,某站点附件上传时:

url参数直接拼接导致XSS,使用同样的方式绕过xss fillter:

此处是self xss  不过存在CSRF漏洞,组合即可,不在赘述。

  • 总结

混淆绕过不是万能的,但是有时候往往有意想不到的效果,而且有的可能不需要混淆绕过,可以尝试一些字符和编码,如onerror=a&Tab;lert()、onerror=aal lert(1)等等,可以自己去摸索尝试,而且混淆的方式有很多。

原文地址:https://www.cnblogs.com/Rakjong/p/10561138.html

时间: 2024-10-25 00:52:45

一个绕过某SRC厂商三处XSS过滤的payload的相关文章

前端开发中务必要转义的三处场景

出于这样或那样的原因,我们在传输.存储.展现字符串时需要进行转义操作,防止不可控的事情发生.下面我将分三处场景描述,有的里边确实有坑,希望大家看完后都有所收获.欢迎积极留言补充. 场景1:使用URL 前端开发中,我们经常会使用到URL,比如博客查询的表单action:"http://eastme.me?q=前端".Ajax发送Get\Post请求.跳转至网址:"http://www.eastme.me/个人简介"等等.这些请求的URL经常会出现汉字,尤其是当表单提交

新建一个索引能够同时提升三条SQL的查询性能

如题 CREATE TABLE `score` (   `id` int(11) NOT NULL,   `studentid` int(11) NOT NULL,   `subjectid` int(11) NOT NULL,   `score` int(11) NOT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 新建一个索引能够同时提升三条SQL的查询性能 ALTER TABLE `score` AD

php画一个背景透明,且开始处旋转到在圆的正下方处的一个圆饼统计图

/* * _survey 得到一个投票的圆饼图 * @access public 表示函数对外公开 * @param $_agree 同意票数 * @param $_disagree 反对票数 * return 一张统计圆饼图 * */ function _vote($_agree,$_disagree){ //处理参数 if($_agree==0&&$_disagree==0){ $_vote = 270; } if($_agree==0&&$_disagree!=0){

【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简单MVC开始(三)

目录: [SSH进阶之路]Struts基本原理 + 实现简单登录(二) [SSH进阶之路]一步步重构MVC实现Struts框架--从一个简单MVC开始(三) [SSH进阶之路]一步步重构MVC实现Struts框架--封装业务逻辑和跳转路径(四) [SSH进阶之路]一步步重构MVC实现Struts框架--彻底去掉逻辑判断(五) [SSH进阶之路]一步步重构MVC实现Struts框架--完善转向页面,大功告成(六) 上篇[SSH进阶之路]Struts基本原理 + 实现简单登录(二),我们介绍MVC和

【管理心得之三十七】一个主管被骂了三十天,你信吗?

场景再现============================一个{老板}在月初的第一天,拟定了一个很有挑战的销售目标,然后在会议上问{销售主管}:“能不能做到?”{销售主管}拍着胸脯说:“没问题.”这时,旁边{供应链主管}喃喃自语道:“量这么大,可能会供应不上!”于是,{老板}把{销售主管}嘉许一番,同时把{供应链主管}臭骂一顿.   ←(供应链主管 第一次挨骂 ) 第二天,老板把两位又叫到跟前,问同样的问题,两个人的答案还是一样.{老板}又把{销售主管}嘉许一番,同时又把{供应链主管}臭骂

(转)Bypass xss过滤的测试方法

from wooyun//五道口杀气 · 2014/01/02 19:16 0x00 背景 本文来自于<Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters>其中的bypass xss过滤的部分,前面有根据WAF特征确定是哪个WAF的测试方法给略过了,重点来看一下后面绕xss的一些基本的测试流程,虽说是绕WAF的,但这里还是根据WAF中的正则缺陷来绕过测试方法,并不是协议上问题,所以呢,基本可以通用于

Bypass xss过滤的测试方法

0x00 背景 本文来自于<Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters>其中的bypass xss过滤的部分,前面有根据WAF特征确定是哪个WAF的测试方法给略过了,重点来看一下后面绕xss的一些基本的测试流程,虽说是绕WAF的,但这里还是根据WAF中的正则缺陷来绕过测试方法,并不是协议上问题,所以呢,基本可以通用于其他xss过滤的场景.方便新手们比较快速的了解到测试xss的一些基本的方法.

XSS过滤JAVA过滤器filter 防止常见SQL注入

Java项目中XSS过滤器的使用方法. 简单介绍: XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的. sql注入所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执

XSS过滤

XSS过滤封装用法 封装到app01/form.py文件中进行验证 from django.forms import Form,widgets,fields class ArticleForm(Form): title = fields.CharField(max_length=64) content = fields.CharField( widget=widgets.Textarea(attrs={'id':'i1'})) #此处为xss验证 def clean_content(self):