业务安全(逻辑漏洞)

1、登陆认证模块

2、业务办理模块

3、业务授权访问模块

4、输入输出模块

5、回退模块

6、验证码机制

7、业务数据安全

8、业务流程乱序

9、密码找回模块

10、业务接口调用模块

一、 登陆认证模块测试

  1、 暴力破解测试

  使用burp suite,利用字典进行测试

  2、 本地加密传输册数(查看数据是否采用SSL加密方式加密)

  使用wireshark

  3、 session测试

  *固定会话:在退出时,记录当前浏览器授权的sessionID值,再次登陆时将本次的值与上次的对比,如果相同则存在固定会话风险。使用burpsuite工具。

  *会话注销:退出后判断授权认证的sessionID值是否有效,若依然有效则存在风险。

     *会话超时时间:对系统会话授权认证时长进行测试。登陆成功后如果在固定时间内(例如30分钟)该用户与服务器没有任何交互操作,看是否可以继续操作。如果可以则                           存在风险。使用  burpsuite工具。

   4、cookie仿冒测试

   对系统会话中授权认证cookie中会话身份认证标识进行篡改,看返回的是否是篡改后的身份的信息。使用burp suite

  5、密文对比认证测试(提交的账号密码先加密再传输给服务器,可能泄露加密方式)

  使用burp suite 抓包并根据页面代码分析是否加密看是什么加密。如果知道了加密方式,就在暴力破解Payload Processing中加上加密方式(例如Hash MD5),然后配置完成进行暴力破解,就可能爆出来密  码

  6、登录失败信息测试

  根据系统返回的登陆失败信息进行逻辑分析,判断是否可以才出来账号或密码

二、 业务办理模块测试

  1、 订单ID篡改测试

  注册一个普通账号,然后抓包修改、遍历ID看是否可以查看到他人的订单内容

  2、 手机号码篡改测试

  当请求参数中有手机号参数时,可以尝试修改他,测试是否含有越权漏洞。

  3、 用户ID篡改测试

  请求中有参数时,并且此参数可以显示用户的隐私信息,可以尝试篡改ID越权访问其他用户隐私信息。注册一个普通账号遍历ID,获得其他用户信息,篡改ID看是否返回其他用户信息

  4、 邮箱和用户篡改测试

  发送邮件或站内信息时,抓包篡改发信请求,可伪造发信人,发送钓鱼信件

  5、 商品编号篡改测试

  在提交订单时,抓包篡改商品编号,看是否可以交易成功

  6、 竞争条件测试

  再提交订单时,设置多个线程重放此包,可能就有个别请求绕过金额、次数的判断,交易成功。就是在一个请求读取了另一个还未提交的请求的数据,从而实现了交易的成功。

三、 业务授权访问模块

  1、 非授权访问测试

  登陆需要通过认证的页面,切换浏览器再次访问此页面,如果访问成功则存在漏洞

  2、 越权测试

  水平越权:相同的权限,不同的用户

  正常查看更改自己的信息,抓包篡改ID,爆破参数,查看其他同权限账号的信息

  垂直越权:使用权限底的用户可以访问权限高的用户

  登陆普通账号,抓包修改ID为高权限的ID,成功查看高权限的信息。

  例如,先登录一个账号密码均为111的普通账号,然后点击修改密码,抓包会看到两个参数一个是账号一个是密码,账号改为admin(超级管理员的账号),密码就是789(随意),提交修改后的数据包,这  是admin的密码已经改成了789。

四、 输入输出模块测试

  1、 SQL注入测试

  数字型注入:and 1=1  and 1=2

  字符型注入:加‘

  2、 XSS注入测试

  反射型XSS:在一些搜索、建议、留言板、投诉等输入框中输入简单脚本,如果能弹出对话框则存在xss漏洞

  存储型XSS:在新建、编辑中可以添加脚本看是否会被执行

  3、 命令执行测试

  测试中没有过滤的参数:cmd=、command、excute=

  命令连接符:& | || ;

  Php系统命令执行函数:

  System函数:输出执行结果返回最后一行

         string system(string command, int [return_var])

  exec函数:执行外部程序

        string exec(string command, string [array], int [return_var])

  popen函数:打开文件。

         int popen(string command, string mode)

  shell_exec函数:

  反引号``:

五、 回退模块测试

  对业务完成时,例如修改密码完成后,进行回退,看是否可以退回到修改密码的页面,如果可以则存在业务回退漏洞

六、 验证码机制测试

  1、 验证码暴力破解测试

  填写任意手机号发送验证码,然后抓包暴力破解验证码

  2、 验证码重复使用测试

       在一些网站的登陆或评论等页面,进行测试,再提交成功一个信息之后。抓取提交的数据包,使用发包工具反复进行提交,看是否成功提交了多个信息

  3、 验证码客户端回显测试

  当验证码在客户端生成时,客户端需要和服务器进行验证码交互发送。可利用浏览器的工具查看详细信息。在找回密码页面输入手机号等信息后,获取验证码之后,通过浏览器查看返回包的信息,如果包短  信验证码,则存在此问题。

  4、 验证码绕过测试

  在注册页面,随意填写信息获取验证码,然后填写任意验证码,提交请求并burp suite抓包,选择Do intercept-Response to this request,单击Forword,就是网站返回的数据包,然后修改返回包的信息,转  发返回的数据包,查看能否注册成功

  5、 验证码自动识别测试

   在登陆网站的网页,通过刷新验证码观察验证码的规律,进行图像二值化、去干扰等处理,并进行对比储存成功识别的验证码,截入工具,然后标记进行暴力破解。

  PKAV HTTP Fuzzer工具

七、 业务数据安全测试

  1、 商品支付金额篡改测试

  抓包修改支付页面的金额

  2、 商品订购数量篡改测试

  抓包修改数量

  3、 前端JS限制绕过测试

  抓包修改数量

  4、请求重放测试

  在生成订单时抓取订购请求,观察订购相同的商品token、可变参量是否是随机的,如果是,检查这些数在订单中是否唯一,然后尝试重放之前已经完成的订单请求,看订单是否生效

  5、 业务上线测试

  通过抓包修改为业务预期范围外的业务,看服务器会不会有正确回应

八、 业务流程乱序测试

  业务流程绕过测试

  访问注册页面,注册账户之后充值提交并抓取数据包,填写任意金额然后并抓包,获取订单号,利用订单号构造充值链接并访问,看是否能充值成功

九、 密码找回模块测试

  1、 验证码客户端回显测试

  填入要找回的密码,然后发送验证码抓包,查看响应数据中的验证码就可以绕过了

  2、 验证码暴力破解测试

  先用自己的手机号发送验证码,找到规律之后,确认可以用暴力枚举,先任意填写几位验证码然后抓包,暴力破解出验证码,就可以修改密码了

  3、 接口参数账号修改测试

  在修改密码或者找回密码等页面如果在验证时,链接中会有参数的话,可以试着修改参数,改成自己的地址然后篡改密码

  4、 Response状态值修改测试

  即修改响应请求的结果达到目的。出现一些特定的响应值:true、1、ok、success等,可以修改这些回显

  5、 Session覆盖测试

  参数不可控时,   

  6、 弱Token设计缺陷测试

  弱Token:时间戳、uid加密后的md5值或加密base64、uid+4位随机数等

  找回密码功能中,会有一个找回密码的链接,其中可以观察参数的规律,比如token,可以查看token的规律,猜测爆破出来,构造找回密码的链接

  7、 密码找回流程绕过测试

  密码找回一般有三个步骤:输入要找回的账号,校验凭证,成功进入修改密码界面。

  第二步很重要,我们可以尝试分析所有请求的接口,找到每一个url的规律,找到最后一步的接口,使用rul测试看是否会跳过凭证校验直接到密码修改的页面。

十、 业务接口调用模块测试

  1、 接口调用重放测试(类似短信轰炸)

  在提交时抓包,然后重复对数据包进行重放

  2、 接口调用遍历测试

  查找带有用户表示参数的url,然后看是否包含敏感信息,之后遍历参数,看是否会返回他人信息

  3、 接口调用参数篡改测试

  先登录自己的账号,进行密码找回或修改,在提交验证的时候抓包,把目标账号的验证信息填成自己的,看是否会正常发送过来验证信息

  4、 接口未授权访问\调用测试

  爬取网站找出有敏感信息的请求,然后复制改url到其他浏览器访问看是否能访问到之前的敏感信息,能访问到就是存在漏洞

  5、 Callback自定义测试

  6、WebService测试

猜你喜欢

转载自www.cnblogs.com/qie-date/p/12219260.html
今日推荐