漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2012-012680
漏洞标题:青果教务网络管理系统逻辑处理不严谨导致SQL注入,可至全国数百所高校教务系统沦陷
相关厂商:湖南青果软件有限公司
漏洞作者: jerryl3e
提交时间:2012-10-10 11:30
修复时间:2012-10-15 11:31
公开时间:2012-10-15 11:31
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:20
漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2012-10-10: 细节已通知厂商并且等待厂商处理中
2012-10-15: 厂商已经主动忽略漏洞,细节向公众公开
简要描述:
在这个系统官网上发现该教务系统全国有535所高校在用,测试了几个都成功了,直接是SA权限的MSSQL,有个别貌似版本不一样不行,但是应该大多数都可以通杀。
详细说明:
这里可以看见该系统使用学校(http://www.kingosoft.com/cgal/index1.aspx),教务系统有535所学校在用,貌似这个系统有2个版本,有一个较新的不行,但是大多数都是老版本,可以成功利用该漏洞对服务器攻击,差不多可以影响上百所高校教务系统吧。
接下来分析一下漏洞形成:
该系统有个教师注册页面没有设置访问权限(漏洞页面:http://xxx/_data/index_JSRP.aspx)任何人都可以访问,并且随便注册教师,如图1,该站是南京林业大学的,我拿来演示一下.URL(http://jwk.njfu.edu.cn/_data/index_JSRP.aspx)
图1
然后这个页面对于表单提交的数据只进行了本地JS验证,没有进行服务端验证数据的合法性,如图2,反编译这个页面的DLL
图2
可以发现服务端对于输入数据完全没有过滤,业务逻辑是考虑了防SQL注入的,因为注册数据插入数据库是直接写的函数,然后用dataset的进行rowadd,貌似没有发现可以利用注入的地方,如图3是插入数据库的函数。
图3
但是,不是这样就意味着不能注入了,好歹服务器完全没有过滤刚刚的东西,然后我就继续去分析这个代码的处理流程,发现了一个有问题的地方,如图4
图4
这里对text9也就是输入的身份证号进行了验证,去查询数据库是否存在该身份证号,避免重复注册,然后跟进这个函数就会发现,如图5
图5
关键的地方就在这里了,这个函数对于text1的查询语句代入getds()执行,如图6
图6
利用SqlDataAdapter进行语句执行,可以执行多行语句,然后,大家都懂的。
我讲讲如何利用
首先自己测试自己POST数据进行注册(POST内容:txtxm=jerryl3ejerryl3e&txtxb=7&txtcsrq=1980-9-9&txtxl=test&txtxw=test&txtzc=test&txtmz=test&txtjg=test&txtlxdh=test&txtdzyx=test&txtjl=test&txtsfzh=511111111111111122),发现可以注册成功。
如图7,成功注册一个用户名为jerryl3e的教师用户,身份证号为511111111111111122
图7
再用该身份证号注册就会发现该身份证号已注册,说明进行了代码中有漏洞的语句,如图8
图8
然后就看就构造语句试试吧,如图9
图9
看看是否是SA权限(POST: txtxm=jerryl3ejerryl3e&txtxb=7&txtcsrq=1980-9-9&txtxl=test&txtxw=test&txtzc=test&txtmz=test&txtjg=test&txtlxdh=test&txtdzyx=test&txtjl=test&txtsfzh=511111111111111122' and 1=(select is_srvrolemember('sysadmin'));select '1'='1),如图10
图10
看看可不可以执行CMD(POST: txtxm=jerryl3ejerryl3e&txtxb=7&txtcsrq=1980-9-9&txtxl=test&txtxw=test&txtzc=test&txtmz=test&txtjg=test&txtlxdh=test&txtdzyx=test&txtjl=test&txtsfzh=511111111111111122' and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= 'xp_cmdshell');select '1'='1),如图11
图11
接下来就不用证明什么了,没有继续搞下去,本来想搞试试插入一个管理员,分析了登陆代码,数据插入对了,就是一直密码不对,不知道是不是版本升级什么把密码加密方式变了吧。
然后这个系统应该默认安装时候数据库是SA用户吧,所以危害很大,再结合我曾经分析的数据库字符串加密算法(http://hi.baidu.com/jerryl3e/item/565675077c15f70e3a53eeeb),很容易就进行数据库进行改成绩之类的。也可以通过这个注入点直接拿webshell,这个系统默认安装目录是:D:\KINGOSOFT\KINGOJWGL2006\JWWEB\
漏洞证明:
同上。。。
修复方案:
对这个页面的访问设置权限,然后服务端验证输入数据。
版权声明:转载请注明来源 jerryl3e@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2012-10-15 11:31
厂商回复:
最新状态:
2012-10-15:已修复