逻辑漏洞常见模块场景
登录模块常见漏洞
弱密码
管理员帐号:,密码:,或使用通用帐号:'或'1'='1(登录sql注入)
登录密码可爆破
密码字典可用于连续请求和爆破密码
登录验证码可爆破
系统在手机上获取验证码时,没有限制验证码的验证次数,或者没有限制验证码的有限时间,都会导致验证码爆炸。
手机验证码凭证返还
捕获获取验证码的数据包,在返回的响应数据包中直接返回验证码。其中一些会在登录或找回密码时返回密码。当向手机号码发送验证码时,后台会给出包含验证码的返回包。如果前端隐藏属性标签里隐藏有验证码,可以通过F12查看
短信轰炸
发送验证码没有时间限制,导致重复抓包、重新发送验证码请求。
验证码绕过
当检索某些密码或验证用户凭据时,将根据返回的状态码进行验证。假设验证码正确,返回的状态码为1,错误为2。这里我们可以抓取响应包,修改状态码为1,实现验证绕过
伪造
通过修改某个参数来登录其他用户
使用账号登录,找到一个可以证明自己身份的页面,比如首页的欢迎xxx或者个人中心显示昵称的地方
刷新页面拦截请求,观察字段和值,例如=xxx,修改值,将xxx改为
如果页面显示的信息被释放,则存在此问题。
会话固定攻击
会话固定攻击:一种利用服务器的不可变机制,诱骗受害者使用攻击者指定的会话标识符 (id) 的攻击方法。
攻击者通过某种手段重置目标用户的ID,然后监控用户会话状态
目标用户使用攻击者设置的ID登录站点。
攻击者通过ID获取合法会话
成功的登录凭据可以重复使用
使用一个帐户成功登录后,获取成功登录的请求凭据,然后使用另一个帐户登录。在登录过程中,利用之前成功登录的凭据欺骗后端,导致登录成功。
未经授权访问他人帐户
您可以直接修改用户 ID 并并行访问其他用户帐户。
请求中的是弱加密的,仅使用简单的URL或仅破解其他帐户的。通过捕获数据包,修改已知帐户的令牌并将其替换为另一个人的令牌,您可以访问其他人的帐户。
URL跳转(重定向)漏洞
如果 URL 中存在恶意链接,攻击者可以将此类 URL 发送给受害者。如果攻击者点击它,攻击者将能够窃取受害者的信息并安装恶意软件。
注册模块常见漏洞
批量注册
批量注册的前提是页面上没有图形验证码或图形验证码无效。
虽然注册页面要求你输入姓名和身份证号码,但并不会检查姓名和身份证号码。您只需输入任何姓名和身份证号码即可。
首先用正确的信息进行注册,记住注册成功时服务器返回的数据,并知道注册成功时返回的是什么。然后利用刚才的数据包遍历并修改要发送的手机号、账号等参数,并观察回复包的状态。
注册覆盖率(重复注册他人账户)
覆盖注册页面意味着该账户原本是用手机号码注册的,但由于存在漏洞,可以使用手机号码再次注册,之前的注册记录将被覆盖!
当我们准备用已经注册的账号再次注册时,却发现手机号码已经存在了!我们抓包发现,如果后端检测到手机号码已经被注册,就会返回true。如果检测到该手机号码未注册,则会被退回。修改返回参数达到重复注册的目的
短信/电子邮件轰炸
发送验证码没有时间限制,导致重复抓包、重新发送验证码请求。
手机验证码凭证返还
捕获获取验证码的数据包,在返回的响应数据包中直接返回验证码。其中一些会在登录或找回密码时返回密码。当向手机号码发送验证码时,后台会给出包含验证码的返回包。如果前端隐藏属性标签里隐藏有验证码,可以通过F12查看
前端审核绕过
网站不严格执行身份验证。他们经常依靠使用帐户和密码登录后返回的 JSON 数据来确定用户的身份是否正确。这就暴露了一个很大的漏洞。登录时输入正确的账号和随机密码来拦截消息,然后选择burp中拦截返回包的功能来捕获返回的状态码。
邮箱/手机号注册验证码劫持、篡改
为了防止恶意用户随意注册账号,大多数网站在注册时输入邮箱/手机号码后都会验证用户的真实性。但有时返回的验证码信息会直接隐藏在返回包中,而不会显示在前端。 ,也可以通过抓包、伪造信息、劫持验证信息等方式更改手机号/邮箱。
验证码模块常见漏洞
验证码可爆
服务器不限制验证时间和次数,因此存在爆炸的可能性。验证码常用于批量注册和任何用户登录场景。
验证码复用
验证码首次验证成功后不删除验证码,以便验证码多次验证成功。
验证码回显
验证码由客户端直接生成并显示在echo中。
验证码未刷新
可重复使用的验证码
验证码绕过
由于逻辑设计缺陷,可以绕过验证,比如直接删除或者验证码参数可以绕过,验证不通过时清除,验证码参数值为空,绕过等。
验证码js绕过
短信验证码验证程序逻辑存在缺陷。业务流程的第一步、第二步和第三步都放在同一个页面上。第一步验证中的验证码是通过js判断的。您可以在无需获取验证码的情况下填写实名信息并提交成功中修改验证码。

密码检索模块漏洞
短信验证码返回(返回凭证)
1.通过手机找回密码。响应包中包含短信验证码。
2.修改用户名、用户ID或手机号码以重置任意账户密码
3、通过手机找回密码一般需要短信验证码验证(这里可以尝试爆破或绕过)。
修改响应包重置任意账号密码
通过手机找回密码一般需要短信验证码验证。服务器需要告诉客户端输入的验证码是否正确,然后将服务器返回的信息更改为true,以绕过短信验证码的验证。
重置密码链接中的值未经验证,导致任何帐户的密码被重置。
使用邮箱重置密码时,服务器会向该邮箱发送密码重置链接。该链接包含当前用户的身份信息(例如用户名或用户ID)和随机生成的信息。如果该值未经验证或者验证后没有过期,我们可以通过更改用户名或用户ID来重置任何帐户的密码。
电子邮件很弱
1.时间戳的md5(Unix时间戳)
2. 用户名
3.服务器时间
用户凭证有效性
1.短信验证码
2. 电子邮件
3.重置密码
重新绑定
1.手机绑定(绑定你的手机,可以重置任何人的手机号码)
2. 邮箱绑定
服务器验证
1、服务器验证可控内容(按照上次重置密码时的一个用户ID,将其更改为另一个用户ID,以将其他用户更改为您刚刚设置的密码)
2、服务器验证逻辑为空
用户认证
1、账号与手机号码绑定
2. 账号与邮箱绑定
本地验证
1、本地验证服务器返回信息,确定是否重置密码,但返回信息为可控或可获取的内容。
2、发送短信等验证信息的动作是在本地进行的,可以通过修改返回包来控制。
注册覆盖范围
注册重复的用户名
覆盖
当找回密码时,您已到达电子邮件验证步骤。打开您的电子邮件。请勿点击电子邮件中的链接来重置密码。复制链接并在同一浏览器中打开它。
支付模块常见漏洞
产品价格修改
在支付过程中,如果在提交购买信息、确认付款、确认购买等各个步骤中没有适当的验证措施,则可能存在允许潜在恶意用户修改支付金额或其他关键信息的漏洞。可以直接抓包并修改支付价格
产品数量修改
捕获者尝试修改购买数量,如果修改购买数量不影响价格,或者他们成功将购买数量更改为负数,这可能会导致价格显示为负数,导致付款问题。
付款金额修改
直接在支付包的关键步骤中传递要支付的金额。后端不验证金额,传输过程中没有签名,因此可以随意篡改金额。
修改付款状态
这个问题源于支付状态的值没有与实际订单支付状态进行有效验证。这意味着攻击者可以在支付时通过捕获网络数据包并修改支付状态参数的值来欺骗系统,使其误认为订单已支付,从而导致虚假支付成功。
优惠券金额修改
修改优惠券金额、产品价格和折扣级别。
修改优惠券数量
直接拍下包裹即可修改优惠券数量
积分修改
抓包直接修改点
运费修改
直接拍下包裹修改运费
购买商品编号被篡改
在产品积分兑换系统中,规定不同编号的产品可以兑换不同的积分数量。你可以篡改数字以低价购买高价商品。
修改支付接口
在某些网站上,用户可以选择多种付款方式。每个支付接口可能有不同的参数值。如果网站的逻辑设计不当,当用户随机选择一种支付方式并在支付时捕获数据包,然后将支付接口更改为不存在的接口时,网站无法正确处理以下情况:接口不存在,可能导致错误支付成功
重播交易
购买成功后,重放请求并多次购买该产品。
越权支付
通过修改一些特殊参数(如ID),您可以用其他用户的资金购买自己的产品。
多线程并发
在数据库中的余额字段更新之前,同时发起多个兑换积分或购买商品的请求,以达到条件竞争的效果,可能会带来意想不到的收益。