Menu

北京海淀区凡诺企业网站管理系统V3.0代码审计

  • 代记账1     2021-3-19
<返回列表


政务处理

0×00 前言

大家好,我是掌控安全学院的聂风,在此,我做一个代码审计的文章分享来方便同学们学习。我逛了逛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.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)\”;

$postfilter=\”\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)\”;

$cookiefilter=\”\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)\”;

先不分析,先看完这个文件吧(这个是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行的<?php include($dir.$t_path.’inc_head.php’);?> 包含了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行又是喜闻乐见的文件包含

<?php 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

有输出的表(如果能改里面数据就可能有XSS):

cms_slideshow

cms_channel

cms_detail

cms_link

get_chip 函数我能控制值就能尝试SQL注入(拿好小本本记录下)

然后我们去看这文件吧

search.php (注:我们这里是index包含文件中西得search.php的表单地址,那么相对路径是index.php的同级目录,我这里差点没注意,因为index.php包含的文章中有template文件夹下面1的index.php,那个文件夹内也有search.php)

这个文件还是老一套的包含inc.php和system/safe.php

然后GET接受Key的传参,然后赋值给$key 然后调用template/1/search.php。

然后文件执行SQL语句

$sql = \’select id,d_name,d_picture,d_scontent,d_date from cms_detail where d_name like \”%\’.$key.\’%\” order by d_order desc , id desc\’;

我尝试构建了语句发现(我现在是先删除了Safe.php文件的)

select id,d_name,d_picture,d_scontent,d_date from cms_detail where d_name like \”%1%\”\”order by d_order desc


更多阅读

北京市税务审计是做什么的?与财务审计的区别

代记账1 2021-3-19
政务处理 税务审计主要为了查看企业是否按规定交税、有没有偷税漏税行为,有没有弄虚作假等情况。当企业面临税务稽查、变更、并购等问题时,对企业进行全...

北京5家会计师事务成功中标公安部机关审计项目

代记账1 2021-3-19
政务处理 中机国际招标有限公司受公安部机关政府采购办公室 的委托,就“公安部机关审计服务项目”项目(项目编号:0702-19412G109)组织采购,评标工作已...

首开股份:2016年度审计报告

代记账1 2021-3-19
政务处理 北京首都开发股份有限公司 财务报表附注 2016 年度(除特别注明外,金额单位为人民币元) 财务报表附注 一、 公司基本情况 1、公司概况 北京首...
返回列表
扫描二维码分享到微信
确 认

Copyright © 2021 代记账服务

     
扫码二维码立即咨询
确 认