文件上传漏洞

文件上传漏洞

16、

请添加图片描述

因为14,15,16原理基本相同,所以我从14开始,首先提到了文件包含漏洞,那就一定有include.php文件,经过访问,我们易知在主目录下

请添加图片描述

这一关会读取判断上传文件的前两个字节,判断上传文件类型,并且后端会根据判断得到的文件类型重命名上传文件
使用 图片马 + 文件包含 绕过

有两种思路,一种是通过16进制工具将图片文件头格式写入

图片文件头格式:

文件头部格式介绍:https://blog.csdn.net/xiangshangbashaonian/article/details/80156865

PNG文件头: 89 50 4E 47 0D 0A 1A 0A

JPG文件头: FF D8 FF

GIF (gif)文件头:47494638

图片木马

另外一种就是图片和木马的结合,制作图片木马,

请添加图片描述

请添加图片描述

这个时候上传图片木马是可以的,然后利用文件包含漏洞执行图片木马中的php代码,此时我们使用上传的时候的文件名,这时候访问不到。在查找后台的时候,我发现,我们上传的图片木马的文件名已经被更改了。

请添加图片描述

所以我们需要想办法获取到服务器中该图片的名称,右击图片可以下载和获取图片地址,这个时候就可以获得图片名了。

请添加图片描述

我们接着执行,php代码可以执行,此时复制url到antsword

请添加图片描述

请添加图片描述

请添加图片描述

15原理是getimagesize()函数检查是否是图片,图片木马仍旧可以生效。

getimagesize()简介
这个函数功能会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求的

16就有些麻烦了。

首先16使用了 php_exif
这一关对上传图片进行了判断了后缀名、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一句话,上传带有PHP一句话木马的GIF图片

知识补充: exif_imagetype()读取一个图像的第一个字节并检查其后缀名。
返回值与getimage()函数返回的索引2相同,但是速度比getimage快得多。需要开启php_exif模块。

16、使用图片木马时,发现上传的图片木马无法生效,下载上传的图片木马后,进行查看,发现上传的图片木马中php代码已经没了。

gif格式

首先构造图片木马
请添加图片描述

然后上传后访问没有反应,下载图片后在16进制编辑器中打开,果然已经没有了php代码,这个时候对比一下,找到没有被修改的位置,将木马写入(这边只写个弹出PHP 日志,只要能执行php代码,就可以。),
请添加图片描述
请添加图片描述

然后重新上传。

请添加图片描述

这个时候就已经成功了。

jpg格式
需要多次尝试,但总体来说还是以图片木马的形式,还有国外的脚本进行多次尝试构造图片木马并上传。
png格式
和jpg原理基本一致。也是要使用脚本进行构造图片木马。
都是经过渲染,上传后整个文件与上传时的基本上都不一样了,所以没整明白。

17、

首先进行代码审计

在这里插入图片描述
由此我们可以看出,在文件上传后,并不会禁止不正确的文件上传,而是在上传后检查是否是正确格式,如果不是正确格式那么就会将其删除掉。
那么我们就可以使用特点代码,在服务器将其删除之前访问上传的文件,使得该文件内容执行,在该目录上层目录生成木马,从而控制服务器。
代码如下

<?php
fputs(fopen('../shell.php','w'),'<?php phpinfo(); @eval($_POST[xx]);?>');

该代码的作用就是在该文件夹目录的上一层目录写入一个shell.php文件,从而可以控制服务器。
然后我们手动上传该文件,可是服务器响应速度很快,在我们还没上传上去的时候就已经被删除了,我们无法访问。
因此我们使用抓包的方式,暴力破解,多次上传我们的代码,
在这里插入图片描述

暴力破解

burp抓包后发送到intructor中,然后进行无限上传。
在这里插入图片描述
我们可以看到文件夹中,代码不停的被删除和添加,所以一直是处理中
在这里插入图片描述
此时我们再抓个访问的包,然后一边发包,一边访问,在这个工程中,我们很容易发现已经成功了,右边的爆破,长度出现明显变化,那么木马植入成功。
在这里插入图片描述
此时服务器目录下已经生成了一个shell.php文件,那么我们就可以利用这个,使用antsword等工具控制。
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值