ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DM建站系统代码审计

2021-02-15 18:02:09  阅读:241  来源: 互联网

标签:审计 功能 DM 这里 漏洞 建站 后台 cms


一开始看到这个建站系统,感觉有些庞大,遂先百度搜索 DM 建站系统的漏洞 的历史文章 ,然后去CNVD查了查,发现可能存在代码开发人员安全意识不够高的问题,于是先看了看先知论坛上大佬的文章,感觉受益匪浅,其实总体思路还是之前那一套,不过从大佬身上学习到了很多,这里就记录下一步步学习的过程,先放上文章链接

https://xz.aliyun.com/t/2165

下面就直接复制他的内容,在感觉有需要的地方会写上注释

0x00 前言
这套源码已经经历多个版本的变迁,在安全性上也做了很大的改善,此番再次审计最新版本的DM建站系统,倒不是说非要找出个高危漏洞,更重要的是对自己这么长时间学习的一次检验与总结。

0x01 cms简介
这里审计的DM企业建站系统最新版本(v20180307),下载地址:http://down.chinaz.com/soft/37361.htm
DM企业建站系统是由php+mysql开发的一套专门用于中小企业网站建设的开源cms。
可以用来快速建设一个响应式的企业网站( PC,手机,微信都可以访问)。后台操作简单,维护方便。
系统主要特点:
1、模板管理功能,下载后,会有多个模板可选择。
2、可以给每个页面设置SEO关键字,有利于搜索引擎收录。可以给每个页面设置别名,从而是让网页的访问网址更加简洁。
3、后台有布局功能。让页面呈现更加方便。
4、丰富的区块效果
5、通过前台编辑,直接链接到后台。

0x02 cms功能点搜集
下面部分是本文的重点,因此我也会详细解释我是如何进行漏洞挖掘以及代码审计的,其实在安全这块,一个漏洞修补起来或者说识别出来可能非常容易,但是在这之前的挖掘上,很少有人会仔细写这块,看似水到渠成,但是这里的挖掘思路在笔者看来是极其关键的。
安装cms的过程就不说了,这里对照下载地址给的安装步骤一步步来即可。

 

 对于代码审计这块,由于离不了cms所提供的功能,因此我在进行代码审计之前倾向于先搜集这个cms所提供的功能,例如用户注册、留言板、购物等等功能,然后根据相应的功能去进行源代码的审计,这样审计下来不会做太多重复的工作,效率上也能得到提升,慢慢地就形成了自己的审计路子。
安装完第一个可能想到的就是是否存在重装漏洞,那么我们需要看一看install这块是否会判断install文件的存在。

 

 这里可以看到会判断installfile的存在,因此此处没有数据库重装这样的漏洞,继续审计~
之后可能就要搜集页面的功能点,这个应该也比较简单。
随便点击页面,发现页面是纯静态的(http://127.0.0.1/dm/contact.html)
那么可能对页面id这种常见的注入漏洞可以说是不存在的,前台搜集下来发现存在搜索以及留言板这样的功能,那么思路就应该是搜索处或者留言板是否存在sql注入或者xss漏洞。
前台就是这两个功能点,后台的话之前版本存在一个cookie注入,因此这里我们也可以把重点放在后台的认证上来,毕竟出现出过问题,另一个常见的可能就是后台的登录框注入、未授权访问等等。

整理一下,前台潜在的漏洞点就是搜索功能、留言板功能,后台潜在的漏洞点就是登录框注入、cookie的认证问题或是其他未授权访问、CSRF等常见的漏洞,下面我们根据整理出来的功能点进行一一测试。
0x03 cms代码审计
1.搜索功能

 

 这里我搜索的是test”<>,老司机应该都能看出来,这其实就是一个最简单的fuzz语句,来初步看看后台的处理功能

 

 这里可以看到都做了实体化,因此这里可以判断后台应该使用htmlspecialchars或者htmlentities这样的函数来写的,事实上也是如此。
下面进入代码审计时间,在审计之前稍微说下该cms的路由是怎么写的,也就是说是怎么找到最终的函数文件的,后面不再赘述~

先抓包 测试下留言板这个功能 ,跟到 dmpostform.php

 

 前30行基本上都是无关代码

 

 可以看到开发人员自定义了一个 过滤函数,htmlentitdm2 () 其实和 htmlentities() 这个函数差不多,只不过在里面也加入 了一些其他的内容,这里尝试对 htmlentities()函数进行绕过,通过查询发现,ENT_QUOTES 这个选项是既过滤单引号,也过滤双引号,可以看到基本上是无法绕过的,

然后57行判断了 $type 所传入的值是否在 $typeformarr_men () 数组里面,抓包可以看到,$type传进来的值是formblock  ,在 $typeformarr 这个数组里面

至此, $file= 'file_formpost/formpost_formblock'

但是并没有看到处理 留言板的函数,继续跟进,略过无关紧要的部分

 

 发现在 102 行包含了 indexDM_load.php  ,跟进indexDM_load.php  看这个函数的名字大概可以猜出来,这是个重要的主页加载函数,确实,里面的代码比较乱

 

 前面基本上都是 define 定义常量,直接进行 $file 的搜索即可

 

 在通篇中,只有后半部分这点和 $file 变量有关,那我们基本上可以略过中间 了

 

我们可以忽略第386到390行了,因为 $file= 'file_formpost/formpost_formblock',符合第 392行,

 

 即 $filev = ./component/dm-include/file_formpost/formpost_formblock.php  接下来直接去找文件就行了

 在大佬那篇文章中,版本是 17年的版本,没有对 ip 进行过滤,但是这里可以看到,已经是完全严格过滤了

 

 接下来是对

3.后台登录功能
鉴于这里之前出过cookie上的认证问题,这里重点就是cookie的认证方式是否存在漏洞,这里首先还是来看看前台登录框的代码是怎么写的。

这里还是采用了自定义的htmlentitdm函数,对单引号、双引号进行了转义,并且在sql语句中也不是直接进行拼接,需要对单引号进行闭合,因此这里不存在登录框注入这样的安全问题。
下面来看看后台是怎么对cookie进行校验的,这里笔者做的就是看看后台文件是否都包含了一些基础配置文件,然后再从这些配置文件中去查找cookie的相关操作函数,这里后台的基础配置文件为common.inc2010.php

 

 这里和大佬那篇文章有所不同的是对 cookie 也进行了 html实体过滤 ,无法注入

至此,审计基本结束,可以说都看的懂,只要慢慢来,总会牛逼的!!

 

 

 

标签:审计,功能,DM,这里,漏洞,建站,后台,cms
来源: https://www.cnblogs.com/zhangqianxi/p/14404149.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有