0x00:写在前面
前面提了mao10cms(v3.5.2)的一个漏洞,审核大大没给通过,原因如下:
1、gpc=off是一个条件,应注明
说明:谢谢审核大大^_^ ,本漏洞的利用条件的确是gpc off。但是也要说明一点:mao10cms(v3.5.2)官方给出的该系统的安装环境需求为: PHP5.3+ & Mysql5.0+(见:http://www.mao10.com/article-66.html),而magic_quotes_gpc在PHP5.3.0中已经废弃并且在5.4.0中已经移除了。当然,这应该也还算是一个条件,因此,在这里也注明一下吧,gpc off 的情况下,该漏洞成立^_^ 。
2、这种漏洞不应该一个个的提交
说明:这次就打包提了,谢谢审核大大^_^
希望这次可以过^_^ ^_^ ^_^ ^_^ ^_^
Mao10cms用户量不小,2015-07-17更新的V3.5.3,今天来学习一下吧
0x01:这里有两个主要的方法使用不当,产生了漏洞,一个是mc_user_avatar(),另一个是mc_user_display_name(),下面分别分析
1、mc_user_avatar()引起的漏洞
一共有2个,分别位于/theme/default/public/head-uesr.php和/theme/mobile/public/head-user.php中,这里以/theme/default/public/head-user.php中的漏洞为例进行说明
注入点在加载用户头像时触发,我们来看看代码
看上面代码中看到mc_user_avatar($_GET['id']);去看看mc_user_avatar($_GET['id']);
从上面的代码中可以看到,如执行mc_get_meta(),再去看看吧
到这里可以看到了,从$_GET[‘id’]一直到$page_id,再带入sql语句执行,没有过滤,因此,这里存在注入。
下面以time-based blind注入进行证明
Payload(get提交):
当猜测错误时,如下图

当猜测正确时,如下图

整个注入过程可以使用burpsuite 或者sqlmap 再或者自己写个脚本来跑,在本地进行测试,用户名为admin,密码为f6fdffe48c908deb0f4c3bd36c032e72
2、mc_user_display_name()引起的漏洞
一共有3个,分析位于/theme/default/article/single.php和/theme/default/public/head-user.php(两个),这里以/theme/default/article/single.php中的漏洞进行分析如下
去看看mc_user_display_name()方法的实现
当$page_id为payload(不是正常的id)时,会进入else语句执行mc_get_meta(),跟进
带入了sql语句执行,若gpc=off,可以完成注入,payload如上面的第一部分。