马上注册,免费下载更多dz插件网资源。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
1、简述后台任意文件删除,需要有管理员的权限。 2、复现环境同上 3、漏洞复现登陆后台,进入论坛->模块管理->编辑板块,使用burp拦截提交的数据。
修改请求包,添加参数 &replybgnew=../../../testfile.txt&delreplybg=1 发送,查看文件发现被删除。
4、漏洞分析分析一下该请求的流程。 请求URL:/dz/upload/admin.php?action=forums&operation=edit&fid=2&replybgnew=../../../testfile.txt&delreplybg=1 在admin.php中接收了action参数,在第58行经过admincpfile函数处理后返回文件路径,并包含该文件。
- if($admincp->allow($action, $operation, $do) || $action == 'index') {
- require $admincp->admincpfile($action);
复制代码
看一下该函数的处理过程: - function admincpfile($action) {
- return './source/admincp/admincp_'.$action.'.php';
- }
复制代码经过处理返回的内容是:./source/admincp/admincp_forums.php,也就来到了漏洞存在的地方。 根据if/else的判断条件,进入else中的代码: - if(!submitcheck('detailsubmit')) {
- ......
- }
- else{
- }
复制代码
造成漏洞的代码: - if(!$multiset) {
- if($_GET['delreplybg']) {
- $valueparse = parse_url($_GET['replybgnew']);
- if(!isset($valueparse['host']) && file_exists($_G['setting']['attachurl'].'common/'.$_GET['replybgnew'])) {
- @unlink($_G['setting']['attachurl'].'common/'.$_GET['replybgnew']);
- }
- $_GET['replybgnew'] = '';
- }
复制代码
$multiset默认为0,只要不给该参数赋值就满足条件进入if语句。 第二个if语句,检查GET参数delreplybg有没有内容,然后做了下检测,检测parse_url函数返回的结果中有没有host这个变量,来确保GET参数replybgnew不是url,但是并不影响传入文件路径。 这里$_G['setting']['attachurl'的值为data/attachment/,再拼接上common/和$_GET['replybgnew'],这样路径就可控了。通过unlink达到文件删除的目的。
©DZ插件网所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 网站部分内容来源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,得到更好的正版服务。 您在本站任何的赞助购买、下载、查阅、回复等行为等均表示接受并同意签订《DZ插件网免责声明协议》。 如有侵权请邮件与我们联系处理: discuzaddons@vip.qq.com 并出示相关证明以便删除。敬请谅解!
|