资产信息 |
https://域名/后台Server/api/File/MultipleFileUpload |
技术漏洞 |
任意文件上传 |
风险等级 |
高 |
漏洞描述 |
该应用程序导致用户可以直接上传aspx语言的webshell,获取服务器权限,进行命令执行。 |
危害分析 |
没有限制到asp,jsp,php的代码执行文件的上传,导致用户可以直接上传asp语言的webshell,获取服务器权限,进行命令执行。 |
上传未做任何限制,导致各类文件都可以上传。
本网站是一个.netFrame环境,选择一个aspx文件
aspx网页内容为WebShell,网上搜的一段
【Aspxspy中提取执行cmd命令的代码】
上传成功,请求返回找到上传目录的相对路径;
直接输入路径地址
运行可以执行cmd命令,可以完成各类cmd dos命令,例如要获取服务器的网络配置信息 ipconfig命令,运行结果如下
1、对上传文件类型进行验证,除在前端验证外在后端依然要做验证,后端可以进行扩展名检测,重命名文件,MIME类型检测以及限制上传文件的大小等限制来防御,或是将上传的文件其他文件存储服务器中。
2、严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关上传文件目录的执行权限,防止木马执行。
3、对上传文件格式进行严格校验,防止上传恶意脚本文件;
4、严格限制上传的文件路径。
5、文件扩展名服务端白名单校验。
6、文件内容服务端校验。
7、上传文件重命名。
8、隐藏上传文件路径。
IIS设置步骤如下
测试项目上传目录固定为Upload,
选中 目录》 处理程序映射 》编辑功能权限
去掉脚本(S)以及执行(E)的勾选》确定。
注意:设置完成会在目录下生成一个web.config文件,注意不要删除!
设置后就完全限制了上传文件的执行权限,该设置是最彻底的解决方法。
本次修改,临时采用黑名单限制asp、php、jsp、bat、htm类的文件,包含该类的文件请求直接返回403。
注意:
针对只允许一种类型的文件上传,比如本文中的图片上传,建议使用白名单的方式进行过滤,不建议使用黑名单。
由于上传文件格式的不可预测性以及黑名单限制的扩展名很难覆盖全面等因素,导致了可能会有漏网之鱼。
另外结合URL的特性,可以通过比如“test123.php%00.jpg”的方式来截断文件名,从而绕过黑名单的限制。
综上,建议使用白名单的方式来做减法,不在白名单中的文件类型,统一认为是非法文件,一律删除。