【代码审计】XIAOCMS_后台database.php页面存在任意文件删除漏洞

 

0x00 环境准备

XIAOCMS官网: http://www.xiaocms.com/

网站源码版本:XiaoCms (发布时间:2014-12-29)

程序源码下载:http://www.xiaocms.com/download/XiaoCms_20141229.zip

测试网站首页:

【代码审计】XIAOCMS_后台database.php页面存在任意文件删除漏洞

0x01 代码分析

1、漏洞文件位置:/admin/controller/database.php 第38-56行:

  1. public function importAction() {
  2. $dir  = DATA_DIR .  'bakup' . DIRECTORY_SEPARATOR;
  3. $path = $this->get('path');
  4. if ($path && is_dir($dir . $path)) {
  5. $fileid = $this->get('fileid');
  6. $this->importdb($path, $fileid);
  7. exit;
  8. }
  9. if ($this->post('submit')) {
  10. 10.             $paths    = $this->post('paths');
  11. 11.             if (is_array($paths)) {
  12. 12.                 foreach ($paths as $path) {
  13. 13.
  14. 14.                     delete_dir($dir . $path .'/' );
  15. 15.                     @rmdir($dir . $path );
  16. 16.                 }
  17. 17.             }
  18. 18.             $this->show_message('操作成功', 1,url('database/import'));
  19. 19.         }

在这段函数中,首先判断参数path/dir是否存在,如果存在就导入数据备份文件,继续往下走,判断是否获取sumbmit、paths参数,遍历数组,接着删除数组中提交的文件目录。可以看到参数并未进行任何过滤或处理,导致程序在实现上存在任意文件删除漏洞,攻击者可通过该漏洞删除任意文件。

0x02 漏洞利用

1、在网站根目录新建test目录。作为漏洞测试目录:

【代码审计】XIAOCMS_后台database.php页面存在任意文件删除漏洞

2、构造URL参数,可成功删除根目录下的test目录

【代码审计】XIAOCMS_后台database.php页面存在任意文件删除漏洞

3、当提交的参数paths[]=..\\..\\时,可删除整个网站根目录,如果继续往上遍历,将删除整个服务器文件,存在较大的威胁。

0x03 修复建议

1、对于要删除的文件,通过正则判断用户输入的参数的格式,看输入的格式是否合法。

最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

【代码审计】XIAOCMS_后台database.php页面存在任意文件删除漏洞

上一篇:最简单应用的时间日期选择插件---My97DatePicker


下一篇:Android属性动画完全解析(上)