HTTP参数污染 --- HPP

参考:

  1. 参数污染漏洞(HPP)挖掘技巧及实战案例全汇总
  2. 视频内容

HPP,简而言之,就是给参数赋上多个值。

比如: https://www.baidu.com/s?wd=asdqwe&wd=http参数污染

百度究竟会给出有关 asdqwe 的相关信息,还是 http参数污染 的相关信息,还是两者兼并?事实证明,百度只取第一个关键词 asdqwe,不同的服务器架构会取不同的值

原因:由于现行的HTTP标准没有提及在遇到多个输入值给相同的参数赋值时应该怎样处理,而且不同的网站后端做出的处理方式是不同的,从而造成解析错误

下面是不同服务端所处理的方式

Web服务器 参数获取函数 获取到的参数
PHP/Apache $_GET(“par”) Last
JSP/Tomcat Request.getParameter(“par”) First
Perl(CGI)/Apache Param(“par”) First
Python/Apache getvalue(“par”) All (List)
ASP/IIS Request.QueryString(“par”) All (comma-delimited string)

推荐一个自动识别前后端框架的插件 wappalyzer,chrome、firefox、edge 都有

用处:

  1. 逻辑漏洞:
  • 任意URL跳转

    例如:

    www.famous.website?ret_url=subdomain.famous.website ,由于后端做了限制,当我们把 ret_url 改成别的不同源的域名(如baidu.com)时会报错

    但是我们可以利用HPP,将请求地址变成 www.famous.website?ret_url=subdomain.famous.website&ret_url=baidu.com 时,由于服务器逻辑错误

    使用第一个 ret_url 做校验参数,而第二个 ret_url 参数做跳转目的地址。于是这样便可成功绕过限制,形成任意 URL 跳转

  • 任意密码重置(短信爆破)

    一般重置密码的时候,会发送短信到用户手机

    比如GET/POST传递的参数为:phone=13888888888

    我们一般会去想,能不能发送验证码到自己的手机,于是可以构造成: phone=13888888888,12345678901 或者 phone=13888888888;12345678901 或者 phone={13888888888,12345678901}

    等等一些情况,有时候能通过,但是有些时候会出现 号码不合法 的情况,此时便可以考虑利用 HPP —— phone=13888888888&phone=12345678901,如果恰好服务器用第一个号码验证是否存在该用户,而使用第二个号码发送短信时,我们便可以接管该用户

  1. 绕过 WAF

    原理:当 WAF 检测端与服务器端webapp使用的参数不一致时,便可绕过 WAF 限制

WAF框架:

框架 取值
flask First
django Last
  • SQL注入绕过

方式1:

例如:WAF 端采用 flask 框架而服务器 webapp 端采用 PHP/Apache 框架时,由于 WAF 取第一个参数,app 取第二个参数,利用 HPP 便可绕过 WAF 检测

www.xxx.com/search.php?id=1&id=7 union select 1,2,database()

方式2:

例如:WAF 端只检测单个参数,而服务器 webapp 端会将所有参数合并起来检测

www.xxx.com/search.php?id=1&id=%20union%20&id=select%201,2&id=,database() 利用拼接的方式绕过 WAF

  • XSS

    跟 SQL 注入相似,检测过滤与实际采纳的参数不一致

可能有 HPP 的地方

  1. 很多可能存在越权漏洞的地方,当做了权限验证时,可以试一试提交多个参数
  2. 绕 WAF 的时候

HTTP参数污染学习的更多相关文章

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

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

  2. HTTP参数污染

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

  3. 机器学习&数据挖掘笔记_23(PGM练习七:CRF中参数的学习)

    前言: 本次实验主要任务是学习CRF模型的参数,实验例子和PGM练习3中的一样,用CRF模型来预测多张图片所组成的单词,我们知道在graph model的推理中,使用较多的是factor,而在grap ...

  4. 机器学习算法中如何选取超参数:学习速率、正则项系数、minibatch size

    机器学习算法中如何选取超参数:学习速率.正则项系数.minibatch size 本文是<Neural networks and deep learning>概览 中第三章的一部分,讲机器 ...

  5. HTTP参数污染【转】

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

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

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

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

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

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

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

  9. SpringMVC参数绑定学习总结【前后端数据参数传递】

    目录 1. 绑定机制 2. 支持的数据类型 3. 参数请求中文乱码解决 4.自定义类型转换器 5.最后参数绑定学习小结 SpringMVC作为Controller层(等价servlet和struts中 ...

随机推荐

  1. UIAutomator2的API文档(一)

    检查并维持设备端守护进程处于运行状态,应该是重启了atx守护进程:d.healthcheck() 1.隐式等待 import uiautomator2 as u2serialno = '7f3dec6 ...

  2. Kivy中ActionBar控件的使用

    这个控件可以作为导航栏来使用,效果非常好. 1. ActionBar包含的组件 ActionBar中需要一个ActionView作为容器来存放其他控件,比如:ActionPrevious.Action ...

  3. Bank1

    Bank1: package banking1; //账户 public class Account { private double balance;// 账户余额 public Account(d ...

  4. 【书签】stacking、blending

    读懂stacking:模型融合Stacking详解/Stacking与Blending的区别 https://blog.csdn.net/u014114990/article/details/5081 ...

  5. win服务器管理系统全面升级,教您如何成为运维达人

    作为服务器运维人员都知道,日常检查服务器问题并处理问题几乎占据了所有时间,检查服务器的繁琐也只有他们自己能体会,这些外界看似的“工作本分职责”,真是有苦难言.为此我专门研究了市面上三款主打的服务器管理 ...

  6. 循序渐进VUE+Element 前端应用开发(6)--- 常规Element 界面组件的使用

    在我们开发BS页面的时候,往往需要了解常规界面组件的使用,小到最普通的单文本输入框.多文本框.下拉列表,以及按钮.图片展示.弹出对话框.表单处理.条码二维码等等,本篇随笔基于普通表格业务的展示录入的场 ...

  7. markdown的简易使用方法

    markdown 的使用方法 标题的使用: 以#号开头,后面跟上空格键. 一级标题用一个#号, 二级标题用两个##.以此类推,总共六级. 段落的编写 至少使用一个空行来分割段落 :即按两次enter键 ...

  8. Chisel3 - 模块

    https://mp.weixin.qq.com/s/2vjM-gcauvHnn6KJzlOm4g   Chisel的模块和Verilog的模块很相似,都用来定义模块结构(hierarchical s ...

  9. Maven_setting文件/解释

    setting文件解释: setting.xml配置文件 maven的配置文件settings.xml存在于两个地方: 1.安装的地方:${M2_HOME}/conf/settings.xml 2.用 ...

  10. Java实现 LeetCode 647 回文子串(暴力)

    647. 回文子串 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串. 示例 1: 输入: "a ...