检测常见ASP.NET配置安全漏洞
时间:2022-04-23
本文章向大家介绍检测常见ASP.NET配置安全漏洞,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
看到一篇国外MVP Troy Hunt的文章: 67% of ASP.NET websites have serious configuration related security vulnerabilities,大意是依据他搜集到的统计数字,约67%的ASP.NET网站因配置不当,存在安全风险。
Troy Hunt文章的分析数据来自他所开发的一个简易网站扫瞄服务--ASafaWeb, Automated Security Analyser for ASP.NET Websites。使用者只要提供Internet上公开ASP.NET网站的URL,ASafaWeb会发出几个Request,藉此检查网站是否存在一些常见的安全漏洞。
由今年1至3月扫描过的网站记录,排除掉ASafaWeb测试网站及非ASP.NET网站后共有7,184份检测结果,Hunt做出简单的统计。虽然我觉得这份结果由于是使用者主动提供网站进行检测,甚至无法排除用户会刻意制造问题情境考验ASafaWeb的检查效果,因此数据高低未必能精确反应实际情况,但还是很有参考价值,值得我们关心一下ASP.NET有哪些常见的配置漏洞,确定自己都了解并检查手边网站有无类似状况,绝对是件好事。
以下是Hunt列出的常见ASP.NET配置安全漏洞:
- 未隐藏错误讯息
开发人员常会将
<customErrors mode="Off" />
方便排错,但正式上线时却忘了移除,导致一旦程序出错,相关程序代码细节甚至程序片段就赤裸裸地展示出来。黑客可能由其中找到相关的文件位置、数据库信息、组件版本... 等信息,提供入侵的指引。 - 关闭Request Validation 依Hunt的统计,近30%的网站豪迈地关闭了全站的Request验证。若真有需要,针对页面关闭就好,至少伤害面变小,但如果心有余力,避开此限制保持后门紧闭还是上策。
- 未更新Windows/IIS 去年底被揭露的HTTP POST Hash DoS漏洞,攻击者用简单的Request就能让网站忙到死去活来,终至服务瘫痪。微软已在2月发布补定,但是似乎还有50%的网站未完成更新。
- ELMAH存取未设限 关于ELMAH存取设定的风险之前也有文章 《大叔手记(18):利用Elmah和Google体验一把入侵的快感》提过,稍有不慎,程序里的秘密就会大放送,十分危险,甚至黑客还可能藉此伪造ASP.NET Session冒充身份,挺恐怖的。
- 未关闭Trace 虽然比例不高,但通过trace.axd黑客还是能搜集到很多重要情报,上线到正式环境时记得关闭。
- Python 5种连接字符串的方法
- Python 装饰器(Decorator)
- linux学习第三十七篇:安装PHP5,安装PHP7
- linux学习第三十八篇: Apache和PHP结合,Apache默认虚拟主机
- Python lambda表达式
- Python的闭包(Closure)与惰性计算(Lazy Evaluation)
- linux学习第三十九篇:Apache用户认证,域名跳转,Apache访问日志
- Python sorted()函数
- Python filter()函数
- Python reduce()函数
- Python map()函数
- Python iterator迭代器
- How To Implement The Decision Tree Algorithm From Scratch In Python (从零开始在Python中实现决策树算法)
- 『教程』微信小程序webview的使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Laravel 之url参数,获取路由参数的例子
- PHP call_user_func和call_user_func_array函数的简单理解与应用分析
- PHP常用函数之获取汉字首字母功能示例
- 浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
- tp5 实现列表数据根据状态排序
- mac pecl 安装php7.1扩展教程
- tp5.1 实现setInc字段自动加1
- Laravel 前端资源配置教程
- laravel框架语言包拓展实现方法分析
- PHP使用JpGraph绘制折线图操作示例【附源码下载】
- Laravel Eloquent分表方法并使用模型关联的实现
- 关于laravel模板中生成URL的几种模式总结
- Laravel基础-关于引入公共文件的两种方式
- Laravel框架Blade模板简介及模板继承用法分析
- 基于Laravel 多个中间件的执行顺序详解