软件安全性测试(连载13)

简介: 软件安全性测试(连载13)

2.7 HTTP参数污染(HPP)


      参数污染(HTTP Parameter PollutionHPP),通过下面的例子来看一下参数污染。


假设有个URLhttp://www.xxxx.com/search.XXX?id=120&id=110

  •  PHP会理解成id=110               #选择了第一个参数,放弃了第二个参数。
  •  JAVA会理解成id=120          #选择了第二个参数,放弃了第一个参数。
  •  ASP会理解成id=110,120           #两个参数同时选择。


1. PHP参数污染

先来看一下PHPindex.php代码如下。

<?php
$str = $_REQUEST['str'];
echo $str;
?>


      URL为“http://..../index.php?str=hello&str=world”,页面显示“world”字符串。

      URL为“http://..../index.php?str=hello&str=<script>alert(1)</script>”,JavaScript代码“<script>alert(1)</script>”被激活。


2. JAVA参数污染

Jspindex.jsp代码如下。

<%
Stringusername=request.getParameter("username");     
%>
<%=username%><br>


      URL为“index.jsp?username=hello&username=world,页面显示“hello”字符串。


3. HPP的威胁

      HPP的威胁主要在于它可以绕过前端代码的检查。下面这段代码通过JavaScript通过黑名单的方法,来检查参数中是否含有不允许出现的字符,代码如下。

function GetQueryString(name)
{
     var reg = newRegExp("(^|&)"+ name +"=([^&]*)(&|$)");
     var r =window.location.search.substr(1).match(reg);
     if(r!=null)return  unescape(r[2]); return null;
}
function checkQueryString(){
    if(GetQueryString("id")=="script")
        alert("参数不可以为script");
    else{
        window.location.href="wellcome.html";
    }
}
</script>
</head>
<bodyonload="checkQueryString()">


      如果URL为“http://www.mydomain.com/index.html?id=script”,页面会弹出提示框,内容为“参数不可以为script”。但是当URL为“http://www.mydomain.com/index.html?id=1&id=script”,JavaScript认为id=1,系统就进入到wellcome. html页面中了。


      同样在WAF防火墙中选择的是第一个参数,比如系统中仍旧不允许出现script参数,对于URLhttp://www.mydomain.com/index.jsp?id=1&id=scriptWAF防火墙不会拦截,交给后端index.jsp去处理,script就被获取,这样黑客就可以采取行动了。


      如果对于前面的,进行一下如下改动就可以防止HPP了,代码如下。

function checkurl(){
    var test = window.location.href;
    var url = test.split('?')[1];//获取所有参数
    var myarray = url.split("&");//分离每个参数
    var key="";
    var prm="";
    for (i=0;i<myarray.length;i++ )
    {
        key = myarray[i].split('=')[0]; //获取当前参数
        value = myarray[i].split(‘=’)[1]; //获取当前值
        if ((key=="id") &&(value.indexOf("script"))){
            alert("参数不可以为script");
            break;
        }else{
           window.location.href="wellcome.html";
        }
    }
}


4. HTTP的参数处理

28是各种常用的HTTP的参数处理情况(来源于网络)。

image.png

28 常用的HTTP的参数处理情况


5. HPP的防护方法

HPP的防护方法主要有以下两点。

  •  检查URL格式是否存在多同名参数。
  •  根据当前语言如何处理多参数做响响应处理。


2.8信息侦探


1. Baidu Hack

      如果你的产品可以通过Internet访问,就可能被类似Google、百度等搜索工具搜索到,搜索工具给学习和生活带来了方便,同时也暴露了产品的信息。这里我们以百度作为例子进行介绍。9Baidu Hack信息。


9 Baidu Hack

关键字

作用

使用方式

例子

注意事项

intitle

把搜索范围限定在网页标题中

关键的部分用intitle:开头

照片intitle:小猪佩奇

 intitle:和后面的关键词之间没有空格

site

搜索某个网站中有想要的内容

插叙内容后面加上 site:网站域名

php site:www.51testing.com

site:和后面的网站域名之间不要带空格,也不要带"http://" 

inurl

把搜索范围限定在特定url

inurl:,后面跟着url中出现的关键词

渗透测试 inurl:testurl里面含test

inurl:和后面所跟的关键词之间不要有空格

""《》

精确匹配,让百度不拆分查询词

""或《》(中英文均可)

"探索式软件测试"

书名号会出现在搜索结果中
书名号括起来的内容不会被拆分

-

让搜索结果中不含有特定查询词

用减号 -语法

简历模板 -程序员简历

前一个关键词和减号之间必须有空格,没有空格减号会被当成连字符


      下面介绍几个案例

  •  site:URL

作用:显实URL内所有收录的网页。

案例:site:www.3testing.com。显示网站www.3testing.com中所有网页。

  •  intitle: 内容

作用:标题中含有内容所有收录的页面。

案例:intitle: 小猪佩奇。标题中含有“小猪佩奇”的网页。

  •  文件后缀 site:URL

作用:URL中指定格式后缀名所有收录的网页。

案例:php site:www.51testing.comwww.51testing.com网站中所有收入的php格式的网页。

  •  关键字 inurl:名称

作用:URL中含有指定名称,含有“关键字”所有收录的网页。

案例:渗透测试 inurl:testURL中含有test且关于“渗透测试”所有收录的网页。

  •  "关键字"

作用:关键字为“关键字”的查询,且关键字是不可拆分的。

案例:"探索式软件测试"。查询关键字为“探索式软件测试”所有收录的网页,关键字不可拆分,比如“探索式”“软件”“测试”“软件测试”。

  •  关键字-去除内容

作用:查询内容为不包含“去除内容”的“关键字”所有收录的网页。

案例:软件测试-软件自动化测试。不包含“软件自动化测试”的“软件测试”的网站。


2. nmap

      nmap是一个信息侦探的工具,在本书下篇6.3.1中将会详细介绍。


3. DirBuster

      DirBuster DirBusterOWASP开发的一款专门用于探测WEB服务器的目录和隐藏文件的工具,在本书下篇6.3.2中将会详细介绍。


4. 指纹识别

      指纹识别是将识别对象的指纹进行分类比对从而进行判别,指纹识别具有终身不变性、唯一性和便利性。计算机的指纹识别与人的指纹识别具有相同处。


1)通过截包工具获得

      29是通过截包工具Fiddler获取的一个HTTP请求包头,由此可以知道发起请求的客户端是64位的Windows 10操作系统。


image.png

29 常用的HTTP的参数处理情况


2)通过其他信息侦探工具获取的指纹信息

      下面是通过nmap工具获得的

C:\Users\Jerry>nmap -O www.3testing.com

Starting Nmap 7.40 ( https://nmap.org ) at 2019-02-20 17:25?D1ú±ê×?ê±??
Nmap scan report for www.3testing.com (123.56.135.186)
Host is up (0.037s latency).
Not shown: 995 filtered ports
PORT     STATE  SERVICE
21/tcp   open   ftp
80/tcp   open   http
443/tcp  open   https
1433/tcp closed ms-sql-s
3306/tcp closed mysql
Device type: general purpose|storage-misc|broadbandrouter|router|media device|WAP
Running (JUST GUESSING): Linux 2.6.X|3.X (94%), HPembedded (91%), MikroTik RouterOS 6.X (90%), Infomir embedded (90%), Ubiquitiembedded (90%), Ubiquiti AirOS 5.X (90%)


      由此可获知网站www.3testing.com所用的操作系统内核为Linux 2.6.X|3.X (94%) HP embedded WEB服务器等其他信息。


3)指纹识别工具

      当然也可以使用一些专业的指纹识别工具进行指纹识别。


5. 对于信息侦探的防护方法

      只有通过类似防火墙、安装防病毒工具、加强人自身和安全保护等手段才可以部分防止信息侦探。

目录
相关文章
|
存储 Web App开发 移动开发
软件安全性测试(连载8)
软件安全性测试(连载8)
91 0
软件安全性测试(连载8)
|
安全 Java PHP
软件安全性测试(连载15)
软件安全性测试(连载15)
128 0
软件安全性测试(连载15)
|
安全 前端开发
软件安全性测试(连载7)
软件安全性测试(连载7)
119 0
软件安全性测试(连载7)
|
JSON 监控 安全
软件安全性测试(连载2)
软件安全性测试(连载2)
127 0
软件安全性测试(连载2)
|
存储 JavaScript 前端开发
软件安全性测试(连载3)
软件安全性测试(连载3)
110 0
软件安全性测试(连载3)
|
安全 程序员 网络安全
软件安全性测试(连载18)
软件安全性测试(连载18)
98 0
软件安全性测试(连载18)
|
开发框架 安全 前端开发
软件安全性测试(连载14)
软件安全性测试(连载14)
90 0
软件安全性测试(连载14)
|
SQL 存储 Oracle
软件安全性测试(连载11)
软件安全性测试(连载11)
118 0
软件安全性测试(连载11)
|
存储 移动开发 算法
软件安全性测试(连载19)
软件安全性测试(连载19)
105 0
软件安全性测试(连载19)
|
SQL 存储 安全
软件安全性测试(连载21)
软件安全性测试(连载21)
147 0
软件安全性测试(连载21)
下一篇
无影云桌面