网络安全(七)

2019-12-31 Views 网络安全8292字29 min read
featureimg

本章要点:
传输层风险及缓解方法;攻击TCP和UDP的方法及缓解方法;DNS风险及缓解方法;SMTP邮件风险及缓解方法;HTTP风险及缓解方法。

第七章 Internet安全体系结构之二 思维导图

第七章 Internet安全体系结构之二

传输层核心功能

提要

  • 传输层定义网络层和面向应用层之间的接口,从应用层抽象连网功能,包括连接管理、分组组装和服务识别。
  • 为实现这些功能,传输层有两个核心成分,即传输层端口和序列

端口和套接字

  • 传输层使用网络层来建立结点之间的连接,网络层路由提供网络套接字。套接字有主动的和被动的两种。

  • 主动套接字指示建立网络连接。服务器使用被动套接字,等待和监听网络连接。

  • 传输层生成端口,每个端口包含一个唯一的、针对特定高层服务的标识。

  • 端口和特定的高层协议相关联,或动态分配。例如,Web(HTTP)使用TCP协议的端口80的服务

    • 大部分远程网络攻击以特定端口的特定服务为目标。而DoS攻击以很多端口或套接字为目标

排序

  • 传输层从高层接收数据块,并将其分成分组,每个分组赋予一个唯一的序列号标识,用来跟踪分组

  • 因为序列号用于保持传输层的分组传输有序,这构成普遍的攻击因素。

  • 序列拦截

    • 攻击者要观察传输层分组必须识别序列,以插入或拦截连接。假如伪造者具有有效的序列号,就好像经过身份鉴别并被目标系统接受
    • 因此,序列号的产生最好不要依次递增,否则攻击者易于预测下一个分组的序列号
    • 随机初始序列号通常用于传输连接的开始,以阻止攻击者猜测第一个分组。但对已建立的传输连接,通常使用分组头指示当前的和下一个序列号
    • 传输层的核心功能还包括连接管理、分组序列以及保持存活等

传输层风险

提要

  • 传输层的主要风险围绕着序列号和端口
  • 要拦截传输层连接,攻击者必须破坏分组排序
  • 传输层端口直接导致网络服务。目标瞄准端口,攻击者可针对一个专门的高层服务
  • 传输层还能导致侦察攻击,包括端口扫描和信息泄露

传输层拦截

  • 拦截攻击能发生在任何一个网络层次,而传输层攻击需要两个条件,一个是攻击者必须对某种类型的网络层破坏,一个是攻击者必须识别传输序列
  • 为完成一次拦截,攻击者必须伪装网络层通信。伪装的分组必须包含源地址、目的地址、源端口和目的端口
  • 随机序列号能减少传输层拦截的风险,而像UDP这种不用序列号的协议,则更易受攻击

一个端口和多个端口比较

  • 减少结点的端口数,能减少攻击因素。加固的服务器将开放的端口数减少到只有基本服务
  • 一般来说,少量端口打开的系统更安全。但某些服务支持多路端口,或基于服务的需求打开新的端口,这样将带来风险

静态端口赋值和动态端口赋值

  • 远程客户连接到服务器需要两个条件:服务器的网络地址、传输协议及端口
  • 客户启动服务器连接时,通常连接到服务器的众所周知的端口
  • 某些高层协议不使用固定端口号,例如RPC,FTP的数据连接以及Net
    meeting。不用单个端口于全部通信,控制服务使用众所周知端口,数据传输则用动态端口
  • 动态端口会引起不安全的风险,因为大范围的端口必须都可访问网络。例如FTP生成第2个端口以传输数据,动态端口可选用任何未使用的端口号,如果防火墙不打开所有端口,FTP数据连接就会被阻断

端口扫描

  • 端口扫描的任务是企图连接到主机的每个端口
  • 假如端口有回答,则活动服务正在监听端口。假如服务是在众所周知的端口,则增加了服务识别的可能性
  • 扫描方法一般有两种,一种是目标端口扫描,用以测试特定的端口,另一种是端口扫除,用以测试主机上所有可能的端口

信息泄露

  • 一般传输层对传输的数据不进行加密,因此传输层协议本身并不对信息保护
  • 在网上监控分组通信的观察者能观察到传输层协议的内容,导致信息泄露

TCP侦察

提要

  • 绑定到TCP端口的网络服务提供对主机系统的直接访问
  • 假如服务提供对硬驱动的访问,那么任何远程用户都可能访问硬驱动
  • 通过识别系统的类型和服务的类型,攻击者能选择相应的攻击指向

操作系统框架

  • 提要

    • 大部分TCP的实现允许参数定制以优化连接。系统可规定更大的窗口大小,定义更多的重试,或者包括像时间戳这些专门的TCP选项
    • 这些值的默认选择是由操作系统定的。它能识别专门的操作系统版本和补丁的级别
  • 初始窗口大小

    • 不同操作系统使用不同初始窗口大小。利用该信息可识别传输数据的操作系统的类型
    • 当TCP会话继续时,窗口大小会增加,而总的增加值多少也是由OS决定的。利用该信息也能识别OS的类型
  • TCP选项

    • 每个TCP分组包含TCP报头值的一些选项,不同的操作系统支持不同的选项、值和次序。通过观察这些选项,可识别特定的操作系统
    • 某种情况下,TCP选项能唯一足够识别OS和补丁级别。知道系统补丁的级别对攻击者有很大帮助,因为可识别未打系统补丁的漏洞
  • 序列号

    • 所有实现TCP系统用同样的方法增加序列号,但初始序列号是各个操作系统特定的。其中,SYN和SYN-ACK分组交换用于连接的初始序列号
    • 序列号能用来识别操作系统、版本,以及补丁版本的信息
  • 客户端口号

    • 虽然服务器绑定到固定的TCP端口号,但客户可选择动态端口号用于连接。不同的操作系统使用不同的客户端口号范围。观察动态端口号的范围,可帮助识别OS
  • 重试

    • 当TCP分组没有收到回答响应,分组重新发送
    • 重试的次数以及间隔是不同操作系统特定的。可通过SYN重试、SYN-ACK重试以及ACK重试3种不同方法来确定

端口扫描

  • TCP端口扫描用来识别运行的服务。端口扫描企图连接到端口并记录结果。

  • 回答的类型

    • SYN-ACK

      • 若一个服务在端口运行,则SYN-ACK返回给客户
    • RST

      • 若没有服务在运行,则很多系统返回一个RST分组
    • ICMP不可达

      • 若主机不可达,则ICMP分组返回以指示失败。因为不可达,此时端口状态未知
    • 什么也没有

      • 若分组未到达主机,则根本就没有回答。通常意味着主机不可达或不在线

日志

  • 为检测系统扫描和网络攻击,日志是重要的
  • 很多网络服务有连接日志,但在握手完成以前,高层并不支持TCP连接,结果使部分端口扫描(在握手完成以前)常常是没有日志的
  • 网络监控工具,诸如IDS和IPS,一般监控和日志SYN分组、未请求的ACK和RST分组等,以识别网络扫描

TCP拦截

定义

  • 任何干扰TCP连接的攻击

分类

  • 全会话拦截

    • 成功的拦截提供具有直接会话的攻击者到网络服务,而失败的拦截造成DoS或只是简单的忽略
  • ICMP和TCP拦截

    • ICMP用来报告不成功的连接或重新指向网络服务
    • 遇到恶意使用时,ICMP能将TCP连接重新指向不同的端口和不同的主机

TCP Dos

提要

  • TCP十分易于受DoS攻击。任何对端口号或序列的干扰结果都会使连接断开
  • 虽然拦截能造成DoS,但它不是唯一的攻击类型。TCP DoS攻击可来自SYN,RST或ICMP分组

分类

  • SYN攻击

    • 每个TCP实现分配用于管理连接的内存,当收到SYN分组时就分配内存
    • SYN攻击发送大量的SYN分组来消耗可用的内存
    • 缓解SYN攻击风险的方法,包括增加SYN队列以增加允许的连接数等
  • RST和FIN攻击

    • 重置(RST)攻击是发送RST(或FIN)分组,反常地结束已建立的连接
    • 假如攻击者能看到网络通信,那么,就能插入一个RST分组,将断开被害者已建立的连接
  • ICMP攻击

    • 类似于TCP重置攻击,ICMP可用来指定一个断开连接。防火墙能阻断ICMP攻击,而TCP重置攻击因为有效的端口和地址组合,能通过防火墙
  • LAND攻击

    • LAND攻击是发送一个SYN分组到已知端口的开放服务,而回答地址和端口伪装成指回同一个系统,形成一个反馈环路,使系统很快被摧垮
    • 目前的操作系统对LAND攻击已能抵制

缓解对TCP攻击的方法

改变系统框架

  • TCP和网络服务攻击有两类,即盲目攻击和定向攻击。盲目攻击没有假定的攻击目标,通过试探发现漏洞,大部分计算机病毒使用该方法
  • 定向攻击针对特定OS平台和网络服务。通过改变系统框架可缓解攻击者的识别。不同的框架包括SYN超时、重试计数、初始序列值等
  • 一般情况下,特定TCP端口用于特定服务,但可改变端口号以减少攻击的可能性。如,端口8000/TCP用于HTTP服务

阻断攻击指向

  • 防火墙用来限制网络访问,假如办公室网络不提供任何对外网络服务,那么防火墙可阻断任何外部的SYN分组
  • 阻断ICMP通信能消除来自远程ICMP淹没、拦截和重置攻击的风险

识别网络设备

  • 识别网络设备和已知已受攻击的漏洞,可设法预先防止

状态分组检验

  • 很多防火墙支持状态分组检验(SPI)
  • SPI跟踪TCP连接状态以及拒绝和已知状态不匹配的分组。例如,一个RST送到关闭的端口,可把它丢掉,而不是传递给主机
  • SPI能减少拦截攻击、重置攻击、远程系统框架等的影响

入侵检测系统(IDS)

  • IDS对非标准的或非期望的分组的网络进行监控,能很快地识别远程系统框架、TCP端口扫描、拦截企图以及DoS攻击

入侵防御系统(IPS)

  • IPS扩展了IDS功能,从仅仅是日志记录到采取行动
  • 假如识别一个端口扫描,IPS会立刻阻断其余的扫描以限制扫描的有效性

高层协议

  • 可在应用层鉴别通信、检测可能的攻击,缓解TCP攻击风险

UDP

风险

  • 非法的进入源

    • UDP服务器不执行初始握手,任何主机能连接到UDP服务器,且连接是无须进行身份鉴别的
    • 服务器缓冲有限数量的UDP分组。假如接收到更多分组,那么它将被丢弃直到空出缓冲器空间,导致UDP服务被淹没
  • UDP拦截

    • UDP服务器可从任何主机接收分组,而无须进行身份鉴别。这意味着UDP是易于拦截的
    • 攻击者很容易伪装成正确的网络地址和UDP端口,将数据插入到接收者,以实现拦截
  • UDP保持存活攻击

    • UDP没有清楚地指示连接是打开还是关闭,结果大多数防火墙当看到第一个出口连接时,打开端口,在不活动一段时间后才关闭端口
    • 攻击者能利用该弱点来保持UDP端口打开。即使客户不在监听分组时,攻击者能发送UDP分组到防火墙,以保持防火墙端口打开
    • 假如有足够多的端口保持打开,那么没有新的端口能打开。这可能使正常的UDP不能有效地通过防火墙
  • UDP Smurf攻击

    • 攻击者伪造被害者的网络地址作为分组发送者,服务器响应发送一个或更多UDP分组给被害者
    • 虽然少数UDP分组不会严重影响被害者,但每秒几千个分组能摧垮一个网络
  • UDP侦察

    • UDP对系统框架和侦察只提供少量选项。UDP端口扫描依靠ICMP和分组回答

安全套接字层SSL

由于TCP/IP协议本身没有加密、身份鉴别等安全特性,因此要向上层提供安全通信的机制就必须在TCP之上建立一个安全通信层次

传输层网关在两个通信结点之间代为传递TCP连接并进行控制,该层次一般称为传输层安全

最常见的传输层安全技术有SSL,SOCKS和安全RPC等

SSL分为两层,上面是SSL协商层,双方通过协商约定有关加密的算法、进行身份鉴别等;下面是SSL记录层,它把上层的数据经分段、压缩后加密,由传输层传送出去。

SSL采用公钥方式进行身份鉴别,但大量数据传输仍使用对称密钥方式。通过双方协商,SSL可支持多种身份鉴别、加密和检验算法。

传输层安全机制的优缺点

  • 网络层安全机制的主要优点是它的透明性,即安全服务的提供不要求应用做任何改变。这对传输层来说是做不到的。
  • 传输层安全机制的主要缺点是对应用层不透明,应用程序必须修改以使用SSL应用接口
  • 同网络层安全机制相比,传输层安全机制的主要优点是它提供基于进程对进程的(而不是主机对主机的)安全服务和加密传输信道,利用公钥体系进行身份鉴别,安全强度高,支持用户选择的加密算法。

DNS风险及缓解方法

直接风险

  • 无身份鉴别的响应

    • DNS使用一个会话标识来匹配请求和回答,但会话标识不提供身份鉴别
    • 攻击者观察DNS请求,能伪装一个DNS回答。假的回答会有观察到的会话标识。结果是一个未经身份鉴别的响应看起来似乎是已鉴别的
    • 请求者接到回答和接受未经身份鉴别的响应,结果是攻击者能控制主机名的查找,并进一步重指被害者的连接。
  • DNS缓存受损

    • 任何地方有未经身份鉴别的响应针对请求者,就能针对任何类型的DNS服务器缓存,使DNS缓存受损
    • 攻击者观察DNS请求,并生成一个伪造的DNS回答
    • 受损的DNS服务器可对任何数据请求提供假数据
  • ID盲目攻击

    • 未经鉴别的响应和缓存受损都需要攻击者观察到DNS请求和会话标识。但观察一个请求不总是必须的
    • 当主机名查询出现超时,攻击者可选择一个通用的域名,并开始攻击
    • 攻击的方法是生成DNS回答的泛滥,每个回答包含一个不同的会话标识(总有一个会话标识是正确的)
  • 破坏DNS分组

    • DNS协议规定了查询和回答的数据大小。但某些DNS实现没有适当地检查数据边界
    • 分组可声称含有比实际更多的数据,或没有包含足够的数据。其结果是缓冲器溢出和不足

技术风险

  • 基于配置问题

  • DNS域拦截

    • 任何DNS服务器的所有者能把服务器配置任何域的一级源。假如一公司要配置其内部服务器为microsoft.com域的一级源,无法阻止它这样做
    • DNS的层次结构能阻止此类配置作为无效信息在Internet中泛滥。
    • 但假如DNS服务器在服务器链中级别足够高,那么,它就能拦截全部域。带来很大的技术风险
  • DNS服务器拦截

    • DNS服务器能被拦截。被拦截的服务器能配置成提供不同的主机信息或包含一些新的主机名

    • 两种情况

      • 系统被破坏

        • 假如攻击者能访问计算机系统,那么攻击者就能访问运行在计算机上的DNS服务器(进程)
        • 为缓解系统被破坏的风险,关键的DNS服务器应运行在加固的系统
      • IP拦截

        • 大部分DNS服务器运行在IP上的UDP或TCP,而IP拦截或ARP拦截是容易的
        • 假如攻击者能拦截IP或ARP分组,那么攻击者就能假冒DNS服务器
  • 更新持续时间

    • DNS缓存为每个DNS项设置超时值。当主机配置改变时,超时可防止数据失效。假如超时值太大,则不能立即完成改变
  • 动态DNS

    • 动态主机配置协议DHCP普遍用于给本地网上的主机分配网络信息。用户不能用主机名来访问这些主机,只能用网络地址来访问

      • 动态DNS(DDNS)解决DHCP的主机名问题。使用DDNS,DHCP的客户能在本地DNS系统放主机名。虽然DHCP客户每次被分配一个新的网络地址,但DDNS确保主机名总是指向主机的新的网络地址
    • 客户能很容易地配置DDNS主机名,但DDNS允许名字拦截。假如一台主机是离线的或不可用,那么,另一台主机能很容易地拦截该主机名。

社会风险

  • 提要

    • DNS在Internet中扮演了一个关键的角色。破坏和拦截主机名直接导致DoS,中间人攻击以及其他系统攻击
    • DNS服务器除了有直接风险和技术风险外,还有其他一些破坏主机和域的方法。这些风险来自人为因素,归结为DNS社会风险
  • 相似的主机名

    • 攻击者能利用错误输入拦截连接
  • 自动名字实现

    • 很多Web浏览器支持自动名字实现,用户可不输入主机名的顶级(如,.com),而只输入主机名的中间部分
    • 自动名字实现可附加一串后缀,直至找到主机名。通常最先试的后缀是.com。假如Web站点不是以.com结尾,那么攻击者能注册.com名字来有效地拦截这个域。
  • 社会工程

    • 社会工程是描述社会学信念的术语。社会工程不是用计算机来破坏一个系统,而是用伪装和一般技术
    • 域名注册是通过少数域名注册机构。若注册机构被说服该用户是该域名的授权拥有者,则域名信息就可修改
  • 域更新

    • 域名注册机构并非无限期地赋予域,而是有限期的。超期后该域名就被放弃
    • 假如域主没有注意过期,忘了去更新域名。当过期后,任何人可注册相同的域名。这就使攻击者能故意侵占域名,并伪装成该组织

缓解风险的方法

  • 直接威胁缓解

    • 基本的维护和网络分段能限制直接威胁的影响

    • 补丁

      • DNS服务器和主机平台应定期打补丁和维护
    • 内部和外部域分开

      • 大的网络应考虑在内部网络分段间分开设置服务器,以限制单个服务器破坏的影响,且能够平衡DNS负载
    • 限制域的转换

      • 域的转换限制于特定的主机,且由网络地址或硬件地址标识
    • 鉴别的域转换

      • 采用数字签名和鉴别域转换能减少来自域转换拦截和破坏的影响
    • 有限的缓冲问题

      • 缓冲间隔减少至低于DNS回答规定的值,可减少缓冲器受损的损坏窗口
    • 拒绝不匹配的回答

      • 假如缓冲DNS服务器接到多个具有不同值的回答,全部缓冲器应刷新,消除长期缓冲器受损的风险
  • 技术威胁的缓解

    • 加固服务器

      • 可降低来自技术攻击的威胁
    • 防火墙

      • 在DNS服务器前放置硬件防火墙可限制远程攻击的数量
  • 侦察威胁的缓解

    • 限制提供DNS信息

      • 可缓解攻击者侦察的威胁
    • 限制转换域

      • 域的转换仅限于鉴别过的主机
    • 限制请求

      • 限制DNS请求的数量
    • 去除反向查找

      • 若反向查找不是必需的,则去除它
    • 分开内部和外部域

      • DNS服务器应该是分开的,以确保LAN的信息保持在LAN内
    • 去除额外信息

      • 不是直接为外部用户使用的信息应该去除
    • 隐藏版本

      • 不同的DNS版本和不同的利用相关,应修改版本信息以报告假信息或将其去除
  • 社会威胁缓解

    • 对用户进行培训防止相似主机名和名字自动完成

    • 监控相似域

      • 经常搜索域名的变化。当发现有相似主机名的标识,要求将它们关掉
    • 锁住域

      • 使用支持域锁定的域注册者
    • 使用有效联系

      • 在域注册中提供有效联系方式,以允许用户和注册者联系域主
    • 不间断支持

      • 选择不间断支持的域注册者。这样在任何时候可和注册者联系,以解决有关域的问题
    • 自己主持

      • 大的单位应选择成为拥有管理自己域的注册者
  • 优化DNS配置

    • BIND是常用的DNS服务器软件
    • Internet安全联盟提供了很多配置安全BIND的资源,利用好该资源,优化DNS配置,可缓解风险
  • 确定可信的回答

    • 一般DNS服务器不提供可信的标记,DNS客户端无法确定回答是否合法
    • DNS安全扩展(DNSSEC)可提供签名以鉴别信息及对每个回答响应的数字标记

SMTP邮件风险

伪装报头及垃圾邮件

  • 邮件用户代理MUA能指定邮件报头,每个邮件中继附加接收到的报头到邮件的开头。这些报头用来跟踪报文
  • 伪装的邮件报头发生在发送者故意插入假的报头信息
  • 垃圾邮件是伪造电子邮件滥用的例子

中继和拦截

  • SMTP并非总是将电子邮件从发送者直接送到接收者,通常使用邮件中继来路由信息。邮件中继是由DNS中的MX记录来决定的
  • 电子邮件通常是用明文传送的,因此中继的拥有者能阅读邮件、可能拦截或修改邮件内容
  • 为缓解拦截风险,敏感的邮件可进行内容加密。PGP是常用的加密邮件的例子

SMTP和DNS

  • SMTP最大的风险来自于它对DNS的依从
  • DNS用来识别邮件中继,然而DNS易受攻击,结果是电子邮件通过DNS而受损,导致电子邮件路由到敌意的中继或单纯地被阻断

低层协议

  • 如同SMTP受到DNS破坏的影响,SMTP也会受到低层协议,诸如MAC,IP和TCP拦截的影响

E-mail的伦理问题

  • 问题不仅在于技术上的限制,还有由于所有权和分发引起的伦理和法律问题,包括拷贝权和个人隐私等问题
  • E-mail的处理和使用中,没有任何技术因素使接收者不能转发电子邮件给其他人,即使邮件上标志“保密”、“分类”,仍能分发出去。有些组织制定E-mail管理政策和使用规则,但从技术上无法阻止违规行为

HTTP风险

URL漏洞

  • 主机名求解攻击

    • URLs使用户容易记住不同的文本字符串,而无须记住不易记忆的网络地址
    • 假如攻击者能重置主机名求解系统,那么查询能送至另外的服务器,可构成中间人、伪装或DoS攻击
  • 主机伪装

    • 有一些伪装主机名的方法,而无须修改主机名求解系统
    • 例如,在URL中插入一个用户不会注意到的主机名
  • 统一资源标识符(URI)伪装

    • URI用来描述资源和参数
    • 攻击者能用URI编码来伪装主机名和URI信息
  • 剪切和拼接

    • URL对远程资源定义一个逻辑通路。该通路易被修改,其中最通用的修改方法是剪切和拼接

    • 剪切只需简单地移掉URL一部分成分。虽然安全服务器对该操作将返回或给出404差错(Not Found)。但对很多服务器仍能被浏览,以致一些私人的Web页面能被看到

    • 和剪切相反,拼接是附加一些信息至URL。例如大部分Apache
      Web服务器有images和icons目录。在原来的URL拼接上icons后,即使不能打开其目录,但返回码的类型能确定该icons目录是否存在

    • 加固HTTP服务器的方法

      • 假如不需要的话,一些默认的目录应去掉
      • 开放的目录应关掉
      • 访问允许差错和文件没有找到差错的默认回答应相同。攻击者应不能识别服务器上的私人资源
      • 私人的和临时的文件应不放在公共服务器上
      • 内容不能看的目录和文件应从公共服务器去除
  • 滥用查询

    • 什么地方有剪切和拼接URL的通路,那么,存储在URL的选项就能被修改。大部分包括选项的URL是CGI应用
    • CGI是通用网关接口,用来和HTTP服务器的应用来接口,它允许服务器传递动态内容,而不仅是静态Web页面。URL选项经常用来控制CGI功能
    • 大部分URL选项的格式是field=value。改变这些参数值能导致改变应用功能,可导致侦察和开发漏洞。例如,攻击者能识别参数值的范围和不同的响应码,从而更加详细地了解系统
    • 某些情况,参数值可以是其他URL或文件通路,从而获得HTTP服务器通常使用权的信息访问。当参数用来存储状态信息,攻击能修改参数值,就有可能访问用于其他用户的信息
    • 为了缓解修改选项的风险,CGI应该验证所有的参数
  • SQL注入

    • SQL插入攻击是通过修改SQL命令,使提交到URL的参数和选项直接送到数据库查询

    • 通过使用未检验的输入,攻击者能修改查询请求

    • 例子

      • URL可使用http://server/cgi-bin/account?login=bob来访问,这里可设置$LOGIN的值为bob
      • 一个敌意的用户可提交一个URL如下:
        /cgi-bin/account login=‘bob’;INSERT+INTO+accounts+(‘evil’,’pass’,’Eiil User’);commit;1=‘x’
      • 在URL中的单引号允许完成SQL查询,附加的值成为使用的SQL语句。这个例子插入了一个新的账户,带有login evil和password pass
      • 使用这个攻击形式,攻击者能选择变更的数据,插入新的数据,删除存在的数据,生成新的表或删除已有的表
    • 任何SQL服务器可用的功能都能被攻击者访问

    • 缓解方法

      • 所有由HTTP客户送来的参数必须加单引号,因此它们不会扩展成可执行的语句
      • 所有输入的参数在使用前必须验证
      • 使用查找表,而不是直接使用客户提供的表信息。例如,不用table=account,客户能定义table=1,在CGI中的查找表将1转换到account,以阻止攻击者定义任意的数据库表
      • 数据库的差错信息不应传给最终用户,应传给CGI应用程序,并将其转换成有用的用户级信息。如果将数据库差错信息直接提供给用户,只能帮助攻击者,导致进一步的SQL插入攻击
  • 跨站脚本

    • 跨站脚本XSS(Cross-Site Scripting)攻击发生在当用户把数据提交给服务器后,又被送到另一用户
    • 为缓解XSS攻击的风险,用户张贴的信息应该是受审查的,HTML和活动成分应审计和过滤。很多基于Web的论坛不允许包括HTML内容的传送,或严格地限制HTML成分

常见的HTTP风险

  • 无身份鉴别的客户

    • HTTP并没有提供很多方法为服务器对HTTP客户端的身份进行鉴别
    • 一些基本的鉴别方法广泛被使用,但用明文传输数据,传输的凭证并不提供保密。易受攻击
  • 无身份鉴别的服务器

    • 如同客户端无身份鉴别,服务器也常常无身份鉴别
    • 客户端依据主机名或网络地址作为对服务器的识别。风险大。
  • 客户端隐私

    • 通常HTTP运行在一个独立的环境,每个HTTP请求是独立的
    • 但是Cookies和身份鉴别系统可跟踪用户,同时HTTP报头提供交叉服务器跟踪。可能暴露客户端隐私
  • 信息泄露

    • 大部分HTTP客户端和服务器泄露大量信息。HTTP请求报头通常泄露Web浏览器的类型,包括版本和操作系统
    • HTTP回答报头常常包含服务器类型、版本以及支持的插件(plug-in)
  • 服务器定位轮廓

    • 可利用HTTP泄露的信息来定位服务器的地理位置,这些泄露的信息包括HTTP的时区和HTML的本地语言,都可用来确定服务器所在的国家或地区
    • 有利于攻击者确定攻击时间,以避开服务器管理者监控的时间
    • 为缓解风险,要尽量减少时间、地理位置和语言信息的泄露。例如,高敏感系统应不泄露时区和本地语言信息,或配置成变换的时区和默认的语言设置
  • 访问操作系统

    • 通过访问文件或应用程序(经CGI程序),HTTP服务器提供直接访问来处理HTTP命令
    • 通过修改URL通路和选项,针对操作系统的漏洞可被远程访问
  • 低层协议

    • HTTP风险也来自低层协议。DNS攻击、TCP拦截和更低层的攻击也能阻挡HTTP、拦截信息或拦截连接
  • 不安全的应用程序

    • 虽然隐私问题、XSS、开放目录以及信息泄露能导致风险,但不安全的CGI应用程序形成最大风险
    • 通过专门的编程、加固Web服务器可缓解此类风险
    • 此外,开放Web应用安全项目OWASP提供了详细的列表对Web服务器进行安全预防,包括身份鉴别、授权、会话以及隐私管理
EOF