渗透测试概述

  • 渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。 
  • 假设某公司的运维怀疑公司信息系统存在安全隐患,但是由于不具备专业安全攻防的能力,具体存在哪些隐患并不清楚。这时就可以委托安全公司对本公司信息系统进行渗透测试。换句话说,进行渗透测试的团队会把自己模拟成黑客,来对目标信息系统进行各种形式的攻击(当然,这种攻击行为是合法的,因为提前获得了被攻击方的授权),最后把攻击的过程和发现的漏洞,以及漏洞修复方案提交给客户,让客户可以完善自己信息系统的安全性。  
  • 在信息安全的知识体系中,渗透测试是占比例最高的一个部分,也是对个人技术能力和领悟能力要求最高的一个部分。渗透测试的过程中不能仅仅只靠学到的固定的攻击方式来进行测试,还需要测试工程师能够根据不同的目标环境,进行各种常规或非常规的方法来尝试;攻击对象和攻击切入点也可能不仅仅是计算机系统,甚至可能是直接从计算机的使用者来进行切入(社会工程学)。

渗透测试的分类

渗透测试一般分为黑盒测试、白盒测试和灰盒测试。不同的客户可能会针对不同的需求选择不同的测试方式。

  • 黑盒测试:是指测试者对目标信息系统一无所知,需要从最开始的信息收集开始一步一步来进行,难度较大,对测试者能力要求较高。但是由于客户也无法得知测试者会以什么方式来攻击和入侵,所以能够检测网络中的应急和入侵防御系统是否有效。这种测试方式成本也较高。
  • 白盒测试:是指测试者提前已经被告知了关于目标信息系统的各种信息,可以更快速的来进行测试,成本较低,一般是用于企业内部人员的测试或日常漏扫巡检。
  • 灰盒测试:白盒测试和黑盒测试基本类型的组合,它可以提供对目标系统更加深入和全面的安全审查。组合之后的好处就是能够同时发挥两种渗透测试方法的各自优势。在采用灰盒测试方法的外部渗透攻击场景中,渗透测试者也类似地需要从外部逐步渗透进目标网络,但他所拥有的目标网络底层拓扑与架构将有助于更好地决策攻击途径与方法,从而达到更好的渗透测试效果。

渗透测试的流程

  • 前期交互:在进行渗透测试之前,渗透测试团队需要与客户就渗透测试目标、渗透测试范围、渗透测试方式(白盒、黑盒、灰盒以及是否涉及社会工程学、DDOS等)、服务合同等细节进行商议,达成一致协议。
  • 信息收集:在确定了渗透测试目标以及范围之后,接下来就需要进入信息收集阶段。在这个阶段,渗透测试人员需要使用各种公开的资源尽可能的获取与测试目标相关的信息。可以借助各种渠道来收集目标的相关信息,包括公开渠道和非公开渠道。信息收集是为了后面制定攻击方案和计划的重要前提
  • 威胁建模:在这个阶段渗透测试团队需要聚集在一起就获取到的信息进行分析并且做出攻击的规划。这是渗透测试过程中非常重要但是又很容易被忽略的一个关键点。在这个过程中必须要理清思路,确定出最有效、最可行的攻击方案。总之,该阶段就是根据前面收集到的信息制定最可行的攻击计划
  • 漏洞分析:有了攻击计划,但具体从哪里实施整个计划的切入,需要一个攻击点。所有的攻击和入侵都是基于目标信息系统的漏洞的,所以该阶段需要测试者去尽可能的挖掘出系统中的漏洞。而且不仅需要验证系统是否存在已知的漏洞,同时也需要去挖掘系统一些潜在的漏洞,并且开发出相应的漏洞利用代码。
  • 渗透攻击:该阶段就是真正的实施攻击了。根据前面制定的计划,找到的攻击切入点,一步步实施攻击和入侵,以获得目标信息系统最高管理权为最终目标
  • 后渗透攻击:完成攻击后,测试者已经获取了目标系统的最高管理权,但是真正能体现测试价值的往往是后渗透阶段。该阶段测试者需要利用各种手段来找到目标信息系统中的高价值资产,并找到能影响资产价值的手段,实施对目标人的打击和破坏。该阶段中还会留下后门,实现权限维持和长期控制
  • 渗透报告:整个渗透测试的过程最终需要以书面文档的形式向客户提交,这份报告也就是我们常说的渗透测试报告。这份报告涵盖了之前所有阶段中渗透测试团队所获取的到各种有价值信息以及探测和挖掘出来的相关安全漏洞、成功攻击的过程,以及对业务造成的影响后果分析。同时在这个阶段也要对系统中存在的脆弱环节、存在的安全问题给出修复建议。

Web渗透概述

Web 已经在企业信息化、电子商务、电子政务中等得到广泛的应用,Web 的迅速发展同时,也带来了众多的安全威胁。

网络攻击重心已转向应用层, Web 已成为黑客首选攻击目标, 针对 Web 的攻击和破坏不断增长,据高盛统计数据表明,75% 的攻击是针对 Web 应用的。

然而,对于 Web 应用安全领域,很多企业还没有充分的认识、没有做好准备;许多开发人员也没有相应的经验,这给了黑客可乘之机。

Web攻击的常见目的

  • 恶作剧;
  • 关闭 Web 站点,拒绝正常服务;
  • 篡改 Web 网页,损害企业名誉;
  • 免费浏览收费内容;
  • 盗窃用户隐私信息,例如 Email;
  • 以用户身份登录执行非法操作,从而获取暴利;
  • 以此为跳板攻击企业内网其他系统;
  • 网页挂木马,攻击访问网页的特定用户群;
  • 仿冒系统发布方,诱骗用户执行危险操作,例如用木马替换正常下载文件,要求用户汇款等;

Web安全术语

  • 后门

    • 绕过安全控制而获取对程序或系统访问权的方法。后门的最主要目的就是方便以后再次秘密进入或者控制系统。
  • Webshell

    • Webshell 就是以 asp、php、jsp 或者 cgi 等网页文件形式存在的一种命令执行环境,也可以将其称作为一种网页后门。
  • 0day漏洞

    • 通常是指还没有补丁的漏洞。也就是说官方还没有发现或者是发现了还没有开发出安全补丁的漏洞
  • Exploit

    • 简称 exp,漏洞利用
  • 提权

    • 提高自己在服务器中的权限,主要针对网站入侵过程中,当入侵某一网站时,通过各种漏洞提升 Webshell 权限以夺得该服务器权限。
  • 跳板

    • 跳板,简单来说,就是在进行攻击或渗透时,不直接发起,而是控制一台中间主机来进行。这台中间主机就成为跳板。
  • 拖库

    • 网站遭到入侵后,黑客窃取其数据库。
  • 社会工程学

    • 一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段取得自身利益的手法,已成迅速上升甚至滥用的趋势。
  • Apt 攻击

    • 高级持续性威胁。 利用先进的攻击手段对特定目标进行长期持续性网络攻击的攻击形式

Web常见攻击手段

针对 Web 服务的攻击手段五花八门,形形色色。为了帮助IT公司和开发团队规范应用程序开发流程和测试流程,提高Web产品的安全性,OWASP 组织每年都会发布 OWASP TOP 10 年度报告,该报告总结了 Web 应用程序最可能、最常见、最危险的十大漏洞
OWASP:开放式 Web 应用程序安全项目,是一个非营利组织,不附属于任何企业或财团。因此,由 OWASP 提供和开发的所有设施和文件都不受商业因素的影响。OWASP 支持商业安全技术的合理使用,它有一个论坛,在论坛里信息技术专业人员可以发表和传授专业知识和技能。

OWASP TOP 10 2017

  • A1 - Injection(注入漏洞)
    • 当不可信的数据作为命令或查询语句的一部分被发送给解释器的时候,会发生注入漏洞,包括 SQL、NoSQL、OS 以及 LDAP 注入等。
    • 攻击者发送的恶意数据可能会诱使解释器执行计划外的命令,或在没有适当授权的情况下访问数据。
  • A2 - BrokenAuthentication(中断身份认证)
    • 与认证和会话管理相关的应用函数经常被错误地实现,从而允许攻击者破坏密码、密钥或是会话令牌
    • 或者利用其他的应用漏洞来暂时或永久地获取用户身份信息。
  • A3 - Sensitive DataExposure(敏感数据泄露)
    • 许多 Web 应用程序和 API 不能正确的保护敏感数据,如金融、医疗保健和 PII(个人身份信息)等。攻击者可能会窃取或篡改这些弱保护的数据,从而进行信用卡欺诈、身份盗窃或其他犯罪行为。
    • 在缺少额外保护(例如,在存放和传输过程中加密,且在与浏览器进行交换时需要特别谨慎)的情况下,敏感数据可能会受到损害。
  • A4 - XML ExternalEntities(XXE)XML 外部处理器漏洞
    • 许多过时的或配置不当的XML处理器在XML文档内进行外部实体引用。
    • 外部实体可用于泄露内部文件,通过使用文件URI处理器、内部文件共享、内部端口扫描、远程代码执行以及拒绝服务攻击等手段。
  • A5 - Broken AccessControl(中断访问控制)
    • 限制“认证的用户可以实现哪些操作”的命令没有得到正确的执行。
    • 攻击者可以利用这些漏洞访问未经授权的功能和数据,例如访问其他用户的账户,查看敏感文件,篡改其他用户的数据,更改访问权限等。
  • A6 - SecurityMisconfiguration(安全配置错误)
    • 安全配置错误是最常见的问题。
    • 这通常是由不安全的默认配置,不完整或 ad hoc 配置,开放云存储,错误配置的 HTTP 标头,以及包含敏感信息的详细错误信息造成的。
    • 所有的操作系统、框架、库、应用程序都需要进行安全配置外,还必须要及时进行系统更新和升级。
  • A7 - Cross-SiteScripting(XSS)跨站脚本攻击
    • 如果应用程序在未经适当验证或转义的情况下,能够在新网页中包含不受信任的数据,或是使用可以创建 HTML 或者 JavaScript 的浏览器 API 更新包含用户提供的数据的现有网页,就会出现 XSS 漏洞。
    • XSS 允许攻击者在受害者的浏览器中执行脚本,这些脚本可以劫持用户会话、破坏网站或将用户重定向到恶意网站中。
  • A8 - InsecureDeserialization(不安全的反序列化)
    • 不安全的反序列化漏洞通常会导致远程代码执行问题。
    • 即使反序列化错误不会导致远程代码执行,也可以被用来执行攻击,包括重放攻击、注入攻击以及权限提升攻击等。
  • A9 - UsingComponents with Known Vulnerabilities(使用含有已知漏洞的组件)
    • 组件(如库、框架和其他软件模块)是以与应用程序相同的权限运行的。如果存在漏洞的组件被利用,这种攻击可能会导致严重的数据丢失或服务器接管危机。
    • 使用已知漏洞组件的应用程序和API可能会破坏应用程序的防御系统,从而启动各种形式的攻击,造成更为严重的影响。
  • A10 - InsufficientLogging & Monitoring(不足的记录和监控漏洞)
    • 不足的记录和监控漏洞,再加上事件响应能力欠缺以及缺少有效的整合,使得攻击者可以进一步攻击系统,维持其持久性,转而攻击更多的系统,并篡改、提取或销毁数据。
    • 大部分的数据泄露研究显示,检测出发生数据泄漏的时间通常需要超过 200 天,而且通常是外部机构率先发现数据泄漏的事实,而不是通过内部发现的。

Web服务原理

Web概述

  • Web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和 HTTP 的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在 Internet 上的一种网络服务,为浏览者在 Internet 上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将 Internet上 的信息节点组织成一个互为关联的网状结构。
  • 我们通常所说的 WWW 服务、Web 服务,其实是一个意思,泛指通过 HTTP 协议传输,使用图形化界面来展示信息的一种方式。也就是俗称的网站或者网页

Web相关概念

  • 网页(Web 页面):
    • 网页,是网站中的一个页面,通常是网页是构成网站的基本元素,是承载各种网站应用的平台。通俗的说,网站就是由网页组成的。
  • 网站(WebSite):
    • 网站,指根据一定的规则,使用 HTML 等工具制作的用于展示特定内容的相关网页的集合。简单地说,网站是一种通讯工具,就像布告栏一样,人们可以通过网站来发布或收集信息。
    • 网站就是一组相同所属的网页的集合
  • HTML(超文本标记语言):
    • “超文本” 就是指页面文本内可以包含图片、链接,甚至音乐、程序等非文字元素。
    • 是一种规范,一种标准,超文本标记语言通过标记符号来标记要显示的网页中的各个部分
    • 网页的本质是使用 HTML 语言编写代码所产生的文件
  • 静态网页:
    • 指纯 HTML 语言编写,呈现的内容固定化的 Web 页面
    • 静态网页所呈现的所有内容都编写在源文件中,更改内容只能修改源代码
  • 动态网页:
    • 除了 HTML,还使用相应的动态程序序言编写的 Web 页面
    • 动态网页中呈现的内容一般存储在数据库中,通过程序语言来调用数据
  • HTTP(超文本传输协议):
    • 用于发布和接收 HTML 页面的协议,定义了 Web 客户端和服务器端的请求和应答标准
    • 默认工作在 TCP 80 端口
  • HTTPS(HTTP over SSL)
    • 基于 SSL 的 HTTP 协议,使用 SSL 协议来保护 HTTP 传输,使 HTTP 协议更加安全
  • 浏览器(Browser):
    • 可以接收并解析 HTML 语言,使 HTML 能够图形化显示,并与 Web 服务器进行交互的应用程序

Web服务组件

图1-1

如图 1-1,要构建一个网站,一般需要具备 Web 服务系统、Web 服务软件、Web 开发语言、数据库这四个组件。这只是比较概括性的划分了 Web 服务的组件,如果要细分的话,还可以细分为操作系统、存储(Web 源文件和数据库)、Web 容器、中间件、Web 服务端语言、Web 开发框架、Web 应用、Web 前端框架、第三方内容等组件。本课程内容不关注 Web 的搭建和优化,所以只按照图示组件讲解

Web服务系统

Web 作为网络服务,必然需要基于操作系统来运行和工作,这里的 Web 服务系统指的就是 Web 服务运行在哪种操作系统上

  • Windows
    • 作为使用最广泛的电脑端操作系统,Windows 无疑是良好的运行 Web 服务的操作系统平台。无论是桌面版的 Windows,还是 Server 版的 Windows,都具备运行 Web 服务的能力,但生产环境中的 Web 服务更多的会选择 Server 版的 Windows,如 Windows Server 2003、Windows Server 2008、Windows Server 2012 等
    • Windows 拥有优秀的图形化界面处理能力,也成为了众多 Web 初学者入门会选择的操作系统
  • Linux
    • Server 端的操作系统,无疑是 Linux 的天下。基于开源、高效、安全等优点,Linux 成为了生产环境中搭建 Web 服务的首选操作系统
    • 常见的有 CentOS、RatHat、Ubuntu,互联网中几乎 99% 的 Web 服务都运行在 Linux 系统之上


转载于邓方鸣-在线文档库

转载目的:学习