BlueCMS v1.6 sp1 /admin/tpl_manage.php 本地文件包含漏洞分析

BlueCMS v1.6 sp1 /admin/tpl_manage.php 本地文件包含漏洞


熟悉功能:

方便管理员对模板html文件进行修改


用户可控变量:

  • $_REQUEST
    • $_REQUEST['act']
  • $_GET
    • $_GET['tpl_name']
  • $_POST
    • $_POST['tpl_name']
    • $_POST['tpl_content']

$_REQUEST['act']无法影响判断

$_GET[‘tpl_name’]

$_GET[‘tpl_name’]为你想要编辑的模板文件名字

 elseif($act == 'edit'){
    $file = $_GET['tpl_name'];
    if(!$handle = @fopen(BLUE_ROOT.'templates/default/'.$file, 'rb')){ # $file直接拼接
        showmsg('打开目标模板文件失败'); # 判断文件是否存在
    }
    $tpl['content'] = fread($handle, filesize(BLUE_ROOT.'templates/default/'.$file)); # 读取文件
    $tpl['content'] = htmlentities($tpl['content'], ENT_QUOTES, GB2312);
    fclose($handle);
    $tpl['name'] = $file;
    template_assign(array('current_act', 'tpl'), array('编辑模板', $tpl));
    $smarty->display('tpl_info.htm');
 }

没有对$_GET['tpl_name']进行过滤,加上../可以读取web目录以外的内容。
payload = http://bluecmsv16:9990/admin/tpl_manage.php?act=edit&tpl_name=../../../upgrade/upgrade.php

有什么比较有价值的网站文件吗?

可以php文件即读到网站源码

$_POST变量

$_POST['tpl_name']变量:你想要更改的网站模板文件
$_POST['tpl_content']变量:你要更改的内容

两个变量均没有经过过滤,可以直接修改网站的源码


编写pocsuite插件:

发现需要root登录状态才行,可以通过之前的登录绕过获取到cookie

手工添加cookie尝试,该漏洞确实是要登录状态才能利用

要配合BlueCMS v1.6 sp1 /admin/login.php SQL注入漏洞一起使用

怎么攻击呢?

可以修改网站下的任何源代码,可以

  • 写入一句话木马
  • 盗号js

写入一句话木马



总结:

  • 有时候多个漏洞组合起来,可以达到一个很好的效果。
  • 要写验证和攻击的代码才能更了解漏洞的原理

猜你喜欢

转载自blog.csdn.net/qq_28921653/article/details/81008454