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
写入一句话木马
总结:
- 有时候多个漏洞组合起来,可以达到一个很好的效果。
- 要写验证和攻击的代码才能更了解漏洞的原理