当前位置: 首页> 娱乐> 八卦 > 深圳罗湖网站建设_杭州自助建站模板_网店运营策划方案_策划书模板

深圳罗湖网站建设_杭州自助建站模板_网店运营策划方案_策划书模板

时间:2025/7/15 21:44:08来源:https://blog.csdn.net/m0_73360524/article/details/144173586 浏览次数:0次
深圳罗湖网站建设_杭州自助建站模板_网店运营策划方案_策划书模板

关注这个靶场的其它相关笔记:UPLOAD LABS —— 靶场笔记合集-CSDN博客

0x01:过关流程

本关的目标是上传一个 WebShell 到目标服务器上,并成功访问:

通过查看源码,可以发现,本关在之前所有关卡的基础上做了过滤,过滤的还是比较全面的:

但是仔细分析一下代码,“删除文件末尾的点” 这一段会不会存在 Bug?带入一下开发者视角,我为什么要删除文件末尾的点?以及我如何删除文件末尾的点?

开发者视角:我为什么要删除文件末尾的点?

因为 Windows 系统特性,其会将文件末尾的点自动去除。攻击者可能会利用此特性构造诸如 muma.php.muma.php... 这样的文件进行绕过。

开发者视角:我如何删除文件末尾的点?

首先想到 . 后一般会跟文件的扩展名,如 .php。而攻击者通过 . 进行绕过,一般点都在末尾,且其后一般不会跟东西,比如像这种:muma.php.

那么我们就可以从后往前,按位删,碰到单独的 . 就往前删一个,如果碰到的字符不是 . 就停止删除,最终将 muma.php.... 变为 muma.php 后再进行后续的操作。

一切的安全都是基于假设,如果假设前提错误,那么安全也就成了泡影。在上面的头脑风暴中,开发者知道 Windows . 的特性,所以针对该特性进行了防御。但也仅仅针对了该特性进行防御。

我们在前面几关中知道了 Windows 文件名末尾的空格特性,即你在 Windows 文件后追加空格也会被系统自动去除。

那么联动一下这两个特性,就可以让开发者的防御荡然无存。开发者认为攻击者利用 . 绕过,所以过滤了文件名末尾是连续的点,但是倘若我在这多个点之间加个空格,是不是就变得不一样了。它的过滤方式就失效了。

下面开始进行攻击,首先上传一个.php 文件,并使用 BurpSuite 进行抓包:

重放请求包,往文件名后添加 . .(点 - 空格 - 点)进行绕过:

如上,成功上传 muma.php. . 文件,下面我们使用 ”中国蚁剑“ 来连接一下木马,看看能否 Get Shell(如下,Get Shell 成功,本关结束):

0x02:源码分析

下面是本关 WAF 源码,其在前几关的基础上做了比较完善的过滤,但是由于其开发者假设错误,导致攻击者可以利用多个 Windows 特性进行组合攻击,下面对着代码笔者分析一下 muma.php. . 的绕过流程:

 $is_upload = false;$msg = null;if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");// $file_name = "muma.php. ."$file_name = trim($_FILES['upload_file']['name']);// $file_name = "muma.php. "  # 删除文件名末尾的点,碰倒空格就结束逻辑了$file_name = deldot($file_name);//删除文件名末尾的点// $file_ext = ". " # 系统获取 . 最后出现的位置到结束的字符,结果取了个 .空格$file_ext = strrchr($file_name, '.');// 下面的逻辑都是针对 ". " 进行过滤,没有意义$file_ext = strtolower($file_ext); //转换为小写$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA$file_ext = trim($file_ext); //首尾去空​// 扩展名 ". " 肯定不在黑名单中,所以执行上传逻辑if (!in_array($file_ext, $deny_ext)) {$temp_file = $_FILES['upload_file']['tmp_name'];// 这里拼接后的路径为 "UPLOAD_PATH/muma.php. " => 后面就交给 Windows 系统特性帮你删除文件末尾的点和空格了$img_path = UPLOAD_PATH.'/'.$file_name;if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';}} else {$msg = '此文件类型不允许上传!';}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}}

关键字:深圳罗湖网站建设_杭州自助建站模板_网店运营策划方案_策划书模板

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: