PHP

MYSQL

阿旭个人博客

阿旭个人博客,是一款小巧强大的php mysql个人博客系统,本站提供个人博客模板下载。个人博客注册和建立个人博客网站,就用阿旭php个人博客系统吧!
您的位置:首页>漏洞,>正文

感谢si1ence的代码审计:axublog1.0.2 系统重装+Getshell漏洞

  • Donny
  • 2017-06-28 18:40:38       被围观了
  • 漏洞,
  • 漏洞分析
    文件位置:
    axubloginstallgoinstall.php

    首先引入了两个文件

    require_once("../class/c_md5.php");
    require_once("install_fun.php"); 
    75行判断选择安装进行步骤,代码

    <?php
     
    switch ($_GET["g"])
    {
    case "step2":chkoutpost();step2(); break; 
    case "step3":chkoutpost();step3(); break; 
    case "step4":chkoutpost();step4(); break; 
    default:
        if (file_exists("../cmsconfig.php"))  
        {echo"<p align=center><br><br><br><font color=red>系统已安装!若要重新安装,请删除文件 cmsconfig.php ! </font></p>";break;}  
        else{step1(); break; }  
    }
    ?>
    使用了switch函数通过get获取的参数来进行步骤选择 看到default 这里是判断是否存在有配置文件 有则输出警告信息并没有退出程序 而且使用的是switch选择分支
    尝试跳过步骤一直接进入step2步骤

    进入分支后执行chkoutpost()函数 锁定函数定义位置在 /axublog/install/install_fun.php
    Line 373

    function chkoutpost(){
    $fromurl=$_SERVER['HTTP_REFERER'];
    if($fromurl==''){echo'<p align=center><br><font color=red>禁止非法提交!</font><br></p>';die();}
    }

    这里判断 $_SERVER['HTTP_REFERER']是否为空 那么只要在访问step2的时候抓包 加上referer为step1的地址即可绕过

    Getshell:
    漏洞文件:


    function step4(){
    $root=$_POST["root"];
    $dbuser=$_POST["dbuser"];
    $dbpsw=$_POST["dbpsw"];
    $dbname=$_POST["dbname"];
    $tabhead=$_POST["tabhead"];

    $ad_user=$_POST["ad_user"];
    $ad_psw=$_POST["ad_psw"];

    $webname=$_POST["webname"];
    $weburl=$_POST["weburl"];
    $webinfo=$_POST["webinfo"];
    $webkeywords=$_POST["webkeywords"];
    $webauthor=$_POST["webauthor"];

    这里没有对参数过滤下面写入时也没有进行过滤所以导致了getshell

    Line:346

    $file="config_empty.php";
    $fp=fopen($file,"r");         //以写入方式打开文件
    $text2=fread($fp,4096);         //读取文件内容
    $text2=str_replace('@root@',$root,$text2);
    $text2=str_replace('@dbuser@',$dbuser,$text2);
    $text2=str_replace('@dbpsw@',$dbpsw,$text2);
    $text2=str_replace('@dbname@',$dbname,$text2);
    $text2=str_replace('@tabhead@',$tabhead,$text2);
    $text2=str_replace('@webname@',$webname,$text2);
    $text2=str_replace('@weburl@',$weburl,$text2);
    $text2=str_replace('@webinfo@',$webinfo,$text2);
    $text2=str_replace('@webkeywords@',$webkeywords,$text2);
    $text2=str_replace('@webauthor@',$webauthor,$text2);
    $file="../cmsconfig.php";          //定义文件
    $fp=fopen($file,"w");         //以写入方式打开文件
    fwrite($fp,$text2);
    只需要在step3填入信息时 写入一句话 注释后面的字符就可以菜刀连接 根目录下的cmsconfig.php

    漏洞复现
    本地测试:
    直接访问安装地址

    QQ截图20170624115126.png

    直接访问step2

    QQ截图20170624115137.png

    访问step2时 添加referer头

    QQ截图20170624115445.png

    进入安装界面

    QQ截图20170624115545.png

    填写数据库信息进入step3

    4.png

    成功Getshell


    原文链接:https://www.si1ence.com/archives/29/

    文章 感谢si1ence的代码审计:axublog1.0.2 系统重装+Getshell漏洞阿旭个人博客 网上收集或原创,转载请注明

    来源:http://www.axublog.com/post/gan_xie_si1ence_de_dai_2758/

    上一篇:html 判断是否手机访问用javascript代码实现

    下一篇:关于后台【生成今日更新】的说明

    阿旭个人博客-创建于2017年5月- 沪ICP备16040435号

    About Sitemap Rss 文章归档 QQ群190498118