首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件安全性测试(连载13)

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

作者头像
顾翔
发布2020-02-11 09:44:43
6010
发布2020-02-11 09:44:43
举报

2.7 HTTP参数污染(HPP)

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

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

l PHP会理解成id=110 #选择了第一个参数,放弃了第二个参数。

l JAVA会理解成id=120 #选择了第二个参数,放弃了第一个参数。

l ASP会理解成id=110,120 #两个参数同时选择。

1. PHP参数污染

先来看一下PHP,index.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参数污染

Jsp的index.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参数,对于URL为http://www.mydomain.com/index.jsp?id=1&id=script,WAF防火墙不会拦截,交给后端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的参数处理情况(来源于网络)。

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

5. HPP的防护方法

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

l 检查URL格式是否存在多同名参数。

l 根据当前语言如何处理多参数做响响应处理。

2.8信息侦探

1. Baidu Hack

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

9 Baidu Hack

关键字

作用

使用方式

例子

注意事项

intitle

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

关键的部分用intitle:开头

照片intitle:小猪佩奇

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

site

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

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

php site:www.51testing.com

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

inurl

把搜索范围限定在特定url中

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

渗透测试 inurl:test(url里面含test)

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

""《》

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

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

"探索式软件测试"

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

-

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

用减号 -语法

简历模板 -程序员简历

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

下面介绍几个案例

l site:URL

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

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

l intitle: 内容

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

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

l 文件后缀 site:URL

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

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

l 关键字 inurl:名称

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

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

l "关键字"

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

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

l 关键字-去除内容

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

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

2. nmap

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

3. DirBuster

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

4. 指纹识别

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

1)通过截包工具获得

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

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. 对于信息侦探的防护方法

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试培训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站渗透测试
网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档