网站地图    收藏   

主页 > 后端 > 网站安全 >

Metinfo 代码审计 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 12:00 作者: 阅读:

[导读] 0x01前沿MetInfo企业网站管理系统:采用PHP+Mysql架构,全站内置了SEO搜索引擎优化机制,支持用户自定义界面语言(全球各种语言),拥有企业网站常用的模块功能(企业简介模块、新闻模块...

0x01 前沿

   MetInfo企业网站管理系统:采用PHP+Mysql架构,全站内置了SEO搜索引擎优化机制,支持用户自定义界面语言(全球各种语言),拥有企业网站常用的模块功能(企业简介模块、新闻模块、产品模块、下载模块、图片模块、招聘模块、在线留言、反馈系统、在线交流、友情链接、网站地图、会员与权限管理)。强大灵活的后台管理功能、静态页面生成功能、个性化模块添加功能、不同栏目自定义FLASH样式功能等可为企业打造出大气漂亮且具有营销力的精品网站。 

   这套程序之前爆出来一个远程执行代码的漏洞之后,就没什么人去挖掘了。整套程序还是很多人用的,下图是查出来的结果

   

整个对这套cms审计花了我几天的时间,下面一一道来。

 

 

 

 

 

0x02 注入一

  此次代码审计是官网最新版

 在message/access.php中13行

  

大家应该看到了,这个$id是没过滤的,这里的$id是怎么来的呢?请看include/common.inc.php中

 

这个daddslashes()这个函数在global.func.php中

 其实对传进来的值进行转义

 

所以这里可以无视了…

 

注入如下图所示

 

 

次漏洞影响2.0以上所有版本,在3.0中加入了一个防注入函数,但是可以绕过注入的

 

 

 

 

0x03 注入二

  在about/show.php中8行

 

这里明显的也一样,但是这里是盲注,看看之后的? 这里的$show如果不存在或者是$show数组中isshow不存在就返回到错误页面,所以这是一个盲注了

注入结果如图

 

同样是可以获取我们的信息的…如果是手工来判断就很累了…

 

 

 

 

0x04 注入三

   在member/feedback.php中的16行

 

这里的$serch_sql中的变量$met_fd_class是可控的

我们跟踪一下$serch_sql这个变量

在26行我们发现

 

执行了。所以同样存在上面的问题了

 

但是这里的前提是要登录状态,因为他验证了权限的问题

在feedback.php开头就包含了权限验证的

 

 

所以这里的注入必须是你注册一个用户,然后登录进行注入,注入结果如图

给出注入语句吧,首先必须闭合前面的)号,然后注释掉后面的语句

Exp:

http://www.2cto.com /member/feedback.php?&met_fd_classname=1&met_fd_class=99999)union select 1,2,3,4,5,user(),7,8,9,10-- a

 

 

 

 

 

0x05 注入四

  这里是个鸡肋注入了..

 既然是危险还是爆出来吧

 在job/save.php 的73行,存在insert注入

 

这里的$jobid,是可控的,怎么可控不可控我就不说了,自己测试吧

为什么说它鸡肋呢? 一,这是一个insert语句,如果我们将jobid,后面的参数加进去,然后再注释掉组后的,如我们将$id = (select password from admin where id=1)#这样的语句插进去呢? 事实,是可以成功的,但是成功插入管理员的md5,但是得读出来吧,组后发现该met_cv这个表唯一读出来的就是时间,但是时间这个字段又不能插.所以直接插就没办法了,所以这里还是鸡肋的。

 

 

 

 

 

0x06 注入五

  在member/cv_editor.php中的53行存在一个update注入

  

同样的问题了,我就不扯淡了

鸡肋

 

 

 

 

0x07 注入六

  在member/fdeditor.php中的109行

 

 

同样验证了权限问题,必须注册用户然后注入的,工具是没办法了。

 

注入如图

 

 

 

其中的各个细节,怎么测试的,我就不写了,实在是太累了,整个代码审计过程当中,需要对一些传进来的参数一步步来测试,也并不是那么容易一下就确定哪里有问题的。所以珍惜别人劳动成果。v

 

0x08 文件包含

  在member/index.php中的8行

 

这里的$metid是外部传过来的,可控

如果不存在metid这个变量就将index赋给它

如果存在并不等于index的时候就包含$metid,’.php’这个文件,所以我们可以构造一个文件让它来包含

包含方式如下,一再gpc为off的情况下截断

如图

 

第二种是超长字符截断了

此种情况并不受gpc影响

 

 

 

 

 

 

0x09 密码重置漏洞

 

  在member/getpassword.php中

 

看到这里重置密码的代码

首先他先将用户名+密码的md5 ,然后对其md5赋给一个变量x

然后再将用户.x然后base64加密下,然后赋值给string,然后将这个string作为

找回密码的url,大家发现这里有问题没?

假设我们注入得到该cms的md5,然后解密不了?然后怎么办?没办法了吧,

如果我们通过这个url重置管理员密码呢?是不是可行了?因为要的用户名和密码的md5都具备,所以我们就可以重置密码了?

想想开发这个重置的功能的程序员,你应该多考虑一下这个问题了啦…..

下面我就给出这个exp

 

运行如下图

 

   

0x10 后台getshell

  后台getshell其实有3种方法,我一一道来

方法一:

 

 直接在这里添加php

 

然后再上传文件管理这里上传php的shell即可

 

 方法二:

 

 在上图位置添加asa文件,在前台上传asa文件,这里鸡肋的地方就是iis下利用了,

产生漏洞原因如图

   在job/uploadfile_save.php中

 

这里的对一些常见的后缀名进行了处理

所以我们前台在应聘的链接里面可以直接上传asa了

 

 

方法三:

 

 在后台这里添加新模板

 

将我们的php马打包成zip格式,然后上传

最后我们的马会解压到templates这个模板文件夹中

如图

 

访问之

 

 

 

 

0x11 总结

  

   整套cms我花了几天的时间来研究,只对前台进行挖掘,后台的话挖了也没多大价值。整体收获不少,0day,我就这么放出来了,如果有基友想一起学习的话,还是加群吧!

62512676

 接下来我放出重置密码的exp,此exp只用于研究学习之用,通过此exp去非法入侵,与本人无关.

 

此exp只针对注射出来的管理员和密码(密码解不出来),然后密码会修改为x0h4ck3r

运行结果如图

 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论