欢迎进入UG环球官网(环球UG)!

usdt提币免手续费(www.caibao.it):新手入门代码审计(1)--xdcms-3.0.1

admin1个月前17

USDT自动API接口

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

对于我自己来说没有接纳MVC架构的cms,我对照喜欢直接从源码入手看看整个项目的逻辑以及公共函数文件看是否有啥可行使,然后就是接纳是非盒举行测试。

这个cms拿来作为新手入门也是蛮不错的啦 架构也没框架那么庞大~

看看整个项目的目录结构

先来看看整个项目公共函数的过滤等
凭证入口文件查找一些相关config等(这个utf8就已经把宽字节清扫在外咯

跟进到fun.inc.php文件过滤有没有不严谨的,若存在绕过的话那十有八九就存在问题

//平安过滤函数
function safe_replace($string) {
    $string = str_replace('%20','',$string);
    $string = str_replace('%27','',$string);
    $string = str_replace('%2527','',$string);
    $string = str_replace('*','',$string);
    $string = str_replace('"','"',$string);
    $string = str_replace("'",'',$string);
    $string = str_replace('"','',$string);
    $string = str_replace(';','',$string);
    $string = str_replace('<','<',$string);
    $string = str_replace('>','>',$string);
    $string = str_replace("{",'',$string);
    $string = str_replace('}','',$string);
    $string = str_replace('\\','',$string);
    return $string;
}

//平安过滤函数
function safe_html($str){
    if(empty($str)){return;}
    $str=preg_replace('/select|insert | update | and | in | on | left | joins | delete |\%|\=|\/\*|\*|\.\.\/|\.\/| union | from | where | group | into |load_file
|outfile/','',$str);
    return htmlspecialchars($str);
}

这里safe_replace()举行一些防护过滤一些危险字符,而safe_html防护sql注入,不外虽然过滤了然则可以行使巨细写举行绕过,即只要带入数据库查询的地方行使此函数就会存在sql注入(然则safe_replace我着实是绕不外555

重装

安装乐成后会天生一个文件锁,且重新接见安装路径会先判断文件锁是否存在(且在举行安装时会判断文件锁是否存在),且在上岸后台事后整个install文件夹会被强制删除…除非找到随便文件删除

sql注入

全局搜索safe_html,许多地方都挪用了 但不是以是都存在注入,由于有些地方存在safe_replace与invtal的珍爱index.php?m=member&f=login_save
没设施绕过,且xdcms会员治理界面(然则我们暂时不能行使,由于现实我们不知道治理后台账号

,

Usdt第三方支付平台

菜宝钱包(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

member会员界面(单引号包裹且传参只经由safe_html过滤..且开启了报错提醒,那就可用报错注入)可以行使报错注入,只要是只将safe_html带入数据库的查询则存在注入
这样就能查询出admin内外面的治理员信息。

/system/module/member/index

public function login_save(){
        $username = safe_html($_POST['username']);
        $password = safe_html($_POST['password']);

        if(empty($username)||empty($password)){
            showmsg(C('user_pass_empty'),'-1');
        }

        $sql="select * from ".DB_PRE."member where `username`='$username'";
        if($this->mysql->num_rows($sql)==0){
            showmsg(C('member_not_exist'),'-1');
        }

        $password=md5(md5($password));
        $rs=$this->mysql->get_one($sql);
        if($password!=$rs['password']){
            showmsg(C('password_error'),'-1');
        }

        if($rs['is_lock']==1){
            showmsg(C('user_lock'),'-1');
        }


另有多处存在此注入

随便文件删除

全局搜file_get_contents意外收获了unlink随便目录文件删除index.php?m=xdcms&c=data&f=delete&file=../../test

public function delete(){
        $file=trim($_GET["file"]);
        $dir=DATA_PATH.'backup/'.$file;
        if(is_dir($dir)){
            //删除文件夹中的文件
            if (false != ($handle = opendir ( $dir ))) {  
                while ( false !== ($file = readdir ( $handle )) ) {   
                    if ($file != "." && $file != ".."&&strpos($file,".")) {  
                        @unlink($dir."/".$file);    
                    }  
                }  
                closedir ( $handle );  
            }  

            @rmdir($dir);//删除目录
        }
        showmsg(C('success'),'-1');
    }

这传入的参数没有过滤也没有白名单,直接拼接进dir,要想触发循环就得举行if判断,以是这里只能是../举行目录遍历可控举行随便文件夹删除

文件上传

随着uploadfile文件夹寻找文件上传点,对上传文件后缀举行了限制。
行使admin后台限制的文件花样更改即可上传木马getshell,也可行使上传文件后举行修改后缀。system/function/upload.inc.php(文中有多个文件上传的点

行使admin后台权限修改上传文件花样即可

我感受不是mvc模式的话 整个项目的逻辑照样蛮清晰的,建议是非盒审计,然则本人对大结构的框架照样晕晕的:)继续学习!

上一篇 下一篇

猜你喜欢

网友评论

随机文章
热门文章
热评文章
热门标签