一、IIS安全分析与增强
1.1 IIS 概述
IIS (Internet Information Services) :是Microsoft 公司的Web服务软件的简称,主要提供Web服务
IIS 由若干个组件构成,每个组件负责相应的功能,协同处理HTTP请求过程
![信息安全-网站安全需求分析与安全保护工程(二)_第1张图片](http://img.e-com-net.com/image/info8/8d7e9cd2d1d04aef9a49cf345923a2a9.jpg)
IIS处理HTTP请求的步骤如下:
- HTTP.sys接收到客户的HTTP请求
- HTTP.sys联系WAS (Windows Process Activation Service),从配置库中获取信息
- WAS从配置库applicationHost.config中请求配置信息
- WWW Service接收配置信息,例如应用池和站点配置
- WWW Service使用这些配置信息设置HTTP.sys
- WAS针对请求,为应用池启动工作进程
- 工作进程处理请求和返回HTTP.sys的响应
- 客户接收到响应
1.2 IIS 安全分析
IIS经历了许多安全网络攻击,归纳起来,IIS 的典型安全威胁如下:
- 非授权访问:攻击者通过IIS的配置失误或系统漏洞,如弱口令,非法访问IIS的资源,甚至获取系统控制权
- 网络蠕虫:攻击者利用IIs服务程序缓冲区溢出漏洞,构造网络蠕虫攻击。例如,“红色代码”网络蠕虫
- 网页篡改:攻击者利用IIS网站的漏洞,恶意修改IIS网站的页面信息
- 拒绝服务:攻击者通过某些手段使IIS服务器拒绝对HTTP应答,引起IIS对系统资源需求的剧增,最终造成系统变慢,甚至完全瘫瘓。例如,分布式拒绝服务攻击(DDoS)
- IIS软件漏洞:IIS 的CVE漏洞涉及拒绝服务、代码执行、溢出、特权提升、安全旁路、XSS、内存破坏、信息泄露等
1.3 IIS 安全机制
IIS的安全机制主要包括IIS认证机制、IIS访问控制、IIS日志审计
1. IIS认证机制
IIS支持的认证方式如下
- 匿名认证(Anonymous Authentication):当其他认证措施都缺失的时候,实施匿名认证
- 基本验证( Basic Authentication):提供基本认证服务
- 证书认证(Certificate Mapping Authentication):实施基于活动目录(Active Directory)的证书认证
- 数字签名认证(Digest Authentication):实施数字签名认证
- IIS证书认证( IIS Certificate Mapping Authentication):实施按照IIS配置开展的证书认证
- Windows 认证(Windows Authentication):集成(NTLM)身份验证
2. IIS访问控制
IIS访问控制措施:有请求过滤(Request Filtering) 、URL授权控制(URL Authorization)、IP 地址限
制(IP Restriction)、文件授权等
- 通过URL扫描可以设置许可的文件以及限制的恶意字符串
- 基于IP地址的访问控制是IIS提供的一种根据客户机的IP地址信息进行网站访问授权的机制
- IIS集成了多种访问控制措施来保护网站资源,各种访问控制机制协同保证站点安全
当站点接到来自用户浏览器的访问请求时,IIS的访问控制流程分为以下步骤:
- 用户浏览器所在计算机的IP地址是否限制?如果来自受限IP,访问将被拒绝;否则进入下一步验证
- 用户身份验证是否通过?对于非匿名访问的站点,要对用户进行账号验证,如果使用非法账号,访问将被拒绝;否则进入下一步验证
- 在IIS中指定的Web权限是否允许用户访问?如果用户试图进行未授权的访问,访问将被拒绝;否则进入下一步验证
- 用户正在进行的操作请求是否符合相应Web文件或文件夹的NTFS许可权限?如果不符合,访问将被拒绝;如果符合,则允许访问
- 用户通过上述访问控制措施就可以访问其请求的资源
IIS 访问控制流程图
![信息安全-网站安全需求分析与安全保护工程(二)_第2张图片](http://img.e-com-net.com/image/info8/5f7644cafb8d4c71932e91d11da1c3ad.jpg)
3. IIS日志审计
IIS设置的日志审计机制,能够记录Web访问情况。此外,与IIS相关的日志审计还有操作系统、数据库、应用服务
1.4 IIS 安全增强
IIS的安全增强措施主要如下
- 及时安装IIS 补丁:IIS的安全漏洞威胁到IIS的网站服务,网站维护人员要及时获取IIS相关漏洞信息
- 启用动态IP限制(Dynamic IP Restrictions):用于减缓拒绝服务攻击及暴力口令猜测攻击
- 启用URLScan:IIS启用URLScan限制特定的HTTP请求,可以防止有危害的HTTP请求危及网站的应用
- 启用IIS Web应用防火墙(Web Application Firewall):ThreatSentry 4是IIS的Web应用防火墙,可以识别和阻挡SQL注入、DoS、CSRF/XSRF、XSS等Web应用威胁,同时,它还提供基于行为的入侵防护(Behavior-based Intrusion Prevention)以识别零日攻击与目标定向攻击
- 启用SSL服务:IIS的网站信息传递在通常情形下是明文传递的,敏感网站数据在网上传输的时候容易泄露。启用IIS SSL服务后,可以保障IIS Web网络通信安全
二、Web应用漏洞分析与防护
2.1 Web 应用安全概述
Web应用安全是网站安全的重要组成部分。目前,由于Web应用编程及程序语言的安全问题,Web应用系统存在多种安全隐患
常见的Web安全漏洞有两个方面
- 一是技术安全漏洞:其漏洞来源是因为技术处理不当而产生的安全隐患,例如SQL注入漏洞、跨站脚本(XSS)、恶意文件执行、非安全对象引用等
- 二是业务逻辑安全漏洞:其漏洞来源于业务工作流程及处理上因安全考虑不周或处理不当而产生的安全隐患,例如
- 用户找回密码缺陷,攻击者可重置任意用户密码
- 短信炸弹漏洞,攻击者可无限制地利用接口发送短信,恶意消耗企业短信资费,骚扰用户
- 业务登录凭证验证被绕过,进行业务敏感操作
- 业务数据未安全验证证实,直接进行电子交易和处理等
2.2 OWASP Top 10
OWASP Top 10是国际开放Web应用安全项目组(Open Web Application Security Project,OWASP)推出的前10个Web应用漏洞排名
下面分别介绍2017年版本的OWASP Top 10的漏洞情况
1. A1-注入漏洞(Injection)
将不受信任的数据作为命令或查询的一部分发送到解析器时,导致产生注入漏洞,如SQL注入漏洞、NoSQL注入漏洞、OS注入漏洞和LDAP注入漏洞
攻击者构造恶意数据输入诱使解析器在没有适当授权的情况下执行非预期命令或访问数据
2. A2-遭受破坏的认证(Broken Authentication)
Web应用程序存在问题:不限制身份验证尝试、Web会话令牌泄露、Web应用会话超时设置不正确、Web应用口令复杂性不高和允许使用历史口令等,从而导致Web应用认证机制受到破坏
攻击者能够破译密码、密钥或会话令牌,或者利用其他开发缺陷来暂时性或永久性地冒充其他用户的身份
3. A3-敏感数据暴露漏洞(Sensitive Data Exposure)
- 许多Web应用程序和API都无法正确保护敏感数据,例如,财务数据、医疗数据和PII数据
- 攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为
未加密的敏感数据容易受到破坏,因此,我们需要对敏感数据加密。这些数据包括传输过程中的数据、存储的数据及浏览器的交互数据
4. A4-XML外部实体引用漏洞(XML External Entities,XXE)
- 许多较早的或配置错误的XML处理器评估了XML文件中的外部实体引用
- 攻击者可以利用外部实体窃取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击
5. A5-受损害的访问控制漏洞(Broken Access Control)
- 未对通过身份验证的用户实施恰当的访问控制,导致访问控制失效
- 攻击者可以利用这些漏洞访问未经授权的功能或数据。例如,访问其他用户的账户、查看敏感文件、修改其他用户的数据、更改访问权限等
6. A6-安全配置错误(Security Misconfiguration)
包括不安全的默认配置、不完整的临时配置、开源云存储、错误的HTTP标头配置以及包含敏感信息的详细错误信息。例如,目录列表在服务器端未被禁用,导致攻击者能列出目录列表
7. A7-跨站脚本漏洞(Cross-Site Scripting,XSS)
当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建HTML或JavaScript的浏览器API更新现有的网页时,就会出现XSS缺陷
XSS让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点
8. A8-非安全反序列化漏洞(Insecure Deserialization)
- 非安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行
- 攻击者也可以利用它们来执行攻击,包括重播攻击、注入攻击和特权升级攻击
9. A9-使用含有已知漏洞的组件(Using Components with Known Vulnerabilities)
组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。Web应用程序中含有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管
同时,使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御,造成各种攻击并产生严重影响
10. A10-非充分的日志记录和监控(Insufficient Logging and Monitoring)
不充分的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统,保持攻击活动连续性或转向更多系统,以及篡改、提取或销毁数据
2.3 Web应用漏洞防护
1.SQL注入漏洞分析与防护
SQL 注入攻击(SQL Injection Attack):主要指利用连接后台数据库中的 Web 应用程序漏洞,插入恶意 SQL 语句,以实现对数据库的攻击
SQL注入攻击的防范方法如下
(1)对应用程序输入进行安全过滤
对网站应用程序的输入变量进行安全过滤与参数验证,禁止一切非预期的参数传递到后台数据库服务器,安全过滤方法有两种:
- 建立程序输入黑名单:拒绝已知的恶意输入,如insert、update、delete、or、drop等
- 建立程序输入白名单:只接收已知的正常输入,如在一些表单中允许数字和大、小写字母等
(2)设置应用程序最小化权限
SQL注入攻击用Web应用程序权限对数据库进行操作,如果最小化设置数据库和Web应用程序的执行权限,就可以阻止非法SQL执行,减少攻击的破坏影响
同时,对于Web应用程序与数据库的连接,建立独立的账号,使用最小权限执行数据库操作,避免应用程序以DBA身份与数据库连接,以免给攻击者可乘之机
(3)屏蔽应用程序错误提示信息
SQL注入攻击是一种尝试攻击技术,攻击者会利用SQL执行尝试反馈信息来推断数据库的结构以及有价值的信息
在默认情况下,数据库查询和页面执行中出错的时候,用户浏览器上将会出现错误信息,这些信息包括了ODBC类型、数据库引擎、数据库名称、表名称、变量、错误类型等诸多内容,因此,针对这种情况,应用程序应屏蔽掉错误信息显示到浏览器上,从而可以避免入侵者获取数据库内部信息
(4)对开源Web应用程序做安全适应性改造
利用开源网站应用程序进行安全增强,避免攻击者无须猜测就可以知道网站后台数据库的类型以及各种表结构,进而较容易地进行SQL注入攻击
2.文件上传漏洞分析与防护
文件上传漏洞:是指由于Web应用程序代码未对用户提交的文件进行严格的分析和检查,攻击者可以执行上传文件,从而获取网站控制权限,如建立Web Shell
针对文件上传漏洞的防护措施如下
- 将上传目录设置为不可执行,避免上传文件远程触发执行
- 检查上传文件的安全性,阻断恶意文件上传
3.跨站脚本攻击
跨站脚本攻击(Cross-Site Scripting Attacks)利用网站中的漏洞,在URL注入-些恶意的脚本,欺骗用户
典型的攻击方式有以下几种模式:
(1)HTML内容替换,如下所示:
http://mybank.com/ebanking?URL=http://evilsite.com/phishing/fakepage.htm
(2)嵌入脚本内容,如下:
http://mybank.com/ebanking?page=l&client=