一枚通过参数污染绕过百度RASP的XSS
日常工作过程中,偶然发现一个网站登录页面,在页面返回包中存在一个隐藏参数“mess”,且该页面部署了百度RASP进行防护,本文介绍如何发现隐藏参数以及如何通过参数污染方式造成XSS攻击。涉及信息较为敏感,请各位看官见谅。
一、参数污染
HTTP参数污染,也叫HPP(HTTP Parameter Pollution)。当给一个参数赋两个值或者更多的值时,服务器对多次赋值参数的数据处理也是不同的,根据这个特征,可以对某些防护设备进行绕过。
如下:
url:http://example.com/search.php?id=666&id=999
服务端接收到id参数后会对id进行解析。
谷歌处理如下:
两个值都进行了选择

百度如下:
只有第一个值被选择,第二个值没有被选择。

雅虎如下:
第二个p值被选择。

故我们可以利用这个特征,对某些防护设备进行尝试绕过。
二、隐藏参数
登录页面随意输入信息后进行抓包,返回包如下:
在返回包中搜索“hidden”,发现参数“mess”。

在请求包内添加“mess”参数进行测试
请求包:

返回包:

三、尝试绕过百度RASP
百度RASP:OpenRASP 抛弃了传统防火墙依赖请求特征检测攻击的模式,创造性的使用RASP技术(应用运行时自我保护),直接注入到被保护应用的服务中提供函数级别的实时防护,可以在不更新策略以及不升级被保护应用代码的情况下检测/防护未知漏洞,尤其适合大量使用开源组件的互联网应用以及使用第三方集成商开发的金融类应用,详细介绍可自行搜索官方文档。
尝试常规XSS payload被拦截

经测试使用常规XSS payload均被RASP拦截
使用参数污染进行绕过:
Step1:
尝试输入两个”mess”参数,确认可被服务端接收的值
请求包:

返回包: 1和2都被接收,但在1结束处出现了“,”

Step2:
对前面的语句进行闭合:
请求包:

返回包:

Step3:
尝试构造常规XSS payload
请求包:

返回包:

此时出现了一个问题,在每次参数赋值后,都会出现“,”且“,”的出现是无法避免的,因此我们需要构造一个payload,使其能够合理的存在“,”,在这儿使用定义参数来进行构造,将“,”合理的包含在payload中。
第一个“,”定义var a,b=alert(1) #在<script>后增加var a,把赋值出现的“,”当做对a和b参数定义的间隔。
第二个“,”在alert(1)后面再次赋值c=1</script> #将alert(1)后出现的“,”包含在payload当中,使</script>前面紧跟的是c=1而不是“,”
最终这个payload可以写成:<script>var a,b=alert(1),c=1</script>
本地测试:

那么请求包内可以写成:mess=”>&<script>var a&mess=b=alert(1)&mess=c=1</script>

Step4:
最终成功弹窗

四:总结
本文从寻找隐藏参数到常规payload被RASP拦截,再到参数污染方式进行绕过并处理多值接收的“,”问题,最终构造出了可成功执行的payload。文章中涉及漏洞实际风险有限,但可当做一个参数污染绕过防护设备的典型案例,在之后遇到XSS或者SQL注入被拦截时,使用参数污染方式尝试绕过,可能会有奇效。
一枚通过参数污染绕过百度RASP的XSS的更多相关文章
- 通过HTTP参数污染绕过WAF拦截 (转)
上个星期我被邀请组队去参加一个由CSAW组织的CTF夺旗比赛.因为老婆孩子的缘故,我只能挑一个与Web漏洞利用相关的题目,名字叫做”HorceForce”.这道题价值300点.这道题大概的背景是,你拥 ...
- HTTP参数污染
HTTP Parameter Pollution简称HPP,所以有的人也称之为“HPP参数污染”. 一篇很不错关于HPP参数污染的文章:http://www.paigu.com/a/33478/235 ...
- HTTP参数污染学习
HTTP参数污染 --- HPP 参考: 参数污染漏洞(HPP)挖掘技巧及实战案例全汇总 视频内容 HPP,简而言之,就是给参数赋上多个值. 比如: https://www.baidu.com/s?w ...
- WEB安全番外第一篇--其他所谓的“非主流”漏洞:URL跳转漏洞与参数污染
一.URL跳转篇: 1.原理:先来看这段代码: <?php if(isset($_GET["url_redircetion_target"])){ $url_redirect ...
- 手动绕过百度加固Debug.isDebuggerConnected反调试的方法
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78237571 1.调用Debug.isDebuggerConnected函数这种反 ...
- HTTP参数污染(HPP)漏洞
HPP(HTTP参数污染) HPP是HTTP Parameter Pollution的缩写,意为HTTP参数污染.原理:浏览器在跟服务器进行交互的过程中,浏览器往往会在GET/POST请求里面带上参数 ...
- 学习笔记 HTTP参数污染注入
HTTP参数污染注入源于网站对于提交的相同的参数的不同处理方式导致. 例如: www.XX.com/a?key=ab&key=3 如果服务端返回输入key的值,可能会有 一: ab 二:3 三 ...
- HTTP参数污染【转】
HTTP参数污染注入源于网站对于提交的相同的参数的不同处理方式导致. 例如: www.XX.com/a?key=ab&key=3 如果服务端返回输入key的值,可能会有 一: ab 二:3 三 ...
- 【sqli-labs】【jsp/tomcat】 less29 less30 less31 less32 (GET型利用HTTP参数污染的注入)
sqli-labs带了几个Java版本的web注入,在tomcat-files.zip里 以Less29为例,查看源码,可以看出请求最后还是提交给了php应用,难怪less29文件夹下有一个没有任何防 ...
随机推荐
- Windows核心编程 第十二章 纤程
第1 2章 纤 程 M i c r o s o f t公司给Wi n d o w s添加了一种纤程,以便能够非常容易地将现有的 U N I X服务器应用程序移植到Wi n d o w s中.U N I ...
- [CTF]当铺密码
[CTF]当铺密码 --------------------- 作者:adversity` 来源:CSDN 原文:https://blog.csdn.net/qq_40836553/articl ...
- java8中的日期和时间API
一.背景 jdk 1.8 之前, Java 时间使用java.util.Date 和 java.util.Calendar 类. Date today = new Date(); System.out ...
- OCR横向评测 -- 软工案例分析
目录 第一部分 调研&评测 使用感受 1. 使用门槛 2. 界面设计 3. 数据标注 4. 模型训练 5. 模型预测 6. 体验评价与改进建议 好的方面: 可能需要改进的方面: 7. BUG反 ...
- CSS3 变形
目录 Transform Transform与坐标系统 transform-origin transform-style 二维旋转 旋转 rotate 平移 translate translateX ...
- Linux_yum工具基本概述
一.什么是yum 1️⃣:yum是yellowdog update manager的简称,它能够实现rpm管理的所有操作,并能够自动解决各rpm包之间的依赖关系. 2️⃣:yum是rpm的前端工具,是 ...
- Linux中级之lvs三个模式的图像补充(nat,dr,tun)
负载均衡(Load Balance)集群提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. (1)单台计算机无法承受大规 ...
- 2.5if语句
判断(if)语句 目标 开发中的应用场景 if 语句体验 if 语句进阶 综合应用 01. 开发中的应用场景 生活中的判断几乎是无所不在的,我们每天都在做各种各样的选择,如果这样?如果那样?-- 程序 ...
- Linux应用程序设计:用一种讨巧方式,来获取线程栈的使用信息
面对的问题 对于线程的栈空间,相信各位小伙伴都不陌生.它有下面的这几项特性: > 1. 由操作系统分配固定的空间; > > 2. 使用一个栈寄存器来保存实时位置; > > ...
- 论鸿蒙OS在某些人眼中的样子
对于鸿蒙OS,博客园有一篇文章<为鸿蒙OS说两句公道话(我对鸿蒙OS的一些看法)>.有兴趣的可以看看. 在这篇文章中,个人觉得最精彩的不是文章本身,而是评论内容. 下面我挑一些出来,和大家 ...