以下是整理的一些常见的安全渗透测试点

1.用工具fidder抓包拦截篡改服务器端返回的代码,导致下级拥有对上级的访问操作权限

以下是公司开发写的用户角色权限页面跳转

修改普通角色跳转的页面为管理员跳转的页面

2.篡改传输的数据,积分兑换下订单,可以花别人的积分兑换东西送货到我想送的人和地址

3.任意修改用户资料

某交易平台的用户可以通过该系统的个人资料修改页面修改个人的昵称和头像。

截取发送修改请求的数据包抓取进行分析。我们发现在提交的过程中,其实请求自带了一个隐藏的参数investor.loginName,其实 investor.loginName为登录的手机号码(或用户名),investor.Name为重置的用户名,通过直接修改掉参数 investor.loginName为任意注册的用户名或者手机号码,即可成功篡改重置该用户的用户名。

4.任意查询用户信息

在对金融交易平台测试的过程中,我们发现大部分平台并未对查询功能进行优化,使用用户的uid之类的账号标志参数作为查询的关键字,并且未对查询范 围进行控制,导致出现任意信息查询的安全漏洞。该类型漏洞在手机客户端较为常见,如在某交易平台手机商城就发现了任意查询其他用户信息的安全问题。

当点击商城的个人资料修改处,系统会通过将当前用户的phone_client_uuid提交到服务器进行查询,调出个人资料的内容

但由于系统并未对该功能进行访问控制,导致可通过遍历uuid的方式查询平台中任意用户的资料,通过工具对phone_client_uuid的后5位进行爆破尝试,如下图:

通过对返回值的length进行筛选,发现成功爆破部分phone_client_uuid所对应的用户信息。

代码防护

针对平行权限的访问控制缺失,我们建议使用基于用户或者会话的间接对象引用进行防护,比方说,一个某个选项包含6个授权给当前用户的资源,它可以使 用一串特殊的数字或者字符串来指示哪个是用户选择的值,而不是使用资源的数据库关键字来表示,数字和字符串的生成可以结合账号信息进行生成,使得攻击者难 以猜测生成的方式。

针对垂直权限的访问控制缺失,我们建议可以使用缺省拒绝所有的访问机制,然后对于每个功能的访问,可以明确授予特定角色的访问权限,同时用户在使用该功能时,系统应该对该用户的权限与访问控制机制进行校对。

5.任意重置用户密码

漏洞描述

用户越权去修改其他用户的信息,如密保电话、密保邮箱等,由于它敏感性所以我们将它归纳成一类进行探讨。

案例

绕过短信验证码

基本所有的金融交易平台都有短信找回密码的功能,但部分短信验证的功能较为不完善导致可被利用重置任意用户的账号,同样是某金融平台的实际案例:

在已知对方用户名和手机号码的情况下,通过站点的密码找回功能可绕过短信验证码直接重置该账号密码。下图为密码重置页面:

该漏洞出现主要的原因在于开发人员在第二步设置新密码时服务端没有对手机验证码进行二次校验,提示:重要的功能都需要做服务器端验证,导致当攻击者可以利用修改返回值的方式直接跳转到设置新密码页面,然后重置用户的密码。

6.短信验证码暴力破解

部分金融交易平台为了用户登录方便会设置短信验证码登录功能,但并未对验证码的登录错误次数进行限制,导致可利用验证码爆破的方式强行登录账号。在某证券交易平台就曾出现过该安全问题。

该平台使用6位数字随机验证码进行登录,但并未对登录错误次数和验证码失效时间进行限制,导致可以暴力破解该验证码强制登录账号。如下图:

同样是通过返回值的length字段进行判断是否登录成功。6位字段的爆破需要较长的时间,但4位验证码的爆破时间最慢也仅需要约5分钟左右。

代码防护

针对案例一中的漏洞,我们建议在第二步修改密码时服务端再次验证手机验证码,部分平台所采用的做法是,第一步验证码提交成功后,将验证码隐藏在一个 “hidden”表单中,并在第二步修改密码中进行提交,服务端再次验证短信验证码,保证准确性,同时对验证码的错误次数进行限制,当验证错误超过特定次 数,当前验证码无效。

针对案例二中的漏洞,我们同样建议随机验证码设置错误次数限制,当验证错误超过特定次数,当前验证码即无效。

7.恶意注册

漏洞描述

恶意注册,是指攻击者利用网站注册功能的安全漏洞,注册大量的垃圾账号,导致系统增多大量无用数据。一般网站开发者为了防止恶意注册的行为,在注册 页面均会在加入一些需要人工输入的步骤,比方说短信验证码,邮箱验证等。但是在对金融平台测试的过程中,同样也发现了部分验证功能可被绕过。

案例

注册数据包重放绕过验证码

部分金融交易平台为了保证注册用户的真实性,往往都会要求验证手机,并通过发送验证码的方式来保证注册账号并非僵尸账号,但是部分平台的验证码可被多次重放,导致可注册大量垃圾账号,在某交易商城的注册功能就存在该漏洞,下图为注册时需要给手机发送验证码的数据包:

短息码验证完后,直接注册写数据库,通过修改phoneNum的值可以实现批量注册账号:

通过修改phoneNum的值为15527xxxx96、15527xxxx97可成功注册这两个账号:

该漏洞出现的原因在于后台未校验验证码的使用次数和时间,只校验了其准确性,因此可被利用进行多次注册。

代码防护

目前遇到的大部分恶意注册类的安全漏洞均为验证码可被多次使用造成,我们建议后台对验证码的使用进行限制,任何的验证码应为一次性,防止验证码被多次使用

8.恶意短信

漏洞描述

恶意短信是一种类似于DDoS的攻击方式,他是利用网站的短信相关的功能,对用户的手机进行长时间的短信轰炸,导致手机瘫痪。除了单纯的短信轰炸之外,我们在测试过程中也发现,部分金融交易平台对所发送的短信内容也并没有进行限制,导致可被利用进行短信欺诈。

案例

短信轰炸

在测试的过程中,我们发现众多的金融交易平台仅在前端通过JS校验时间来控制短信发送按钮,但后台并未对发送做任何限制,导致可通过重放包的方式大 量发送恶意短信。如某交易平台的手机注册处就出现过该类型漏洞。利用fiddler抓取数据包,并进行重放可以绕过前端的限制,大量发送恶意短信。

任意短信内容编辑

在某平台的修改绑定手机功能就曾出现过可编辑短信内容的问题。

点击“获取短信验证码”,并抓取数据包内容,如下图。通过分析数据包,可以发现参数sendData/insrotxt的内容有客户端控制,可以修改为攻击者想要发送的内容

将内容修改“恭喜你获得由xx银行所提供的iphone6一部,请登录http://www.xxx.com领取,验证码为236694”并发送该数据包,手机可收到修改后的短信内容,如下图:

该类型漏洞对系统的影响不大,但若被攻击者利用进行短信欺诈,将严重影响平台的声誉,甚至可能会惹上法律纠纷。

代码防护

针对恶意短信类的安全问题,我们建议可以通过以下两种方式进行防护:

1、从服务端限制每个号码的发送频率和每天的发送次数,防止攻击者利用短信接口进行恶意轰炸。‍‍

‍‍2、发送短信的内容应直接由系统内部进行定义,客户端可通过数字或字符的方式,对所需要发送的内容进行选择,如messagetype=1 为密码找回,messtype=2为注册,然后通过数字来索引要发送的内容。

9.增加抽奖机会

本来没有抽奖的次数,

可用fidder测试的一些安全测试点的更多相关文章

  1. APP端测试,常见功能测试点汇总

    除去每个产品和版本不同的业务需求以及功能,针对于大多数的APP的共同点和移动设备的特性,本文总结了一些APP功能测试中经常遇见,需要考虑到的测试点以共参考 一.安装和卸载 应用的安装和卸载在任何一款A ...

  2. Android 音视频开发时可用的测试链接整理

    一. 国内免费可用的STUN服务器 1 | stun.xten.com | 3478 2 | stun.voipbuster.com | 3478 3 | stun.voxgratia.org | 3 ...

  3. Oracle 高可用作业测试

    1.RAC 是一种: A 分布式数据库B 内存共享多节点数据库C 能够保护数据安全的架构 2.RAC 和CRS 的区别是: A 前者表示一种架构,后者是一套软件B 前者表示一套软件,后者是一种架构 C ...

  4. (5.2)mysql高可用系列——测试环境部署

    关键词环境部署: ############## 测试环境机器架构 #########[1]策划[1.1]linux服务器A组 8台 192.168.1.200~192.168.1.207,主机名db, ...

  5. xpath路径前可用方法测试

    $x("string-length(//h3[@class='t'])") 8 $x("string(//h3[@class='t'])") "XPa ...

  6. jQuery+Ajax+PHP 制作简单的异步数据传输(测试用户名是否可用)

    实现基本异步数据传输,略去与数据库交换,先直接在PHP端判断:用户名为 user1 即为不可用, 测试时外加了 普遍的 “Loading..." 功能,此功能可直接在PHP中循环延时 for ...

  7. linux下libnet编程 亲自测试可用

    linux下libnet编程 亲自测试可用 亲自测试  如果build包的时候 只要把类型改了 就能改成相应的协议. 0x0800 ip 0x0806 arp 0x86DD    IPv6 0x86e ...

  8. 上云测试,这些关键点你get 到没有

    导读,先从云化说起,再谈谈云化形态下,除了常规的功能测试,云化的测试,还需要有几个必须要get到的硬核指标,最后在分别详解这些关键点硬核指标是什么,和如何测试呢.这是个值得深思的问题,希望所有测试人都 ...

  9. [转帖]上云测试,这些关键点你get 到没有

    上云测试,这些关键点你get 到没有 https://www.cnblogs.com/mypm/p/10852656.html?tdsourcetag=s_pcqq_aiomsg sticky 还有s ...

随机推荐

  1. 依赖注入(IOC)二

    依赖注入(IOC)二 上一章我们讲了构造注入与设值注入,这一篇我们主要讲接口注入与特性注入. 接口注入 接口注入是将抽象类型的入口以方法定义在一个接口中,如果客户类型需要获得这个方法,就需要以实现这个 ...

  2. BizTalk 2010/2013 EDI B2B

    BizTalk 2010/2013 EDI B2B项目实践(1)   BizTalk 2010/2013 EDI B2B项目实践(1) BizTalk开发标准EDI B2B是件非常容易的事情,但对于初 ...

  3. 正则表达式引擎:nfa的转换规则。

    正则表达式引擎:nfa的转换规则. 正则到nfa 前言 在写代码的过程中,本来还想根据龙书上的说明来实现re到nfa的转换.可是写代码的时候发现,根据课本来会生成很多的无用过渡节点和空转换边,需要许多 ...

  4. U盘安装CentOS 6.4 + Windows 7双系统 (Windows 7下安装 CentOS 6.4)

    最近在看<鸟哥私房菜:基础学习篇>,觉得很不错,想要装个windows 7 和 CentOS 6.4 双系统,在网上找了很多教程,觉得乱七八糟的,弄得很复杂,而且很多都不是很完整,对于新手 ...

  5. android引导页的实现 及跳转到主页面

    第一个activity package com.qualitypicture.activity; import java.util.ArrayList; import java.util.List; ...

  6. linux主机load average的概念&&计算过程&&注意事项

    最近开发的一个模块需要根据机房各节点的负载情况(如网卡IO.load average等指标)做任务调度,刚开始对Linux机器load average这项指标不是很清楚,经过调研,终于搞清楚了其计算方 ...

  7. erlang集成开发环境搭配配置出现的问题

    问题:Unable to create the selected preference page.  com.avaya.exvantage.ui.interfaces.eclipse.plugin  ...

  8. 通过Shell脚本读取properties文件中的参数时遇到\r换行符的问题

    今天在编写微服务程序启动脚本的时候,遇到一个比较奇葩的问题,下面给出具体描述: 目标:通过读取maven插件打包时生成的pom.properties文件,获取里面的应用名称和应用版本号,然后拼接得到s ...

  9. are both mapped to the url-pattern 错误解决方法

    今天运行tomcat的时候出现报了一大波错误,下面我截取了部分错误信息: 严重:A child container failed during start java.util.concurrent.E ...

  10. .NET基础——方法

    这一篇,我们来学习C#中的方法——函数 1.  方法的功能  方法的功能:用来复用代码的,当我们在一个程序中反复的写了同样的代码,我们就可以把需要重复写的代码定义在一个方法中,用到的时候只需要调用就可 ...