1、漏洞描述

    HPP是HTTP Parameter Pollution的缩写,HTTP参数污染注入源于WEB应用对于提交的相同参数的不同处理方式导致。下面简单列举了一些常见的Web服务器对同样名称的参数出现多次的处理方式:

WEB服务器参数获取函数获取到的参数
PHP/Apache$_GET(“par”)Last
JSP/TomcatRequest.getParameter(“par”)First
Perl(CGI)/ApacheParam(“par”)First
ASP/IISRequest.QueryString(“par”)All (comma-delimited string)
Python/Apachegetvalue(“par”)All (List)

1.1、服务器两层架构

apache-tomcat.png
此处服务器端由两部分组成:第一部分为Tomcat,它是Java的web容器,能够处理jsp。第二部分为Apache,它本身只支持静态网页,但是可以通过插件支持php
工作流程:客户端向服务器发起请求,请求到tomcat服务器,然后tomcat再向apache服务器请求数据,最后返回数据路径相反。

2、HPP有什么用

    利用参数污染可以改变web应用程序行为,访问或利用不可控变量,以及绕过输入验证检查、绕过某些防火墙对于 SQL注入的检测

3、SQLi-LABS(Less-29)为例,Tomcat的配置

    Less 29 - Less 31这三关是两层服务器架构,所以需要配置好Tomcat,jdk与tomcat的安装与配置可自行百度,完成后按照如下步骤进行配置:

  1. 将mysql-connector-bin.jar下载后复制到jdk目录下的/jre/lib/ext/文件夹下
  2. 解压sqli-lib目录下的tomcat-files.zip,然后复制到tomcat的/webapps/ROOT目录下,并修改其中index.jsp中的转发链接为apache下的sqli-lab的路径。

4、注入过程

    Less-29(GET - Error Based- IMPIDENCE MISMATCH- Having a WAF in front of web application)
    我们可以直接用浏览器插件查看它的架构为Apache (php),其解析最后一个参数:
架构.png

    当index.php?id=1时回显如下:
1.png

    当index.php?id=1&id=2时回显如下:
2.png

因为存在WAF,第一个参数存在过滤,所以我们可以在第二个参数开始愉快的注入:
zr.png

Last modification:March 27th, 2020 at 01:45 pm
如果觉得我的文章对你有用,请随意赞赏