DM企业建站系统v201710 sql注入漏洞分析 | 新版v201712依旧存在sql注入
0x00 前言
本来呢,这套CMS都不想审的了。下载下来打开一看,各种debug注释,排版烂的不行。
贴几个页面看看
感觉像是新手练手的,没有审下去的欲望了。
但想了想,我tm就是新手啊,然后就继续看了下去。
随便点了一下seay工具自动审出来的几个关键点。发现有注入,既然有注入,就好好看看了。
phpstorm,seay源代码审计,本地demo搭起来~
看完之后,想写篇文章总结一下,标题都写好了:
DM企业建站系统v201710 存在sql注入
可能是因为代码格式不想写了,又或者其他原因
。。。
不知多少分钟之后,无意在cnvd上看到有人提交了这个系统的相关报告,而且还是两个?!
这才下定决心想捋一捋这个系统。
0x01 CNVD 的报告和厂商的补丁
先看看 CNVD 上的报告是怎么写的吧?
报送时间 10-23 号,挺早的呀。。。
get 到一个点,后台登录处存在sql注入~
在看看另外一份怎么写的?
哎呀,24 号,你两真有缘。
这份报告应该是系统的审了,发现了多个参数。怕是日穿了,厂商也出了补丁。
最新版是 12.1 号的。
0x03 新旧版本对比
因为我之前已经看过了旧版本的代码,也知道旧版本多参数存在注入的问题所在。
旧版本的参数过滤都是使用了这么个函数
这个函数是作者自定义的,跟进去
global.common.php
会发现用的是 htmlentities来过滤,注意函数后面第二个参数用得是 ENT_NOQUOTES。这意味着什么呢?
用函数 htmlentitiesdm 过滤的都是只将<,>编码为实体字符而已。而单双引号完美被忽视了。
那么这个过滤有何意义啊?或许作者是想着来防xss的?!
也就是说用这个函数过滤的输入,只要带到数据库前没有做过滤的都是存在注入的。。
比如CNVD第一份报告说的,后台登陆存在注入??
看到代码login.php
只是用 htmlentitiesdm 过滤了一下就不再过滤了,直接带进数据库,注入杠杠的。
还有第二份报告所说的多个参数注入,怕就是用了这个函数进行过滤的各个参数吧,这里就不再一一去找了。
让我们把目光放到新版本上。
打开神器beyond compare,加载新旧两个版本。
会发现做了很多更改。
我们单刀直入直接看看 global.common.php,看看函数 htmlentitiesdm 有没有做修改?
会发现从 ENT_NOQUOTES 变成了 ENT_QUOTES。
也就是从不编码任何引号变成了编码所有引号。
也就是说这一改变把CNVD上面的两个洞都修复了。
login.php 后台登陆注入的
以及其他的输入参数,都是换成了用 htmlentitdm 来过滤了。
不一一举例。
0x04 新版依旧存在sql注入
在对比完新旧版本之后,我就开始笑了。因为我找的几个sql注入漏洞,都没有修复。
哈哈,我也有手握0day的时候了!
1,常见的getip()函数过滤不全或者没有过滤,导致sql注入
先看旧版的 global.common.php , 很明显没有任何过滤
看看哪里用了这个函数?在前台找到两个地方
其中 file_formpost_concat 是用来留言的,file_order_post.php是用来下单的。‘
在我测试发现,只有留言这个功能可以用。
看代码,旧版是content和tokenhour参数都有注入的
新版的过滤掉了。
但获取ip这里是没有变的。
那么这里是可以拿到一个布尔类型的注入。(因为这里没有回现位)
直接 sqlmap 跑了
2,后台认证判断存在注入,可直接绕过登陆
看最新版本后台认证处 admindm-yourname/config-a/common.inc2010.php
左新右旧,可以看到是没有什么改变的。
而我们仔细分析一下这段代码:
因为这里的cookie是可控的,我们可以直接进行注入,甚至不用注出密码,直接进行绕过登陆了。
我们分析代码,可以得出这样的结论。
为什么userps 也是可控的呢?因为这里存在注入啊。
通过注入,我们可以让返回的密码为我们自己输入的。
那么就可以直接构造cookie,以管理员的身份登陆进去了。
比如,我们用ps 为1 ,id 为 注入语句的cookie。
根据公式
usercookiecompare = userid-md5(userps,cookiesecet)
先构造md5部分:
那么我们的usercookie就是
7' and 1=2 union select null,null,null,null,null,1,null,null,null,null,null,null,null #-7b0bbade54ef65e2a830c034d0d14e61
把三个cookie搬上,访问一下/admindm-yourname/mod_common/index-welcome.php?lang=cn 便可直接进入后台
时间原因,就不再看其他问题了。
肯定还有其他很多问题,代码这么乱,出错的几率也增高了不少。
0x05 总结
总的来说,这是一套比较简单的cms,适合我们这种新手。
不知道为什么这么简单的CMS,还可以刷CNVD,CNVD真的这么简单吗?!
DM企业建站系统v201710 sql注入漏洞分析 | 新版v201712依旧存在sql注入的更多相关文章
- [代码审计]DM企业建站系统v201710 sql注入漏洞分析 | 新版v201712依旧存在sql注入
0x00 前言 本来呢,这套CMS都不想审的了.下载下来打开一看,各种debug注释,排版烂的不行. 贴几个页面看看 感觉像是新手练手的,没有审下去的欲望了. 但想了想,我tm就是新手啊,然后就继续看 ...
- PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...
- Beescms_v4.0 sql注入漏洞分析
Beescms_v4.0 sql注入漏洞分析 一.漏洞描述 Beescms v4.0由于后台登录验证码设计缺陷以及代码防护缺陷导致存在bypass全局防护的SQL注入. 二.漏洞环境搭建 1.官方下载 ...
- SpringBoot SpEL表达式注入漏洞-分析与复现
目录 0x00前言 0x01触发原因 0x02调试分析 0x03补丁分析 0x04参考文章 影响版本: 1.1.0-1.1.12 1.2.0-1.2.7 1.3.0 修复方案:升至1.3.1或以上版本 ...
- Vtiger CRM 几处SQL注入漏洞分析,测试工程师可借鉴
本文由云+社区发表 0x00 前言 干白盒审计有小半年了,大部分是业务上的代码,逻辑的复杂度和功能模块结构都比较简单,干久了收获也就一般,有机会接触一个成熟的产品(vtiger CRM)进行白盒审计, ...
- 【代码审计】大米CMS_V5.5.3 SQL注入漏洞分析
0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...
- 【代码审计】五指CMS_v4.1.0 copyfrom.php 页面存在SQL注入漏洞分析
0x00 环境准备 五指CMS官网:https://www.wuzhicms.com/ 网站源码版本:五指CMS v4.1.0 UTF-8 开源版 程序源码下载:https://www.wuzhi ...
- 【代码审计】五指CMS_v4.1.0 后台存在SQL注入漏洞分析
0x00 环境准备 五指CMS官网:https://www.wuzhicms.com/ 网站源码版本:五指CMS v4.1.0 UTF-8 开源版 程序源码下载:https://www.wuzhi ...
- 【代码审计】iZhanCMS_v2.1 前台IndexController.php页面存在SQL注入 漏洞分析
0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...
随机推荐
- Intent及IntentFilter具体解释
Intent用于启动Activity, Service, 以及BroadcastReceiver三种组件, 同一时候还是组件之间通信的重要媒介. 使用Intent启动组件的优势 1, Intent为组 ...
- 浏览器正确理解和使用GBK及UTF-8(UTF-8 + BOM)网页编码
网页编码英文译为web page encoding.是在网页中指定其特定的字符编码格式的库. GBK是国家标准GB2312基础上扩容后兼容GB2312的标准. GBK的文字编码是用双字节来表示的.即不 ...
- XML文档读取-DOM
DOM(Document Object Model),“文档对象模型”早期是为了解决不用浏览器间数据兼容问题提出的解决方案,现在已经是W3C组织推荐的处理可扩展标志语言的标准编程接口. W3C DOM ...
- SSM学习(三)--集成spring mvc
spirng mvc是一个mvc框架,与struts2类似,都是基于Servlet封装而成的框架,所以要了解spring mvc或者struts2比需先了解Servlet,本篇我们先把spring m ...
- TypeScript学习笔记之基础类型
从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧: typescript最新版本2.6,所有演示代码均基于此版本 开始之前确定安装了如下n ...
- URL加载页面的过程
总体过程: 1.DNS解析 2.TCP连接 3.发送HTTP请求 4.服务器处理请求并返回HTTP报文 5.浏览器解析渲染页面 6.连接结束 一.DNS解析 在互联网中,每一台机计算机的唯一 标识是他 ...
- 关于html,css,js三者的加载顺序问题
<head lang="en"> <meta charset="utf-8"> <title></title> ...
- rmdir 命令详解
rmdir 作用: 用来删除空目录, 当目录不再被使用时, 或者磁盘空间已达到使用限定值, 就需要删除失去价值的目录. 利用rmdir 命令可以从一个目录中删除一个或多个空的子目录. 该命令从一个 ...
- Django2文档-入门概览
Django 概览 Django 是设计是为了使通用的Web开发任务变得快速而又简单, 一下是如何使用Django编写数据库驱动的Web应用程序的非正式概述. 这个文档的目标是给你足够的技术细节来理解 ...
- Generation Axe 吉他之夜音乐会-广州站 感受
本人第一次看音乐会,演唱会跟音乐会是有区别的哈,演唱会以表演.舞蹈.歌唱为主,还有很多特别嘉宾 演出时间: 从20点开始一直到23点多才结束,有五个吉他手,开场跟结束五个吉他手一齐演出.平均每个人表演 ...