# PAYGENT for WooCommerce 未授权支付回调漏洞
## 概述
PAYGENT for WooCommerce 插件在 WordPress 中存在缺少授权验证的漏洞,影响版本至 2.4.6(含)。
## 影响版本
所有版本 ≤ 2.4.6。
## 细节
`paygent_check_webhook` 函数缺少必要的权限验证,且 `paygent_permission_callback` 函数在第 199 行无条件返回 `true`,导致任何用户均可访问该接口。
## 影响
未经身份验证的攻击者可通过 `/wp-json/paygent/v1/check/` 端点发送伪造的支付通知,操控支付回调,篡改订单状态。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Changeset 3433179 for woocommerce-for-paygent-payment-main – WordPress Plugin Repository -- 🔗来源链接
标签:
神龙速读:
以下是该网页截图中的关键漏洞信息:
- **版本更新**:从版本2.4.6更新到2.4.7。
- **变更日志**(Changelog):
- **安全改进**:通过提高REMOTE_ADDR的优先级来增强IP地址获取的可靠性,以防止IP欺骗。
- **修复**:解决了3D安全重定向中的双显示问题。
- **安全措施**:通过重构获取用户IP地址的逻辑,确保REMOTE_ADDR的检查优先于HTTP头(X-Forwarded-For、X-Real-IP)作为后备方法。
- **影响文件**:
- class-wc-gateway-payg
标题: class-wc-paygent-endpoint.php in woocommerce-for-paygent-payment-main/tags/2.4.2/includes/gateways/paygent – WordPress Plugin Repository -- 🔗来源链接
标签:
神龙速读:
### 关键漏洞信息
1. **直接文件访问防护不足**
- 在代码的开头,有以下防护措施:
```php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
```
- 这表明文件需要通过合法的 WordPress 路径访问,直接访问可能会绕过正常的安全检查。
2. **IP地址过滤**
- 代码中存在对IP地址的过滤和权限检查:
```php
$is_permitted = apply_filters(
'paygent_permitted_ips',
array(
'27.110.52.4',
'202.232.189.65',
)
};
$remote_ip = $request->get_header( 'x_real_ip' );
$is_permitted = false;
if ( in_array( $remote_ip, $is_permitted_ips, true ) ) {
$is_permitted = true;
}
if ( ! $is_permitted ) {
$this->update_status_webhook( $order, 'on-hold' );
}
```
- 如果IP地址没有被列入白名单或通过过滤检查,可能会导致未授权的请求访问关键的订单状态更新函数。
3. **SQL注入风险**
- 在处理用户输入时,特别是在处理订单状态更新时,如果没有严格的数据验证和转义,可能存在SQL注入的风险。代码中存在多个 `$order->update_status()` 方法调用,需要确保输入安全。
4. **日志记录不充分**
- 虽然代码中存在日志记录功能,但未见详细记录用户输入或请求数据,难以追踪和审计潜在的恶意活动:
```php
$this->paygent_update_status_webhook( $order, 'on-hold' );
$this->paygent_update_status_webhook( $order, 'processing' );
```
### 建议
- 增强直接文件访问的防护措施。
- 确保所有IP过滤和权限检查逻辑正确,避免绕过。
- 对所有用户输入进行严格的验证和转义,防止SQL注入。
- 增强日志记录功能,详细记录请求数据和状态变化,便于安全审计。
标题: Changeset 3432342 for woocommerce-for-paygent-payment-main – WordPress Plugin Repository -- 🔗来源链接
标签:
神龙速读:
### 关键信息
**插件名称**: WooCommerce for Paygent Payment
**更新版本**: 2.4.6
**提交ID**: 3432342
**提交时间**: 2023年1月1日凌晨2:48:54
**提交者**: shohei.tanaka
**更新内容**:
- 更新至2.4.6版本。
- 实施3D安全重定向的双重显示对策。
- 修复3D安全处理,并防止Paygent支付网关中的重复操作。
- 修复3D安全处理时,遇到请求方错误代码时,阻止表单重复提交的问题。
**安全相关**:
- 引入了3D安全多重请求和窗口关闭的JavaScript函数,防止重复提交。
- 更新支付检查状态处理,在双重显示对策中确保表单只提交一次。
**总结**:
此次更新主要针对3D Secure处理进行了安全加固,防止重复提交和操作,提升了支付过程的安全性和可靠性。
标题: ERROR: The request could not be satisfied -- 🔗来源链接
标签:
神龙速读:
### 关键漏洞信息
- **HTTP Status**: 403 Error
- **Error Message**: The request could not be satisfied.
- **Block Reason**: Request blocked. Indicates the server cannot connect to the server for this app or website at this time. Likely due to too much traffic or a configuration error.
- **Advice**: Suggests retrying later or contacting the app or website owner. Offers guidance to CloudFront content providers for troubleshooting this error.
- **Service Used**: CloudFront (Amazon CloudFront)
- **Request ID**: F-Rtk97w0sB0jC1ft9lM4ag5umjVBsKNht-jKUigpE3UWztD3gIcPg==
The information can hint at various vulnerabilities or issues like misconfigurations in firewalls, server overloads, or security rules that could be preventing access.
标题: class-wc-paygent-endpoint.php in woocommerce-for-paygent-payment-main/trunk/includes/gateways/paygent – WordPress Plugin Repository -- 🔗来源链接
标签:
神龙速读:
### 关键漏洞信息
#### 1. **缺少输入验证和过滤**
在 `paygent_check_webhook` 方法中,对 `$get_array` 没有进行严格的输入验证和过滤,可能导致注入攻击。
#### 2. **IP权限检查不足**
在 `paygent_permission_callback` 方法中,仅检查了几个固定的IP地址,可能不够全面,存在绕过IP权限检查的漏洞。
#### 3. **日志记录不足**
在处理各种支付状态时,日志记录不够详细,可能无法有效追踪问题和 debug。
#### 4. **权限控制问题**
`paygent_register_routes` 方法注册了多个REST路由,并且未见严格的权限检查,可能存在权限绕过风险。
暂无评论