MediPro 有多套cms网站存在过滤不严,存在注入漏洞,后台可以绕开登录,get shell,获取服务器权限。
/* 呃,官网默认是zend加密的代码,需要解密。*/
百度了下,,还是很多网站使用。。
1、后台绕开登录漏洞
在服务器没有开magic_quotes_gpc的情况下,直接登录系统。后台一般是www.xxxx.com/adm/
用户名:webmaster' or 1=1 or 'a'='a /*
密码:随便输入,验证码输入后就能直接进去了
另外:,magic_quotes_gpc转义后,老衲尝试用了%d5%27这样的方法,如:
用户名user=admin%d5%27 or 1=1 limit 0,1 -- 这类的
虽然也绕开了admincheck()函数,但后面setcookies的时候,直接沿用了用户上传的user的值,结果在后面验证权限的时候过不了,没有继续搞下去了。
2、注册页面的注入漏洞
在注册用户的地方regform.php?membertypeid=10,就有注入漏洞,问题代码出现在注册页:regform.php,其中$membertypeid没有过滤好,后面的函数直接使用了$membertypeid。
没有开启转义时:
http://网站/regform.php?membertypeid=10 WHERE 1=2 UNION SELECT 1,`password`,"user",1,0,0,`user`,1,0 from cms_admin t limit 0,1 --
如果开启了magic_quotes_gpc,"user" 的 双引号被转义,也有个比较猥琐的方法:
大体方法是:再union一下cms_member_regform_10表,把formcolname字段(注:这个字段就是注册项字段)里面的值显示出来即可。 必须要这个,因为注册页面的项是动态生成的,否则显示不出管理员的帐号密码。
具体见后面的证明图吧。
3、后台get shell
比较多,简单的利用如在/adm/temp.inc.php中,代码只过滤了上传文件的后缀“.php”“.exe”这样的内容,,就可以用“.php.xx”,如果是用windows的IIS,还可以把后缀改成.asp,.asa等;
if ( substr( $fname, 0 - 4 ) == ".php" || substr( $fname, 0 - 4 ) == ".exe" )
{
err( $strDownNotice11, "", "" );
}
登录后台后,直接 访问www.xxxxx.com/adm/tempftp.php?fold=default
上传一个一句话:4.php.xx
上传后的路径:www.xxxxx.com/templates/default/4.php.xx
菜刀开路~~
注:测试用的4.php.xx已经删除。
修复方案:
过滤参数,限制上传。