something about Pikachu - Unsafe Fileupload
pikachu
Unsafe Fileupload
概述
在web应用系统中文件上传功能
很常见,比如上传头像,上传附件等。
当后台程序对上传的文件进行的安全判断条件不够严谨时,攻击者可能会上传一些恶意文件,导致造成损失。
在设计文件上传功能时,要对以下方面进行安全考虑。
验证文件类型,后缀名,大小
验证文件上传方式
对文件进行一定复杂程度的重命名
不要暴露文件上传后的路径
client check
是客户端javascript
限制,因此将对应触发语句去除即可。
1 | <!-- 去除onchange函数 --> |
MIME type
更改文件后缀名
是服务端进行
MIME
判定,因此将恶意文件重命名为bad.png
上传,此时MIME
为图片
。 使用burpsuite
截断后将文件名再更改为bad.php
。更改
HTTP Content-Type
直接上传
bad.php
,使用burpsuite
截断后将HTTP
请求的Content-Type
更改为image/png
。
getimagesize
getimagesize()
函数能够获取文件头类型。
添加伪造文件头
在恶意文件中添加对应的文件头信息,即可伪装为对应的文件。
1
2
3
4
5// 伪造image文件头
GIF98
phpinfo();附加恶意内容
上传正常图片文件,使用
burpsuite
截断,在请求内容中追加恶意代码。然后利用文件包含漏洞
将此文件包含,即可执行隐藏的代码。1
2
3
4
5
6
7Content-Disposition: form-data; name="uploadfile"; filename="badimg.png"
Content-Type: image/png
PNG
XXXXX....YYYYYY...ZZZ
<?php phpinfo(); ?>
something about Pikachu - Unsafe Fileupload
https://cyhfvg.github.io/something-about-Pikachu-Unsafe-Fileupload/