携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
前言
最近在学代码执行,然后孙胜利老师的死亡六十集也快看完了,不过昨天晚上学长正好讲了文件上传漏洞,据说这个也比较好学,所以对这个赶紧学习做个总结!
一、文件上传漏洞是什么
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。常见场景是web服务器允许用户上传图片或者普通文本文件保存,而用户绕过上传机制上传恶意代码并执行从而控制服务器
二、靶场训练
第一关:
先上传以一个png图片,然后用burp suite拦截(这里说一个问题,burp suite不能拦截本地网站127.0.0.1的问题,这里把我学习到的博客地址放在这里) blog.csdn.net/weixin_4539… 把jpg改为php,再放包。
成功上传
第二关:
我靠,啥是MIME,网址: zhidao.baidu.com/question/41… 继续burp suite抓包,然后继续放包,
上传成功
第三关:
发现不让上传php文件,大写绕过,如果改成php1,试一下行不行 先试试大写,
发现不行,试一下php1
上传成功
第四关:
直接一看,好家伙!吓我一跳
apache解析漏洞实现黑名单绕过 解析漏洞,在Apache 2.x中存在一个解析漏洞,如果我们将 lyshark.php 修改为 lyshark.php.rar 这样的格式,正常情况下会弹出文件下载提示框,但是由于Apache 2.x存在解析漏洞所以,会默认将其当作PHP脚本文件进行展开并执行。
Apache在解析文件时有一个原则,当碰到不认识的扩展名时,会从后向前解析,直到碰到认识的扩展名为止,如果不认识则会爆露其源代码,此时我们 如果上传 lyshark.php.rar 的话,很明显.rar 他不认识,则会先前递增,会看到.php 默认就会使用.php 解析啦。
第二种方法
重写文件解析规则绕过 上传一个名为.htaccess文件 Apache中当上传到文件全部被解析为.jpg的后缀时。可以尝试一下后缀为.htaccess的文件。
<FilesMatch "4.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
复制代码
代码的含义是将上传的文件后缀名为.jpg格式的文件以 php格式来解析文件成功绕过
第三种方法 将后缀改成php . . (注意 改成php.. 不行哦) 然后forward
第五关:
查看源码,发现比上一关多了一个.htaccess过滤,咱们还用php . . 绕过
第六关:
并且还没有让输入的全变成小写 发现没有pHP绕过,咱们就试一试
第七关:
发现没有删除 . 就还是 php . .
第八关:
发现还是没用禁用 .
第九关:
发现并没有禁用::
DATA 利用 Windows文件流特性绕过 构造8.php::$DATA 会被保存为8.php) 主要是因为下面这一串代码,前几关有,这一关没有!
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
复制代码
也可以继续咱们的 php . . 绕过
第十关:
发现这里还是没有禁用小数点,可以继续用 php .. 也可以利用Apache 构建 10.php.aaa Apache从右往左解析,解析不了aaa,最后得到的结果就还是php
第十一关:
之前都是禁止上传,这一关就变成了从文件名中去除,所以这一关咱么就试试双写绕过 pphphp