Web篇(6.3) 11. 文件上传 ❀ FortiWeb 攻防演练
【简介】File Upload,即文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的。
文件上传
服务器端没有对客户端上传的文件进行严格验证或过滤,用户可以上传一个可执行的脚本文件,并通过此脚本获得了执行服务器端命令的能力。
漏洞危害:
- 针对上传功能的Dos攻击
- 使上传文件在服务器上作为脚本执行
- 诱使用户下载恶意文件
- 越权下载文件
常见绕过攻击包括:
JS检测绕过攻击:JS检测绕过上传漏洞常见于用户选择上传文件的场景,如果上传文件后缀不被允许,则会弹框告知,此时数据包并未到服务器而是在客户端浏览器进行JS检测,此处服务端未做上传文件防御。这时有两种方式绕过客户端JavaScript检测:
1、使用浏览器的插件,删除勘测文件后缀的js代码;
2、抓包修改上传文件后缀名。
文件后缀绕过攻击:文件后缀绕过攻击是服务端代码限制了某些后缀文件不允许上传,但是Apache是允许解析其他文件后缀的,例如phtml等,可以结合解析器的解析顺序来进行绕过,Apache解析顺序是从右到左(如果最右侧的扩展名不能解析,则往左判断,直到遇到可以解析的文件后缀为止)。
文件类型绕过攻击:抓包时可以发现上传php文件时,Content-Type的值为application/octet-stream,而上传jpg文件时类型为image/jpeg,如果服务端是通过Content-Type来判断上传文件的类型,那么就存在被抓包修改绕过的可能。
文件截断绕过攻击:截断类型:PHP%00截断;截断原理:由于00代表结束符,所以会把00后面的所有字符都截断;截断条件:PHP版本小于5.3.4,PHP的magic_quotes_gpc为OFF状态。
竞争条件攻击:一些网站上传文件的逻辑是先允许上传任意文件,然后检查上传的文件是否包含Webshell脚本,如果包含则删除。这里存在的问题是文件上传成功后和删除文件之间存在一个短的时间差(因为要执行检查文件和删除文件的操作),攻击者可以利用这个时间差完成竞争条件的上传漏洞攻击。
安全等级 - Low
将DVWA的安全等级切换到Low。
① 选择【File Upload】,显示上传文件页面,点击【View Source】,查看源代码。
② 从源代码可以看出,把网站根目录和上传的目的目录以及文件名进行拼接,服务器对上传文件的类型、内容没有做任何的检查、过滤,存在明显的文件上传漏洞,生成上传路径后,服务器会检查是否上传成功并返回相应提示信息。
文件上传漏洞的利用是有限制条件的,首先当然是要能够成功上传木马文件,其次上传文件必须能够被执行,最后就是上传文件的路径必须可知。这里三个条件全都满足。
③ 用记事本新建一个文件,输入php版本的一句话木马。
④ 保存文件后,立即被系统查出威胁并删除,这里在系统的病毒和威胁防护页面里还原被删除的文本文件。
⑤ 钩选文件扩展名,可以看到记事本建立的文件扩展名是txt。
⑥ 更改文件名,扩展名改为php。
⑦ 点击【浏览】,选择文件onemm.php,点击【Upload】。
⑧ 木马文件上传成功。
安全等级 - Medium
将安全等级升级为中级。
① 从源代码可以看出,对文件上传的类型、大小做了限制,要求文件类型必须是jpeg或者是png,大小不超过100000b。
② 仍然上传扩展名为php的文件。
③ burpsuite抓包,可以看到文件类型是 application/ocet-stream。
④ 修改文件类型为 image/jpeg,点击【Forward】,就可以跳过文件类型设置而上传文件了。
安全等级 - High
将安全等级升级为高级。
① 从源代码可以看出,代码对上传文件的后缀进行了严格的限制,只允许后缀为jpg、jpeg、png并且大小小于100000字节的文件。
② 找一个图片文件1.jpg,用copy 1.jpg/b+onemm.php/a b.jpg 命令生成图片木马。
③ 上传制作好的图片木马文件。
④ 显示上传成功。
安全等级 - Impossible
将安全等级升级为不可能。
① 从源代码可以看出,除了对上传文件的后缀、类型、大小做了严格的限制外,还对上传的文件进行重命名,彻底杜绝文件上传漏洞。
② 上传文件被重命名。
FortiWeb 防护
FortiWeb可以阻止这一类的攻击。
① 登录ForitWeb VM,选择菜单【策略】-【服务器策略】,选择策略,点击【编辑】。
② 在编辑策略窗口,点击【Web保护规范】右边按钮。
③ 编辑在线保护规范窗口,确认文件安全策略选择了【WebShell-Uploading】,点击最右边按钮。
④ 确认有启用木马检测和病毒扫描。
⑤ 访问192.168.1.128,也就是经过FortiWeb保护的DVWA,安全选择Low,选择上传一个木马文件,看看会发生什么。
⑥ FortiWeb VM阻止了木马文件的上传。图片木马文件b.jpg经过测试,也是一样的被阻拦了。下面我们再看看对病毒文件上传会有什么样的操作。
⑦ 欧洲计算机反病毒研究所开发了一个测试文件,可以用来测试反病毒配置。EICAR测试文件不是病毒。它不会感染计算机,也不会传播或造成任何破坏。这是一个包含一系列特征的非常小的文件。登录www.eicar.org网站。
⑧ 随意下载一个病毒文件。
⑨ 在DVWA上传病毒文件。
⑩ 同样操作被FortiWeb阻止了。
⑾ 消息日志详细的介绍了病毒文件上传被阻止的信息。