代码审计:covercms 1.6
小菜只能找找没人用的cms练练手了
cnvd上有个 CoverCMS V1.16存在多个漏洞
漏洞描述 :CoverCMS V1.16存在重装、信息泄露、暴力破解、存储型跨站脚本和反射型跨站脚本漏洞。攻击者可利用漏洞获取敏感信息,如数据库账号密码、数据库名泄露、后台默认弱口令;在用户投稿文章页面中插入恶意js代码,可获得用户cookie等信息,导致用户被劫持;在前台搜索框处构造XSS语句,可进行弹框操作,获得用户cookie等信息。
简单安装完后看看代码吧。
重装漏洞
安装完后会在/dynamic/下生产install.lock
install.php
$lockfile = './dynamic/install.lock';
$step = $_POST['step'] ? $_POST['step'] : ($_GET['step'] ? $_GET['step'] : 1);
.../省略
if(!isset($dbhost) || !isset($ckpre)){
$ierror = lang('base.inc.php noexist , please upload .');
}elseif(!ini_get('short_open_tag')){
$ierror = lang('shorttaginvalid');
}elseif(file_exists($lockfile)){
$ierror = lang('lockexist');
}elseif(!class_exists('cls_mysql')){
$ierror = lang('include/mysql.cls.php noexist , please upload .');
}
安装时会进行判断是否存在install.lock
如果存在会进行提示,但是没有exit()
我们再次访问http://localhost/covercms/install.php
发现开始安装的按钮无法点击。
if($step == 1){
ins_header(1);
echo "<div class=\"licence\">".lang('ins_introduce')."</div>";
ins_mider();
hidden_str('step',2);
button_str('submit',lang('start install'),$ierror ? 1 : 0);
ins_footer(1);
$ierror && ins_message($ierror);
}elseif($step == '2'){
ins_header(1);
echo "<div class=\"licence\">".lang('ins_license')."</div>";
ins_mider();
hidden_str('step',3);
button_str('submit',lang('agree'),$ierror ? 1 : 0);
ins_footer(1);
$ierror && ins_message($ierror);
.../省略
button_str函数会根据$ierror在html标签添加 disabled=""
F12删掉 或直接http://localhost/covercms/install.php?step=2
就可以跳步骤了
虽然能看到 数据库账号密码、数据库名泄露、后台默认弱口令
但还是重装不了啊...
前台搜索xss
search.php
if($searchword){
$filterstr .= ($filterstr ? '&' : '').'searchword='.rawurlencode(stripslashes($searchword));
}
对搜索词根本没过滤
闭合前后标签即可
"> <script>alert(/xss/)</script> <"
在用户投稿文章页面中插入恶意js代码
没找到 先留着
任意文件包含漏洞 (多处)
搜索带include和$的 可能存在漏洞
带后缀的就不看了
answers.inc.php
if(!submitcheck('barcsedit')){ //满足barcsedit为空 不设置即可
if(empty($u_tplname)){
//$u_tplname 可以变量覆盖(general.inc.php中伪全局 在admina中引用)
echo form_str($actionid.'arcsedit',"?entry=answers&action=answersedit&page=$page$param_suffix");
//搜索区块
tabheader_e();
....//省略
}else include(M_ROOT.$u_tplname);
....//省略
.inc.php的文件会在admina.php中引用
include_once M_ROOT.'./admina/'.$entry.'.inc.php';
构造url http://localhost/covercms/admina.php?entry=answers&action=answersedit&u_tplname=robots.txt
其他include $u_tplname的与之类似
代码审计:covercms 1.6的更多相关文章
- [代码审计]covercms 后台getshell
0x00 环境介绍 CMS名称: covercms 运行环境: php 5.6.27-nts + apache + mysql 系统版本: 1.16 漏洞等级:高危 漏洞简介: 后台awnotas.i ...
- PHP代码审计中你不知道的牛叉技术点
一.前言 php代码审计如字面意思,对php源代码进行审查,理解代码的逻辑,发现其中的安全漏洞.如审计代码中是否存在sql注入,则检查代码中sql语句到数据库的传输 和调用过程. 入门php代码审计实 ...
- 技术专题-PHP代码审计
作者:坏蛋链接:https://zhuanlan.zhihu.com/p/24472674来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 一.前言 php代码审计如字面 ...
- 关于PHP代码审计和漏洞挖掘的一点思考
这里对PHP的代码审计和漏洞挖掘的思路做一下总结,都是个人观点,有不对的地方请多多指出. PHP的漏洞有很大一部分是来自于程序员本身的经验不足,当然和服务器的配置有关,但那属于系统安全范畴了,我不太懂 ...
- Kindeditor 代码审计
<?php /** * KindEditor PHP * * 本PHP程序是演示程序,建议不要直接在实际项目中使用. * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置. * */ r ...
- 一个CMS案例实战讲解PHP代码审计入门
前言 php代码审计介绍:顾名思义就是检查php源代码中的缺点和错误信息,分析并找到这些问题引发的安全漏洞. 1.环境搭建: 工欲善其事必先利其器,先介绍代码审计必要的环境搭建 审计环境 window ...
- php代码审计基础笔记
出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...
- 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 3.全局防护Bypass之Base64Decode
0x01 背景 现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号.同上一篇,我 ...
- 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 2.全局防护Bypass之UrlDecode
0x01 背景 现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号.遇到这种情况 ...
随机推荐
- python 设计模式之原型模式 Prototype Pattern
#引入 例子1: 孙悟空拔下一嘬猴毛,轻轻一吹就会变出好多的孙悟空来. 例子2:寄个快递下面是一个邮寄快递的场景:“给我寄个快递.”顾客说.“寄往什么地方?寄给……?”你问.“和上次差不多一样,只是邮 ...
- 使用layui框架的select获取选中的值
在使用时需要注意:select标签的外层需要加上类名".layui-form" 接下来就是根据需求来改变下拉框的内容了,直接给select的option重新赋一次值,记得加上对应的 ...
- Elasticsearch和Head插件安装(转)
环境: CentOS7 Elasticsearch-6.3.2 JDK8 准备: JDK8 下载地址:http://www.oracle.com/technetwork/java/javase/do ...
- Dart运算符条件判断类型转换
/* 1.Dart运算符: 算术运算符 + - * / ~/ (取整) %(取余) 关系运算符 == != > < >= <= 逻辑运算符 ! && || 赋值 ...
- Nginx之https配置 - 运维笔记 (http->https强转)
一.Nginx安装(略)安装的时候需要注意加上 --with-http_ssl_module,因为http_ssl_module不属于Nginx的基本模块.Nginx安装方法: # ./configu ...
- iframe子页面无法返回上一页的问题
本文讨论的场景是ipad终端. 如题,因业务需要,需要使用iframe嵌套子页面.让外层始终保持一个socket连接,避免socket每跳转一个页面都要重新关闭建立连接的问题.但是这样问题来了,上线后 ...
- 【Tomcat】Tomcat 配置JNDI数据源(三)
数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Connec ...
- k8s-基础环境配置(六)
hostname配置1)修改主机名hostnamectl set-hostname xxx2)加入主机映射vim /etc/hosts……关闭selinuxsed -i '/^SELINUX/s/=. ...
- Laya的调试,调试面板,断点调试
参考: 性能统计面板介绍 版本2.1.1.1 调试面板 Laya有两个调试选项,编辑模式F9. 第一个调试模式,除了调试面板,还有一个查看当前舞台对象的面板.类似白鹭的Egret Inspector. ...
- 【435】NULL '\0' 0 等在 C 语言中的区别
参考:C/C++语言中NULL.'\0’和0的区别 参考:空字符串.'\0'.0与NULL的区别以及数组清零的特点分析 在 C语言 中没有 空字符 这个东西 '',不过有 空字符串 "&qu ...