网安入门11-文件上传(前后端绕过,变形马图片马)
Upload-Labs
Upload-Labs是一个使用PHP语言编写、专注于文件上传漏洞的闯关式网络安全靶场。练习该靶场可以有效地了解并掌握文件上传漏洞的原理、利用方法和修复方案。
思考:他只让我传一个.jpg的图片,我想传一个.php的木马,两者什么区别
- 文件类型不一样
- 文件大小不一样
- 内容不一样,PHP 文件可能包含脚本起始标记、动态执行等高风险特征
前端校验
Pass-01
通过F12查看源代码定位发现有一个checkFile()函数,删掉即可
后端(服务端)校验-文件类型绕过
Pass-02
这一关我们故技重施发现不行了,那么就不只是前端校验了,后端也有校验
我们打开burp抓包
我们注意到这里面有个HTTP头叫做Content-Type,这是我上传php的
我们再上传一个jpg,看看Content-Type是什么样
这时候就变成了image-jpeg(不用在意这些乱码)
我们思路就来了,上传一个php,burp抓包改Content-Type,改成image/jpeg就ok啦
不改Content-Type头,回显“文件类型不正确,请重新上传”
改了之后,就回显了上传成功之后的相对路径
相对路径直接复制到蚁剑,连接之后就可以成功啦
Pass-02的后端验证仅仅使用了MIME类型进行验证,这样是不安全的。我们仍然可以使用BurpSuite伪造MIME类型绕过验证。将Content-type改为image/png即可。
关于变形木马示例
安全说明:原笔记中的可执行 WebShell 示例已移除,避免被误用或触发本地安全软件。文件上传验证应同时检查扩展名、MIME、文件签名和实际内容,并将上传目录设置为不可执行。相关实验只能在本人拥有或已获得明确授权的靶场环境中进行。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yuhan Zheng!





