漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0123387
漏洞标题:青果教务系统无条件SQL注射
相关厂商:湖南青果软件有限公司
漏洞作者: RedFree
提交时间:2015-06-30 10:22
修复时间:2015-10-03 10:24
公开时间:2015-10-03 10:24
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:20
漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-06-30: 细节已通知厂商并且等待厂商处理中
2015-07-05: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-08-29: 细节向核心白帽子及相关领域专家公开
2015-09-08: 细节向普通白帽子公开
2015-09-18: 细节向实习白帽子公开
2015-10-03: 细节向公众公开
简要描述:
青果教务系统的SQL注入漏洞,无需任何条件!真正的教务杀手,获取教师、管理用户密码,查看妹子信息不是梦!你想改成绩吗?答:你想多了,不作死就不会死。
详细说明:
青果教务系统有一个WebService接口,默认路径:/webs/sysdata.asmx。
通过对这个服务页面数个接口的审计,发现其中某接口存在SQL注入。
/webs/sysdata.asmx提供的几个接口如下:
一、获得schoolcode
首先我对GetMenuInfo这个接口比较感兴趣。原因很简单,在几个接口中,它要求的参数是最少的,这就方便了后面的分析。
那么UserType、param这两个参数究竟是什么呢?
从反编译的代码中可以看到,param这个参数是输入的UserType和schoolcode拼接成一个新字串的Md5经过
这样新的拼接得来的。
那么schoolcode又是什么呢?经过跟踪得到schoolcode是从配置文件中获取的。后来经过分析得知,这个从配置文件中获取的schoolcode其实就是该院校的院校代码!(配置文件路径默认为/_data/WebSysConfig.config)
经过百度得知大部分高校的院校代码:http://wenku.baidu.com/link?url=vwXFaqL70D8IDjayMLVo2SnddQyoRNIy2c0odLaGem8gxXKy2xS3BtglpW6srWueZnppjbrrcl_o3yUCjiCyQbOu1Y-EhzKFATNZLYn-GO3
这样一来就好办了,大部分高校的院校代码都是已知的,当然不知道代码的,我写了个暴破的py脚本尝试(10000-15000)之间的院校代码。其原理是这样的,固定UserType为ADM000,当md5(ADM000+院校代码)经过
这样的处理后正确时,返回的数据包中便会含有关键字A0101。(暴破schoolcode用的python代码附在后面的测试代码中)
输入参数可自由控制,本来很开心,以为可以这个注入点跑数据的,可实际情况却是让人悲伤的。细心的看官看了上面的图片后可能已经看到了:
UserType虽是可控的,然而当UserType长度大于6时,后面的部分便被删除掉了。所以实际上这个注入点就变成不可用的了(当然用来跑schoolcode还是非常有用的)。
二、另一个粗暴的注入点
既然上面那个接口无路可走了,那就换个接口再看呗。接下来我将注意力放到了getLessonSchedule这个接口上。原因嘛,很简单:既然程序员很会“过滤”,那就来个参数多的,说不定有没有过滤的参数呢。
不多说看图,3个参数长度被限制,而另几个并没有限制参数长度!经过查看后面的代码可知userId这个参数带入了查询且未限制长度!尝试构造下查询参数试试呗(一些基本的判断略)
到这里已经成功利用了这个注入点!
三、sqlmap大法
为了可以方便快速地获取数据,我写了一个专用的tamper脚本(代码附在下面的测试代码中),用来跑数据。测试截图:(测试参数:
)
新疆大学(学校代码:10755)
中原工学院(学校代码:10465)
厦门软件职业技术学院(学校代码:14059)
漏洞证明:
修复方案:
所有参数过滤,删除多余接口
版权声明:转载请注明来源 RedFree@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2015-10-03 10:24
厂商回复:
漏洞Rank:15 (WooYun评价)
最新状态:
暂无