欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

凡诺企业网站管理系统V3.0代码审计

来源:本站整理 作者:佚名 时间:2019-08-01 TAG: 我要投稿

大家好,我是掌控安全学院的聂风,在此,我做一个代码审计的文章分享来方便同学们学习。我逛了逛CNVD,发现有一个叫做凡诺企业网站管理系统的后台SQL注入,5月30日发布,到7月中旬已经20多万的点击量,位列CNVD点击量的第三名,这次代码审计决定通读全文来审计该CMS.
 
0×01 环境搭建
Phpstudy
fannuo_php_3.0免费版源码(http://www.pcfinal.cn/channel/ecms.html)
代码审计工具(Seay源代码审计系统)
 
0×02 代码审计过程
源码放入网站根目录,然后去访问Web地址,然后自动跳转到了安装界面,来分析分析源码。
第一开始访问到的是install/index.php文件,这个文件包含了函数库
include(‘../system/library.php’);
然后开始细细读取代码,发现我们填入的数据会直接写入/system/data.php
于是乎突发奇想,想试试能不能直接插入一句话木马,结果CMS的开发也考虑到了这个问题,

如果连接失败的的时候,写入的东西都在注释中,于是乎就想跳出注释,尝试了好多方法都没解决,然后就放弃这里了,安装这个文件颇为简单,就是将正确的数据库连接什么的写入data.php,然后将默认数据导入数据库,且将index.php重命名为index.lock。
默认账号密码:admin admin
安装完毕后,我们打开根目录index.php这个文件

包含 inc.php和 safe.php
这里有个自定义函数ism()  查看了一下,实际上是返回一个false,那么这里就是包含了$dir.$t_path.index.php
我们去看看inc.php里面有什么吧
Inc.php作用:
$dir = __FILE__
包含system目录下的四个文件
conn.php、library.php、config.php、function.php
conn.php作用:
设置了时区、编码,开启了session,缓冲激活(ob_start),然后文件包含了data.php,就是数据库的连接配置文件。然后选择了数据库,指定了数据库格式是utf-8.
Config作用:
从数据库中的cms_system表中取id=1得数据,然后赋值给各种变量,然后执行数据库查询语句,会将cms_system中得到的s_template、
s_mtemplate 两个字段值 一个是1 还有一个是m1 ,然后将这两个数值作为t_path字段的条件去查询cms_template。好吧,里面只是一些图片而已,是Logo。 1代表电脑模板1 ,m1代表手机模板2,然后又定义了各种各样函数(这个地方记录一下,如果cms_system表中的s_template、s_mtemplate字段可以控制的话,那就有可能存在一个二次注入)
里面还定义了 $t_mpath =/template/m1/
Library.php和Function.php定义各种各样的函数(遇到函数跳过去就行,到时候用到来查)
那么我们现在知道了
 
$t_mpath =/template/m1/
$t_path =/template/1
$dir = __FILE__
$dir.$t_path.index.php => __FILE__/template/1/index.php
我们再看看safe.php这个文件
一打开就是三个正则,是对GET|POST|Cookie传参的过滤,感觉是过滤SQL注入XSS
$getfilter="'|(and|or)\\b.+?(>|;
$postfilter="\\b(and|or)\\b.{1,6}?(=|>|;
$cookiefilter="\\b(and|or)\\b.{1,6}?(=|>|;
先不分析,先看完这个文件吧(这个是360的通用防护)
定义了一个函数,StopAttack ,当正则匹配到了就输出非法操作,然后匹配不分大小写,任意匹配不匹配换行(\n),然后怎么匹配就看上面的正则了。
这个安全机制我觉得可以绕过,因为不仅仅是存在GET POST COOKIE 传参,还有一些IP agent-User之类的也可能会去获取,那么这里获取这些岂不是就可以绕过安全限制了(ip我看了,他居然有检测,Ip不用想了,用了 ip2long,如果返回False就设定ip为0.0.0.0)
我们来查看$dir.$t_path.index.php => __FILE__/template/1/index.php (这个页面HTML和PHP混合页面)
然后看到了第10行的 包含了inc_head.php文件
Inc_head.php里面实际上是一些Js和css脚本地址的定义,是由$s_path来控制的,如果我们控制的了这个,那么可以尝试打一个XSS
然后又是一个文件包含
include($dir.$t_path.'inc_header.php')
于是乎查看下inc_header.php这个文件(就是个页面顶部构成,就是查询cms_channel表里面的数据,然后输出,数据就是模块标题什么的)
然后后面第53行那个语句也差不多,只是换了一个表cms_slideshow
然后81行我看到了第一个表单,GET请求search.php
看到下面还去查询了cms_detail的数据然后输出
还有cms_link也有输出
看到318行又是喜闻乐见的文件包含
 include($dir.$t_path.'inc_footer.php');?>
Inc_footer.php文件里面也没啥有营养的东西,留了一个网站的导航,咦~第19行居然调用了第一个函数get_chip(1) 有点小兴奋,我们去看看她是干什么的,赶紧的找一找,在Config.php文件的第110行被定义。
他去查询cms_chip表里面的数据,然后输出c_content字段的值
后面就没什么东西了,我们算是看完了这整个index.php文件,然后我们收获了什么,遇到的东西都记录下?
$s_path 决定的href的链接方向(Js css ),可控制就代表构建XSS

[1] [2] [3] [4] [5]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载