web测试常见安全问题和思路

web测试常见安全问题和思路

  • 登陆页面常见测试问题
        • 目录扫描
        • 端口扫描
        • 弱口令
        • 万能密码
        • 暴力破解
        • 登录框xss
        • 登陆框SQL注入
        • 登陆状态码绕过
        • 用户名枚举
        • 用户名密码明文传输
        • 任意用户注册
        • 批量用户注册
        • 任意用户密码重置
        • 短信接口滥用
        • 邮箱接口滥用
        • 网站源码信息泄露
        • 验证码失效
        • 万能验证码
        • 验证码返回
        • 验证码可识别
        • 验证码缺失
        • 短信验证码可爆破
        • 验证码空绕过
  • 业务办理模块
        • 订单ID篡改测试
        • 手机号篡改测试
        • 用户ID篡改测试
        • 邮箱和站内信息发件人篡改测试
        • 商品编号篡改测试
        • 竞争条件测试
  • 业务授权模块
        • 非授权访问测试
        • 越权测试
  • 输入输出模块
        • SQL注入
        • XSS测试
        • 命令执行测试
  • 业务回退模块
        • 回退测试
  • 验证码机制测试
        • 登陆验证码不刷新
        • 验证码暴力破解测试
        • 验证码重复使用测试
        • 验证码客户端回显测试
        • 验证码绕过测试
        • 验证码自动识别测试
  • 业务数据安全测试
        • 商品支付金额篡改测试
        • 商品订购数量篡改测试
        • 前端js限制绕过测试
        • 请求重放测试
        • 业务上限测试
  • 业务流程安全测试
        • 业务流程绕过测试
  • 密码找回模块测试
        • 验证码客户端回显测试
        • 验证码暴力破解测试
        • 接口参数账号修改测试
        • Response状态值修改测试
        • Session覆盖测试
        • 弱token设计缺陷测试
        • 密码找回流程绕过测试
  • 业务接口调用测试
        • 接口调用重放测试
        • 接口调用遍历测试
        • 接口参数篡改测试
        • 接口未授权访问/调用测试
        • Callback自定义测试
        • Webservice测试

登陆页面常见测试问题

目录扫描

端口扫描

弱口令

万能密码

暴力破解

登录框xss

登陆框SQL注入

登陆状态码绕过

用户名枚举

用户名密码明文传输

任意用户注册

批量用户注册

任意用户密码重置

短信接口滥用

邮箱接口滥用

网站源码信息泄露

验证码失效

万能验证码

验证码返回

验证码可识别

验证码缺失

短信验证码可爆破

验证码空绕过

业务办理模块

订单ID篡改测试

用户订单页面抓包修改订单号number=10096可查看其他人订单信息
在充值中选取大额充值订单,放弃订单,获得订单号,之后充值小额订单,拿到充 值成功的界面,将订单号修改为放弃的大额订单,观察是否成功

通常思路:
看看充值的时候是否有订单号字段,如果有在成功界面修改为未支付的订单号, 观察是否充值成功

手机号篡改测试

在需要手机号的短信验证处,抓包修改手机号,可能做到非本账号手机号获取能 够编辑本账号的验证码

通常思路:
抓包,查看get或者post参数存在手机号的地方,进行修改

用户ID篡改测试

抓包修改用户id或者遍历用户id

邮箱和站内信息发件人篡改测试

发送邮件信息抓包修改发送人的参数,可发送钓鱼邮件

商品编号篡改测试

找到编号价值高的商品,记录id,找到商品低的下单修改id为商品高的
攻击者提交订单时,抓包篡改商品编号,导致商品与价格不对应但却交易成功
如果业务是通过商品编号来判断价格的话,可能存在只修改A商品编号为B商品 编号,做到以A商品的价格购买B商品

通常思路:
先准备2个商品的编号,将其中一个改为另一个

竞争条件测试

通过条件竞争使余额达到负数,从而买多个商品
攻击者在提交订单时抓包,然后设置很多个线程重放此包。如图5-26所示,在众 多请 求中,个别请求就有可能争取绕过金额、次数的判断,交易成功,攻击者从 中获利

通常思路:
支付处,多线程请求付款确认,结果如果余额为负数,则存在该漏洞

业务授权模块

非授权访问测试

  1. 在没有登陆的情况下访问需要登陆才能访问的页面 非授权访问是指用户在没有通过认证授权的情况下能够直接访问需要通过认证才 能访 问到的页面或文本信息。可以尝试在登录某网站前台或后台之后,将相关的 页面链接复制 到其他浏览器或其他电脑上进行访问,观察是否能访问成功

越权测试

  1. 越权一般分为水平越权和垂直越权, 水平越权是指相同权限的不同用户可以互相访问; 垂直越权是指使用权限低的用户可以访问权限较高的用户。
    水平越权测试方法主要是看能否通过A用户的操作影响B用户。
    垂直越权测试方法的基本思路是低权限用户越权高权限用户的功能,比如普通用户 可使用管理员功能。

1.垂直越权:低权限查看高权限
2.水平越权 相同权限查看不同用户,修改用户id

水平越权
正常更改或查看A账户信息,抓包或者更改账户身份ID,成功查看同权限其他账 户业 务信息

垂直越权测试
登录普通账户A,抓包或直接更改账户A身份ID为高权限C账户的ID,成功查看 高权 限账户C的业务信息,

输入输出模块

SQL注入

1.数字型:and 1=2
2.字符型:’or ‘1’=’1

XSS测试

1.反射型
2.存储型
3.DOM型

命令执行测试

1.接受参数执行系统命令 & | || 未被过滤可执行

业务回退模块

回退测试

1.修改密码成功后回退一步回到重置密码的第三步,可任意重置没有限制

验证码机制测试

登陆验证码不刷新

没有清空session中的验证码信息
通常思路:
抓包多次重放,看结果是否会返回验证码错误,如没有返回验证码错误则存在未刷 新
观察检验的处理业务,如果验证码和用户名密码是分2次http请求校验,则也可 以爆破用户名和验证码

验证码暴力破解测试

1.填写任意手机号,点击发送验证码,抓包intruder验证码参数123456
2.没有对应的手机号或邮箱,但如果验证码纯数字4,5位左右,没有次数校验,可 以爆破
攻击者填写任意手机号码进行注册,服务器向攻击者填写的手机号码发送短信验证 码,攻击者设置验证码范围 000000~999999、00000~99999、0000~9999,对验 证码进行暴力破解,通过返回数据包判断是否破解成功,然后通过破解成功的验 证码完成注册

通常思路:
拿自己的手机号或邮箱先获取验证码查看验证码格式,之后多次提交错误的看是否 有次数现在,没有就爆破

验证码重复使用测试

1.页面提交内容需要验证码,遍历提交内容
攻击者填写投诉建议,输入页面验证码,抓取提交的数据包,使用发包工具对数据 包 进行重复提交,然后查看投诉建议页面是否成功提交了多个投诉信息

验证码客户端回显测试

在发送给手机或者邮箱验证码时,会在response包中有验证码,因此不需要手机 和邮箱就可以获取验证码,攻击者进入找回密码页面,输入手机号与证件号,获取验证码,服务器会向手机发送验证码,通过浏览器工具查看返回包信息,如果返回包中包含验证码,证明 存在此类问 题

通常思路:
发送验证码时抓包,看返回包

验证码绕过测试

修改response包绕过判定

在输入错误的验证码时会返回false之类的字段,如果修改response中的false为 true,会识别为验证通过 或者万能验证码0000

通常思路:
抓包,选择do intercept-> response to this request ,放包,抓到到下一个包就是 response的包,可以修改,重放

攻击者进入注册账户页面,输入任意手机号码,获取验证码,在注册账户页面 填写任 意验证码,提交请求并抓包,使用抓包工具查看并修改返回包状态码的信 息然后发送数据包,查看是否注册成功

验证码自动识别测试

业务数据安全测试

商品支付金额篡改测试

金额直接写在了post或者get请求中,对其进行修改达到修改了商品金额的效果

通常思路:
抓包修改金额的字段

商品订购数量篡改测试

在购买时,如果一个商品为负数,那么它的价格则会是负数,如果购买多种商品, 将其中一个设为负数,降低整体的价格

通常思路:
购物车里选取多个商品,修改其中一个商品的数量,在购买后查看最终的价格

前端js限制绕过测试

有些商品限购1个,但是判定是通过前端,因此可以抓包后修改数量

通常思路:
抓取限购数量内的包,抓取后修改个数,重放

请求重放测试

尝试重放之前已经完成流程的订购请求,观察服务器端是否做出正确响应, 若订 购再次生效,订单再次生成则表明服务器存在脆弱性

业务上限测试

业务流程安全测试

业务流程绕过测试

该项测试主要针对业务流程的处理流程是否正常,确保攻击者无法通过技术手段绕过 某些重要流程步骤,检验办理业务过程中是否有控制机制来保证其遵循正常流程。例如业 务流程分为三步:第一步,注册并发送验证码;第二步,输入验证码;第三步,注册成 功。在第三步进行抓包分析,将邮箱或手机号替换为其他人的,如果成功注册,就跳过了 第一步和第二步,绕过了正常的业务流程

攻击者访问注册页面,注册测试账户,充值提交并抓取数据包,填写任意充值金额并 抓包,获取订单号,利用订单号构造充值链接并访问链接,查看是否充值成功,如果充值 成功说明存在业务流程绕过问题

密码找回模块测试

验证码客户端回显测试

找回密码测试中要注意验证码是否会回显在响应中,有些网站程序会选择将验证码 回 显在响应中,来判断用户输入的验证码是否和响应中的验证码一致,如果一致 就会通过校验
如果是这个账号的用户,那么就可以在自己的邮件中看到验证码,但是如果不是自 己的账号当验证码发生泄露后任意账号密码修改的漏洞就触发了

验证码暴力破解测试

找回密码功能模块中通常会将用户凭证(一般为验证码)发送到用户自己才可以看 到 的手机号或者邮箱中,只要用户不泄露自己的验证码就不会被攻击者利用,但 是有些应用 程序在验证码发送功能模块中验证码位数及复杂性较弱,也没有对验 证码做次数限制而导致验证码可被暴力枚举并修改任意用户密码。

在测试验证码是否可以被暴力枚举时,可以先将验证码多次发送给自己的账号, 观察验证码是否有规律,如每次接收到的验证码为纯数字并且是4位数。

接口参数账号修改测试

在找回密码处,如果字段带上用户名,校验的邮箱或者手机号,将邮箱或者手机号 改为自己的,如果自己的能够收到验证码并重置密码,则该漏洞存在

通常思路:
抓包,注意找回密码流程中的邮箱号或者手机号字段,修改其为自己即可

通常在找回密码逻辑中,服务端会要求用户提供要修改的账号,然后给这个账号发 送 只有账号主人才能看到的凭证。比如给这个账号主人绑定的邮箱或手机号发送 验证码,或 者找回密码的链接,这样可以保证只有账号主人才可以看到这些凭证。 但是如果服务端对 账号的控制逻辑不当,就会导致原有账号被篡改为其他账号, 服务端把凭证发送给篡改后 的账号的邮箱或手机,最终造成可利用凭证重置任意 账号密码的漏洞。

Response状态值修改测试

输入要找回的目标手机号,短信认证码可以随便填写,然后单击“找回密码”按 钮对该请求抓包
Response的回显包已经成功接收到了,但是包返回的值是 false,通常false是失败 的含义,也就是说服务端校验验证码的时候发现验证码不一致然后 返回了false给 客户端,这里我们可以尝试修改false值为true,然后单击“Intercept is on”按钮 关 闭拦截让数据包正常发送

Session覆盖测试

已知A的手机号,不知B的手机号,找回A的密码,输入验证码后到了设置新密 码设置界面。这时在同一浏览器下重开窗口找回B的密码,获取验证码,刷新A 设置新密码的页面,如果此时修改的是B账号的密码,则存在漏洞
1.输入的手机号接收验证码,输入验证码来到密码重置页面
2.此时打开新的网页输入B的手机号 接收验证码,
3.此时浏览器已经由A的session转换为B的seesion
4.此时A的重置密码页面的session也是B的,所以修改的密码也是B的

通常思路:
准备2个账号,测试步骤如上所述
在邮箱收到找回密码连接时,依然可以使用该思路

弱token设计缺陷测试

有些时候通过找回密码的时候填邮箱,邮箱此时会收到一个带有token的链接,点 击链接就能跳转到重置密码的页面,如果token是base64,时间戳,位数较低 的 随机数则可以爆破
类似这样的弱Token现象有很多,比如将用户的uid加密成MD5 或者base64编 码,或者
直接用uid+4位随机数等这种可预测性的内容作为Token,测试时只需要多发几个 找回密码 的请求观察系统每次发送的找回密码链接中的参数值是否有规律即可

通常思路:
正常找回流程获取重置密码的url,了解token的规则后,爆破其他邮箱的重置密 码url

密码找回流程绕过测试

在找回密码处,一般会有三个步骤页面,页面1找回用户的填写,页面2找回时的 手机号短信验证码填写,页面3填写新密码,如果填好页面1,直接访问页面3能 够重设密码的话,则会存在该漏洞
(1)用户输入找回密码的账号;
(2)校验凭证:向用户发送短信验证码或者找回密码链接,用户回填验证码或单 击链接进入密码重置页面,以此方式证明当前操作用户是账号主人;
(3)校验成功进入重置密码页面

在测试中我们首先要收集三个步骤的请求接口,重点是收集到最后一步重置密 码 的接口,这样我们可以直接跳过凭证校验的接口去尝试直接重置密码

通常思路:
在设置好找回用户后,直接访问重设密码的url页面

业务接口调用测试

接口调用重放测试

在短信、邮件调用业务或生成业务数据环节中,如短信验证码、邮件验证码、订单生 成、 评论提交等,对业务环节进行调用(重放)测试。如果业务经过调用(重放)后多次 生 成有效的业务或数据结果,可判断为存在接口调用(重放)问题。

在进行接口调用重放测试时,攻击者与普通用户的区别在于他会通过 工具(如Burp Suite)抓取订单请求,然后在短时间内通过Burp Suite工具的Repeater对请 求(如订 单请求)进行多次重放,服务器则会根据请求在短时间内执行多个有效操作

接口调用遍历测试

Web 接口一般将常见的一些功能需求进行封装,通过传入不同的参数来获取数据或 者 执行相应的功能,其中一个最常见的场景就是通过接口传入id参数,返回对应id的一 些 信息。在安全测试中,我们可以使用Burp Suite作为HTTP代理,记录所有请求和响 应信 息,通过Burp Suite以登录后的状态对整站进行爬取,再使用过滤功能找到传入 id参数的 HTTP请求,然后通过Intruder对id参数进行遍历,看是否返回不同的响应信 息。如果不同 的id值对应不同用户的信息,则说明存在漏洞。

攻击者在测试前,使用Brup Suite的爬虫功能对网站进行爬取,然后 筛选出包含用 户标识参数的请求(如id、uid),对筛选后的每一个请求进行分析,判断 其是否包含 敏感信息。如果包含敏感信息,则通过Brup Suite的Intruder设置用户标识参数 为变量 来进行遍历,如果返回他人信息,则漏洞存在

接口参数篡改测试

攻击者拥有账号B,用户拥有账号A。攻击者对账号A进行密码找回 操作,服务器给账号 A 的邮箱或者手机发送密码重置信息,攻击者进入验证码验证环 节,此时攻击者单击“重新发送验证码”并拦截重新发送这个请求,将请求中的接收验证码 用户的邮箱或者手机修改为自己的。如果接收到密码重置信息,则存在漏洞。

接口未授权访问/调用测试

攻击者在测试前,使用Brup Suite的爬虫功能对网站进行爬取,通过 MIME Type筛选出与接口相关的请求,对筛选后的每一个请求进行判断是否包含敏感信 息。如果包含敏感信息,则复制请求URL到未进行登录的浏览器进行访问,如果访问后返 回之前的敏感信息,则存在漏洞。

Callback自定义测试

攻击者在测试前,使用Brup Suite的爬虫功能对网站进行爬取,筛选 出带有Callback或者jsonp参数的请求,对请求响应的Content-Type进行判断,如果Content- Type为text/html,则进行下一步,接着攻击者对Callback参数进行分析,如果Callback参数 允许攻击插入HTML标签,则存在漏洞

Webservice测试

WebService是一种跨编程语言和跨操作系统平台的远程调用技术。XML+XSD、 SOAP(Simple Object Access Protocol)和WSDL(Web Services Description Language)就 是构成WebService平台的三大技术,其中XML+XSD用来描述、表达要传输的数据; SOAP是用于交换XML编码信息的轻量级协议,一般以XML或者XSD作为载体,通过 HTTP协议发送请求和接收结果,SOAP协议会在HTTP协议的基础上增加一些特定的 HTTP消息头;WSDL是一个基于XML的用于描述Web Service及其函数、参数和返回值的 语言。通过上面的描述,我们可以知道WebService就是一个应用程序向外界暴露出一个能通 过Web进行调用的API。这个API接收用户输入的参数,然后返回相关的数据内容。如果 一个WebService完全信任用户的输入,不进行过滤,则有可能导致SQL注入漏洞的发生

攻击者在测试前,通过爬虫或者目录扫描等方法找到服务器的 WebService链接,接着使用WVS(Web Vulnerability Scanner)的Web Services Editor功能 导入各个接口函数,通过关键词(如Get、Exec)定位到相关的接口函数,通过HTTP Editor对每一个接口函数的输入参数进行测试(如SQL注入、文件上传等),如果出现预 期效果(如数据库报错、不同的延时等),则存在漏洞

你可能感兴趣的:(逻辑漏洞,web测试,安全,渗透测试)