i春秋作家:Vulkey_Chen

首先感谢朋友倾璇的邀请 http://payloads.online/archivers/2018-03-21/1 ,参与了<web安全测试学习手册>的相关撰写,目前负责业务逻辑测试这一块的撰写,目前初步已经成型,先发出来让大家看看,欢迎点评,也可以加入我们一起来撰写~

业务逻辑测试

介绍:这里对Web应用业务逻辑方面的安全缺陷进行介绍和常见案例讲解。

任意用户密码重置

常见的缺陷

* 1.验证码类缺陷

  • 场景:

1.1 验证码回显在客户端(响应主体、Set-Cookie等等…)。

1.2 验证码过于简易时效性过长,接口未做限制(一般为纯数字4-8位数,时效性长达30分钟以上可以对验证码进行枚举)。

* 2.未校验权限/前端校验/越权

  • 场景:

2.1 任意手机号验证码都可重置任意账号。

2.2 修改响应包的主体(根据实际情况来修改 例如验证请求对应的响应报文的主体为false 你可以修改为true)。

2.3 同一浏览器进入A用户的重置,然后关闭再进入B用户的重置 而实际上重置A用户。

2.4 修改重置密码的相关参数(例如 userid等等…)。

* 3.HOST头伪造

  • 场景:

3.1 在邮箱找回密码的时候,可以简单替换Host部分进行Fuzz,看看找回密码的链接中的域名是否是根据Host来生成的如果是可以替换成自己的域名。但是这种思路很鸡肋,因为需要用户的点击,这样才可以根据日志看到重置密码的链接,万一重置密码的链接时效性过去就无奈了。

* 4.找回密码的凭证脆弱

  • 场景:

4.1 见过最多的是找回密码的token是base64编码的,而解码后的明文根据其规则修改就可以成为别人用户找回密码的凭证了。

验证码绕过

常见的缺陷

图形类验证码绕过

* 1.图形验证码可复用

  • 场景:

3.1 验证码刷新之后,而历史刷新的验证码还是可以继续使用。

3.2 验证码使用过后不刷新,时效性不过期,可以一直复用。

* 2.图形验证码易识别

  • 场景

4.1 很多验证码的显示很简单,容易被机器识别。

短信类验证码绕过

* 1.验证码过于简易&接口未限制

  • 场景:

1.1 有些手机短信验证码都为 4-8位 纯数字的验证码,在接口没有任何限制的情况下是可以直接爆破的。

* 2.验证码发送复用&时效性过长&接口未限制

  • 场景:

2.1 6位数验证码时效性为5分钟,但是在这里同一手机号发送的验证码都是一样的,所以可以在4分钟的时候重新发送一次验证码这样验证码就又有效了,因为验证码一直在被复用,所以可以爆破。

* 3.万能验证码

  • 场景:

3.1 这是很多大企业的诟病,在未上线前为了方便测试加了888888000000这样的万能验证码但是上线后没去删除测试的内容导致被恶意利用。

短信/语音验证码重放

无论是发送短信还是语音验证码来做验证,都是需要手机号的,而发送验证码实际上是需要成本的,需要跟运营商或者是第三方验证码平台进行合作,多数验证码为0.01元一条,当然也有更便宜的,所以这边的问题也会影响到一个企业的资产方面。

常见缺陷

* 1.无限制发送

  • 场景:

1.1 厂商对验证码发送这一块并没有进行限制时间发送

* 2.代码层逻辑校验问题

  • 场景:

2.1 很多厂商会对手机号进行限制,如果60秒内发送过就不会发送,但是程序员在设计代码层的逻辑时会出现很多奇葩的问题,例如其为了方便用户体验,正常的代码层的流程为:

a.去除用户手误输入的空格以及一些特殊符号

b.验证手机号是否发送过验证码

某些程序员会这样设计流程:

a.验证手机号是否发送过验证码(发送过则不放行 没发送过则进入下一步)

b.去除用户手误输入的空格以及一些特殊符号

c.发送手机号验证码

* 3.手机号可遍历发送

  • 场景:

3.1 我之前有提到验证码发送会影响到企业资产,那么发送验证码限制就不能仅仅针对于单一手机号的限制,例如我可以载入一堆手机号的字典,然后直接遍历发送验证码,这也是危害之一。

业务流程绕过

常见缺陷

* 1.无验证步骤跳跃

  • 场景:

1.1 出现的场景很多:密码重置步骤、支付步骤,对于这种的测试方法有很多中:

a.对比法,使用A、B两个账号,A账号先正常走一遍流程,然后记录流程的请求报文跟响应报文,使用B账号来测试是否能绕过直接进入最后一步骤。

b.第六感,假设步骤1的网址为:http://www.test.com/step1,这时候你可以凭借你的第六感修改下链接为/step2之类的来测试。

加密算法脆弱

常见缺陷

* 1.前端呈现加密算法代码

  • 场景:

1.1 很多厂商算法写的很好,可没用,因为他用的是JS代码,在前端会直接能看见,而尝试跟踪JS的代码就会知道是怎么加密的从而可以直接绕过。

* 2.算法脆弱,明文可判断

  • 场景:

2.1 这是一个看运气的问题,一段密文为md5的,这时候你要做好自己的分析明文到底是什么,然后去碰撞,例如可能是md5(用户名+邮箱)这样的的组合。

支付逻辑漏洞

常见缺陷

* 1.金额修改

  • 场景:

1.1 支付的过程中有很多涉及金额的元素可以修改运费、优惠价、折扣等,可以修改为负数金额也可以修改金额为小于原金额的数进行测试,有时候会遇到溢出,你修改金额为较大的数看你会出现只支付1元的情况。

* 2.数量修改

  • 场景:

2.1 修改购买物品的数量为小数或者负数,同上,有时候会遇到溢出,你修改数量为较大的数看你会出现只支付1元的情况。

* 3.sign值可逆

  • 场景:

3.1 这是一个看运气的问题,sign多数为对比确认金额的一段内容,很多都是md5加密的,这时候你要做好自己的分析明文到底是什么,然后去碰撞,例如可能是md5(订单号+金额)这样的的组合,然后修改金额重新生成sign就可以绕过金额固定的限制了。

条件竞争(HTTP并发)

常见缺陷

* 1.条件竞争(HTTP并发)

  • 场景:

1.1 在签到、转账、兑换、购买等场景是最容易出现这样的问题,而并发测试的方法可以使用Fiddler也可以使用BurpSuite Intruder模块。

这里例举下Fiddler测试方法(BurpSuite测试很简单就不说明了):

配置好代理,设置好拦截:

然后点击兑换、转账、签到等最后一步按钮的时候会抓到一个请求,右键这一请求然后按住Shift点击Replay->Reissue Requests:

填入要重发的次数:

一般为20即可,然后点击GO放行:

最后看你自己来判断是否存在并发的问题,例如签到,如果存在那么肯定是签到天数或者签到所获得的奖励会一下子有很多,也可以看Fiddler中的响应报文结果。

Web安全测试学习手册-业务逻辑测试的更多相关文章

  1. Web渗透测试漏洞手册及修复建议

    Web渗透测试漏洞手册及修复建议 0x0 配置管理 0x01 HTTP方法测试 漏洞介绍: 目标服务器启用了不安全的传输方法,如PUT.DELETE等,这些方法表示可能在服务器上使用了 WebDAV, ...

  2. Web安全测试学习笔记 - DVWA+PHP环境搭建

    DVWA(Damn Vulnerable Web Application),是一个用PHP编写的,作为Web安全测试练习平台的合法环境(毕竟咱不能为了练习就随便找个网站去攻击...),也就是俗称的靶场 ...

  3. Web安全测试学习笔记-DVWA-登录密码爆破(使用Burp Suite)

    密码爆破简单来说,就是使用密码本(记录了若干密码),用工具(手工也可以,if you like...)一条条读取密码本中的密码后发送登录请求,遍历密码本的过程中可能试出真正的密码. 本文学习在已知登录 ...

  4. Web安全测试学习笔记-DVWA-盲注(使用sqlmap)

    之前的sql注入页面(https://www.cnblogs.com/sallyzhang/p/11843291.html),返回了查询结果和错误信息.而下面的页面,返回信息只有存在和不存在两种情况, ...

  5. Web安全测试学习笔记-SQL注入-利用concat和updatexml函数

    mysql数据库中有两个函数:concat和updatexml,在sql注入时经常组合使用,本文通过学习concat和updatexml函数的使用方法,结合实例来理解这种sql注入方式的原理. con ...

  6. Web安全测试学习笔记-DVWA-SQL注入-2

    接上一篇SQL注入的学习笔记,上一篇我通过报错信息得知后台数据库是MySQL(这个信息非常重要~),然后通过SQL注入拿到了用户表的所有行,其实我们还可以通过MySQL的特性来拿更多的信息. 1. 获 ...

  7. Android 渗透测试学习手册 翻译完成!

    原书:Learning Pentesting for Android Devices 译者:飞龙 在线阅读 PDF格式 EPUB格式 MOBI格式 代码仓库 赞助我 协议 CC BY-NC-SA 4. ...

  8. Web安全测试学习笔记(Cookie&Session)

    一,Session:含义:有始有终的一系列动作\消息1, 隐含了“面向连接” 和“保持状态”两种含义2, 一种用来在客户端与服务器之间保持状态的解决方案3, 也指这种解决方案的存储结构“把××保存在s ...

  9. Web安全测试学习笔记-DVWA-SQL注入-1

    SQL注入的定义网上很多,作为一个初学者,我对SQL注入的理解是这样的:网站应用一般都有后台数据库(不论是关系型还是非关系型),用户在网站上的绝大部分操作,最终都会跟数据库交互(也就是执行一串SQL语 ...

随机推荐

  1. 20155312 2016-2017-2《Java程序设计》课程总结

    20155312 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:你期望的师生关系是什么? 预备作业2:做中学learning by doing个人感想 ...

  2. Github 快速上手实战教程

    一.实验介绍 1.1 实验内容 本次课程讲的是在实验楼的在线环境中,如何使用 Github 去管理在在线环境中使用的代码.配置.资源等实验相关文件,怎样去添加.同步和下拉在远程仓库中的实验文件,以此来 ...

  3. Codeforces 1110 简要题解

    文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 众所周知ldxoildxoildxoi这种菜鸡选手是不会写HHH题的,因此该篇博客只有AAA题至GGG题的题解,实在抱歉. A题 传送门 题 ...

  4. css扩大超链接的点击范围

    给a标签设置display:block后,它会根据盒模型计算a标签的实际大小.这时候,你可以使用hover伪类使a的整个盒模型生效..link a{display:block;padding:2px ...

  5. WPF中的路由事件(转)

    出处:https://www.cnblogs.com/JerryWang1991/archive/2013/03/29/2981103.html 最近因为工作需要学习WPF方面的知识,因为以前只关注的 ...

  6. C#装箱,拆箱和强制转换(转)

    出处:https://www.cnblogs.com/fengjiulin110120/p/6605739.html 关系: 强制转换就包含有装箱拆箱操作,装箱就是把值类型转换成引用类型,反之就是拆箱 ...

  7. 本地导入/导出远程oracle数据库

    1.导出数据库 exp 用户名/密码@远程服务器IP:数据端口号/实例名 file=存储dmp文件的路径 full=y; 2.导入数据库 imp 用户名/密码@远程服务器IP:数据库端口号/实例名 f ...

  8. java json注解

    (1)初级我们从几个简单的使用场景开始:重命名属性,忽略属性,以及修改属性所使用的类型.注意:下面的例子仅仅显示了成员属性(field properties),注解同样也可以用在成员方法(getter ...

  9. asp.net下配置使用Memcached 如何使用Memcached .ne使用BeITMemcached.dllt配置Memcached的方法

    首先在项目中引用 BeITMemcached.dll 在Web.config中配置节点 <configSections> <section name="beitmemcac ...

  10. SSH 等效性问题 总提示输入密码问题

    家目录权限问题 .chmod 700 /home/.. 得到的教训就是没事儿不要乱修改家目录权限,一时方便,可能在别的地方载跟头 ~~ 浪费好许时间 哎