前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >看图说话:文件上传(File Upload)漏洞示例

看图说话:文件上传(File Upload)漏洞示例

作者头像
张树臣
发布2018-12-13 16:34:00
1.2K0
发布2018-12-13 16:34:00
举报

作为测试人员,我们常常听到“安全测试”这个词,但鲜有人真正做过安全测试。从我们的职责“保障质量”角度来说,说是一种“失职”也不为过。那么安全测试是什么,究竟怎么进行安全测试?希望本文能起到抛砖引玉的作用。

文件上传漏洞是什么?

一个未经严格验证的系统中会存在各种各样的漏洞,同理,也对应有各种各样的漏洞监测手段。今天我们说一说最常见的一种:文件上传漏洞的检测。

在今天的web应用程序中,支持文件的上传是一种常见的要求,因为这有助于提升业务效率。但随之也带来很多风险。如果文件上传的接口存在漏洞,那么攻击者就可以借助这个漏洞上传一个可执行的文件到服务器并执行,然后获取一个特定的权限,或进行一项危及服务器的行为。

这里上传的文件可以是木马、病毒、恶意脚本或者WebShell等。

为什么会产生文件上传漏洞?

File Upload(文件上传)漏洞,是由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件。打个比方来说,如果使用 windows 服务器并且以 asp 作为服务器端的动态网站环境,那么网站的上传功能就不能允许用户上传 asp 类型的文件,否则用户上传一个 webshell,服务器上的文件就可以被他任意更改了。因此文件上传漏洞带来的危害常常是毁灭性的,Apache、Tomcat、Nginx等都曝出过文件上传漏洞。

示例

1、准备开源工具:DVWA

2、准备PHP脚本文件FI_GET_INI.php,内含一行脚本<?php echo phpinfo(); ?>;

3、准备jpeg文件,Desert.jpeg原为windows自带图片,执行CMD命令copy Desert.jpeg+FI_GET_INI.php Desert.jpeg,将<?php echo phpinfo(), ?>追加在图片Desert.jpeg最后;

4、以下为实际场景实验,打开靶机页面:

5、上传FI_GET_INI.php,成功,说明系统没有对文件类型进行检查,接受PHP脚本文件上传:

6、上传Desert.jpeg,成功,使用文本编辑器打开服务器接收上传文件目录中Desert.jpeg,发现<?php echo phpinfo() ?>在图片文件中,说明系统没有检查文件内容,接受含有恶意脚本文件上传:

7、第5步、第6步上传的文件,配合文件包含漏洞(File Inclusion),可以轻易在服务器上执行(可参考本文作者在简书上发表的《看图说话:文件包含(File Inclusion)漏洞示例》);

8、文件上传(File Upload)漏洞的主要防范措施:

(1)限制上传文件的类型(针对第5步中上传的PHP文件)、

(2)限制上传文件的大小、

(3)隐藏文件路径(上面截图中可以轻易获取上传文件在服务器端保存的位置,为文件包含攻击提供便利)、

(4)检查上传文件中是否含有恶意信息(如检查图片文件是否正常编码开头结尾,避免第6步中上传的图片文件含有恶意脚本)。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试经验与教训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
手游安全测试
手游安全测试(Security Radar,SR)为企业提供私密的安全测试服务,通过主动挖掘游戏业务安全漏洞(如钻石盗刷、服务器宕机、无敌秒杀等40多种漏洞),提前暴露游戏潜在安全风险,提供解决方案及时修复,最大程度降低事后外挂危害与外挂打击成本。该服务为腾讯游戏开放的手游安全漏洞挖掘技术,杜绝游戏外挂损失。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档