实验室:通过混淆文件扩展名上传 Web shell
2022/3/21 7:32:39
本文主要是介绍实验室:通过混淆文件扩展名上传 Web shell,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言:
即使是最详尽的黑名单也可能被经典的混淆技术绕过。假设验证代码区分大小写并且无法识别它exploit.pHp实际上是一个.php文件。如果随后将文件扩展名映射到 MIME 类型的代码不区分大小写,则这种差异允许您将恶意 PHP 文件偷偷通过验证,最终可能由服务器执行。
还可以使用以下技术获得类似的结果:
- 提供多个扩展。根据用于解析文件名的算法,以下文件可能被解释为 PHP 文件或 JPG 图像:exploit.php.jpg
- 添加尾随字符。一些组件会去除或忽略尾随空格、点等:exploit.php.
- 尝试对点、正斜杠和反斜杠使用 URL 编码(或双 URL编码)。如果在验证文件扩展名时该值没有被解码,但后来在服务器端被解码,这也可以让您上传否则会被阻止的恶意文件:exploit%2Ephp
- 在文件扩展名前添加分号或 URL 编码的空字节字符。如果验证是用 PHP 或 Java 等高级语言编写的,但服务器使用 C/C++中的低级函数处理文件,这可能会导致文件名结尾出现差异
- 尝试使用多字节 unicode 字符,在 unicode 转换或规范化后可能会转换为空字节和点。xC0 x2E如果文件名被解析为UTF-8 字符串,则类似xC4 xAE或的序列xC0 xAE可能会被转换为x2E,但随后会在用于路径之前转换为 ASCII 字符。
第一步:登录网站,上传文件,该测试网站只允许上传图片类型的文件
第二步:打开Burp的代理历史记录中,找到POST /my-account/avatar用于提交文件上传的请求。将此发送到 Burp 的“重发器”。
第三步:我们修改filename参数的值,使用混淆文件扩展名绕过检测。
Content-Disposition: form-data; name="avatar"; filename="e.php%00.jpg"
第四步:发送请求,提示文件上传成功,接下来在代理历史记录中找到GET /files/avatars/文件名 请求,就可以查看返回的结果了。
这里之所以会返回“400”,是因为服务器端不存在e.php%00.jpg这个文件,经过编译是以e.php的形式存储在服务器,将它发送到“重发器”修改文件名,重发就可以查看返回的结果了。
提交密码,实验完成!
这篇关于实验室:通过混淆文件扩展名上传 Web shell的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南