文件上传漏洞
文件上传(上传木马拿服务器)
文件上传后缀很重要,很多网站根据后缀来命名
一句话木马<?php eval ($_REQUEST[8])?>
如果说没有防护过一阵的文件上传,只要传一个php就可以拿下服务器。
检测恶意代码:
前端检测(JS) 前端的检测等于没有检测
前端代码的只能在浏览器里执行 浏览器~>信差~>目标
后端检测(后端php)
黑白名单机制。黑名单:名单上的等下不允许 黑名单机制比较危险
白名单:只允许名单上的内容
靶场:
第一关 前端验证。先提交一个jpg然后改成php就可以。用burp抓包就可以,将文件后缀改为php。
第二关 文件类型Content-Type检测,BP抓包截断上传数据包,修改Content-Type为image/jpeg,然后放行数据包,成功绕过
第三关 这一关是黑名单机制,但是过滤并不严谨,它过滤了 $deny_ext = array('.asp','.aspx','.php','.jsp');
但是在php中php3,phtml等都可以被编译成php来执行。所以我们可以上传一个php3类型文件就可以
第四关 这一关需要用到.htaccess文件绕过。 .htaccess文件也被称为分布式文件,提供了针对目录改变配置的方法,在一个特定目录纺放置一个包含一个或多个指令的文件,作用于此目录以及所有子目录。
我们创建一个.htaccess文件 。
上传完之后,再把我们的图片木马上传就可以了。
第五关????
第六关 大小写。我们看到它并没有大小写过滤。所以我们利用大小写绕过
第七关 这一关大小写被禁用掉。Windows系统下,对于文件名中空格会被作为空处理,程序中的检测代码却不能自动删除空格。从而绕过黑名单。
针对这样的情况需要使用Burpsuite阶段HTTP请求之后,修改对应的文件名 添加空格。
第八关 后缀点绕过。Windows系统下,文件后缀名最后一个点会被自动去除。
第九关 windows文件流绕过 Windows系统下,如果上传的文件名中test.php::$DATA会在服务器上生成一个test.php的文件,其中内容和所上传文件内容相同,并被解析。
但是要记住。在访问的时候要去掉::$DATA因为它是不存在的
第十关 这一关是将文件名进行过滤操作后,将文件名拼接在路径后面,所以需要绕过前面的首尾去空以及去点。 11.php. .这样就会被绕过而且会被网站解析。
第十一关 这一关是用str_ireplace函数将符合黑名单中的后缀名进行替换为空。所以可以双写绕过。
第十二关 白名单验证get型0x00截断 substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);他会提取文件后缀和白名单内容进行比较
所以要用到00截断(他说一个漏洞)。需要php的版本号低于5.3.29,且magic_quotes_gpc为关闭状态。他和%00是一样的原理,只不过%00是经过url编码的%00解码之后就是0x截断的那个字符
这一关是用到%00截断因为get会解码。更改上面的就可以
第十三关 post型0x00截取这一关和十二关的区别是,00截断是用在POST中,且是在二进制中进行修改。因为POST不会像GET那样对%00进行自动解码。
a的作用是让我便捷找到它对应的十六进制。然后我们把61改成00就可以,最后放包就行了。
第十四关 图片马绕过。以及从后缀检测变成内容检测。检测是否是一个图片。所以要用到图片马(一句话木马和图片粘合到一起)。制作图片马。将图片和一句话木马拼合到一起生成图片马
上传成功
第十五关 这一关也是图片马。我们可以在图片马之后再包含一个图片或者加入一句话就可以。
第十六关 这一关需要开启php_exif模块。同前两关,能过Pass-15的图片马就能过这关。
第十七关 这里使用容易绕过二次渲染的gif文件。现在制作一个gif图片马,copy就可以了。制作后便上传,发现无法利用。然后将上传的图片重新下载下来,进行对比。可以找到二次渲染后不变的地方,而这个地方就是可以插入一句话的地方。发现文件头部前几行是不变的的地方
第十八关 条件竞争 对php内容操作,利用木马生成一个新的木马。file_put_contents()函数
上传php文件,burp抓包。放到测试器。两个包
第二个包,和这个类似。只不过是访问1000.php抓到的包。然后在upload目录看是否有2.php生成。可以看到1000再不断的跑。等2.php生成就可以了
解析漏洞: