HTTP参数污染学习

HTTP参数污染 --- HPP

参考:php

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

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

好比: https://www.baidu.com/s?wd=asdqwe&wd=http参数污染
百度究竟会给出有关 asdqwe 的相关信息,仍是 http参数污染 的相关信息,仍是二者兼并?事实证实,百度只取第一个关键词 asdqwe,不一样的服务器架构会取不一样的值web

缘由:因为现行的HTTP标准没有说起在遇到多个输入值给相同的参数赋值时应该怎样处理,并且不一样的网站后端作出的处理方式是不一样的,从而形成解析错误chrome

下面是不一样服务端所处理的方式django

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 都有flask

用处:后端

  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框架:app

框架 取值
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 的时候
相关文章
相关标签/搜索