业务安全(逻辑漏洞)
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测试