本文最后更新于 2025-01-18,文章内容可能已经过时。

逻辑漏洞

逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。

精明的攻击者会特别注意目标应用程序采用的逻辑方式,并设法了解设计者与开发者可能做出的假设,然后考虑如何攻破这些假设,黑客在挖掘逻辑漏洞时有两个重点:业务流程和 HTTP/HTTPS 请求篡改。

常见的逻辑漏洞有以下几类:

  • 支付订单:在支付订单时,可以篡改价格为任意金额;或者可以纂改运费或其他费用为负数,导致总金额降低。

  • 越权访问:通过越权漏洞访问他人信息或者操纵他人账号。

  • 重置密码:在重置密码时,存在多种逻辑漏洞,比如利用 session 覆盖重置密码、短信验证码直接在返回的数据包中等。

  • 竞争条件:竞争条件常见于多种攻击场景中,比如前面介绍的文件上传漏洞。还有一个常见场景就是购物时,例如用户 A 的余额为 10 元,商品 B 的价格为 6 元,商品 C 的价格为 5 元,如果用户 A 分别购买商品 B 和商品 C,那余额肯定是不够的。但是如果用户 A 利用竞争条件,使用多线程同时发送购买商品 B 和商品 C 的请求,可能会出现以下这几种结果:①有一件商品购买失败。②商品都购买成功,但是只扣了 6 元。③商品都购买成功,但是余额变成了 -1 元。

  • 验证码

越权访问漏洞

其中越权访问又有水平越权和垂直越权两种,如下所示。

● 水平越权:相同级别 (权限) 的用户或者同一角色中不同的用户之间,可以越权访问、修改或者删除其他用户信息的非法操作。如果出现此漏洞,可能会造成大批量数据的泄露,严重的甚至会造成用户信息被恶意篡改。

● 垂直越权:就是不同级别之间的用户或不同角色之间用户的越权,比如普通用户可以执行管理员才能执行的功能。逻辑缺陷表现为设计者或开发者在思考过程中做出的特殊假设存在明显或隐含的错误。

# WEB安全攻防:渗透测试实战指南
原:http://43.138.171.224/4.10/userinfo.php?username=test
修改username后:http://43.138.171.224/4.10/userinfo.php?username=admin
# pikachu
# 水平
【直接在重放器这里对username参数进行修改发现我们登入的是lili账户,却可以看下lucy账户的信息,说明水平越权成功。由于是get形式,也可以直接使用url输入】
原:
http://127.0.0.1/pikachu-master/vul/overpermission/op1/op1_mem.php?username=lili&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF
后:
http://127.0.0.1/pikachu-master/vul/overpermission/op1/op1_mem.php?username=lucy&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF



# 垂直
我们先尝试对户进行登入,观察:pikachu用户的,只有查看权限;admin用户的,可以实现用户的添加删除等操作。
【对pikachu已登入用户进行admin用户的修改文件op2_admin_edit.php替换】
原:
http://127.0.0.1/pikachu-master/vul/overpermission/op2/op2_user.php
后:
http://127.0.0.1/pikachu-master/vul/overpermission/op2/op2_admin_edit.php

重置密码漏洞

密码修改、密码找回
• 首先走一遍正常的密码修改流程,把过程中所有环节的数据包全部保存。
• 分析流程中哪些步骤使用了哪些身份认证信息,使用了哪些认证方法。
• 分析哪个步骤是可以跳过,或者可以直接访问某个步骤。
• 分析每个认证方法是否存在缺陷,可否越权。
• 首先尝试正常密码找回流程,选择不同找回方式,如邮箱,手机,密码提示问题等。
• 分析各种找回机制所采用的验证手段,如验证码的有效期,有效次数,生成规律,是否与用户信息相关联等。
• 抓取修改密码步骤的所有数据包,尝试修改关键信息,如用户名,用户ID,邮箱地址,手机号码等。
# web2环境
正常流程:
1.填写邮箱		   ?step=1	 email=1%401.com
2.身份验证		   ?step=2   code=396786【源代码】
3.设置新密码		  ?step=3 	 password=123456&password2=123456
4.完成			?step=4	   完成

触发漏洞:
/4.13/index.php?step=2		email=1%401.com
/4.13/index.php?step=4		password=1234567&password2=1234567

签约漏洞 (并发)

1.使用A手机登录账号A打开要测试的业务,点击自动续费,支付时停留在支付界面
2.使用B手机登录账号A打开要测试的业务,点击自动续费,支付时停留在支付界面
3.重复多台手机进行同样操作。
4.A手机点击支付进行签约。
5.A手机支付成功后,在第三方APP中解除自动续费
6.B手机进行支付,支付成功后在第三方APP中解除自动续费
7.全部支付完成后,系统就会为你开通相应的次数,由于提前打开了支付界面所以金额都是享受到新用户首月优惠的金额。

签约漏洞【角色:服务器、客户端1、客户端2】
正常逻辑:新用户优惠下单 => 收到订单返回支付 => 进行支付 => 收到订单充值会员 => 再次发起支付 => 非新用户下单失败 => 返回正常金额
绕过逻辑:下单1 => 收到订单返回支付1 => 支付界面等待支付1 => 下单支付界面等待支付2 => 支付解除签约1 => 支付解除签约2 => 收到订单1充值成功,收到订单2充值成功

建议:通常这种漏洞比较容易出现在活动页面的会员优惠开通,而且要考虑到支付后要比正常购买优惠才算是漏洞。

交易支付

• 加入购物车时是否可以修改购买数量为负数,商品价格是否可以修改。
• 确认购物车信息时是否可以修改商品数量为负数,是否存在折扣限制突破问题,是否可以修改商品总金额。
• 输入物流信息时是否可以控制运费,如果可以,尝试修改为负数。
• 确认订单后跳转支付接口时是否可以修改支付金额,可否不支付直接跳转到交易成功环节。

验证码安全

短信验证码常被用于网站用户注册、账户安全登录以及忘记密码、确认下单等应用场景,特别是一些涉及到用户个人敏感行为时候,为了确认操作是用户本人执行的通常会使用短信验证码进行二次认证。
1、通过修改响应包的返回值绕过
这种是客户端根据返回的值,来确定是否进行下一步。比如发送成功返回state的值是success,失败是false,然后客户端根据state的值,来确定下一步的动作。这样,我们可以通过修改响应包,绕过验证。
2、验证码伪造绕过
当修改别人的信息时,需要短信认证时,在发送短信时,我们可以尝试,将手机号替换为自己的,来获取短信验证码。如果服务端只是检查验证码是否正确,而不是进行手机号和验证码匹配的话,或者只是匹配发送短信手机号和验证码,我们就可以绕过认证
3、利用接口标记绕过短信限制
注册、忘记密码、修改密码处,均存在发送短信验证,可能会设置参数值的不同,来判断是执行什么样的功能。比如type=1是注册,type=2是忘记密码,type=3是修改密码等。我们可以通过修改参数值,来绕过一分钟内只发送一次限制,达到短信轰炸的目的。

其他

1、利用空格绕过短信条数限制通过在参数值的前面加上空格,进行绕过一天内发送次数的限制。比如,mobile=13211111111,一天可以发送10次,超过10次今天将不再发送,第二天才可以继续发送。但是,可以通过在手机号前面或后面加上空格又可以发送10次。比如,mobile= 13211111111,前面加个空格,就可以再次发送成功。
2、修改IP绕过短信/邮箱轰炸有些是验证当前IP,如果当前IP短时间内获取短信或邮件频繁或达到一定的次数,会锁定当前IP,这时可以尝试通过修改IP或代理IP来进行绕过限制。
3、利用大小写绕过邮箱轰炸限制有时候验证码是发送到邮箱的,可以通过修改邮箱后面字母的大小写绕过限制。比如:email=@qq.com,当次数达到限制时,将字母修改为大写:email=@Qq.com,即可绕过。

暴力破解

「暴力破解」是一攻击具手段,在 web 攻击中,一般会使用这种手段对应用系统的认证信息进行获取。

其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。

我们说一个 web 应用系统存在暴力破解漏洞,一般是指该 web 应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的「可能性」变的比较高。

这里的认证安全策略,包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
...等等。
千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!

弱口令

有很多人为了方便记忆自己的密码,经常将个人身份信息嵌入其中。如果是对某用户有一定的了解,通过收集用户信息,包括生日,sfz 号,手机号,用户名,车牌号,网站名称,地址等(包含中文信息可以使用拼音),可以通过暴力破解的方式尝试出用户密码。而且绝大多数人都会将多个账户设定为相同的密码,即如果你破解了某人的 QQ 密码,很可能你也找到了他的论坛、邮箱、微博、游戏账号密码。

当针对某个公司&团体生成弱口令字典时,可以在从一些网站收集相关信息

全国社会组织查询
https://www.cods.org.cn/gscx/
天眼查-商业安全工具_企业信息查询_公司查询_工商查询_企业信用信息系统
https://www.tianyancha.com/
工业和信息化部ICP/IP地址/域名信息备案管理系统
https://beian.miit.gov.cn/#/Integrated/index