001 引言
这次我们继续给大家介绍几个逻辑漏洞:任意密码重置和支付漏洞,这两个漏洞的危害也是不容小觑,具体怎么挖掘呢,我们一探究竟。
002 逻辑漏洞介绍
上一篇已经介绍过啦~文章回溯请看001哦~
003 常见的逻辑漏洞及挖掘
任意密码重置漏洞
(1)介绍
针对漏洞的介绍我们可以询问下无问AI:
地址:http://chat.wwlib.cn/
任意密码重置漏洞是一种网络安全漏洞,允许攻击者在未经授权的情况下重置其他用户的账户密码。这类漏洞通常出现在Web应用程序中,尤其是在处理用户身份验证和密码管理的过程中。由于此漏洞能够直接影响到用户的数据安全和隐私,因此它被视为一种严重的安全威胁。
(2)原理
任意密码重置漏洞的核心原因在于,在密码修改过程中,系统对修改密码的凭证未进行严格限制,从而使得恶意攻击者能够绕过正常的验证机制,实现任意用户密码的修改。
(3)简单举例
这是一个登录框,我们首先点击忘记密码
这里是让我们提供身份证号和手机号才能进行重置,假设我们这里已经通过信息收集获取到了这个人员的身份证号和手机号,我们点击获取验证码后进行抓包,将手机号改为自己的手机号
这个时候,我们自己的手机号就获取了这个验证码
在这里将密码重置为:test123.
随后,成功登上系统
假如我们获取到了管理员的身份证号,那后果真的是不堪设想
这个就是典型的验证码未绑定用户,即在输入手机号和验证码进行密码重置时,系统仅验证了验证码的正确性,而没有检查该验证码是否与手机号匹配。
针对这个漏洞,无问AI给我们的建议是
-
1.强验证码机制:确保验证码复杂度较高且有时效限制,避免被暴力破解。 -
2。验证码绑定用户:验证码必须与用户标识(如手机号或邮箱)绑定,防止未授权使用。 -
3.接口访问控制:对密码重置接口进行严格的访问控制,避免未授权调用。 -
4.多因素认证:增加额外的身份验证步骤,提高系统的安全性。 -
5.日志监控:记录并监控密码重置操作的日志,及时发现异常行为。
(1)介绍
支付漏洞,顾名思义,通常出现在电子商务网站、在线支付平台和移动应用程序中。这类漏洞允许攻击者通过篡改交易过程中的关键参数(如价格、数量、状态等)来非法获利或造成经济损失。支付漏洞主要属于逻辑漏洞,因为它们源于系统设计和实现中的逻辑错误,而不是代码编写错误。
支付漏洞产生的原因很多,主要包含下边三点
1、缺乏严格的验证机制:在支付流程中,某些步骤没有对输入数据进行充分验证。
2、客户端数据易被篡改:浏览器端的数据容易被第三方恶意修改,导致安全性降低。
3、异步通知不安全:商户网站在接受支付结果时,未对返回的数据进行签名验证。
漏洞种类主要包含下边几种
1.修改支付价格
- 描述
:攻击者可以在订购、确认信息、付款等步骤中修改商品的价格。 - 利用方法
:使用抓包工具(如Burp Suite或Fiddler)捕获支付请求,修改金额字段为较小值(例如0.01元),然后放行数据包查看是否成功。
2.修改支付状态
- 描述
:攻击者可以将支付状态从“未支付”改为“已支付”,从而绕过实际支付环节。 - 利用方法
:同样使用抓包工具,找到相关的支付状态参数,并将其修改为“已支付”。
3.修改购买数量
- 描述
:攻击者可以修改购买的商品数量,以较低的成本获取更多的商品。 - 利用方法
:在购物车或结算页面,抓取并修改购买数量参数。
4.重复支付
- 描述
:攻击者通过重放相同的支付请求,多次扣款。 - 利用方法
:捕获一次成功的支付请求后,多次发送该请求至服务器。
但是我这样单纯的描述的话,太过直白了,我用无问AI帮忙生成下代码大家看下。
以下代码由无问AI生成
import requests
#
定义目标
URL
和
Headers
url = "https://example.com/pay"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded'
}
#
模拟正常订单数据
original_payload = {
'product_id': '12345',
#
商品
ID
'amount': '100.00',
#
正常价格
'quantity': '1',
#
购买数量
'user_token': 'abcdefg'
#
用户令牌
}
#
篡改订单金额为
0.01
malicious_payload = original_payload.copy()
malicious_payload['amount'] = '0.01'
#
发起支付请求
response = requests.post(url, headers=headers, data=malicious_payload)
#
输出响应结果
print(f"Response Status Code: {response.status_code}")
print(f"Response Body: {response.text}")
代码解释
定义目标URL和Headers:
url 是支付接口的地址。
headers 包含了一些常见的HTTP头信息,用于伪装成正常的浏览器请求。
2. 构造原始订单数据:
original_payload 表示正常的订单数据,包括商品ID、金额、数量和用户令牌。
3. 篡改订单金额:
malicious_payload 是篡改后的订单数据,其中金额被修改为0.01元。
4. 发起支付请求:
使用requests.post方法向支付接口发送篡改后的数据。
输出服务器返回的状态码和响应体,以确认请求是否成功。
以上就是两个常见的漏洞漏洞,还有更多的逻辑漏洞,欢迎大家询问下无问Ai哦
无问AI大模型-网络安全领域的超级智能专家,助力网安从业者降低时间成本。新人注册送额度,每月月初赠额度。欢迎注册体验
无问社区交流12群
如群聊超过200人,请加管理员进群哦,进群可赠送额度哦。
原文始发于微信公众号(LA安全实验室):分享常见的逻辑漏洞挖掘方法(第二部分)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论