打靶归来 | 您所在的位置:网站首页 › 《打靶归来》 › 打靶归来 |
一、环境准备
① - 靶场的搭建
下载地址:upload-labsupload-labs靶场曾有过一次更新,更新新添加了一道Pass-05,有一些以前的教程的题号与这篇教程不符合,请各位自行分辨本篇作者所用到的PHP版本为5.4.45,只有在做部分题目时需要修改Pass03的绕过需要配置apache的httpd.conf文件
![]() 注意:更改配置之后记得重启服务器 ② - 准备webshell 测试用webshell # shell.php → 测试所用的phpinfo 一句话木马 # webshell.php → 一句话木马 ③ - 说明 确认webshell上传成功的演示只在Pass01演示一遍本题使用的webshell均为最简单的phpinfo(),一句话木马getshell会在Pass02演示一遍,之后将不再演示webshell最好设置不同名,或者在每次上传成功后删除,避免出现绕过失败但测试成功的情况Pass14~Pass21的题解见:打靶归来 - 详解upload-labs靶场(下) 二、题解 【Pass01 - 前端Javascript过滤】题目: 绕过方法: 本题使用Javascript代码进行过滤,禁用网站的Javascript权限即可完成绕过 第一步:禁用网站权限
题目: 绕过方法: 通过抓包修改请求头的MIME类型绕过过滤 第一步:上传webshell 第二步:抓包,修改MIME类型 题目: 绕过方法: 本题使用黑名单过滤,且只过滤原始的后缀,所以可以使用不在其黑名单中的后缀进行绕过,Pass04和Pass05的方法可以在这一题使用,也可以使用其它的后缀名进行绕过。但前提是apache的http.conf文件做了如此配置 第一步:上传后缀名为.phtml(根据配置尝试)的webshell 第二步:确认webshell是否上传成功 题目: 绕过方法: 本题没有过滤.htaccess文件,可以通过上传.htaccess文件来为一个webshell文件更改后缀,来帮助webshell进行绕过 第一步:构造一个.htaccess文件 setHandler application/x-httpd-php第二步:将.htaccess文件上传到服务器 第四步:直接访问更改了后缀的WebShell文件即可执行该文件(1.png) 题目: 绕过方法 本题没有过滤.user.data文件,且在目录下存在一个已知的php文件,可以通过.user.data文件配置使原有的php文件包含webshell 第一步:构造.user.php文件并上传 auto_prepend_file=1.png
这些类型过于简单,就不再按步骤讲解了,只会简单的分析源码和说明原理 # 以下代码是较为完整的放防御姿势,但还是有绕过方法,可以对比这个来判断有哪些最简单的绕过姿势 $file_name = trim($_FILES['upload_file']['name']);//提取文件名 $file_name = deldot($file_name);//删除文件名末尾的点 $file_ext = strrchr($file_name, '.');//从文件名中提取后缀名 $file_ext = strtolower($file_ext); //转换为小写 $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA $file_ext = trim($file_ext); //首尾去空 【Pass06 - 利用大小写绕过】题目: 绕过方法 缺少大小写转换,可以通过修改后缀的大小写来绕过 原理:Windows中对大小写是不敏感的 题目: 绕过方法 缺少末尾去空格,可以给文件名后缀末添加空格来绕过 原理:Windows在保存文件时,会自动去除末尾的空格 题目: 绕过方法 缺少末尾去.,可以给文件名后缀末添加.来绕过 原理:Windows在保存文件时,会自动去除末尾的. 题目: 绕过方法 缺少去除字符串::$DATA,利用在后缀名之后添加字符串::$DATA绕过 题目: 绕过方法 仔细看一下,这题的代码就是之前写出来的较为完整的防御姿势,可以说把之前出现的所有情况都考虑完全了,但仍然存在绕过方法。 这一题可以使用点+空格+点绕过,我们来分析以下这种方法的可行性 # 假设上传的文件为[shell.php. .] $file_name = trim($_FILES['upload_file']['name']); //获取文件名[shell.php. .] $file_name = deldot($file_name); //获取文件名[shell.php. ] $file_ext = strrchr($file_name, '.'); //获取后缀名[.php. ] $file_ext = strtolower($file_ext); $file_ext = str_ireplace('::$DATA', '', $file_ext); $file_ext = trim($file_ext); //获取后缀名[.php.],最终可以实现绕过使用这种方式,可以绕过之前出现的大部分黑名单检测,所以说在Windows系统种使用黑名单检测是真的不安全 【Pass11 - 双写绕过】题目: 绕过方法 将数据替换为空,则可以使用双写绕过,即在后缀名中嵌套后缀名进行绕过 题目: 绕过方法 让URL中最后一个.后的数据符合白名单的条件,然后利用%00截断使它无效(URL中遇到%00就会认为读取结束,修改路径值让路径值在%00前的数据被当作文件名) 即:../upload/shell.php%00shell.png会被当作../upload/shell.php 第一步:修改webshell的后缀为白名单内的后缀并上传 第二步:抓包,然后修改URL值 题目: 绕过方法 当url中出现了0x00就会认为读取已经结束。若文件的保存路径通过表单传参,则可以在保存路径参数后加上WebShell的文件名,并以0x00结束即可实现绕过 第一步:修改webshell的后缀为白名单内的后缀并上传 第二步:抓包,然后修改POST中的路径值 第二步的详细步骤: 第三步:访问0x00前填入的文件名,判断是否上传成功 下篇编写完成:打靶归来 - 详解upload-labs靶场(下) |
CopyRight 2018-2019 实验室设备网 版权所有 |