0%

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’]为你想要编辑的模板文件名字

1
2
3
4
5
6
7
8
9
10
11
12
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

写入一句话木马



总结:

  • 有时候多个漏洞组合起来,可以达到一个很好的效果。

  • 要写验证和攻击的代码才能更了解漏洞的原理