[ 笔记 ] 计算机网络安全_3_Web安全

[笔记] 计算机网络安全:(3)Web安全

  1. 网络安全基础
  2. internet协议的安全性
  3. Web安全
  4. 网络扫描和网络监听
  5. 防火墙原理与设计
  6. 入侵检测系统
  7. VPN技术

目录

  • [笔记] 计算机网络安全:(3)Web安全
    • 3.1 Web安全概述
      • 3.1.1 Web服务器的安全
        • Web应用的信息收集
        • 攻击Web服务器软件
        • 攻击Web应用程序
        • 攻击Web数据内容
      • 3.1.2 Web客户端的安全
      • 3.1.3 Web通信信道的安全
    • 3.2 Web服务器指纹识别
      • 3.2.1 Web服务器指纹介绍
      • 3.2.2 Web服务器Banner信息获取
        • IIS 5.0指纹信息
        • Apache2.0.x指纹
        • 不同服务器的指纹比较
      • 3.2.3 模糊Web服务器Banner信息
        • 自定义HTTP应答头信息
        • 使用插件
      • 3.2.4 Web服务器协议行为
        • [1] Http HEAD请求
          • Apache1.3.23
          • IIS5.0
          • NetscapeEnterprise4.1
        • [2] Http DELETE请求
          • Apache1.3.23
          • IIS5.0
          • NetscapeEnterprise4.1
        • [3] 非法Http协议版本请求
          • Apache1.3.23
          • IIS5.0
          • NetscapeEnterprise4.1
        • [4] 不正确规则协议请求
          • Apache1.3.23
          • IIS5.0
          • NetscapeEnterprise4.1
        • 小结
      • 3.2.5 Http指纹识别工具
        • Httprint介绍
    • 3.3 跨站脚本攻击及防御 (略)
    • 3.4 SQL注入攻击及防御(略)
    • 3.5 Google Hacking
      • 3.5.1 Google Hacking的原理
      • 3.5.2 Google Hacking的实际应用
      • 3.5.3 完整入侵过程
    • 3.6 防御Web攻击
      • 3.6.1 Web服务器安全配置
        • 主机系统安全配置
        • Web服务器安全配置
          • 基于Windows系统Web服务器安全配置
          • 基于Unix系统Web服务器安全配置
      • 3.6.2 Web浏览者的安全措施
      • 3.6.3 Web安全需澄清的五个误解
    • 3.7 小结


3.1 Web安全概述

对Web应用危害较大的安全问题

  • 未验证参数
  • 访问控制缺陷
  • 账户及会话管理缺陷
  • 跨站脚本攻击
  • 缓冲区溢出
  • 命令注入
  • 错误处理
  • 远程管理
  • Web服务器及应用服务器配置不当

Web应用体系结构:传统C/S架构——B/S架构

  • “痩”客户端: Browser (Web客户端)
  • “厚”服务器: Web服务器、Web应用程序、数据库…
  • 通讯机制: HTTP/HTTPS

Web安全可以从以下三个方面进行考虑

  • Web服务器的安全
  • Web客户端的安全
  • Web通信信道的安全

Web安全威胁

  • 网络:机密窃听、假冒身份攻击等
  • 系统:远程和本地渗透攻击
  • Web服务器:针对Web服务器软件的渗透攻击
  • Web应用程序:代码注入攻击/XSS攻击等
  • 数据:敏感信息泄露/内容篡改/不良信息内容

3.1.1 Web服务器的安全

  • 利用Web服务器的漏洞进行攻击,如IIS缓冲区溢出漏洞利用、目录遍历漏洞利用等
  • 利用Web应用程序自身的安全漏洞进行攻击,如SQL注入,跨站脚本攻击等
  • 针对Web服务器上的数据进行攻击,如篡改数据,敏感信息泄露等。

Web引用攻击路线图

  • Web应用信息收集
  • 攻击Web服务器软件
  • 攻击Web应用程序
  • 攻击Web数据内容
  • 本地攻击

Web应用的信息收集

  • 针对目标Web应用服务的信息收集
    • 服务器域名、IP地址、内网虚拟IP地址
    • Web服务器端口、其他开放服务
    • Web站点类型与版本
    • Web应用程序类型与版本
    • Web服务器/Web应用程序中存在的安全漏洞
  • 网络信息收集技术
    • Whois/DNS查询、Web搜索、端口扫描:发现目标Web 站点
    • 类型探查技术:识别Web站点OS、服务器类型版本
    • 漏洞扫描技术:Web站点与服务器软件已知漏洞
    • 服务查点技术:Web服务器软件的“旗标”

攻击Web服务器软件

  • 流行的Web服务器软件
    • MS:Win200x Server/IIS/MS SQL/ ASP/ASP.NET
    • LAMP: Linux/Apache/MySQL/PHP
  • 针对Web服务器网络服务的远程渗透攻击
    • IIS/MS SQL:红色代码、尼姆达和SQL Slammer
    • 已知漏洞渗透代码来源:Metasploit、Exploit-db、Packetstorm、SecurityFoucs

Web服务器平台中的安全漏洞

  • 数据驱动的远程代码执行安全漏洞
    • 缓冲区溢出
    • IIS HTR数据块编码堆溢出漏洞攻击
    • Microsoft IIS ASP远程代码执行漏洞(MS08-006)
  • 服务器功能扩展模块漏洞
    • IIS软件中被红色代码所利用的IIS检索服务缓冲区溢出漏洞
    • WebDAV模块Translate:f漏洞
    • Apache扩展组件模块漏洞,如Tomcat、OpenSSL、 mod_rewrite、mod_mylo、mod_gzip、 mod_isapi、mod_jk
  • 样本文件
    • Web应用服务器包含的样板脚本和代码示例存在漏洞
    • 案例: IIS4中的showcode.asp存在目录便利漏洞
      • http://SERVER/msadc/Samples/SELECTOR/showcode.asp?source=/…/…/…/…/boot.ini
  • 源代码泄露
    • 能够查看到没有防护措施Web服务器上的应用程序源码
    • 案例: IIS上的“+.htr”漏洞
      • http://SERVER/global.asa+.htr
  • 资源解析攻击
    • 资源解析: 把同一资源的不同表示形式解析为它的标准化名称的过程.
      • C:\text.txt = …\text.txt = \computer\C$\text.txt
      • 案例: IIS中的“ASP::$DATA”漏洞
        • http://SERVER/scripts/file.asp::$DATA: 查看源码

攻击Web应用程序

  • Web应用程序的不安全性
    • Web应用程序编码质量和测试均有限: 安全最薄弱环节
    • Web应用的复杂性和灵活性进一步恶化了其安全性
  • Web应用程序安全威胁类型
    • WASC(Web Application Security Consortium)
    • 针对认证机制的攻击
    • 针对授权机制的攻击
    • 客户端攻击
    • 命令执行攻击
    • 信息暴露
    • 逻辑攻击
安全弱点 攻击技术 攻击技术(续)
应用程序错误配置 功能滥用 空字节注入
目录列举 暴力枚举 操作系统命令注入
不恰当的文件系统权限 缓冲区溢出 路径遍历
不恰当的输入处理 内容欺骗 资源位置可预测
不恰当的输出处理 信任/会话预测 RFI远程文件包含
信息泄露 XSS跨站脚本 路由劫持
不安全的索引 CSRF跨站请求伪造 会话身份窃取攻击
对抗自动程序不完善 拒绝服务 SOAP数组滥用
认证机制不完善 指纹探测识别 SSI注入
授权机制不完善 格式化字符串 SQL注入
口令恢复机制不完善 HTTP响应私运 URL重定向机制滥用
处理验证过程不完善 HTTP响应割裂 Xpath注入
会话失效机制不完善 HTTP请求私运 XML属性爆破攻击
传输层保护不完善 HTTP请求割裂 XML外部实体攻击
服务器误配置 整数溢出 XML实体扩展攻击
LDAP注入 XML注入
邮件命令注入 XOuerv注入

ASP的安全性

  1. ASP程序的安全
    • ASP类似CGI,由程序代码实现,通过表单实现与用户的交互,这样一些Web服务器的内容会通过URL反映到浏览器,如果不采取相应的措施,就可能被非法利用
  2. 数据库的存储
    • 在Web下的数据库管理中,数据库的存储应该具有首要的安全等级。由于ASP网页访问同样通过URL,如果数据库文件存储在默认Web站点下,就有可能被客户端非法下载

攻击Web数据内容

  • 安全敏感信息泄露
  • 网站内容篡改
  • 不良信息内容上传

敏感信息泄露

  • 敏感信息类型
    • GF、BM等科研敏感信息
    • 教师、学生个人隐私信息
    • 网络安全敏感信息
  • 通常的信息泄漏途径和方式
    • 未关闭Web服务器的目录遍历,不经意泄漏
    • Upload、Incoming等目录中转文件时泄漏
    • 缺乏安全意识,在公开的文档中包含个人隐私信息
    • 在公开的个人简历、职称晋升材料、课题申请书等包含科研敏感信息

不良信息内容上传威胁

  • 网站面临的不良信息内容威胁
    • 网站被攻陷后可能成为不良信息的存储和中转仓库
    • 提供用户交互的论坛/博客等网站可能涉及用户上传不良信息

3.1.2 Web客户端的安全

  • Java Applet、ActiveX、Cookie等技术大量被使用,如果这些程序被恶意使用,可以窃取、改变或删 除客户机上的信息
  • 网页木马。浏览器存在众多已知或者未知的漏洞,攻击者可以写一个利用某个漏洞的网页,并挂上木马,当用户访问了这个网页之后,就中了木马
  • 跨站脚本攻击(XSS)对于客户端的安全威胁同样无法忽视,利用XSS的Web蠕虫已经在网络中肆虐过

3.1.3 Web通信信道的安全

  • Web信道面临着网络嗅探(Sniffer)和以拥塞信道、耗费资源为目的的拒绝服务攻击(Denial of Service) 的威胁。
  • 防范措施
    • S-HTTP(Secure Hyper Text Transfer Protocol):是一种结合HTTP而设计的安全通信协议。
    • HTTPS(HTTP over SSL,Secure Sockets Layer): HTTP下加入SSL层
    • SSL加密整个通信信道,而S-HTTP则分别加密每条消息。S-HTTP允许用户在每条消息上产生数字签名,而不只是认证协议作用期间的特定消息。

3.2 Web服务器指纹识别

3.2.1 Web服务器指纹介绍

  • Web服务器指纹:了解远程Web服务器的配置信息,然后根据不同版本的Web服务器进行有目的的攻击
  • Http指纹识别:记录不同服务器对Http协议执行中的微小差别进行识别
    • 问题:Http服务器的配置文件、增加插件或组件使得更改Http的响应信息变得很容易,这样识别变得困难

3.2.2 Web服务器Banner信息获取

  • Banner:旗标,或标头。这里指获取web服务器的版本、欢迎语或其它提示信息,以找出可能的有利于攻击的内容
  • 我们可以通过一个TCP客户端比如NetCat(NC)或者telnet与web服务器进行连接,并查看返回的应答信息。

IIS 5.0指纹信息

  • C:\telnet www.longker.com 80 Get
  • 返回结果:
    • HTTP/1.1 400 Bad Request
    • Server: Microsoft-IIS/5.0
    • Date: Fri, 05 Sep 2003 02:57:39 GMT
    • Content-Type: text/html
    • Content-Length: 87 The parameter is incorrect.
  • 注意到下划线标记的信息,很清楚的告诉我们运行的web服务器版本是Microsoft-IIS/5.0

Apache2.0.x指纹

  • sh-2.05b# nc www.target.com 80 OPTIONS * HTTP/1.1
  • 返回结果:
    • Host:www.target.com HTTP/1.1 200 OK
    • Date: Fri, 05 Sep 2003 02:08:45 GMT
    • Server: Apache/2.0.40 (Red Hat Linux)
    • Allow: GET,HEAD,POST,OPTIONS,TRACE
    • Content-Length: 0
    • Content-Type: text/plain; charset=ISO-8859-1

不同服务器的指纹比较

  • 通过Apache2.0.x和IIS5.0指纹的比较,能够很清楚判断出不同服务器返回的信息的不同
  • 当攻击者获得了这些指纹信息后,就可以针对不同的服务器,利用它们的漏洞进行有目的的攻击了

3.2.3 模糊Web服务器Banner信息

为了防范查看Http应答头信息来识别Http指纹的行为,可以选择通过下面两种方法来更改或者是模糊服务器的Banner信息:

  • 自定义Http应答头信息
  • 增加插件

自定义HTTP应答头信息

  • 开放源代码的Http服务器(如apache)用户可以在源代码里修改Banner信息
  • 未公开源代码的Http服务器(如:微软的 IIS),可以在存放Banner信息的Dll文件中修改。

实例:Apache服务器被自定义成了未知服务器

  • Http/1.1 403 Forbidden
  • Date:Mon,08Sep200302:41:27GMT
  • Server:Unknown-Webserver/1.0
  • Connection:close
  • Content-Type:text/html;charset=iso-8859-1

使用插件

  • 插件可以提供自定义的Http应答信息
  • 比如: ServerMask, IIS服务器的一个插件,ServerMask不仅模糊了Banner信息,而且会对Http应答头信息里的项的序列进行重新组合,从而来模仿Apache这样的服务器,它甚至有能力扮演成任何一个Http服务器来处理每一个请求
  • 这个软件可以在以下地址找到: Http://www.port80software.com/products/servermask

实例:使用了ServerMask插件的IIS服务器

  • Http/1.1 200 OK
  • Server: YesweareusingServerMask
  • Date:Mon,08Sep200302:54:17GMT
  • Connection:Keep-Alive
  • Content-Length:18273
  • Content-Type:text/html
  • Set-Cookie:Itworksoncookiestoo=82.3S5.O 12.NT2R0RE,4147ON3P,.4OO.;path=/
  • Cache-control:private

3.2.4 Web服务器协议行为

  • 如果Http请求是合法并且规则的,Http服务器返回的应答信息是符合RFC里的描述的
  • 如果发送畸形的Http请求,这些服务器的响应信息就不同了,不同服务器对Http协议行为表现的不同就是Http指纹识别技术的基本根据和原理。

协议行为分析实例

我们将分析3种不同Http服务对不同请求所返回的响应信息,这些请求是这样的

  1. HEAD / Http/1.0 发送基本的Http请求
  2. DELETE / Http/1.0发送不被允许的请求,如Delete请求
  3. GET / Http/5.0 发送一个非法版本的Http协议请求
  4. GET / JUNK/1.0 发送一个不正确规格的Http协议请求

[1] Http HEAD请求

  • 发送请求HEAD / Http/1.0,然后分析Http响应头里的信息,对头信息里项的排序进行分析。

  • C:>nc apache.example.com 80 HEAD / Http/1.0

  • 比较结果:Apache头信息里的Server和Date项的排序是不同的。

Apache1.3.23
  • Http/1.1200OK
  • Date:Mon,08Sep17:10:49GMT
  • Server:Apache/1.3.23
  • Last-Modified:Thu,27Feb200303:48:19GMT
  • ETag:“32417-c4-3e5d8a83”
  • Accept-Ranges:bytes
  • Content-Length:196
  • Connection:close
  • Content-Type:text/html
IIS5.0
  • Http/1.1200OK
  • Server:Microsoft-IIS/5.0
  • Content-Location:Http://iis.example.com/Default.htm
  • Date:Mon,08Sep20:13:52GMT
  • Content-Type:text/html
  • Accept-Ranges:bytes
  • Last-Modified:Mon,08Sep200310:10:50GMT
  • ETag:W/“e0d362a4c335be1:ae1”
  • Content-Length:133
NetscapeEnterprise4.1
  • Http/1.1200OK
  • Server:Netscape-Enterprise/4.1
  • Date:Mon,08Sep200306:01:40GMT
  • Content-type:text/html
  • Last-modified:Mon,08Sep200301:37:56GMT
  • Content-length:57
  • Accept-ranges:bytes
  • Connection:close

[2] Http DELETE请求

  • 发送DELETE / Http/1.0请求,我们将分析不同Http服务器对非法请求的应答信息的不同
  • C:>nc apache.example.com 80 DELETE / Http/1.0
  • 比较结果
    • Apache:“405 Method Not Allowed”
    • IIS:“403 Forbidden”
    • Netscape:“401 Unauthorized”
  • 发现对Delete请求,响应的信息是完全不同的
Apache1.3.23
  • Http/1.1 405 Method Not Allowed
  • Date:Mon,08Sep200317:11:37GMT
  • Server:Apache/1.3.23
  • Allow:GET,HEAD,POST,PUT,DELETE,CONNE CT,OPTIONS,PATCH,PROPFIND,PROPPATC H, MKCOL,COPY,MOVE,LOCK,UNLOCK,TRACE
  • Connection:close Content-Type:text/html;charset=iso-8859-1
IIS5.0
  • Http/1.1 403 Forbidden
  • Server:Microsoft-IIS/5.0
  • Date:Mon,08Sep200320:13:57GMT
  • Content-Type:text/html
  • Content-Length:3184
NetscapeEnterprise4.1
  • Http/1.1 401 Unauthorized
  • Server:Netscape-Enterprise/4.1
  • Date:Mon,08Sep200306:03:18GMT
  • WWW-authenticate:Basicrealm=“WebServerServer”
  • Content-type:text/html Connection:close

[3] 非法Http协议版本请求

  • 发送非法的Http协议版本请求,比如GET/Http/5.0请求,事实上Http5.0是不存在的
  • C:>nc apache.example.com 80 GET / Http/5.0
  • 比较结果:
    • Apache:“400 Bad Request”
    • IIS忽略了这个请求,响应信息是OK,还返回了网站根目录的HTML数据信息
    • Netscape:"505 Http Version Not Supported“
Apache1.3.23
  • Http/1.1400 Bad Request
  • Date:Mon,08Sep200317:12:37GMT
  • Server:Apache/1.3.23
  • Connection:close
  • Transfer-Encoding:chunked
  • Content-Type:text/html;charset=iso-8859-1
IIS5.0
  • Http/1.1 200 OK
  • Server:Microsoft-IIS/5.0
  • Content-Location:Http://iis.example.com/Default.htm
  • Date:Mon,08Sep200320:14:02GMT
  • Content-Type:text/html
  • Accept-Ranges:bytes
  • Last-Modified:Mon,08Sep200320:14:02GMT
  • ETag:W/“e0d362a4c335be1:ae1”
  • Content-Length:133
NetscapeEnterprise4.1
  • Http/1.1 505 Http Version Not Supported
  • Server:Netscape-Enterprise/4.1
  • Date:Mon,08Sep200306:04:04GMT
  • Content-length:140
  • Content-type:text/html
  • Connection:close

[4] 不正确规则协议请求

  • 对GET / JUNK/1.0请求的响应
  • C:>ncapache.example.com80 GET / JUNK/1.0
  • 比较结果:
    • Apache忽视了不规则的协议"JUNK",还返回了200 "OK“ 和根目录的一些信息
    • IIS:"400 Bad Request“
    • Netscape几乎没有返回Http头信息,相反的却返回了HTML格式的信息来表明这是个错误请求。
Apache1.3.23
  • Http/1.1 200 OK
  • Date:Sun,15Jun200317:17:47GMT
  • Server:Apache/1.3.23
  • Last-Modified:Thu,27Feb200303:48:19GMT
  • ETag:“32417-c4-3e5d8a83”
  • Accept-Ranges:bytes
  • Content-Length:196
  • Connection:close Content-Type:text/html
IIS5.0
  • Http/1.1 400 Bad Request
  • Server:Microsoft-IIS/5.0
  • Date:Fri,01Jan199920:14:34GMT
  • Content-Type:text/html
  • Content-Length:87
NetscapeEnterprise4.1
  • <u>Bad request</u>
  • Bad request

  • ​ Your browser sent a query this server could not understand.

小结

服务器 头信息排序 DELETE请求 非法版本 不规则协议
Apache1.3.23 Date, Server 405 400 200
IIS5.0 Server, Date 403 200 400
NetscapeEnterprise4.1 Server, Date 401 505 no header

3.2.5 Http指纹识别工具

  • 这里我们将介绍一个Http指纹识别工具Httprint,它通过运用统计学原理,组合模糊的逻辑学技术,能很有效的确定Http服务器的类型。
  • Httprint收集了每种http服务器在交互过程中产生的特性,将它们编码成一个固定长度的ASCII字符串,这就是Httpint签名。

Httprint介绍

  • Httprint先把一些Http签名信息保存在一个文档里,然后分析那些由Http服务器产生的结果。
  • 对于没有列在数据库中的签名信息时,可以利用Httprint产生的报告来扩展这个签名数据库,下一次运行Httprint时,这些新加的签名信息就可以使用了
  • Httprint可以图形界面运行和命令行下运行,可以运行在Windows、Linux和MacOSX平台上。
  • 下载地址:http://www.net-square.com/httprint/

3.3 跨站脚本攻击及防御 (略)

3.4 SQL注入攻击及防御(略)

3.5 Google Hacking

  • Google Hacking就是利用搜索引擎搜索所需要的敏感信息的一种手段。
  • Google Hacking的原理非常简单,由于许多有特定漏洞的网站都有类似的标志页面,而这些页面如果被搜索引擎的数据库索引到,我们就可以通过搜索指定的单词来找到某些有指定漏洞的网站

3.5.1 Google Hacking的原理

  • intext:就是把网页正文内容中的某个字符做为搜索条件
    • 例如在Google里输入“intext:动网”(注意:在搜索引擎中输入的字符不包括“”,本节中以下同),将返回所有在网页正文部分包含“动网”的网页。
  • allintext:使用方法和intext类似
  • intitle:和intext相近,搜索网页标题中是否有所要找的字符
    • 例如搜索“intitle:IT安全”,将返回所有网页标题中包含“IT安全”的网页。
  • allintitle:也同intitle类似。
  • cache:搜索Google里关于某些内容的缓存
  • define:搜索某个词语的定义
    • 比如搜索“define:黑客”,将返回关于“黑客”的定义
  • filetype:搜索指定类型的文件。这个是要重点推荐的,无论是撒网式攻击还是我们后面要说的对特定目 标进行信息收集都需要用到它
    • 例如输入“filetype:mdb”,将返回所有以“mdb”结尾的文件URL。如果对方的虚拟主机或服务器没有限制下载,那么单击这些URL就可以将对方的这些文件下载下来。
  • info:查找指定站点的一些基本信息
  • inurl:搜索指定的字符是否存在于URL中
    • 例如输入“inurl:admin”,将返回许多类似于这样的连接:http://www.xxx.com/xxx/admin,用这一搜索指令来寻找管理员登陆的URL是非常有效的一个途径。
  • allinurl:也同inurl类似,可指定多个字符
  • link:查找和指定网站做了链接的网站
    • 例如搜索“inurl:www.xfocus.net”可以返回所有和 www.xfocus.net做了链接的URL
  • site:用来查找与指定网站有关的链接
    • 例如输入“site:www.xfocus.net”将返回所有和www.xfocus.net有关的URL
  • 还有一些操作符也是很有用的
    • 把Google可能忽略的字列入查询范围
    • - 把某个字忽略
    • ~ 同意词
    • . 单一的通配符
    • * 通配符,可代表多个字母
    • “” 精确查询

3.5.2 Google Hacking的实际应用

  • 利用“index of”来查找开放目录浏览的站点

    • 比如,在Google中搜索“intitle:"index of passwd”
    • passlist.txt中存放的就是所有的账号和密码,点击即可以打开浏览。而admin.mdb也可以下载。
  • 搜索指定漏洞程序

    • 例如ZeroBoard前段时间被发现一个文件代码泄露的漏洞,可以用Google来寻找网上使用这套程序的站点。在Google中输入“intext:ZeroBoard filetype:php”或“inurl:outlogin.php?_zb_path=site:.jp”来寻找所需要的页面。

      phpMyAdmin是一套功能强大的数据库操作软件,一些站点由于配置失误,导致用户可以不使用密码直接对phpMyAdmin进行建立、复制、删除等操作,我们可以用“intitle:phpmyadmin intext:Create new database”来搜索存在这样漏洞的程序网址

  • 查找有跨站脚本漏洞的站点

    • allinurl:/scripts/cart32.exe
    • allinurl:/CuteNews/show_archives.php
    • allinurl:/phpinfo.php
  • 查找有SQL注入漏洞的站点

    • allinurl:/privmsg.php

3.5.3 完整入侵过程

  • 下面以www.xxx.com站点为例,介绍如何利用Google进行一次完整入侵过程。
  • 首先,用Google查看这个站点的基本情况
    • 在Google中输入:site:xxx.com
    • 从返回的信息中,找到几个相关的域名,假设为 http://a1.xxx.com、http://a2.xxx.com、 http://a5.xxx.com、http://a4.xxx.com
  • 然后,使用Ping命令对这几个域名进行测试,查看它们是否使用的是同一个服务器
  • 接下来,在Google中输入site:xxx.com filetype:doc,看看是否有比较有用的doc文档资料
  • 查找网站的管理后台地址。输入:
    • site:xxx.com intext:管理
    • site:xxx.com inurl:login
    • site:xxx.com intitle:管理
    • 假设获得2个管理后台地址:
      • http://a2.xxx.com/sys/admin_login.asp
      • http://a5.xxx.com:88/_admin/login_in.asp
  • 得到后台地址后,来看一下服务器上运行的是什么程序
    • site:a2.xxx.com filetype:asp
    • site:a2.xxx.com filetype:php
    • site:a2.xxx.com filetype:aspx
    • site:a5.xxx.com filetype:asp
    • 假设探测到a2服务器用的是IIS,上面用的是ASP的整站程序,还有一个PHP的论坛,a3服务器也是IIS,使用的是ASPX+ASP
  • 既然是论坛,看看有没有公共的FTP帐号之类
    • site:a2.xxx.com intext:ftp://*
  • 如果没找到什么有价值的东西,再看看有没有上传的漏洞
    • site:a2.xxx.com inurl:file
    • site:a5.xxx.com inurl:load
    • 假设在a2上发现一个上传文件的页面 http://a2.xxxx.com/sys/uploadfile.asp,用IE查看一下,发现没有权限访问。
  • 接下来试试注入漏洞。输入
    • site:a2.xxx.com filetype:asp
    • 得到几个ASP页面的地址,使用软件进行注入
    • 此外,我们还可以使用site:xxx.com intext:*@xxx.com 获取一些邮件地址,以及邮箱主人的名字
    • 使用 site:xxxx.com intext:电话 来获得一些电话
  • 把搜集到的这些信息做个字典,用暴力软件进行破解,得到几个用户名和密码,即可进行登录了。剩下的其它入侵行为,在此不再赘述

3.6 防御Web攻击

3.6.1 Web服务器安全配置

  • Web服务器为互联网用户提供服务的同时,也是黑客攻击的主要对象和攻入系统主机的主要通道
  • 服务器安全配置包括主机系统的安全配置Web服务器的安全配置两大部分

主机系统安全配置

  • 服务器主机系统是服务器的基础,因此显然服务器运行的安全性与其所在的主机系统安全性密切相关有关。
  • 这里的主机系统安全性,指的是应用在主机上且与服务器主要服务业务不相关的配置。
    • 简单性
    • 超级用户权限
    • 本地和远程访问控制
    • 审计和可审计性
    • 恢复

Web服务器安全配置

基于Windows系统Web服务器安全配置
  • Windows的IIS的方便性和易用性,使它成为最受欢迎的Web服务器软件之一。但是IIS的安全性却一直令人担忧。
  • 下面从IIS的安全安装IIS的安全配置两个方面进行讲解

IIS安全安装

  • 要构建一个安全的IIS服务器,必须从安装时就充分考虑安全问题。
    • 不要将IIS安装在系统分区上
    • 修改IIS的安装默认路径
    • 打上Windows和IIS的最新补丁

IIS安全配置

  • 删除不必要的虚拟目录
    • IIS安装完成后在C:\Inetpub\wwwroot下默认生成了一些目录,包括IISHelp、IISAdmin、 IISSamples、MSADC等,这些目录都没有什么实际的作用,可直接删除
  • 删除危险的IIS组件
    • 默认安装后的有些IIS组件可能会造成安全威胁,例如SMTP Service和FTP Service、样本页面和脚本,大家可以根据自己的需要决定是否删除。
  • 为IIS中的文件分类设置权限
    • 除了在操作系统里为IIS的文件设置必要的权限外,还要在IIS管理器中为它们设置权限。
    • 一个好的设置策略是:为Web站点上不同类型的文件都建立目录,然后给它们分配适当权限。例如:静态文件文件夹允许读、拒绝写,脚本文件夹允许执行、拒绝写和读取
  • 删除不必要的应用程序映射
    • IIS中默认存在很多种应用程序映射,可以对它进行配置,删除不必要的应用程序映射。
    • 在“Internet信息服务”中,右击网站目录,选择“属性”,在网站目录属性对话框的“主目录”页面中,点击[配置]按钮,弹出“应用程序配置”对话框,在“应用程序映射”页面,删除无用的程序映射
    • 如果需要这一类文件时,必须安装最新的系统修补补丁,并且选中相应的程序映射,再点击[编辑]按钮,在“添加/编辑应用程序扩展名映射”对话框中勾选“检查文件是否存在”选项。这样当客户请求这类文件时,IIS会先检查文件是否存在,文件存在后才会去调用程序映射中定义的动态链接库来解析。
  • 保护日志安全
    • 日志是系统安全策略的一个重要环节,确保日志的安全能有效提高系统整体安全性
      • 修改IIS日志的存放路径:默认情况下,IIS的日志存放在 %WinDir%\System32\LogFiles,黑客当然非常清楚,所以最好修改一下其存放路径。
      • 在“Internet信息服务”中,右击网站目录,选择“属性”,在网站目录属性对话框的“Web站点”页面中,在选中“启用日志记录”的情况下,点击旁边的[属性]按钮,在“常规属性”页面,点击[浏览]按钮或者直接在输入框中输入日志存放路径即可
      • 修改日志访问权限,设置只有管理员才能访问
基于Unix系统Web服务器安全配置
  • 不以root运行web服务器
  • 限制在WEB服务器开账户,定期删除一些用户
  • 对在WEB服务器上开的账户,在口令长度及定期更改方面作出要求,防止被盗用。同时注意保护用户名、 组名及相应的口令
  • 尽量使FTP、MAIL等服务器与之分开,去掉ftp,sendmail,tftp,NIS,NFS,finger, netstat等一些无关的应用
  • 定期查看服务器中的日志logs文件,分析一切可疑事件。在errorlog中出现rm、login、/bin/perl、 /bin/sh等之类记录时,你的服务器可能已经受到了一些非法用户的入侵
  • 有些WEB服务器把WEB的文档目录与FTP目录指在同一目录时,应该注意不要把FTP的目录与CGI-BIN指定在一个目录之下。
  • 文件的访问控制:设置好WEB服务器上系统文件的权限和属性,对可让人访问的文档分配一个公用的组,如WWW,并只分配它只读的权利。把所有的HTML文件归属WWW组,由WEB管理员 管理WWW组。对于WEB的配置文件仅对WEB管 理员有写的权利
  • 对不同目录设置不同的属性,如:Read Excute Write
  • 在WEB服务器上去掉一些不用的脚本解释器,例如:当在你的CGI的程序中没用到perl时,就尽量把perl在系统解释器中删除掉

3.6.2 Web浏览者的安全措施

  • 对浏览器的安全性进行设置,以微软IE为例,点击“工具→Internet选项→安全→自定义级别”,请根据自己的需要进行设置
  • 经常对操作系统打补丁、升级
  • 使用漏洞数较少的浏览器,如Firefox
  • 经常对浏览器进行升级
  • 不要因为好奇而打开一些不信任的网站

3.6.3 Web安全需澄清的五个误解

针对Web安全,存在着许多误解。要增强Web网站的安全性,首先要澄清下面五个误解。

  • “Web网站使用了SSL加密,所以很安全”
  • “Web网站使用了防火墙,所以很安全”
  • “漏洞扫描工具没发现任何问题,所以很安全”
  • “网站应用程序的安全问题是程序员造成的”
  • “我们每年会对Web网站进行安全评估,所以很安全”

3.7 小结

  • 随着互联网的发展,Web已经成为人们钟爱的获取信息和互相交流的方式,随之而来的Web安全也成为近年来安全工作者的研究重点。
  • 本章主要讨论了威胁Web安全的常用攻击,包括Web页面扫描、Google Hacking等,并列举了相应对策。
  • 应该强调的是,高质量的编程、健壮的程序设计、注重对系统的日常监控,从增强Web站点自身的健壮性方面来采取措施,往往更能取得显著效果

你可能感兴趣的