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

 

0x00 环境准备

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

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

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

测试网站首页:

 

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目录。作为漏洞测试目录:

 

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

 

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

0x03 修复建议

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

最后

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bypass--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值