前言
文件上传漏洞产生的主要原因:应用程序中存在上传功能,但是对上传的文件没有经过严格的合法性检验或者检测函数存在缺陷,导致攻击者可以上传木马文件到服务器
一.客户端 1)前端JS过滤绕过1.禁用JS 2.抓包改包
例:(源于网络信息安全攻防平台)
查看源码知道有JS验证
可知绕过前端JS验证才可得到flag,可将事先准备好的一句话木马的文件后缀改成jpg,随后用bp抓包
将JPG改回php后缀,发送包,得到flag
3.修改前端JS验证代码上传木马
还没彻底搞懂,搞懂再说
二.服务端校验(过几天再补充) 1)检查后缀①黑名单
明确禁止哪种文件不允许上传,禁止文件的类型有限所以会造成漏洞
靶场:upload-labs (基本上是靶场里面的漏洞 靶场毕竟是死靶 仅供学习玩玩)
①上传特殊可解析后缀:php3、php4、php5、pht、phptml、phps
实操参考 墨者学院第一题:传送门
②后缀大小写绕过:Php PhP
③点绕过
④空格绕过
⑤::$DATA绕过
⑥双后缀绕过
⑦上传.htaccess(还没实操,实操后补充)
.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法
即在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。
管理员可以通过Apache的AllowOverride指令来设置。可以通过.htaccess重写文件的解析规则进行绕过
例:
sethandler application/x-httpd-php如果文件名中有“cimer”则会将其解析为x-httpd-php(函数不同效果可能不一样)
②白名单
明确允许上传的文件类型
常见:①MIME绕过(content-type字段校验)
②%00截断
③0X00截断
2)检查内容①检查文件头
实操参考墨者学院第三题:传送门
②一些检测函数的绕过
getimagesize() exif_imagetype()等函数都是检测上传的文件是否是图片。
可上传图片马配合文件包含漏洞进行绕过。
③二次渲染
感觉我自己写的话会篇幅过长,所以打算(和条件竞争上传)另开篇幅:传送门
3)代码逻辑 条件竞争上传