日常工作过程中,偶然发现一个网站登录页面,在页面返回包中存在一个隐藏参数“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的更多相关文章

  1. 通过HTTP参数污染绕过WAF拦截 (转)

    上个星期我被邀请组队去参加一个由CSAW组织的CTF夺旗比赛.因为老婆孩子的缘故,我只能挑一个与Web漏洞利用相关的题目,名字叫做”HorceForce”.这道题价值300点.这道题大概的背景是,你拥 ...

  2. HTTP参数污染

    HTTP Parameter Pollution简称HPP,所以有的人也称之为“HPP参数污染”. 一篇很不错关于HPP参数污染的文章:http://www.paigu.com/a/33478/235 ...

  3. HTTP参数污染学习

    HTTP参数污染 --- HPP 参考: 参数污染漏洞(HPP)挖掘技巧及实战案例全汇总 视频内容 HPP,简而言之,就是给参数赋上多个值. 比如: https://www.baidu.com/s?w ...

  4. WEB安全番外第一篇--其他所谓的“非主流”漏洞:URL跳转漏洞与参数污染

    一.URL跳转篇: 1.原理:先来看这段代码: <?php if(isset($_GET["url_redircetion_target"])){ $url_redirect ...

  5. 手动绕过百度加固Debug.isDebuggerConnected反调试的方法

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78237571 1.调用Debug.isDebuggerConnected函数这种反 ...

  6. HTTP参数污染(HPP)漏洞

    HPP(HTTP参数污染) HPP是HTTP Parameter Pollution的缩写,意为HTTP参数污染.原理:浏览器在跟服务器进行交互的过程中,浏览器往往会在GET/POST请求里面带上参数 ...

  7. 学习笔记 HTTP参数污染注入

    HTTP参数污染注入源于网站对于提交的相同的参数的不同处理方式导致. 例如: www.XX.com/a?key=ab&key=3 如果服务端返回输入key的值,可能会有 一: ab 二:3 三 ...

  8. HTTP参数污染【转】

    HTTP参数污染注入源于网站对于提交的相同的参数的不同处理方式导致. 例如: www.XX.com/a?key=ab&key=3 如果服务端返回输入key的值,可能会有 一: ab 二:3 三 ...

  9. 【sqli-labs】【jsp/tomcat】 less29 less30 less31 less32 (GET型利用HTTP参数污染的注入)

    sqli-labs带了几个Java版本的web注入,在tomcat-files.zip里 以Less29为例,查看源码,可以看出请求最后还是提交给了php应用,难怪less29文件夹下有一个没有任何防 ...

随机推荐

  1. hdu4038贪心(最快上升倍率,好题)

    题意:       给你n个数,然后有两种操作 1.给其中的一个数+1,2.在序列里面增加一个1,然后给你一个m,表示进行了m次操作,最后问你操作之后所有数乘积最大是多少? 思路:      徒弟给我 ...

  2. ADB调试工具的使用

    ADB(Android Debug Bridge)安卓调试桥,ADB工具是可以方便调试安卓应用的工具. ADB的安装 下载ADB工具,解压, 将ADB工具的目录加入系统环境变量中,打开CMD窗口,输入 ...

  3. wordpress如何隐藏后台位置?

    2017-02-08 20:43:20 言曌 阅读数 3585更多 分类专栏: WordPress 转载 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本 ...

  4. ExtJS4中Ext.onReady、Ext.define、Ext.create

    1.Ext.onReady 说明:onReady内的语句块会在页面上下文加载后再执行. 2.Ext.define 说明:创建类,可以继承其他类,也可以被继承. 例子1: 1 <script ty ...

  5. PowerDesigner安装教程

    准备安装 准备好可执行文件.汉化.破解文件 将可执行文件以管理员身份运行: 向导初始化 next 选香港.点同意: 可以默认,如果说这个路径不能用下次就换一个 除了Eclipse全选 全选 好像有个空 ...

  6. PHP 父类方法如何访问子类属性

    设计知识点 类与对象->后期静态绑定 出现的问题 A 类为父类 里面有一个方法为调用当前类的 $name 属性 当 B 类继承了 A类时 但是输出仍然是 A (父类) 的 属性? <?ph ...

  7. Android学习之TTS踩坑笔记

    •前言 最近在做一款英文词典的 APP,做到语音模块的时候,我裂开,从网上搜索了各种博客,各种瞎捣鼓,模拟器就是不发音: 辗转反侧数日,终于让我找到解决之法,接下来就本次测试列出一些需要(必须)解决的 ...

  8. Redis内存——内存消耗(内存都去哪了?)

    最新:Redis内存--三个重要的缓冲区 最新:Redis内存--内存消耗(内存都去哪了?) 最新:Redis持久化--如何选择合适的持久化方式 最新:Redis持久化--AOF日志 更多文章... ...

  9. BD-rate的计算

    相信不少接触视频编码的朋友在看相关的文献的时候,总会看到论文中测试时给出一个重要的参数BD-rate,可能一直心存疑问,这个BD-rate到底是个什么东西呢?可以参考这一份提案http://downl ...

  10. 在C++中调用Python

    技术背景 虽然现在Python编程语言十分的火爆,但是实际上非要用一门语言去完成所有的任务,并不是说不可以,而是不合适.在一些特定的.对于性能要求比较高的场景,还是需要用到传统的C++来进行编程的.但 ...