第1章 Web渗透测试快速入门 随着信息时代的发展和网络的普及,越来越多的人走进了网络生活,然而人们在享受网络带来的便利的同时,也时刻面临着黑客们残酷攻击的危险。那么,作为电脑或网络终端设备的用户,要想使自己的设备不受或少受攻击,就需要掌握一些相关的 Web渗透测 试知识。 1.1 认识 Web安全 随着社交网络、微博、微信等一系列新型的互联网产品的诞生,基于 Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在 Web平台上, Web业务的迅速发展也引起了黑客的强烈关注,接踵而至的就是 Web安全问题。 1.1.1 Web安全的提出 在 Web安全问题中,常见的就是黑客利用操作系统的漏洞和 Web服务程序的 SQL注入漏洞等得到 Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内容数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害,这也使得越来越多的用户关注应用层的安全问题,对 Web应用安全的关注度也逐渐升温,“ Web安全”的概念由此而提出。 最初,Web安全主要是指计算机安全。不过,随着 Java语言的普及,利用 Java语言进行传播和资料获取的病毒开始出现,最为典型的代表就是 Java Snake病毒,还有一些利用邮件服务器传播和破坏的病毒,这些病毒会严重影响互联网的效率。 进入 21世纪以来,随着互联网的飞速发展,各种 Web应用开始增多,“计算机安全”逐步演化为“计算机信息系统安全”。这时,“安全”的概念也不再仅仅是计算机本身的安全,也包括软件与信息内容的安全。 1.1.2 Web安全的发展历程 通俗地讲,互联网就是网络与网络之间串连成的庞大网络,自互联网诞生起,互联网的发展大致经历了三个阶段,分别为:Web 1.0、Web 2.0和 Web 3.0。相对应地,Web安全的发展历程也经历了三个阶段。 1. 宣传启蒙阶段 第一代互联网 Web 1.0。从 1995年至 2005年,大约十年的时间, Web 1.0是只读互联网,用户只能收集、浏览和读取信息,网络的编辑管理权限掌握在开发者手中,用户只能被动获取信息,网络提供什么,用户就只能看到什么,只能做一个读者。Web 1.0是平台向用户的单向传播模式,它的表现形式是各种各样的门户网站,比如 Google、网易、百度、搜狐、新浪等。如图 1-1所示为百度首页。 在此阶段, Web安全主要是指计算机的实体安全。而且这一阶段国家也没有相关的法律法规,更没有较为完整意义的专门针对计算机系统安全方面的规章,安全标准也比较少,只是在物理安全及保密通信等个别环节上有些规定;广大应用部门也基本上没有意识到计算机安全的重要性,只在个别部门中少数有些计算机安全意识的人们开始在实际工作中进行摸索。 2. 开始发展阶段 第二代互联网 Web 2.0。Web 2.0在 2005年初具雏形,大规模应用是在 2014年,Web 2.0是可读写、交互的互联网,用户不仅可以读取信息,还可以转发、分享、评论、互动等,同时还可以自己创建文字、图片和视频,并上传到网上。 Web 2.0真正实现了用户与用户之间的双向互动,让每一个用户不再仅仅是互联网的读者,同时也成为互联网的作者。 Web 2.0的具体表现形式是各类的 App,比如 QQ、微信、抖音等,但这些 App的开发商都是中心化的机构,用户发布的内容都是存储在开发商的数据库里,很容易出现网络安全问题,比如信息丢失、泄露,这也是这一阶段的 Web安全最需要解决的问题。如图 1-2所示为微信好友聊天界面。 在此阶段, Web安全逐渐被人们重视起来。许多企事业单位开始把信息安全作为系统建设中的重要内容之一来对待,加大了投入,开始建立专门的安全部门来开展信息安全工作。还有一个重要的变化就是一些学校和研究机构开始将信息安全作为大学教程和研究课题,安全人才的培养开始起步。这也是我国安全产业发展的重要标志。 图 1-2 微信好友聊天界面 3. 逐步正规阶段 第三代互联网 Web 3.0。与 Web 1.0和 Web 2.0相比, Web 3.0最大的不同是去中心化。说到去中心化,就会想到区块链, Web 3.0是基于区块链技术建立的点对点的去中心化的智能互联网。目前处于基础建设时期,包括分布式存储、物联网、生态公链、云计算等方面, Web 3.0将区块链的加密、不可篡改、点对点传输和共识算法技术添加到应用程序中,开发出去中心化的应用程序 DAPP。如图 1-3所示为物联网相关示意图。 图 1-3 物联网示意图 Web 3.0将更加以人为本,更加倾向于保护隐私,将数据回归到个人所有,逐渐摆脱中心化机构的控制。当下正处于 Web 2.0和 Web 3.0的交接阶段,新的时代必定带来新的机遇。 在此阶段,随着互联网的高速发展,我国安全产业进入快速发展阶段,逐步走向正轨。而标志安全产业走向正轨的重要特征,就是国家高层领导开始重视信息安全工作,并为此出台了一系列重要政策和措施。 纵观多年的安全发展史,我们不难发现,其实一直都是安全在被动局面下的转变过程。面对安全威胁的层出不穷,想做到安全的主动防御是相当困难的,因此必须保持这种动态发展规则,了解安全本身的发展和变化,才能采取正确的对策。 1.1.3 Web安全的发展现状 “没有网络安全就没有国家安全”。可以看出,网络安全已经全面渗透到政治、经济、文化等领域。高度重视网络安全力量建设已经成为维护网络空间主权、安全和发展利益的必由之路。 随着各行各业信息化的不断推进,互联网的不安全因素也在逐日扩张,病毒木马、垃圾邮件、间谍软件等也在困扰着所有网络用户,这也让企业认识到网络安全的重要性。然而在网络安全产品的选择上,很多企业却显得无所适从,因为目前的网络安全市场正可谓是群雄并起、各成一家。这一现象表明,目前的网络安全市场似乎还未走上成熟。 尽管网络安全产品市场错综复杂,但是网络安全市场的增长是有目共睹的。从国内市场上看,由于目前网络安全行业还未出现领导者,专业公司比较少,整个行业呈现一片蓬勃的生机。另外,网络安全核心技术具有的较大的不可模仿性,使得行业从整体上看仍然属于卖方市场,这也是目前 Web安全的发展现状。 1.2 什么是 Web渗透测试 Web渗透测试是一把双刃剑,它可以成为网络管理员和安全工作者保护网络安全的重要实施方案,也可以成为攻击者手中的一种破坏性极强的攻击手段。因此,作为网络管理员和安全工作者要想保障网络的安全,就必须了解和掌握 Web渗透测试的实施步骤与各种攻击方式。 1.2.1.认识 Web渗透测试 Web渗透测试主要是对 Web应用程序和相应的软硬件设备配置的安全性进行测试,是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试能够直观地让管理人员知道自己网络所面临的问题。 进行 Web渗透测试的安全人员必须遵循一定的渗透测试准则,不能对被测系统进行破坏活动。 Web安全渗透测试一般是经过客户授权的。 1.2.2 Web渗透测试的分类 实际上, Web渗透测试并没有严格的分类方式,但根据实际应用,普遍认同的几种分类方法如下: 1. 根据渗透方法分类 根据渗透方法进行分类,渗透测试 /攻击可分为以下两类。 (1)黑盒(Black Box)渗透 黑盒( Black Box)渗透测试又被称为 zero-knowledge testing,渗透者完全处于对目标网络系统一无所知的状态,通常这类测试,只能通过 DNS、Web、E-mail等网络对外公开提供的各种服务器,进行扫描探测,从而获得公开的信息,以决定渗透的方案与步骤。 (2)白盒(White Box)渗透 白盒( White Box)渗透测试又被称为“结构测试”,渗透测试人员可以通过正常渠道,向请求测试的机构获取目标网络系统的各种资料,包括用户账号和密码、操作系统类型、服务器类型、网络设备型号、网络拓扑结构、代码等信息,这与黑盒渗透测试相反。 2. 根据渗透测试目标分类 根据渗透测试目标分类,渗透测试又可分为以下几种。 (1)主机操作系统渗透 对目标网络中的 Windows、Linux、 UNIX等不同操作系统主机进行渗透测试。 (2)数据库系统渗透 对 MS-SQL、Oracle、MySQL、 INFORMIX、SYBASE、DB2等数据库系统进行渗透测试,这通常是对网站的入侵渗透过程而言的。 (3)网站程序渗透 渗透的目标网络系统都对外提供了 Web网页、 E-mail邮箱等网络程序应用服务,这是渗透者打开内部渗透通道的重要途径。 (4)应用系统渗透 对渗透目标提供的各种应用,如 ASP、CGI、JSP、PHP等组成的 WWW应用进行渗透测试。 (5)网络设备渗透 对各种硬件防火墙、入侵检测系统、路由器和交换机等网络设备进行渗透测试。此时,渗透者通常已入侵进入内部网络中。 3. 按网络环境分类 按照渗透者发起渗透攻击行为所处的网络环境来分,渗透测试可分为下面两类。 (1)外网测试 外网测试指的是渗透测试人员完全处于目标网络系统之外的外部网络,模拟对内部状态一无所知的外部攻击者的行为。渗透者需要测试的内容包括:对网络设备的远程攻击、口令管理安全性测试、防火墙规则试探和规避、 Web及其他开放应用服务等。 (2)内网测试 内网测试指的是渗透测试人员由内部网络发起的渗透测试,这类测试能够模拟网络内部违规操作者的行为。同时,渗透测试人员已处于内网之中,绕过了防火墙的保护。因此,渗透控制的难度相对已减少了许多,各种信息收集与渗透实施更加方便,经常采用的渗透方式为:远程缓冲区溢出、口令猜测,以及 B/S或 C/S应用程序测试等。 1.2.3 渗透攻击与普通攻击的不同 渗透攻击与普通攻击的不同在于:普通的攻击只是单一类型的攻击;渗透攻击则与此不同,它是一种系统渐进型的综合攻击方式,其攻击目标是明确的,攻击目的往往不那么单一,危害性也非常严重。 例如,在普通的攻击事件中,攻击者可能仅仅是利用目标网络的 Web服务器漏洞,入侵网站更改网页,或者在网页上挂马。也就是说,这种攻击是随机的,而其目的也是单一而简单的。 在渗透入侵攻击的过程中,攻击者会有针对性地对某个目标网络进行攻击,以获取其内部的商业资料,进行网络破坏等。其实施攻击的步骤是非常系统的,假设其获取了目标网络中网站服务器的权限,则不会仅满足于控制此台服务器,而是会利用此台服务器,继续入侵目标网络,获取整个网络中所有主机的权限。 另外,为了实现渗透攻击,攻击者采用的攻击方式绝不仅限于一种简单的 Web脚本漏洞攻击,而是会综合运用远程溢出、木马攻击、密码破解、嗅探、 ARP欺骗等多种攻击方式,逐步控制网络。 总之,渗透攻击与普通攻击相比,渗透攻击具有攻击目的明确性、攻击手段多样性和综合性等特点。 1.3 Web应用程序概述 Web应用程序是一种利用网络浏览器和网络技术在互联网上执行任务的计算机程序。本节就来介绍什么是 Web应用程序。 1.3.1 认识 Web应用程序 Web应用程序使用服务器端脚本(PHP和 ASP)的组合来处理信息的存储和检索,并使用客户端脚本( JavaScript和 HTML)将信息呈现给用户。常见的 Web应用程序有在线表单、内容管理系统、购物车等,通过这些应用程序可以与公司互动。此外,这些应用程序还允许用户创建文档、共享信息、协作项目以及在共同的文档上工作,而不受地点或设备的限制。 Web应用程序通常用浏览器支持的语言(例如 JavaScript和 HTML)来编写,因为这些语言依赖浏览器来呈现程序可执行文件。一些应用程序是动态的,需要服务器端处理,一些应用程序则完全是静态的,无须在服务器上进行任何处理。 通常情况下, Web应用程序需要一个 Web服务器来管理来自客户端的请求,一个应用服务器来执行所请求的任务,有时还需要一个数据库来存储信息。 下面是一个典型的 Web应用程序使用流程。 (1)用户通过网络浏览器或应用程序的用户界面,通过互联网触发对网络服务器的请求。 (2)Web服务器将此请求转发到适当的 Web服务器。 (3)Web服务器执行请求任务(例如查询数据库、处理数据),然后生成请求数据的结果。 (4)Web服务器将处理后的数据或请求的信息或已处理过的数据发送到 Web服务器。 (5)Web服务器用所请求的信息响应客户端,该信息随后出现在用户的显示屏上。 总之, Web应用程序的真正核心主要是用户的业务需求和对数据库进行处理,比如管理信息系统( Management Information System,MIS)就是这种架构最典型的应用。 1.3.2 Web应用程序的好处 使用 Web应用程序的好处如下: (1)只要浏览器兼容, Web应用程序可以在多个平台上运行,不受操作系统或设备的影响。 (2)所有用户都访问同一版本,消除了所有兼容性问题。 (3)Web应用程序并未安装在硬盘驱动器上,因此消除了空间限制。 (4)Web应用程序降低了企业和最终用户的成本,因为企业所需的支持和维护更少,对最终用户的计算机的要求也更低。 1.4  Web应用程序的组件及架构 Web应用程序架构展示了包含所有组件(例如数据库、应用程序和中间件)以及它们如何相互交互的布局。它定义了数据如何通过 HTTP传递,并确保客户端服务器和后端服务器能够理解。 1.4.1 Web应用程序架构组件 Web 应用程序架构确保所有用户请求中都存在有效数据,它创建和管理记录,同时提供基于权限的访问和身份验证。 通常,基于 Web的应用程序架构包括三个核心组件。 (1)Web浏览器:浏览器或客户端组件或前端组件是与用户交互、接收输入并管理表示逻辑同时控制用户与应用程序交互的关键组件。如果需要,也会验证用户输入。 (2)Web服务器: Web服务器也称为后端组件或服务器端组件,通过将请求路由到正确的组件并管理整个应用程序操作来处理业务逻辑和用户请求。它可以运行和监督来自各种客户端的请求。 (3)数据库服务器:数据库服务器为应用程序提供所需的数据,它处理与数据相关的任务。 1.4.2 Web应用程序架构的类型 Web应用程序的体系结构可以根据软件开发和部署模式分为不同的类别。下面介绍几种常见的 Web应用程序架构类型。 1. 单体架构 单体架构是一种传统的软件开发模型,也称为 Web开发架构。整个软件开发为通过传统瀑布模型的单个代码。这意味着所有组件都是相互依赖和互连的,并且每个组件都需要运行应用程序。要更改或更新特定功能,需要更改要重写和编译的整个代码。 由于单体架构将整个代码视为一个程序,因此构建新项目、应用框架、脚本、模板和测试变得简单易行,部署也很容易。但是,随着代码越来越大,管理或更新变得困难。即使是很小的变化,也需要经历 Web 开发架构的整个过程。由于每个元素都是相互依赖的,因此扩展应用程序并不容易。此外,单体架构不可靠,因为单点故障可能会导致应用程序崩溃。 2. 微服务架构 微服务架构解决了单体环境中遇到的几个挑战。在微服务架构中,每个微服务都包含自己的数据库并运行特定的业务,这意味着用户可以轻松开发和部署独立的服务。微服务架构提供了更新、修改和扩展独立服务的灵活性,这使得开发变得简单高效,对于高度可扩展和复杂的应用程序,微服务是一个不错的选择。 微服务架构也有缺点,在运行时部署多个服务是一项挑战。当服务数量增加时,管理它们的复杂性也会增加。此外,微服务应用程序共享分区数据库。这意味着用户需要确保受事务影响的多个数据库之间的一致性。 3. 集装箱架构 集装箱架构也被称为容器技术,它是部署微服务的最佳选择。容器是对可以在计算机或虚拟机上运行的应用程序的轻量级运行环境的封装。因此,应用程序在从开发人员设备到生产环境的一致环境中运行。通过在操作系统级别抽象执行,容器化允许用户在单个操作系统实例中运行多个容器。在减少开销和提升处理能力的同时,它也提高了效率。 4. 无服务器架构 无服务器架构是开发软件应用程序的模型。在此结构中,底层基础设施的供应由基础设施服务提供商管理。这意味着用户只需为使用中的基础架构付费,而不是为空闲 CPU时间或未使用的空间付费。 无服务器计算降低了成本,因为资源仅在应用程序执行时使用。缩放任务由云提供商处理。此外,后端代码得到简化,这样减少了开发工作和成本,并缩短了上市时间。常见的多媒体处理、直播、聊天机器人、物联网传感器消息等都是无服务器计算的一些应用实例。 1.5 渗透测试的流程 一般情况下,黑客在实施渗透攻击的过程中,多数采用的是从外部网络环境发起的非法的黑盒测试,对攻击的目标往往是一无所知。因此,这时就需要先采用各种手段来收集攻击目标的详细信息,然后通过获取的信息制定渗透入侵的方案,从而打开进入内网的通道,最后再通过提升权限进而控制整个目标网络,完成渗透攻击。如图 1-4所示为攻击者渗透入侵的几个阶段。 图 1-4 渗透入侵的几个阶段 1. 收集并分析信息、制定渗透入侵方案 信息的收集是非常重要的,它决定了 攻击者是否能准确地定位目标网络系统安全防线上的漏洞。攻击者所收集的一切信息,一般都是目标系统中的一些小小的漏洞、开放的端口等。 (1)信息收集 信息收集主要分为以下几类。 ●边缘信息收集 在这一过程中获取的信息内容和方式主要是目标网络系统中的一些边缘信息,如目标网络系统公司的结构、各部门职能、内部员工账号组成、邮件联系地址、 QQ或 MSN号码、各种社交网络账号与信息等。 ●网络信息收集 在这一过程中需要收集目标网络的各种网络信息,所使用的手段包括 Google Hacking、WHOIS查询、 DNS域名查询和网络扫描器等。 网络信息收集的最终目的是获取目标网络拓扑结构、公司网络所在区域、子公司 IP地址分布、 VPN接入地址、各种重要服务器的分布、网络连接设备等信息。 ●端口 /服务信息收集 在这一过程中,攻击者会利用各种端口服务扫描工具,来扫描目标网络中对外提供服务的服务器,查询服务器上开放的各种服务,如 Web、FTP、MySQL、SNMP等服务。 (2)漏洞扫描 通过上述的信息收集,在获得目标网络各服务器开放的服务之后,就可以对这些服务进行重点扫描,扫出其所存在的漏洞。 常用的扫描工具主要有:针对操作系统漏洞扫描的工具,包括 X-Scan、ISS、 Nessus、SSS、Retina等;针对 Web网页服务的扫描工具,包括 SQL扫描器、文件 PHP包含扫描器、上传漏洞扫描工具,以 及各种专业全面的扫描系统,如 AppScan、 Acunetix Web Vulnerability Scanner等;针对数据库的扫描工具,包括 Shadow Database Scanner、NGSSQuirreL以及 SQL空口令扫描器等。另外,许多入侵者或渗透测试员也有自己的专用扫描器,其使用更加个性化。 (3)制订渗透方案 在获取了全面的网络信息并查询到远程目标网络中的漏洞后,攻击者就可以开始制订渗透攻击的方案了。入侵方案的制订,不仅要考虑到各种安全漏洞设置信息,更重要的是利用网络管理员心理上的安全盲点,制订攻击方案。 2. 寻找突破口,进入内部网络 渗透攻击者可以结合上面扫描获得的信息,来确定自己的突破方案。例如,针对网关服务器进行远程溢出,或者是从目标网络的 Web服务器入手,也可以针对网络系统中的数据库弱口令进行攻击等。寻找内网突破口,常用的攻击手法有: ● 利用系统或软件漏洞进行的远程溢出攻击; ● 利用系统与各种服务的弱口令攻击; ● 对系统或服务账号的密码进行暴力破解; ● 采用 Web脚本入侵、木马攻击。 最常用的两种手段是 Web脚本入侵和木马攻击。攻击者可以通过邮件、通信工具或挂马等方式,将木马程序绕过网关的各种安全防线,发送到内部诈骗执行,从而直接获得内网主机的控制权。 3. 纵向提升权限,获取目标主机的最高控制权 通过上面的步骤,攻击者可能已成功入侵目标网络系统对外的服务器,或者内部某台主机,但是这对于进一步的渗透攻击来说还是不够。例如,攻击者入侵了某台 Web服务器,上传了 Webshell控制网站服务器,但是却没有权限安装各种木马后门,或运行一些系统命令,此时就需要提升自己的权限,从而完全获得主机的最高控制权。有关提升权限的方法会在以后的章节中介绍,这里不做详细的说明。 4. 绕过防火墙等,突破内网环境限制 在对内网进行渗透入侵之前,攻击者还需要突破各种网络环境限制,例如网络管理员在网关设置了防火墙,从而导致无法与攻击目标进行连接等。突破内网环境限制所涉及的攻击手段多种多样,如防火墙杀毒软件的突破、代理的建立、账号后门的隐藏破解、 3389远程终端的开启和连接等。 其中最重要的一点是如何利用已控制的主机,连接攻击其他内部主机。采用这种方式的原因是目标网络内的主机是无法直接进行连接的,因此攻击者往往会使用代理反弹连接到外部主机,将已入侵的主机作为跳板,利用远程终端进行连接入侵控制。 5. 内网信息扫描和收集 在成功完成上述步骤后,攻击者就完全控制了网关或内部的某台主机,并且拥有了对内网主机的连接通道,这时就可以对目标网络的内部系统进行渗透入侵了。但是,在进行渗透攻击前,同样需要进行各种信息的扫描和收集,尽可能地获得内网的各种信息。例如:当获取了内网网络分布结构信息,就可以确定内网中最重要的关键服务器,然后对重要的服务器进行各种扫描,寻找其漏洞,以确定进一步的入侵控制方案。 6. 横向提升权限,获取整个网络的控制权 经过上述的操作步骤,攻击者虽然获得了当前主机的最高系统控制权限,然而 第1章 Web渗透测试快速入门 当前的主机在整个内部网络中的可能仅仅是一台无关紧要的客服主机,那么,攻击者要想获取整个网络的控制权,就必须横向提升自己在网络中的权限。 在横向提升自己在网络中的权限时,往往需要考虑到内网中的网络结构,确定合理的提权方案。例如:对于小型的局域网,可以采用嗅探的方式获得域管理员的账号密码,也可以直接采用远程溢出的方式获得远程主机的控制权限。对于大型的内部网络,攻击者可能还需要攻击内部网络设备,如路由器、交换机等。 总之,横向提升自己在网络中的权限,所用到的攻击手段,依旧是远程溢出、嗅探、密码破解、 ARP欺骗、会话劫持和远程终端扫描破解连接等。 7. 渗透入侵成功 攻击者在获得内网管理员的控制权后,整个网络就在自己的掌握之中了,渗透入侵成功。 1.6 实战演练 1.6.1 实战 1:查找 IP地址与 MAC地址 在互联网中,一台主机只有一个 IP地址,因此,黑客要想攻击某台主机,必须找到这台主机的 IP地址,然后才能进行入侵攻击,可以说找到 IP地址是黑客实施入侵攻击的一个关键。 1. IP地址 使用 ipcon.g命令可以获取本地计算机的 IP地址和物理地址,具体的操作步骤如下。 Step 01右击“开始”按钮,在弹出的快捷菜单中执行“运行”命令,如图 1-5所示。 图 1-5 “运行”菜单 Step 02打开“运行”对话框,在“打开”后面的文本框中输入“cmd”命令,如图 1-6所示。 图 1-6 输入“cmd”命令 Step 03单击“确定”按钮,打开“命令提示符”窗口,在其中输入 ipcon.g,按 Enter键,即可显示出本机的 IP配置相关信息,如图 1-7所示。 图 1-7 查看 IP地址 提示:在“命令提示符”窗口中, 192.168.3.9表示本机在局域网中的 IP地址。 2. MAC地址 MAC地址是在媒体接入层上使用的地址,也称为物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。MAC地址与网络无关,也即无论将带有这个地址的硬件(如网卡、集线器、路由器等)接入网络的何处, MAC地址都是相同的,它由厂商写在网卡的 BIOS里。 MAC地址通常表示为 12个十六进制数,每两个十六进制数之间用“ -”隔开,如 08-00-20-0A-8C-6D就是一个 MAC地址。在“命令提示符”窗口中输入 ipcon.g /all命令,然后按 Enter键,可以在显示的结果中看到一个物理地址: 00-23-24-DA-43-8B,这就是用户自己的计算机的网卡地址,它是唯一的,如图 1-8所示。 图 1-8 查看 MAC地址 注意: IP地址与 MAC地址的区别在于:IP地址基于逻辑,比较灵活,不受硬件限制,也容易记忆。MAC地址在一定程度上与硬件一致,基于物理,能够具体标识。这两种地址均有各自的长处,使用时也因条件不同而采用不同的地址。 1.6.2 实战2:获取系统进程信息 在 Windows 10系统中,可以在 “Windows任务管理器”窗口中获取系统进程。具体的操作步骤如下: Step 01在 Windows 10系统桌面中,单击 “开始”按钮,在弹出的菜单列表中选择 “任务管理器”菜单命令,如图 1-9所示。 图 1-9 “任务管理器”菜单命令 Step 02打开“任务管理器”窗口,在其中即可看到当前系统正在运行的进程,如图 1-10所示。 图 1-10 “任务管理器”窗口 提示:通过在 Windows 10系统桌面上,按 Ctrl+Del+Alt组合键,在打开的工作界面中单击“任务管理器”链接,也可以打开“任务管理器”窗口,在其中查看系统进程。 第2章 搭建Web渗透测试环境 第2章 搭建Web渗透测试环境 安全测试环境是安全工作者需要了解和掌握的内容。对于 Web安全初学者来说,在学习过程中需要找到符合条件的目标计算机,并进行模拟攻击,这就需要通过搭建 Web安全测试环境来解决这个问题。本章就来介绍 Web渗透测试环境的搭建。 2.1 认识安全测试环境 所谓安全测试环境就是在已存在的一个系统中,利用虚拟机工具创建出的一个内在的虚拟系统,也被称作为安全测试环境。该系统与外界独立,但与已存在的系统建立有网络关系,该系统中可以进行测试和模拟黑客入侵方式。 2.1.1 什么是虚拟机软件 虚拟机软件是一种可以在一台计算机上模拟出很多台计算机的软件,而且每台计算机都可以运行独立的操作系统,且不相互干扰,实现了一台“计算机”运行多个操作系统的功能,同时还可以将这些操作系统连成一个网络。 常见的虚拟机软件有 VMware和 Virtual PC两种。 VMware是一款功能强大的桌面虚拟计算机软件,支持在主机和虚拟机之间共享数据,支持第三方预设置的虚拟机和镜像文件,而且安装与设置都非常简单。 Virtual PC具有最新的 Microsoft虚拟化技术。用户可以使用这款软件在同一台计算机上同时运行多个操作系统,操作起来非常简单,用户只需单击一下,便可直接在计算机上虚拟出 Windows环境,在该环境中可以同时运行多个应用程序。 2.1.2 什么是虚拟系统 虚拟系统就是在现有操作系统的基础上,安装一个新的操作系统或者虚拟出系统本身的文件,该操作系统允许在不重启计算机的基础上进行切换。 创建虚拟系统的好处有以下几种。 (1)虚拟技术是一种调配计算机资源的方法,可以更有效、更灵活地提供和利用计算机资源,降低成本,节省开支。 (2)在虚拟环境里更容易实现程序自动化,有效地减少了测试要求和应用程序的兼容性问题,在系统崩溃时更容易实施恢复操作。 (3)虚拟系统允许跨系统进行安装,如:在 Windows 10的基础上可以安装 Linux操作系统。 2.2 安装与创建虚拟机 使用虚拟机构建渗透测试环境是一个非常好的选择,本节介绍安装与创建虚拟机的方法。 2.2.1 下载虚拟机软件 虚拟机使用之前,需要从官网上下载虚拟机软件 VMware,具体的操作步骤如下: Step 01使用浏览器打开虚拟机官方网站 https: //www.vmware.com/products/workstation-pro/ Step 02单击“下一步”按钮,进入“最终用workstation-pro-evaluation.html,进入虚拟户许可协议”窗口,勾选“我接受许可协机软件下载页面,如图 2-1所示。议中的条款”复选框,如图 2-4所示。 图 2-1 虚拟机软件下载页面 在下载页面找到“Workstation 17 Pro for Windows”对应选项,单击下方的 “DOWNLOAD NOW”超链接,开始下载,如图 2-2所示。 图 2-4 “最终用户许可协议”窗口 Step 03单击“下一步”按钮,进入“自定义安装”窗口,在其中可以更改安装路径,也可以保持默认,如图 2-5所示。 图 2-2 开始下载 2.2.2 安装虚拟机软件 虚拟机软件下载完成后,接下来就可以安装了。安装虚拟机的具体操作步骤如下: Step 01双击下载的 VMware安装软件,进入 “欢迎使用 VMware Workstation Pro安装向导”窗口,如图 2-3所示。 图 2-5 “自定义安装”窗口 Step 04单击“下一步”按钮,进入“用户体验设置”窗口,这里采用系统默认设置,如图 2-6所示。 图 2-3 “安装向导”窗口 图 2-6 “用户体验设置”窗口 第2章 搭建Web渗透测试环境 Step 05单击“下一步”按钮,进入“快捷方式”窗口,在其中可以创建用户快捷方式,这里保持默认设置,如图 2-7所示。 图 2-9 “VMware Workstation Pro安装向导已完成”窗口 图 2-10 重新启动系统 2.2.3 创建虚拟机系统 图 2-7 “快捷方式”窗口 Step 06单击“下一步”按钮,进入“已准备好安装 VMware Workstation Pro”窗口,开始准备安装虚拟机软件,如图 2-8所示。 图 2-8 “已准备好安装 VMware Workstation Pro”窗口 Step 07单击“安装”按钮,等待一段时间后虚拟机便可以安装完成,并进入“VMware Workstation Pro安装向导已完成”窗口,单击“完成 ”按钮,关闭虚拟机安装向导,如图 2-9所示。 Step 08虚拟机安装完成后,重新启动系统后,才可以使用虚拟机,至此,便完成了 VMware虚拟机的下载与安装,如图 2-10所示。 安装完虚拟机以后,就需要创建一台真正的虚拟机,为后续的测试系统做准备。创建虚拟机的具体操作步骤如下: Step 01双击桌面安装好的 VMware虚拟机图标,打开 VMware虚拟机软件,如图 2-11所示。 图 2-11 VMware虚拟机软件 Step 02单击“创建新的虚拟机”按钮,进入 “新建虚拟机向导”对话框,在其中选中 “自定义”单选按钮,如图 2-12所示。 Step 05单击“下一步”按钮,进入“选择 客户机操作系统”对话框,在其中选中 “Linux”单选按钮,如图 2-15所示。 图 2-12 “新建虚拟机向导”对话框 Step 03单击“下一步”按钮,进入“选择虚拟机硬件兼容性”对话框,在其中设置虚拟机的硬件兼容性,这里采用默认设置,如图 2-13所示。 图 2-15 “选择客户机操作系统”对话框 Step 06单击“版本”下方的下拉按钮,在弹出的下拉列表中选择“其他 Linux 5.x内核 64位”版本系统,这里的系统版本与主机系统版本无关,可以自由选择,如图 2-16所示。 图 2-13 “选择虚拟机硬件兼容性”对话框 Step 04单击“下一步”按钮,进入“安装客户机操作系统”对话框,在其中选中“稍后安装操作系统”单选按钮,如图 2-14所示。 图 2-16 选择系统版本 Step 07单击“下一步”按钮,进入“命名 虚拟机”对话框,在“虚拟机名称”文本框中输入虚拟机名称,在“位置”中选择一个存放虚拟机的磁盘位置,如图 2-17所示。 图 2-14 “安装客户机操作系统”对话框 Step 08单击“下一步”按钮,进入“处理器 配置”对话框,在其中选择处理器数量,一般普通计算机都是单处理,所以这里不用设置,处理器内核数量可以根据实际处理器内核数量设置,如图 2-18所示。 图 2-17 “命名虚拟机”对话框 图 2-18 “处理器配置”对话框 Step 09单击“下一步”按钮,进入“此虚拟机的内存”对话框,根据实际主机进行设置,最少内存不要低于 768MB,这里选择 2048MB(即 2GB)内存,如图 2-19所示。 第2章 搭建Web渗透测试环境 Step 10单击“下一步”按钮,进入“网络类型”对话框,这里选中“使用网络地址转换( NAT)”单选按钮,如图 2-20所示。 图 2-20 “网络类型”对话框 Step 11单击“下一步”按钮,进入“选择 I/O控制器类型 ”对话框,这里选中 “ LSI Logic”单选按钮,如图 2-21所示。 图 2-21 “选择 I/O控制器类型”对话框 Step 12单击“下一步”按钮,进入“选择磁盘类型”对话框,这里选中“ SCSI”单选按钮,如图 2-22所示。 图 2-19 “此虚拟机的内存”对话框 图 2-22 “选择磁盘类型”对话框 Step 13单击“下一步”按钮,进入“选择 磁盘”对话框,这里选中“创建新虚拟磁盘”单选按钮,如图 2-23所示。 图 2-23 “选择磁盘”对话框 下一步”按钮,进入“指定磁 盘容量”对话框,这里最大磁盘大小设置 8GB空间即可,选中“将虚拟磁盘拆分成多个文件”单选按钮,如图 2-24所示。 图 2-24 “指定磁盘容量”对话框 图 2-25 “指定磁盘文件”对话框 图 2-26 “已准备好创建虚拟机”对话框 Step 15单击“下一步”按钮,进入“指定磁盘文件”对话框,这里保持默认即可,如图 2-25所示。 Step 16单击“下一步”按钮,进入“已准备好创建虚拟机”对话框,如图 2-26所示。 Step 17单击“完成”按钮,至此,便创建了一个新的虚拟机,如图 2-27所示,这当中的硬件配置,可以根据实际需求再进行更改。 图 2-27 创建新虚拟机 2.3 安装 Kali Linux操作系统 现实中组装好计算机以后需要给它安装一个系统,这样计算机才可以正常工作,虚拟机也一样,同样需要安装一个操作系统。本节介绍如何安装 Kali操作系统。 第2章 搭建Web渗透测试环境 2.3.1 下载 Kali Linux系统 Kali Linux是基于 Debian的 Linux发行版,设计用于数字取证操作系统。下载 Kali Linux系统的具体操作步骤如下: Step 01在浏览器中输入 Kali Linux系统的网址 https://www.kali.org,打开 Kali官方网站,如图 2-28所示。 图 2-28 Kali官方网站 单击 “Downloads”菜单,在弹出的菜单列表中选择 Kali Linux版本,如图 2-29所示。 图 2-29 选择 Kali Linux版本 Step 03单击“”按钮,即可开始下载 Kali Linux,并显示下载进度,如图 2-30所示。 图 2-30 下载进度 2.3.2 安装 Kali Linux系统 架设好虚拟机并下载好 Kali Linux系统后,接下来便可以安装 Kali Linux系统了。安装 Kali Linux系统的具体操作步骤如下: Step 01打开安装好的虚拟机,单击“CD/ DVD”选项,如图 2-31所示。 图 2-31 选择“CD/DVD”选项 Step 02在打开的“虚拟机设置”页面中选中“使用 ISO映像文件 ”单选按钮,如图 2-32所示。 图 2-32 “虚拟机设置”对话框 Step 03单击“浏览”按钮,打开“浏览 ISO映像”对话框,在其中选择下载好的系统映像文件,如图 2-33所示。 图 2-33 “浏览 ISO映像”对话框 Step 04单击“打开”按钮,返回到虚拟机设置页面,单击 “开启此虚拟机 ”选项,便可以启动虚拟机,如图 2-34所示。 Step 05启动虚拟机后会进入启动选项页面,用户可以通过键盘上下键选择“ Graphical install”选项,如图 2-35所示。 Step 06选择完毕后,按 Enter键,进入语言选择页面,这里选择“中文(简体)”选项,如图 2-36所示。 Step 07单击 Continue按钮,进入选择语言确认页面,保持系统默认设置,如图 2-37所示。 图 2-35 选择“Graphical install”选项 图 2-36 语言选择页面 图 2-37 语言确认页面 Step 08单击“继续”按钮,进入“请选择您的区域”页面,它会自动上网匹配,即 第2章 搭建Web渗透测试环境 使不正确也没有关系,系统安装完成后还可以调整,这里保持默认设置,如图 2-38所示。 图 2-40 安装基本系统界面 图 2-38 “请选择您的区域”页面 Step 09单击“继续”按钮,进入“配置键盘”页面,同样系统会根据语言选择来自行匹配,这里保持默认设置,如图 2-39所示。 图 2-39 “配置键盘”页面 Step 10单击“继续”按钮,按照安装步骤的提示就可以完成 Kali Linux系统的安装了。如图 2-40所示为安装基本系统界面。 Step 11系统安装完成后,会提示用户重启进入系统,如图 2-41所示。 图 2-41 安装完成 Step 12按 Enter键,安装完成后重启,进入 “用户名 ”页面,在其中输入 root管理员账号与密码,如图 2-42所示。 图 2-42 “用户名”页面 Step 13单击“登录”按钮,至此便完成了整个 Kali Linux系统的安装工作,如图 2-43所示。 图 2-43 Kali Linux系统页面 2.3.3 更新 Kali Linux系统 初始安装的 Kali系统如果不及时更新是无法使用的,下面介绍更新 Kali系统的方法与步骤。 Step 01双击桌面上 Kali系统的终端黑色图标,如图 2-44所示。 图 2-44 Kali系统图标 Step 02打开 Kali系统的终端设置界面,在其中输入命令“apt update”,然后按 Enter键,即可获取需要更新软件的列表,如图 2-45所示。 图 2-45 需要更新软件的列表 Step 03获取完更新列表,如果有需要更新的 软件,可以运行“apt upgrade”命令,如图 2-46所示。 图 2-46 “apt upgrade”命令 Step 04运行命令后会有一个提示,此时按 Y键,即可开始更新,更新中状态如图 2-47所示。 图 2-47 开始更新 注意:由于网络原因可能需要多执行几次更新命令,直至更新完成。 如果个别软件已经安装,存在升级版本问题,如图 2-48所示。这时,可以先卸载旧版本,运行“ apt-get remove <软件名 >”命令,如图 2-49所示,此时按 Y键即可卸载。 图 2-48 升级版本问题 图 2-49 卸载旧版本 第2章 搭建Web渗透测试环境 卸载完旧版本后,可以运行“ apt-get install <软件名 >”命令,如图 2-50所示,此时按 Y键即可开始安装新版本。 图 2-50 安装新版本 最后,再次运行“ apt upgrade”命令,如果显示无软件需要更新,此时系统更新完成,如图 2-51所示。 图 2-52 VMware虚拟机软件 图 2-51 系统更新完成 2.4 安装 Windows系统 在虚拟机中安装 Windows操作系统是搭建网络安全测试环境最重要的步骤,本节介绍如何在虚拟机中安装 Windows操作系统。 2.4.1 安装 Windows操作系统 所有准备工作就绪后,接下来就可以在虚拟机中安装 Windows操作系统了,具体操作步骤如下: 图 2-53 “新建虚拟机向导”对话框 Step 03单击“下一步”按钮,进入“选择虚拟机硬件兼容性”对话框,在其中设置虚拟机的硬件兼容性,这里采用默认设置,如图 2-54所示。 Step 01双击桌面安装好的 VMware虚拟机图 标,打开 VMware虚拟机软件,如图 2-52所示。 Step 02单击“创建新的虚拟机”按钮,进入 “新建虚拟机向导”对话框,在其中选中 “自定义”单选按钮,如图 2-53所示。 图 2-54 “选择虚拟机硬件兼容性”对话框 Step 04单击“下一步”按钮,进入“安装客户机操作系统”对话框,在其中选中“稍后安装操作系统”单选按钮,如图 2-55所示。 图 2-55 “安装客户机操作系统”对话框 Step 05单击“下一步”按钮,进入“选择客户机操作系统”对话框,在其中选中 “Microsoft Windows(W)”单选按钮,如图 2-56所示。 图 2-56 “选择客户机操作系统”对话框 Step 06单击“版本”下方的下拉菜单,在弹出的下拉列表中选择“Windows 10 x64”版本系统,这里的系统版本与主机系统版本无关,可以自由选择,如图 2-57所示。 图 2-57 选择系统版本 Step 07单击“下一步”按钮,进入“命名虚拟机”对话框,在“虚拟机名称”文本框中输入虚拟机名称,在“位置”中选择一个存放虚拟机的磁盘位置,如图 2-58所示。 图 2-58 “命名虚拟机”对话框 Step 08单击“下一步”按钮,进入“处理器配置”对话框,在其中选择处理器数量,一般普通计算机都是单处理,所以这里不用设置,处理器内核数量可以根据实际处理器内核数量设置,如图 2-59所示。 Step 09单击“下一步”按钮,进入“此虚拟机的内存”对话框,根据实际主机进行 第2章 搭建Web渗透测试环境 设置,最少内存不要低于 768MB,这里 Step 11单击“下一步”按钮,进入“选择 I/O 选择 1024MB(即 1GB)内存,如图 2-60 控制器类型 ”对话框,这里选中 “ LSI 所示。 Logic SAS”单选按钮,如图 2-62所示。 图 2-59 “处理器配置”对话框 图 2-62 “选择 I/O控制器类型”对话框 Step 12单击“下一步”按钮,进入“选择磁盘类型 ”对话框,这里选中 “ NVMe”单选按钮,如图 2-63所示。 Step 10单击“下一步”按钮,进入“网络类型”对话框,这里选中“使用网络地址转换( NAT)”单选按钮,如图 2-61所示。 Step 13单击“下一步”按钮,进入“选择磁盘”对话框,这里选中“创建新虚拟磁盘”单选按钮,如图 2-64所示。 Step 14单击“下一步”按钮,进入“指定磁盘容量”对话框,这里最大磁盘大小设置 60GB空间即可,选中 “将虚拟盘拆分成多 图 2-60 “此虚拟机的内存”对话框 图 2-63 “选择磁盘类型”对话框 图 2-61 “网络类型”对话框 个文件”单选按钮,如图 2-65所示。 图 2-64 “选择磁盘”对话框图 2-67 “已准备好创建虚拟机”对话框 Step 17单击“完成”按钮,至此,便创建了一个新的虚拟机,如图 2-68所示,这当中的硬件配置,可以根据实际需求再进行更改。 图 2-65 “指定磁盘容量”对话框 Step 15单击“下一步”按钮,进入“指定磁盘文件”对话框,这里保持默认即可,如图 2-66所示。 图 2-68 创建新虚拟机 Step 18单击“开启此虚拟机”链接,稍等片刻,Windows 10操作系统进入安装过渡窗口,如图 2-69所示。 图 2-69 安装过渡窗口 图 2-66 “指定磁盘文件”对话框 Step 16单击“下一步”按钮,进入“已准备好创建虚拟机”对话框,如图 2-67所示。 第2章 搭建Web渗透测试环境 Step 19按任意键,即可打开 Windows安装 Step 01启动虚拟机进入虚拟系统,然后按 程序运行界面,安装程序将开始自动复制Ctrl+Alt组合键,切换到真实的计算机系安装的文件并准备要安装的文件,如图 统,如图 2-72所示。 2-70所示。 图 2-70 准备要安装的文件 Step 20安装完成后,将显示安装后的操作系统界面。至此,整个虚拟机的设置创建即可完成,安装的虚拟操作系统以文件的形式存放在硬盘中,如图 2-71所示。 图 2-72 进入虚拟系统 注意:如果是用 ISO文件安装的操作系统,最好重新加载该安装文件并重新启动系统,这样系统就能自动找到 VMware Tools的安装文件。 Step 02执行“虚拟机” →“安装 VMware Tools”命令,此时系统将自动弹出安装文件,如图 2-73所示。 图 2-71 操作系统界面 2.4.2 安装 VMware Tools工具 安装好 Windows系统之后,还需要安装各种驱动,如显卡、网卡等驱动,作为虚拟机也需要安装一定的虚拟工具才能正常运行。安装 VMware Tools工具的操作步骤如下: 图 2-73 “安装 VMware Tools”命令 Step 03安装文件启动之后,将会弹出“欢迎使用 VMware Tools的安装向导”窗口,如图 2-74所示。 Step 04单击“下一步”按钮,进入“选择安装类型”窗口,根据实际情况选择相应的安装类型,这里选中“典型安装”单选按 Step 06单击“安装”按钮,进入“正在安 钮,如图 2-75所示。装 VMware Tools”窗口,在其中显示了 VMware Tools工具的安装状态,如图 2-77所示。 图 2-74 “欢迎使用 VMware Tools安装向导”窗口 图 2-77 “正在安装 VMware Tools”窗口 Step 07安装完成后,进入“VMware Tools安装向导已完成”窗口,如图 2-78所示。 图 2-75 “选择安装类型”窗口 Step 05单击“下一步”按钮,进入“已准备好安装 VMware Tools”对话框,如图 2-76所示。 图 2-78 “VMware Tools安装向导已完成”窗口 Step 08单击“完成”按钮,弹出一个信息提示框,要求必须重新启动系统,这样对 VMware Tools进行的配置更改才能生效,如图 2-79所示。 图 2-76 “已准备好安装 VMware Tools”窗口 图 2-79 信息提示框 第2章 搭建Web渗透测试环境 Step 09单击“是”按钮,系统即可自动启动,虚拟系统重新启动之后即可发现虚拟机工具已经成功安装,再次选择 “虚拟机 ”菜单命令,可以看到 “安装 VMware Tools”菜单命令变成了“重新安装 VMware Tools”菜单命令,如图 2-80所示。 图 2-80 “重新安装 VMware Tools”菜单命令 2.5 实战演练 2.5.1 实战1:显示系统文件的扩展名 Windows 10系统默认情况下并不显示文件的扩展名,用户可以通过设置显示文件的扩展名,具体操作步骤如下。 Step 01单击“开始”按钮,在弹出的“开始屏幕”中选择“文件资源管理器”选项,打开“文件资源管理器”窗口,如图 2-81所示。 图 2-81 “文件资源管理器”窗口 Step 02选择“查看”选项卡,在打开的功能区域中勾选 “显示 /隐藏”区域中的 “文件扩展名”复选框,如图 2-82所示。 图 2-82 “查看”选项卡 Step 03此时打开一个文件夹,用户便可以查看文件的扩展名,如图 2-83所示。 图 2-83 查看文件的扩展名 2.5.2 实战2:关闭开机多余启动项 在计算机启动的过程中,自动运行的程序称为开机启动项,有时一些木马程序会在开机时就运行。用户可以通过关闭开机启动项来提高系统安全性,具体的操作步骤如下。 Step 01按 Ctrl+Alt+Delete组合键,打开如图 2-84所示的界面。 图 2-84 “任务管理器”选项 Step 02单击“任务管理器”选项,打开“任务管理器”窗口,如图 2-85所示。 图 2-85 “任务管理器”窗口 Step 03选择“启动”选项卡,进入“启动”界面,在其中可以看到系统中的开机启动项列表,如图 2-86所示。 图 2-86 “启动”选项卡 Step 04选择开机启动项列表中需要禁用的启动项,单击 “禁用 ”按钮,即可禁止该启动项开机自启,如图 2-87所示。 图 2-87 禁止开机启动项 第3章 渗透测试中的DOS命令 第3章 渗透测试中的DOS命令 熟练掌握 DOS系统中常用的命令是进行渗透测试的基本功。只有熟悉和掌握了这些命令,才可以为日后进行网络渗透测试提供便利。本章介绍 Windows系统自带的 DOS命令。 3.1 进入 DOS窗口 Windows 10操作系统中的 DOS窗口,也被称为“命令提示符”窗口,该窗口主要以图形化界面显示,用户可以很方便地进入 DOS命令窗口。 3.1.1 使用菜单的形式进入 DOS窗口 Windows 10的图形化界面缩短了人与机器之间的距离,通过使用菜单可以很方便地进入 DOS窗口,具体的操作步骤如下: Step 01单击桌面上的“开始”按钮,在弹出的菜单列表中选择 “Windows”→“命令提示符”菜单命令,如图 3-1所示。 图 3-1 “命令提示符”菜单命令 Step 02弹出“管理员 :命令提示符”窗口,在其中可以执行相关 DOS命令,如图 3-2所示。 图 3-2 “管理员 :命令提示符”窗口 3.1.2 运用“运行”对话框进入 DOS窗口 除使用菜单的形式进入 DOS窗口,用户还可以运用“运行”对话框进入 DOS窗口,具体的操作步骤如下: Step 01在 Windows 10操作系统中,右击桌上的“开始”按钮,在弹出的快捷菜单中选择 “运行 ”菜单命令。随即弹出 “运行”对话框,在其中输入“cmd”命令,如图 3-3所示。 图 3-3 “运行”对话框 Step 02单击“确定”按钮,即可进入 DOS窗口,如图 3-4所示。 图 3-4 DOS窗口 3.1.3 通过浏览器进入 DOS窗口 浏览器和“命令提示符”窗口关系密切,用户可以直接在浏览器中访问 DOS窗口。下面以在 Windows 10操作系统下访问 DOS窗口为例,具体的方法为:在 Microsoft Edge浏览器的地址栏中输入 “c:\Windows\system32\cmd.exe”,如图 3-5所示。按 Enter键后即可进入 DOS运行窗口,如图 3-6所示。 图 3-5 Microsoft Edge浏览器 图 3-6 DOS窗口 注意:在输入地址时,一定要输入全路径,否则 Windows无法打开命令提示符窗口。 3.2 常见 DOS命令的应用 熟练掌握一些 DOS命令的应用是一名黑客的基本功,通过这些 DOS命令可以帮助计算机用户追踪黑客的踪迹。 3.2.1 切换当前目录路径的 cd命令 cd(Change Directory)命令的作用是改变当前目录,该命令用于切换路径目录。cd命令主要有以下 3种使用方法。 (1)cd path:path是路径,例如输入 cd c:\命令后按 Enter键或输入 cd Windows命令,即可分别切换到 C:\和 C:\Windows目录下。 (2)cd..:cd后面的两个“ .”表示返回上一级目录,例如当前的目录为 C:\Win- dows,如果输入 cd..命令,按 Enter键即可返回上一级目录,即 C:\。 (3)cd\:表示当前无论在哪个子目录下,通过该命令可立即返回到根目录下。 下面将介绍使用 cd命令进入 C:\ Windows\system32子目录,并退回根目录的具体操作步骤。 Step 01在“命令提示符”窗口中输入 cd c:\命令,按 Enter键,即可将目录切换为 C:\,如图 3-7所示。 图 3-7 切换到 C盘根目录 Step 02如果想进入 C:\Windows\system32目录中,则需在上面的“命令提示符”窗口中 第3章 渗透测试中的DOS命令 输入 cd Windows\system32命令,按 Enter键即可将目录切换为 C:\Windows\system32,如图 3-8所示。 图 3-8 切换到 C盘子目录 Step 03如果想返回上一级目录,则可以在 “命令提示符”窗口中输入 cd..命令,按 Enter键即可,如图 3-9所示。 图 3-9 返回上一级目录 Step 04如果想返回到根目录,则可以在“命令提示符”窗口中输入 cd\命令,按 Enter键即可,如图 3-10所示。 图 3-10 返回根目录 3.2.2 列出磁盘目录文件的 dir命令 dir命令的作用是列出磁盘上所有的或指定的文件目录,可以显示的内容包含卷标、文件名、文件大小、文件建立日期和时间、目录名、磁盘剩余空间等。 dir命令的格式如下。 其中各个参数的作用如下。 (1)/P:当显示的信息超过一屏时暂停显示,直至按任意键才继续显示。 (2)/W:以横向排列的形式显示文件名和目录名,每行 5个(不显示文件大小、建立日期和时间)。 (3)/A:属性:仅显示指定属性的文件,无此参数时, dir显示除系统和隐含文件外的所有文件。可指定为以下几种形式。 ① /A:S:显示系统文件的信息。 ② /A:H:显示隐含文件的信息。 ③ /A:R:显示只读文件的信息。 ④ /A:A:显示归档文件的信息。 ⑤ /A:D:显示目录信息。 使用 dir命令查看磁盘中的资源,具体操作步骤如下。 Step 01在“命令提示符”窗口中输入 dir命令,按 Enter键,即可查看当前目录下的文件列表,如图 3-11所示。 图 3-11 Administrator目录下的文件列表 Step 02在“命令提示符”窗口中输入 dir d:/ a:d命令,按 Enter键,即可查看 D盘下的所有文件的目录,如图 3-12所示。 Step 03在“命令提示符”窗口中输入 dir c:\windows /a:h命令,按 Enter键,即可列出 C:\windows目录下的隐藏文件,如图 3-13所示。 图 3-12 D盘下的文件列表 图 3-13 C盘下的隐藏文件 3.2.3 检查计算机连接状态的 ping命令 ping命令是协议 TCP/IP中最为常用的命令之一,主要用来检查网络是否通畅或者网络连接的速度。对于一名计算机用户来说, ping命令是第一个必须掌握的 DOS命令。在“命令提示符”窗口中输入 ping /?,可以得到这条命令的帮助信息,如图 3-14所示。 使用 ping命令对计算机的连接状态进行测试的具体操作步骤如下。 Step 01使用 ping命令来判断计算机的操作系统类型。在“命令提示符”窗口中输入 ping 192.168.3.9命令,运行结果如图 3-15所示。 图 3-15 判断计算机的操作系统类型 Step 02在“命令提示符”窗口中输入 ping 192.168.3.9 –t –l 128命令,可以不断向某台主机发出大量的数据包,如图 3-16所示。 图 3-16 向主机发出大量数据包 Step 03判断本台计算机是否与外界网络连通。在“命令提示符”窗口中输入 ping www.baidu.com命令,其运行结果如图 3-17所示,说明本台计算机与外界网络连通。 图 3-14 ping命令帮助信息 图 3-17 网络连通信息 第3章 渗透测试中的DOS命令 Step 04解析某 IP地址的计算机名。在“命令提示符 ”窗口中输入 ping -a 192.168.3.9命令,其运行结果如图 3-18所示,可知这台主机的名称为 SD-20220314SOIE。 图 3-20 计算机已启动的 Windows服务 图 3-18 解析某 IP地址的计算机名 3.2.4 查询网络状态与共享资源的 net命令 使用 net命令可以查询网络状态、共享资源及计算机所开启的服务等,该命令的语法格式信息如下。 查询本台计算机开启哪些 Windows服务的具体操作步骤如下: Step 01使用 net命令查看网络状态。打开 “命令提示符”窗口,输入 net start命令,如图 3-19所示。 图 3-19 输入 net start命令 Step 02按 Enter键,则在打开的 “命令提示符”窗口中可以显示计算机已启动的 Windows服务,如图 3-20所示。 3.2.5 显示网络连接信息的 netstat命令 netstat命令主要用来显示网络连接的信息,包括显示活动的 TCP连接、路由器和网络接口信息,是一个监控 TCP/IP网络非常有用的工具,可以让用户知道系统中目前都有哪些网络连接正常。 在“命令提示符”窗口中输入 netstat/?,可以得到这条命令的帮助信息,如图 3-21所示。 图 3-21 netstat命令帮助信息 该命令的语法格式信息如下: 其中比较重要的参数的含义如下。 ● -a:显示所有连接和监听端口。 ● -n:以数字形式显示地址和端 口号。使用 netstat命令查看网络连接的具体操作步骤如下。 Step 01打开“命令提示符”窗口,在其中输入 netstat -n或 netstat命令,按 Enter键,即可查看服务器活动的 TCP/IP连接,如图 3-22所示。 图 3-22 服务器活动的 TCP/IP连接 Step 02在“命令提示符”窗口中输入 netstat -r命令,按 Enter键,即可查看本机的路由信息,如图 3-23所示。 图 3-23 查看本机路由信息 Step 03在“命令提示符”窗口中输入 netstat -a命令,按 Enter键,即可查看本机所有活动的 TCP连接,如图 3-24所示。 图 3-24 查看本机活动的 TCP连接 Step 04在“命令提示符”窗口中输入 netstat -n -a命令,按 Enter键,即可显示本机所有连接的端口及其状态,如图 3-25所示。 图 3-25 查看本机连接的端口及其状态 3.2.6 检查网络路由节点的 tracert命令 使用 tracert命令可以查看网络中路由节点信息,最常见的使用方法是在 tracert命令后追加一个参数,表示检测和查看连接当前主机经历了哪些路由节点,适合用于大型网络的测试。该命令的语法格式信息如下。 其中各个参数的含义如下。 ● -d:防止解析目标主机的名字,可以加速显示 tracert命令结果。 ● -h MaximumHops:指定搜索到目标地址的最大跳跃数,默认为 30个跳跃点。 ● -j Hostlist:按照主机列表中的地址释放源路由。 ● -w Timeout:指定超时时间间隔,默认单位为毫秒。 ● TargetName:指定目标计算机。 例如:如果想查看 www.baidu.com的路由与局域网络连接情况,则在“命令提示符”窗口中输入 tracert www.baidu.com命令,按 Enter键,其显示结果如图 3-26所示。 第3章 渗透测试中的DOS命令 图 3-26 查看网络中路由节点信息 3.2.7 显示主机进程信息的Tasklist命令 Tasklist命令用来显示运行在本地或远程计算机上的所有进程,带有多个执行参数。Tasklist命令的格式如下: 其中各个参数的作用如下: ● /S system:指定连接到的远程系统。 ● /U username:指定使用哪个用户执行这个命令。 ● /P [password]:为指定的用户指定密码。 ● /M [module]:列出调用指定的 DLL模块的所有进程。如果没有指定模块名,显示每个进程加载的所有模块。 ● /SVC:显示每个进程中的服务。 ● /V:显示详细信息。 ● /FI .lter:显示一系列符合筛选器指定的进程。 ● /FO format:指定输出格式,有效值:TABLE、LIST、CSV。 ● /NH:指定输出中不显示栏目标题。只对 TABLE和 CSV格式有效。 利用 Tasklist命令可以查看本机中的进程及每个进程提供的服务。下面将介绍使用 Tasklist命令的具体操作步骤。 Step 01在“命令提示符”中输入 Tasklist命令,按 Enter键即可显示本机的所有进程,如图 3-27所示。在显示结果中可以看到映像名称、PID、会话名、会话 #和内存使用 5部分。 图 3-27 查看本机进程 Tasklist命令不但可以查看系统进程,而且还可以查看每个进程提供的服务。例如查看本机进程 svchost.exe提供的服务,在命令提示符下输入 Tasklist /svc命令即可,如图 3-28所示。 图 3-28 查看本机进程 svchost.exe提供的服务 Step 03要查看本地系统中哪些进程调用了 shell32.dll模块文件,只需在命令提示符下输入 Tasklist /m shell32.dll即可显示这些进程的列表,如图 3-29所示。 图 3-29 显示调用 shell32.dll模块的进程 Step 04使用筛选器可以查找指定的进程,在命令提示符下输入 TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running命令,按 Enter键即可列出系统中正在运行的非 SYSTEM状态的所有进程,如图 3-30所示。其中,/FI为筛选器参数,ne和 eq为关系运算符“不相等”和“相等”。 图 3-30 列出系统中正在运行的非 SYSTEM状态的所有进程 3.3 实战演练 3.3.1 实战1:使用命令实现定时关机 使用 shutdown命令可以实现定时关机的功能,具体操作步骤如下。 在“命令提示符”窗口中输入 shutdown/s /t 40命令,如图 3-31所示。 图 3-31 输入 shutdown/s /t 40命令 Step 02弹出一个即将注销用户登录的信息提示框,这样计算机就会在规定的时间内关机,如图 3-32所示。 图 3-32 信息提示框 Step 03如果此时想取消关机操作,可在命令行中输入命令 shutdown /a后按 Enter键,桌面右下角出现如图 3-33所示的弹窗,表示取消成功。 图 3-33 取消关机操作 3.3.2 实战 2:自定义 DOS窗口的风格 DOS窗口的风格不是一成不变的,用户可以通过“属性”菜单选项对 DOS窗口的风格进行自定义设置,如设置窗口的颜色、字体的样式等。自定义命令提示符窗口风格的操作步骤如下: Step 01单击 DOS窗口左上角的图标,在弹出菜单中选择“属性”选项,即可打开 “‘命令提示符’属性”对话框,如图 3-34所示。 图 3-34 “选项”选项卡 Step 02选择“颜色”选项卡,在其中可以对相关选项进行颜色设置。选中 “屏幕文字”单选按钮,可以设置屏幕文字的 第3章 渗透测试中的DOS命令 显示颜色,这里选择“黑色”,如图 3-35所示。 Step 03选中“屏幕背景”单选按钮,可以设置屏幕背景的显示颜色,这里选择“灰色”,如图 3-36所示。 图 3-38 设置弹出窗口背景颜色 Step 06设置完毕后单击“确定”按钮,即可保存设置,命令提示符窗口的风格如图 3-39所示。 图 3-36 设置屏幕背景颜色 Step 04选中“弹出文字”单选按钮,可以设置弹出窗口文字的显示颜色,这里设置蓝色颜色值为“ 180”,如图 3-37所示。 Step 05选中“弹出窗口背景”单选按钮,可以设置弹出窗口背景的显示颜色,这里设置颜色值为“ 125”,如图 3-38所示。 图 3-37 设置文字颜色 图 3-35 “颜色”选项卡 图 3-39 自定义命令提示符窗口显示风格 第4章 常见的渗透测试工具 渗透测试是一种利用模拟黑客攻击的方式评估计算机网络系统安全性能的方法。为了进行渗透测试,通常需要一些专业工具进行信息收集,渗透测试工具种类繁多,涉及广 泛,本章介绍常见的渗透测试工具。 4.1 SQLMap应用实战 SQLMap由 Python编写,是一个自动化的 SQL注入工具,可以自动检测和利用 SQL注入漏洞接管数据库服务器。 4.1.1 认识 SQLMap SQLMap的主要功能是扫描、发现并利用给定的 URL的 SQL注入漏洞,支持 MySQL、Oracle、PostgreSQL、Access等多种数据库管理系统。不过,需要注意的是 SQLMap只是用来检测和利用 SQL注入点,并不能扫描出网站有哪些漏洞,所以在使用 SQLMap实施注入攻击前,需要先使用扫描工具扫描出 SQL注入点。 SQLMap采用了以下 5种独特的 SQL注入技术。 (1)基于布尔类型的盲注:即可以根据返回页面判断条件真假的注入。 (2)基于时间的盲注:即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。 (3)基于错误信息的注入:即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。 (4)联合查询注入:可以使用 union的情况下的注入。 (5)堆查询注入:可以同时执行多条语句时的注入。 SQLMap的强大功能包括数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时实行任意命令。 SQLMap的功能强大到让人惊叹,当常规的注入工具不能利用 SQL注入漏洞进行注入时,使用 SQLMap会有意想不到的效果。 4.1.2 SQLMap的安装 由于 kali系统自带 SQLMap工具,所以如果在 kali系统中使用 SQLMap工具是无须安装的。如果是 Windows系统,则需要先下载并安装 Python,然后再下载并安装 SQLMap。下面介绍在 Windows系统中安装 SQLMap工具的方法。 具体操作步骤如下: Step 01双击下载的 Python安装程序,即可打开 Python安装界面,在其中勾选 “Add python.exe to PATH”复选框,如图 4-1所示。 单击 “Install Now”即可将 Python安装到默认安装位置,也可以选择 “Customize installation”选项来自定义安装位置,这里选择“Customize installation”选项,打开“Optional Features”(可选功能)窗口,如图 4-2所示。 第4章 常见的渗透测试工具 图 4-1 Python安装界面 图 4-2 自定义安装位置 Step 03单击“ Next”(下一步)按钮,打开 “ Advanced Options”(高级选项)窗口,如图 4-3所示。 图 4-3 “高级选项”窗口 Step 04单击“ Browse”(浏览)按钮,打开“浏览文件夹 ”对话框,在其中选择 Python安装的位置,如图 4-4所示。 单击“确定 ”按钮,返回到 “ Advanced Options”(高级选项)对话框中,可以看到 Python安装的位置为 “ C:\Python 3.11”,如图 4-5所示。 图 4-4 “浏览文件夹”对话框 图 4-5 设置 Python安装的位置 Step 06单击“ Install”(安装)按钮,在打开的窗口中显示安装进度,如图 4-6所示。 图 4-6 显示安装进度 Step 07安装完毕后,会自动弹出安装成功信息提示,如图 4-7所示。 Step 08右击桌面上的“开始”按钮,在弹出的快捷菜单中选择“运行”菜单命令,即可打开 “运行 ”对话框,在其中输入 “ cmd”,如图 4-8所示。 图 4-7 安装成功信息提示 图 4-8 “运行”对话框 确定”按钮,打开“命令提 示符”窗口,在其中输入“python”并按 Enter键,弹出如图 4-9所示的信息,则说明 Python安装成功。 图 4-10 重命名为 sqlmap 图 4-11 粘贴文件到 sqlmap目录 Step 12在桌面右击,在弹出的快捷菜单选择 “新建”→“快捷方式”菜单命令,如图 4-12所示。 图 4-12 “快捷方式”菜单命令 图 4-9 Python安装成功 Step 10把下载的 SQLMap压缩包解压到 C: \Python 3.11目录下,并且重命名为 sqlmap,如图 4-10所示。 Step 11解压之后发现还有一个目录,这时 可以先进入这个目录,复制里面所有的文件,然后粘贴到 C:\Python 3.11\sqlmap目录下,然后再把这个目录删除,如图 4-11所示。 第4章 常见的渗透测试工具 Step 13打开“创建快捷方式”对话框,在其中输入 cmd命令行所在的位置,如图 4-13所示。 图 4-13 “创建快捷方式”对话框 Step 14单击“下一步”按钮,在打开的对话框中将快捷方式命名为“sqlmap”,如图 4-14所示。 图 4-14 命名为“sqlmap” Step 15单击“完成”按钮,返回到桌面上,可以看到桌面上出现一个 SQLMap的快捷方式,如图 4-15所示。 图 4-15 SQLMap快捷方式 Step 16选中 SQLMap的快捷图标并右击鼠标,在弹出的快捷菜单中选择“属性”菜单命令,打开“sqlmap属性”对话框,修改它的起始位置为 SQLMap的保存位置,即 C:\Python 3.11\sqlmap,最后单击“应用”按钮保存修改,如图 4-16所示。 图 4-16 “sqlmap属性”对话框 Step 17验证 SQLMap是否安装成功,双击 SQLMap的快捷图标,在打开的窗口中输入 “sqlmap.py -h”命令,如果返回如图 4-17所示的信息,则表明 SQLMap安装成功。 图 4-17 SQLMap安装成功 4.1.3 搭建 SQL注入平台 SQLi-Labs是一个专业的 SQL注入练习平台,共有 75种不同类型的注入,适用于 GET和 POST场景,包含多个 SQL注入点,如基于错误的注入、基于误差的注入、更新查询注入、插入查询注入等。 SQLi-Labs的下载地址为 https://github. com/Audi-1/sqli-labs,如图 4-18所示。图 4-19 选择安装语言界面 图 4-18 SQLi-Labs的下载 1. 搭建开发环境 在安装 SQLi-Labs之前,需要做一个准备工作,这里要搭建一个 PHP+ MySQL+Apache的环境。本书使用 WampServer组合包进行搭建, WampServer组合包是将 Apache、PHP、MySQL等服务器软件安装配置完成后打包处理。因为其安装简单、速度较快、运行稳定,所以受到广大初学者的青睐。 注意:在安装 WampServer组合包之前,需要确保系统中没有安装 Apache、 PHP和 MySQL。否则,需要先将这些软件卸载,然后才能安装 WampServer组合包。 安装 WampServer组合包的具体操作步骤如下。 WampServer官方网站 http://www. wampserver.com/en/下载 WampServer的最新安装包文件。 Step 02直接双击安装文件,打开选择安装语言界面,如图 4-19所示。 Step 03单击 OK按钮,在弹出的对话框中选中“I accept the agreement”单选按钮,如图 4-20所示。 图 4-20 接受许可证协议 Step 04单击 Next按钮,弹出“Information”窗口,在其中可以查看组合包的相关说明信息,如图 4-21所示。 图 4-21 信息界面 单击 Next按钮,在弹出的窗口中设置安装路径,这里采用默认路径 “c:\wamp”,如图 4-22所示。 单击 Next按钮,弹出“Select Start Menu Folder”窗口,采用默认设置,如图 4-23所示。 第4章 常见的渗透测试工具 图 4-22 设置安装路径 图 4-23 “Select Start Menu Folder”窗口 Step 07单击 Next按钮,在弹出的窗口中确认安装的参数后,单击 Install按钮,如图 4-24所示。 图 4-25 开始安装程序 Step 09安装完成后,进入安装完成界面,单击 Finish按钮,完成 WampServer的安装操作,如图 4-26所示。 图 4-26 完成安装界面 Step 10默认情况下,程序安装完成后的语言为英语,这里为了初学者方便,右击桌面右侧的 WampServer服务按钮 ,在弹出的下拉菜单中选择 “Language”命令,然后在弹出的子菜单中选择“chinese”命令,如图 4-27所示。 图 4-27 WampServer服务列表 图 4-24 确认安装 Step 08程序开始自动安装,并显示安装进度,如图 4-25所示。 单击桌面右侧的 WampServer服务按钮 ,在弹出的下拉菜单中选择 “Localhost”命令,如图 4-28所示。 图 4-28 选择“Localhost”命令 提示:这里的 www目录就是网站的根目录,所有的测试网页都放到这个目录下。 Step 12系统自动打开浏览器,显示 PHP配置环境的相关信息,如图 4-29所示。 图 4-29 PHP配置环境的相关信息 2. 安装SQLi-Labs PHP调试环境搭建完成后,下面就可以安装 SQLi-Labs了,具体操作步骤如下: Step 01单击 WampServer服务按钮 ,在弹出的下拉菜单中选择“启动所有服务”命令,如图 4-30所示。 Step 02将下载的 SQLi-Labs.zip解压到 wamp网站根目录下,这里路径是“C:\wamp\ www\sqli-labs”,如图 4-31所示。 图 4-30 “启动所有服务”命令 图 4-31 解压 SQLi-Labs.zip 修改 db-creds.inc代码,这里配置文件路径是“C:\wamp\www\sqli-labs\sql-connections”,如果设置 MySQL数据库地址是“127.0.0.1或 localhost”,用户名和密码都是 “root”,就需要修改 “$dbpass”为 root,这很重要,修改后保存文件即可,如图 4-32所示。 图 4-32 修改 db-creds.inc代码 Step 04在浏览器中打开“http://127.0.0.1/sqli-labs/”,访问首页,如图 4-33所示。 第4章 常见的渗透测试工具 图 4-33 访问首页 Step 05单击“Setup/reset Database”以创建数据库,创建表并填充数据,如图 4-34所示。至此,就完成了 SQLI-Labs的安装。 4.1.4 SQLMap的使用 SQL注入平台搭建完成后,就可以使用 SQLmap进行渗透测试攻击了。下面以获取 Web站点的数据库信息为例,来介绍 SQLMap的使用方法。 具体操作步骤如下: Step 01判断是否存在注入点。使用命令 “sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1”可以判断网站是否存在注入点,如图 4-35所示。 图 4-35 判断是否存在注入点 Step 02输入命令完成后,按 Enter键,当出现如图 4-36所示信息时,则表示存在注入点。 图 4-36 存在注入点 Step 03查询当前用户下的所有数据库。确定网站存在注入点后,使用命令“sqlmap. py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --dbs”可以列出当前用户下所有数据库信息,如图 4-37所示。 图 4-37 查询数据库 Step 04输入命令完成后,按 Enter键,从如图 4-38所示的反馈信息中,可以得出当前网站存在 6个数据库及所有数据库的库名。 图 4-38 数据库信息 Step 05查询指定数据库中所有的表名。使 用命令“sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D security –tables”可以查询指定数据库中所有的表名,如图 4-39所示。 图 4-39 查询数据表 Step 06输入命令完成后,按 Enter键,从如图 4-40所示的反馈信息中,可以得出当前 security数据库中存在 4个数据表。 图 4-40 数据表信息 注意:如果在该命令中不加入 -D参数来指定某一具体的数据库,那么 SQLMap会列出数据库下的表名。 获取表中的字段名。使用命令 “sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D security -T users --columns”可以查询指定数据库下指定数据表中所有的字段名,如图 4-41所示。 注意:在后续的注入攻击中,--columns可以缩写成 -C。 图 4-41 查询数据表的字段名 Step 08输入命令完成后,按 Enter键,从如图 4-42所示的反馈信息中,可以得出当前 users数据表中存在 3个字段。 图 4-42 数据表的字段信息 Step 09获取字段内容。使用命令“sqlmap. py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D security -T users -C password,username --dump”可以在查询完字段名之后,获取该字段中具体的数据信息,如图 4-43所示。 图 4-43 获取字段内容 Step 10输入命令完成后,按 Enter键,从如图 4-44所示的反馈信息中,可以得出当前 users数据表中字段 password和 username所对应的具体数据信息。 图 4-44 数据信息 Step 11获取数据库的管理用户。使用命令“sqlmap.py -u http://127.0.0.1/sqli-labs/ Less-1/?id=1 --users”可以列出数据库的所有用户。如果当前用户有读取所有用户的 第4章 常见的渗透测试工具 权限,使用该命令就可以列出所有管理用户,如图 4-45所示。 图 4-45 获取数据库的管理用户 Step 12输入命令完成后,按 Enter键,从如图 4-46所示的反馈信息中,可以得出当前用户账号是 root。 图 4-46 当前用户账号为 root Step 13获取数据库用户的密码。使用命令 “sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 –passwords”可以列出数据库用户的密码。如果当前用户有读取用户密码的权限,SQLMap会先列举出用户,然后尝试破解密码,如图 4-47所示。 图 4-47 获取数据库用户的密码 Step 14输入命令完成后,按 Enter键,从如图 4-48所示的反馈信息中,可以得出当前用户账号 root的密码为“NULL”,也就是说 root用户没有设置密码。 图 4-48 账号 root的密码为“NULL” Step 15获取当前网站数据库的名称。使用命令 “sqlmap.py -u http://127.0.0.1/sqli-labs/ Less-1/?id=1 --current-db”可以列出当前网站使用的数据库,如图 4-49所示。 图 4-49 获取当前网站数据库的名称 Step 16输入命令完成后,按 Enter键,从如图 4-50所示的反馈信息中,可以得出当前网站使用的数据库是 security。 图 4-50 当前网站使用的数据库是 security 4.2 Burp Suite 应用实战 Burp Suite是渗透测试、漏洞挖掘以及 Web应用程序测试的最佳工具之一,是一款用于攻击 Web应用程序的集成攻击测试平台,可以进行抓包、重放、爆破等操作。 4.2.1 认识 Burp Suite Burp Suite是 Web应用程序测试的最佳工具之一,其多种功能可以帮用户执行各种任务,如扫描 Web应用程序漏洞、暴力破解登录表单、执行会话等。图 4-51为 Burp Suite的工作界面。 图 4-51 Burp Suite的工作界面 Burp Suite功能强大,各项参数十分复杂,下面介绍它的主要功能。 (1)Target(目标):渗透测试的目标 URL。 (2)Proxy(代理):Burp使用代理,默认端口为 8080,使用此代理,用户可以截获并修改从客户端到 Web应用程序的数据包。 (3)Intruder(入侵):此模块有多种功能,如漏洞利用、暴力破解等,可以对 Web应用程序进行自动化的攻击,如通过标识符枚举用户名、 ID和账号密码、模糊测试、SQL注入、跨站、目录遍历等。 (4)Repeater(中继器):它是一个需要手动操作来触发单独的 HTTP请求,并分析应用程序响应的工具。它最大的用途就是能和其他工具结合起来使用,将目标站点地图、 Proxy的浏览记录、 Burp Intruder的攻击结果,发送到 Repeater上,并手动调整。 (5)Sequencer(会话):用于分析数据样本随机性质量的工具,可以用它测试应用程序的会话令牌、密码重置令牌是否可预测等场景,有信息截取、手动加载、选项分析三部分。 (6)Comparer(对比):主要提供一个可视化的差异比对功能,来对比分析两次数据之间的区别。 (7)Decoder(解码器):进行手动执行或对应用程序数据进行智能解码与编码。 (8)Extender(扩展):可以让用户加载 Burp Suite的扩展,即使用第三方代码来扩展 Burp Suite的功能。 4.2.2 Burp Suite的安装 在安装 Burp Suite之前,需要先将 Burp Suite程序下载到本地计算机中,下面介绍 Burp Suite下载与安装的操作步骤。 打开浏览器,在其中输入网址 “https://portswigger.net/burp/”,即可进入 Burp Suite的官方网址,如图 4-52所示。 图 4-52 Burp Suite的官方网址 Step 02单击“Burp Suite Community Edition”超链接,打开如图 4-53所示的页面。 图 4-53 Burp Suite下载页面 Step 03单击“Go straight to downloads”超链接,打开如图 4-54所示的页面。 图 4-54 下载 Burp Suite Step 04单击“DOWNLOAD”按钮,即可开始下载并显示下载进度,如图 4-55所示。 第4章 常见的渗透测试工具 图 4-55 显示下载进度 Step 05下载完成后,直接双击下载的可执行程序,即可打开如图 4-56所示的窗口,提示用户正在解压程序。 图 4-58 设置程序安装的位置 图 4-56 解压程序 Step 06解压完成后,弹出如图 4-57所示的页面,提示用户开始安装 Burp Suite。 图 4-59 设置开始菜单文件 单击 Next按钮,进入“Installing”窗口,在其中显示程序安装的进度,如图 4-60所示。 图 4-57 开始安装 Burp Suite Step 07单击 Next按钮,在打开的对话框中可以设置程序安装的位置,如图 4-58所示。 Step 08单击 Next按钮,在打开的对话框中可以设置程序的开始菜单文件,如图 4-59所示。 图 4-60 显示程序安装的进度 Step 10安装完成后,弹出如图 4-61所示的窗口,单击 Finish按钮,即可完成 Burp Suite的安装。 图 4-61 完成 Burp Suite的安装 Step 11双击桌面上的“Burp Suite Community Edition”图标,即可打开如图 4-62所示提示框。 图 4-62 信息提示框 单击“I Accept”按钮,进入如图 4-63所示页面,在其中无须任何设置。 图 4-63 欢迎页面 Step 13单击 Next按钮,进入如图 4-64所示窗口,在其中选中“Use Burp defaults”单选按钮。 图 4-64 选中“Use Burp defaults”单选按钮 Step 14单击 Start Burp按钮,即可启动 Burp Suite,并打开“Burp Suite”的工作界面,如图 4-65所示。 图 4-65 Burp Suite的工作界面 第4章 常见的渗透测试工具 4.2.3 Burp Suite的使用 Burp Suite是一个用于攻击 Web应用程序的集成化的渗透测试工具,它集合了多种渗透测试组件,能够使我们更好地完成对 Web应用的渗透测试和攻击。 1. 配置代理 在使用 Burp Suite渗透测试之前需要配置代理,这里推荐使用火狐浏览器来配置代理。具体操作步骤如下: 图 4-68 搜索结果 Step 04单击第一个搜索结果超链接,进入 FoxyProxy Standard详细信息页面,如图 4-69所示。 Step 01打开火狐浏览器,单击右上角的“打 开应用程序菜单”按钮 ,在弹出的下拉菜单中选择“扩展和主题”菜单命令,如图 4-66所示。 图 4-66 “扩展和主题”菜单命令 附加组件管理器”窗口, 图 4-69 详细信息页面 Step 05单击“添加到 Firefox”按钮,弹出一个信息提示框,如图 4-70所示。 在“寻找更多附加组件”搜索框中输入 “FoxyProxy Standard”,如图 4-67所示。 图 4-67 输入“FoxyProxy Standard” Step 03单击“搜索”按钮,在搜索出的相关结果中选择第一个搜索结果,如图 4-68所示。 图 4-70 信息提示框 Step 06在信息提示框中单击“添加”按钮,即可完成 FoxyProxy标准版的添加操作,并弹出 FoxyProxy标准版的详细信息页面,如图 4-71所示。 图 4-71 FoxyProxy标准版 Step 07在 Foxy Proxy标准版的详细信息页面图 4-74 浏览器代理配置完成 中单击“返回”按钮,进入“FoxyProxy选2. 使用Burp Suite 项”页面,如图 4-72所示。下面以抓取百度搜索时的数据包为 图 4-72 “FoxyProxy选项”页面 Step 08单击“添加”按钮,进入“添加代理”页面,在其中设置代理地址与代理端口,这里设置代理地址为“127.0.0.1”,代理端口为“8080”,如图 4-73所示。 例介绍 Burp Suite的使用,具体操作步骤如下: Step 01在火狐浏览器中单击 “扩展 ”按钮 ,打开浏览器代理,如图 4-75所示。 图 4-73 “添加代理”页面 Step 09输入完毕后,单击“保存”按钮,至此,浏览器代理配置就完成了,如图 4-74所示。 图 4-75 打开浏览器代理 Step 02双击桌面上的 Burp Suite快捷图标,启动 Burp Suite程序,如图 4-76所示。 图 4-76 启动 Burp Suite程序 第4章 常见的渗透测试工具 Step 03在火狐浏览器的百度搜索框中输入需 要搜索的内容,这里输入“测试”,如图 4-77所示。 图 4-78 弹窗信息 图 4-77 输入“测试” Step 04单击“百度一下”按钮,会弹出如图 4-78所示的弹窗。 高级 ”按钮,弹出如图 4-79 所示的安全风险提示信息。 Step 06单击“接受风险并继续”按钮,即可 开始进行搜索,打开 Burp Suite工作界面,选择“ Target”选项,在打开的窗口中可以看到以目录树的形式显示被抓取的 URL数据信息,如图 4-80所示。 图 4-79 安全风险提示信息 图 4-80 抓取的 URL数据信息 Step 07选择“Proxy”选项,单击“intercept is on”按钮,在打开的窗口中可以看到数据包已经被成功抓取,如图 4-81所示。 图 4-81 成功抓取数据包 Step 08通过 Burp Suite代理功能抓取数据包之后,单击鼠标右键,在弹出的快捷菜单中就可以执行后续的操作了,如数据包重放、比较、攻击等,如图 4-82所示。 图 4-82 右键菜单项 4.3 Nmap应用实战 Nmap是一个网络连接端扫描软件,通过扫描可以确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。它是网络管理员常用的扫描软件之一。本节就来介绍渗透测试工具 Nmap的应用。 4.3.1 认识 Nmap 端口扫描是 Nmap最基本最核心的功能,用于确定目标主机的 TCP/UDP端口的开放情况。默认情况下, Nmap会扫描 1000个最有可能开放的 TCP端口,通过探测 Nmap将端口划分为 6个状态。 (1)open:端口是开放的。 (2)closed:端口是关闭的。 (3)filtered:端口被 Firewall/IDS/IPS 屏蔽,无法确定其状态。 (4)unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。 (5)open|.ltered:端口是开放的或被屏蔽。 (6)closed|.ltered:端口是关闭的或被 屏蔽。 Nmap的基本功能如下: (1)主机发现:检测目标主机是否在线。 (2)端口扫描:检测端口状态和提供的服务。 (3)版本侦测:检测端口提供服务的包或软件的版本信息。 (4)操作系统侦测:检测主机使用的操作系统。 在 Kali Linux系统中,使用 Nmap扫描相对比较简单,可以直接使用工具,然后添加相应的参数,即可完成扫描。例如,使用“ nmap 192.168.1.103 -p 1-200”命令 第4章 常见的渗透测试工具 可以扫描端口信息,扫描结果如图 4-83所示。 图 4-83 使用 Nmap扫描端口 4.3.2 Nmap的使用 在 Windows系统中,可以使用 Nmap的图形模式进行扫描,该模型包含多种扫描选项,它对网络中被检测到的主机按照选择的扫描选项和显示节点进行探查。用户可以建立一个需要扫描的范围,这样就不需要再输入大量的 IP地址和主机名了。使用 Nmap进行扫描的具体操作步骤如下: Step 01在 Windows系统中,安装 Nmap扫描软件比较简单,按照安装提示进行操作即可。安装完成后,双击桌面上的 Nmap快捷图标,即可打开 Nmap的图形操作界面,如图 4-84所示。 图 4-84 Nmap工作界面 Step 02要扫描单台主机,可以在“目标”后的文本框内输入主机的 IP地址或网址, 要扫描某个范围内的主机,可以在该文本框中输入“ 192.168.0.1-150”,如图 4-85所示。 图 4-85 输入 IP地址 提示:在扫描时,还可以用“ *”替换掉 IP地址中的任何一部分,如“ 192.168.1.*”等同于“ 192.168.1.1-255”;要扫描一个更大范围内的主机,可以输入“ 192.168.1, 2, 3.*”,此时将扫描 “ 192.168.1.0” “ 192.168.2.0”“ 192.168.3.0”三个网络中的所有地址。 Step 03要设置网络扫描的不同配置文件,可以单击“配置”后的下拉列表框,从中选择 Intense scan、 Intense scan plus UDP、 Intense scan, all TCP ports等选项,从而对网络主机进行不同方面的扫描,如图 4-86所示。 图 4-86 选择扫描方式 Step 04单击“扫描”按钮开始扫描,稍等一会儿,即可在“ Nmap输出”选项卡中显示扫描信息。在扫描结果信息中,可以看到扫描对象当前开放的端口信息,如图 4-87所示。 图 4-87 扫描结果信息 Step 05选择“端口 /主机”选项卡,在打开的界面中可以看到当前主机显示的端口、协议、状态和服务信息,如图 4-88所示。 图 4-88 “端口 /主机”选项卡 Step 06选择“拓扑”选项卡,在打开的界面中可以查看当前网络中计算机的拓扑结构,如图 4-89所示。 图 4-89 “拓扑”选项卡 第4章 常见的渗透测试工具 Step 07单击“查看主机信息”按钮,打开 “查看主机信息”窗口,在其中可以查看当前主机的一般信息、操作系统等,如图 4-90所示。 图 4-90 “查看主机信息”窗口 Step 08在“查看主机信息”窗口中选择“服务”选项卡,可以查看当前主机的服务信息,如端口、协议、状态等,如图 4-91所示。 图 4-91 “服务”选项卡 Step 09选择“路由追踪”选项卡,在打开的界面中可以查看当前主机的路由器信息,如图 4-92所示。 Step 10在 Nmap操作界面中选择“主机明细”选项卡,在打开的界面中可以查看当前主机的明细信息,包括主机状态、地址列表、操作系统等,如图 4-93所示。 图 4-92 “路由追踪”选项卡 图 4-93 “主机明细”选项卡 4.4 实战演练 4.4.1 实战1:扫描主机开放端口 流光扫描器是一款非常出名的中文多功能专业扫描器,其功能强大、扫描速度快、可靠性强,为广大电脑黑客迷们所钟爱。利用流光扫描器可以轻松探测目标主机的开放端口。 Step 01单击桌面上的流光扫描器程序图标,启动流光扫描器,如图 4-94所示。 Step 02单击“选项”→“系统设置”命令,打开 “系统设置 ”对话框,对优先级、线程数、单词数 /线程及扫描端口进行设置,如图 4-95所示。 图 4-94 流光扫描器 图 4-95 “系统设置”对话框 Step 03在扫描器主窗口中勾选“ HTTP主机”复选框,然后右击,在弹出的快捷菜单中选择“编辑” →“添加”选项,如图 4-96所示。 图 4-96 “添加”选项 Step 04打开“添加主机( HTTP)”对话框,在该对话框的下拉列表框中输入要扫描 主机的 IP地址(这里以 192.168.0.105为例),如图 4-97所示。 图 4-97 输入要扫描主机的 IP地址 Step 05此时在主窗口中将显示出刚刚添加的 HTTP主机,右击此主机,在弹出的快捷菜单中依次选择“探测” →“扫描主机端口”选项,如图 4-98所示。 图 4-98 “扫描主机端口”选项 Step 06打开“端口探测设置”对话框,在该对话框中勾选“自定义端口探测范围”复选框,然后在“范围”选项区中设置要探测端口的范围,如图 4-99所示。 图 4-99 设置要探测端口的范围 Step 07设置完成后,单击“确定”按钮,开始探测目标主机的开放端口,如图 4-100所示。 Step 08扫描完毕后,将会自动弹出“探测结果”对话框,如果目标主机存在开放端 第4章 常见的渗透测试工具 口,就会在该对话框中显示出来,如图 4-101所示。 图 4-100 探测目标主机开放端口 图 4-102 “计算机管理”菜单命令 图 4-101 “探测结果”对话框 4.4.2 实战2:保存系统日志文件 将日志文件存档可以方便分析日志信息,从而找出异常日志信息。将日志文件存档的具体操作步骤如下: Step 01右击“开始”按钮,在弹出的快捷菜 单中选择“计算机管理”菜单命令,如图 4-102所示。 Step 02打开“计算机管理”窗口,在其中展 开“事件查看器”图标,右击要保存的日志,如这里选择“Windows日志”选项下的“系统”选项,在弹出的快捷菜单中选择“将所有事件另存为”菜单命令,如图 4-103所示。 图 4-103 “将所有事件另存为”菜单命令 Step 03打开“另存为”对话框,在“文件名”文本框中输入日志名称,这里输入 “系统日志”,如图 4-104所示。 图 4-104 “另存为”对话框 Step 04单击“保存”按钮,弹出“显示信息”对话框,在其中设置相应的参数,然后单击 “确定”按钮,即可将日志文件保存到本地计算机中,如图 4-105所示。 图 4-105 “显示信息”对话框 第5章 渗透测试框架Metasploit Metasploit是一个渗透测试平台,在其中集中了大量的操作系统、网络软件及各种应用软件的漏洞,且设计思想明确、设计使用方法简单易学。Metasploit有两个版本,一个是 Metasploit Framework,另一个是 Metasploit Pro。通常所说的 Metasploit,一般是指 Metasploit Framework版本。 5.1 Metasploit概述 Metasploit是一款开源的安全漏洞检测工具,同时 Metasploit是免费的工具。 Metasploit核心中绝大部分由 Rudy实现,小部分由汇编和 C语言实现。 5.1.1 认识 Metasploit的模块 认识 Metasploit文件结构与模块是学习 Metasploit框架的前提,下面分别进行介绍。 1. exploits(渗透攻击/漏洞利用模块) 渗透攻击模块是利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。流行的渗透攻击技术包括缓冲区溢出、 Web应用程序漏洞攻击、用户配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种 POC验证程序,以及用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码。 渗透攻击模块是 Metasploit框架中最核心的功能组件。 2. payloads(攻击载荷模块) 攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码。 攻击载荷模块从最简单的添加用户账号、提供命令行 Shell,到基于图形化的 VNC界面控制,以及最复杂、具有大量后渗透攻击阶段功能特性的 Meterpreter,这使得渗透攻击者可以在选定渗透攻击代码之后,从很多适用的攻击载荷中选取他所中意的模块进行灵活的组装,在渗透攻击后获得他所选择的控制会话类型,这种模块化设计与灵活的组装模式也为渗透攻击者提供了极大的便利。 3. auxiliary(辅助模块) 该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行扫描、嗅探、指纹识别等相关功能以辅助渗透测试。 4. nops(空指令模块) 空指令( NOP)是一些对程序运行状态不会造成任何实质性影响的空操作或无关操作指令。最典型的空指令就是空操作,在 x86 CPU体系架构平台上的操作码是 0x90。 在渗透攻击构造邪恶数据缓冲区时,常常要在真正执行的 Shellcode之前添加一段空指令区。这样,当触发渗透攻击后跳转执行 Shellcode时,就会有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的 Shellcode执行失败。 Matasploit框架中的空指令模块就是用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。 5. encoders(编译器模块) 编码器模块通过对攻击载荷进行各种不同形式的编码 ,完成两大任务:一是确保攻击载荷中不会出现渗透攻击过程中应加以避免的“坏字符”;二是对攻击载荷进行“免杀”处理,即逃避反病毒软件、 IDS/ IPS的检测与阻断。 6. post(后渗透攻击模块) 后渗透攻击模块主要用于在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步横向拓展、实施跳板攻击等。 7. evasion(规避模块) 规避模块主要用于规避 Windows Defender防火墙、 Windows应用程序控制策略(applocker)等的检查。 5.1.2 Metasploit的常用命令 MSFconsole提供了一个“一体化”集中控制台,允许用户高效访问 MSF中可用的所有选项。使用 MSFconsole的好处如下: (1)它是访问 Metasploit中大部分功能的唯一支持方式。 (2)为框架提供基于控制台的界面。 (3)包含最多功能并且是最稳定的 MSF界面。 (4)完整的 readline支持, Tab键和命令完成。 (5)可以在 MSFconsole中执行外部命令。 MSFconsole有许多不同的命令选项可供选择,启动 Metasploit-framework后, 在“命令提示符”窗口中运行?或 help命令,即可查看 MSFconsole提供的终端命令集,如图 5-1所示。终端命令集包括核心命令(如表 5-1所示)、模块命令(如表 5-2所示)、数据库后端命令(如表 5-3所示)等。 图 5-1 运行“help”命令 核心命令介绍如表 5-1所示。 表 5-1 核心命令 命令 描述 ? 帮助菜单 banner 显示一个Metasploit横幅 cd 更改当前的工作目录 color 切换颜色 connect 与主机通信 edit 使用$ VISUAL或$ EDITOR编辑当前模块 exit 退出控制台 get 特定于上下文的变量的值 getg 获取全局变量的值 go_pro 启动Metasploit Web GUI grep Grep另一个命令的输出 help 菜单 info 显示有关一个或多个模块的信息 irb 进入irb脚本模式 jobs 显示和管理工作 续表表 5-2 模块命令 命令 描述 kill 终止任何正在运行的工作 load 加载一个框架插件 loadpath 搜索并加载路径中的模块 makerc 保存从开始到文件输入的命令 popm 将最新的模块从堆栈弹出并使其处于活动状态 previous 将之前加载的模块设置为当前模块 pushm 将活动或模块列表推入模块堆栈 quit 退出控制台 reload_all 重新加载所有定义的模块路径中的所有模块 rename_job 重命名作业 resource 运行存储在文件中的命令 route 通过会话路由流量 save 保存活动的数据存储 search 搜索模块名称和说明 sessions 转储会话列表并显示有关会话的信息 set 将特定于上下文的变量设置为一个值 setg 将全局变量设置为一个值 show 显示给定类型的模块或所有模块 sleep 在指定的秒数内不执行任何操作 spool 将控制台输出写入文件以及屏幕 threads 查看和操作后台线程 unload 卸载框架插件 unset 取消设置一个或多个特定于上下文的变量 unsetg 取消设置一个或多个全局变量 use 按名称选择模块 version 显示框架和控制台库版本号 命令 描述 advanced 显示一个或多个模块的高级选项 back 从当前上下文返回 clearm 清除模块堆栈 favorite 将模块添加到收藏模块列表中 info 显示一个或多个模块的信息 listm 列出模块堆栈 loadpath 从路径中搜索和加载模块 options 显示一个或多个模块的全局选项 popm 从堆栈中弹出最新的模块并使其激活 previous 将以前加载的模块设置为当前模块 pushm 将活动模块或模块列表推入模块堆栈 reload_all 从所有已定义的模块路径重新加载所有模块 search 搜索模块名称和描述 show 显示给定类型的模块或所有模块 use 通过名称或搜索词/索引与模块交互 表 5-3 常用数据库后端命令 命令 描述 db_connect 连接到现有的数据库 db_discon-nect 断开与当前数据库实例的连接 db_export 导出包含数据库内容的文件 db_import 导入扫描结果文件(文件类型将被自动检测) db_nmap 执行nmap并自动记录输出 db_rebuild_ cache 重建数据库存储的模块高速缓存 db_status 显示当前的数据库状态 hosts 列出数据库中的所有主机 续表 命令 描述 loot 列出数据库中的所有战利品 notes 列出数据库中的所有笔记 services 列出数据库中的所有服务 vulns 列出数据库中的所有漏洞 workspace 在数据库工作区之间切换 运行上述命令,可以查询相应的信息。例如, banner命令用于显示随机选择的 Metasploit横幅,运行 banner命令的结果如图 5-2所示。 图 5-2 显示 Metasploit横幅 5.2 Metasploit下载与安装 Metasploit可以帮助安全和 IT专业人士识别安全性问题,验证漏洞的缓解措施,并对管理专家驱动的安全性进行评估,提供真正的安全风险情报。 Metasploit是少数几个可用于执行诸多渗透测试步骤的工具。 5.2.1  Metasploit下载 在 IE浏览器地址栏中输入“ https:// windows.metasploit.com/”,打开 Metasploit下载页面,在其中选择需要下载的版本,可以选择最新版本的 Metasploit-Framework- 6.2.24,如图 5-3所示。 图 5-3 Metasploit下载页面 5.2.2 Metasploit安装 Metasploit下载完毕后,下面就可以安装 Metasploit了,具体操作步骤如下: Step 01双击下载的 Metasploit安装包,即可打开欢迎 Metasploit-Framework安装向导对话框,如图 5-4所示。 图 5-4 安装向导 Step 02单击 Next按钮,即可打开许可协议对话框,在其中勾选“I accept the terms in the License Agreement”复选框,如图 5-5所示。 第5章 渗透测试框架Metasploit 图 5-5 许可协议 单击 Next按钮,打开“Custom Setup”对话框,这里采用默认设置,如图 5-6所示。 图 5-6 “Custom Setup”对话框 Step 04单击 Next按钮,进入准备安装界面,如图 5-7所示。 图 5-7 准备安装界面 Step 05单击 Install按钮,开始安装 Metasploit-Framework,并显示安装进度,如图 5-8所示。 图 5-8 安装进度 Step 06安装完毕后,即可弹出 Metasploit-Framework安装完成对话框,如图 5-9所示。 图 5-9 安装完成 5.2.3 环境变量的配置 Metasploit-Framework安装完成后,还需要添加系统环境变量才能正常运行,具体操作步骤如下: Step 01在系统桌面上右击“我的电脑”图标,在弹出的快捷菜单中选择“属性”菜单命令,打开“系统”窗口,如图 5-10所示。 图 5-10 “系统”窗口 Step 02单击“高级系统设置”超链接,打开 “系统属性”对话框,选择“高级”选项卡,如图 5-11所示。 图 5-11 “系统属性”对话框 Step 03单击“环境变量”按钮,打开“环境变量”对话框,选择“Path”选项,如图 5-12所示。 Step 04单击“编辑”按钮,在打开的对话框中单击“新建”按钮,添加 Metasploit-Framework的安装目录“C:\metasploit-framework\bin\”,再单击“确定”按钮即可,如图 5-13所示。 图 5-12 “环境变量”对话框 图 5-13 “编辑环境变量”对话框 5.2.4 启动 Metasploit Metasploit控制台没有一个完美的界面,尽管 MSFConsole是访问大多数 Metasploit命令的唯一受支持的方式。然而,熟悉 Metasploit界面对学习 Metasploit仍然是有益的。 快速用命令启动 Metasploit-framework比较简单,具体操作步骤如下: 第5章 渗透测试框架Metasploit Step 01在电脑桌面上右击“开始”菜单,在弹出的快捷菜单中选择“运行”菜单命令,在打开的 “运行”对话框中输入 “cmd”命令,如图 5-14所示。 运行“use auxiliary/scanner/portscan/ 图 5-14 “运行”对话框 syn”语句,使用 syn扫描方式,如图 5-17所示。 Step 02单击“确定”按钮,在打开的“命令提示符”窗口中输入“msfconsole”即可启动 Metasploit-framework,如图 5-15所示。 图 5-17 使用 syn扫描方式 Step 03运行“show options”语句,显示端口选项,运行结果如图 5-18所示。 图 5-15 启动 Metasploit-framework 5.3 Metasploit 信息收集 Metasploit信息收集是任何成功渗透测试的基础, Metasploit提供了多种信息收集技术,包括端口扫描、寻找 MSSQL、服务识别、密码嗅探、SNMP扫描等。 图 5-16 端口匹配模块 图 5-18 显示端口选项 Step 04下面就可以使用 syn扫描方式扫描开放 80端口的主机信息了,代码如下: 5.3.1 端口扫描 除了 Nmap之外, Metasploit框架中还包括许多端口扫描程序,下面介绍使用 Metasploit进行端口扫描的方法。 1. 开放端口扫描 Step 01运行“search portscan”语句,查找端口匹配模块,运行结果如图 5-16所示。 msf6 auxiliary(scanner/portscan/syn) > run [*] TCP OPEN 192.168.2.1:80 [*] TCP OPEN 192.168.2.2:80 [*] TCP OPEN 192.168.2.10:80 [*] Auxiliary module execution completed 2. SMB版本扫描 由于扫描系统中有许多主机的 445端口是打开的,下面就可以使用 scanner/smb/ version模块来确定在目标上运行的是哪个版本的 Windows,也就是查找目标主机的系统版本。具体代码如下: 3. 空闲扫描 Metasploit包含模块扫描程序 /ip/ipidseq来扫描并查找网络上空闲的主机。代码如下: 第5章 渗透测试框架Metasploit 5.3.2 服务识别 除了使用 Nmap来扫描目标网络上的服务外, Metasploit还包含各种各样的扫描仪,用于各种服务,通常帮助用户确定目标机器上可能存在易受攻击的运行服务。 1. SSH服务 SSH非常安全,但漏洞并非闻所未闻,因此尽可能多地收集目标主机的信息就显得非常重要了。使用 Metasploit收集 SSH服务信息的操作步骤如下: Step 01运行“use auxiliary/scanner/ssh/ssh_ version”语句,加载“ssh_version”辅助扫描器,如图 5-19所示。 图 5-19 加载“ssh_version”辅助扫描器 运行“set RHOSTS 192.168.3.25 192.168.3.37”语句,设置“RHOSTS”选项,如图 5-20所示。 图 5-20 设置“RHOSTS”选项 Step 03运行“show options”语句,显示模 块选项,如图 5-21所示。 图 5-21 显示模块选项 Step 04运行“run”命令,开始扫描目标主机的 SSH服务信息,运行代码如下: 2. FTP服务 配置不良的 FTP服务器通常是黑客需要访问整个网络的立足点,那么作为计算机用户,就需要检查位于 TCP端口 21上的开放式 FTP端口是否允许匿名访问。 使用 Metasploit收集 FTP服务信息的操作步骤如下: Step 01运行“use auxiliary/scanner/ftp/ftp_ version”语句,加载“ftp_version”辅助扫描器,如图 5-22所示。 图 5-22 加载“ftp_version”辅助扫描器 Step 02运行“set RHOSTS 192.168.3.25”语句,来设置“RHOSTS”选项,如图 5-23所示。 图 5-23 设置“RHOSTS”选项 Step 03首先运行“use auxiliary/scanner/ftp/ anonymous”语句,切换到“anonymous”模块,再运行“show options”语句,显示模块选项,如图 5-24所示。 图 5-24 显示模块选项 Step 04运行“run”命令,开始扫描目标主机的 FTP服务信息,运行代码如下: 5.3.3 密码嗅探 Max Moser发布了一个名为 psnuf.e的 Metasploit密码嗅探模块,该模块将嗅探与 dsniff工具类似的密码,它目前支持 POP3、IMAP、FTP和 HTTP GET等服务协议。使用 psnuf.e模块进行密码嗅探的操作步骤如下: Step 01运行“use auxiliary/sniffer/psnuf.e”语句,切换到 psnuf.e模块,如图 5-25所示。 图 5-25 psnuf.e模块 Step 02运行“show options”语句,显示模块选项,如图 5-26所示。 图 5-26 显示模块选项 Step 03运行“run”命令,当出现“Successful FTP Login”信息时,就说明成功捕获了 FTP登录信息,代码如下: 第5章 渗透测试框架Metasploit 5.4 Metasploit 漏洞扫描 使用 Metasploit可以进行漏洞扫描,通过扫描目标 IP范围,可以快速查找已知漏洞,让渗透测试人员快速了解有哪些漏洞是可以利用的。 5.4.1 认识Exploits(漏洞) Metasploit框架中的所有漏洞分为两类:主动和被动。主动漏洞将利用特定的主机,运行直至完成,然后退出。被动漏洞是被动攻击等待传入主机并在连接时利用它们,被动攻击几乎集中在 Web浏览器、FTP客户端等客户端上,也可以与电子邮件漏洞利用一起使用,等待连接。在 Metasploit中,查看 Exploits(漏洞)信息的操作步骤如下: 启动 Metasploit,运行“show”命令,运行结果如图 5-27所示。 图 5-27 运行“show”命令 运行“show exploits”命令,查询 Exploits(漏洞)信息,如图 5-28所示。 Step 03在 Metasploit中选择一个漏洞利用程序将 “exploit”和“check”命令添加到 msfconsole中,这里运行“use exploit/ windows/smb/ms17_010_psexec”语句,然后执行“help”命令,查看 Exploit(漏洞)命令,如图 5-29所示。 图 5-28 查询 Exploits(漏洞)信息 图 5-29 查看 Exploit(漏洞)命令 Exploit(漏洞)命令介绍如表 5-4所示。 表 5-4 Exploit(漏洞)命令 命令 描述 check 检查目标是否易受攻击 exploit 启动漏洞利用尝试 rcheck 重新加载模块并检查目标是否存在漏洞 recheck 检查的别名 reload 只需重新加载模块 rerun 重新运行exploit(漏洞)的别名 rexploit 重新加载模块并启动漏洞攻击尝试 run 运行exploit(漏洞)的别名 Step 04运行“show targets”语句,查询漏洞的目标信息,如图 5-30所示。 图 5-30 查询漏洞的目标信息 Step 05运行“show payloads”语句,查询漏洞的有效载荷信息,如图 5-31所示。 图 5-31 查询漏洞的有效载荷信息 Step 06运行“show options”语句,查询漏洞模块选项信息,如图 5-32所示。 图 5-32 查询漏洞模块选项信息 Step 07运行“show advanced”语句,查询漏洞模块的高级选项信息,如图 5-33所示。 图 5-33 查询漏洞模块的高级选项信息 Step 08运行“show evasion”语句,查询漏洞模块的规避选项信息,如图 5-34所示。 图 5-34 查询漏洞模块的规避选项信息 5.4.2 漏洞的利用 在内部网络中如果需要搜索和定位安装有 MSSQL的主机,可以使用 UDP脚本来实现。MSSQL安装时,需要开启 TCP端口中的 1433号端口,或者给 MSSQL分配随机动态 TCP端口。如果端口是动态的,就可以通过查询 UDP端口中的 1434端口是否向用户提供服务器信息,包括服务正在侦听的 TCP端口,进而判断该主机是否安装有 MSSQL。 下面介绍查找 MSSQL服务器信息并利用 MSSQL漏洞来获得系统管理员的方法,具体操作步骤如下: Step 01运行“search mssql”语句,查找 mssql匹配模块,运行结果如图 5-35所示。 图 5-35 查找 mssql匹配模块 Step 02运行“use auxiliary/scanner/mssql/mssql_ ping”语句,加载扫描器模块,运行结果如图 5-36所示。 图 5-36 加载扫描器模块 运行“show options”语句,显示 mssql选项,运行结果如图 5-37所示。 图 5-37 显示 mssql选项 Step 04运行“ set RHOSTS 192.168.3.1/24”,设置需要寻找 SQL服务器的子网范围。还可以通过运行“ set THREADS 16”语句指定线程数量。代码如下: Step 05运行“ run”命令扫描被执行,并给出对 MSSQL服务器的特定扫描信息。正如我们所看到的, MSSQL服务器的名称是 “ USE-20220902QD”, TCP端口为 1433。代码如下: 第5章 渗透测试框架Metasploit 运行“ use auxiliary/scanner/mssql/mssql_ login”进行 mssql_login模块,然后运行 “ use auxiliary/admin/mssql/mssql_exec”进入 mssql_exec模块,如图 5-38所示。 图 5-38 进入 mssql_exec模块 运行“ show options”语句,显示 mssql_exec模块选项,运行结果如图 5-39所示。 图 5-39 显示 mssql_exec模块选项 运行如下代码,添加“ demo”用户账户,当成功出现“ net user demo ihazpassword / ADD”信息时,说明已经成功地添加了一个名为“ demo”的用户账户,这样就获得了目标主机系统的管理员权限,从而完全控制系统。 5.5 实战演练 5.5.1 实战1:恢复丢失的磁盘簇 磁盘空间丢失的原因有多种,如误操作、程序非正常退出、非正常关机、病毒的感染、程序运行中的错误或者是对硬盘分区不当等情况都有可能使磁盘空间丢失。磁盘空间丢失的根本原因是存储文件的簇丢失了。那么如何才能恢复丢失的磁盘簇呢?在命令提示符窗口中用户可以使用 CHKDSK/F命令找回丢失的簇。 具体的操作步骤如下。 在“命令提示符”窗口中输入 “chkdsk d:/f”,如图 5-40所示。 5.5.2 实战2:清空回收站后的恢复 当把回收站中的文件清除后,用户可以使用注册表来恢复清空回收站之后的文件。具体的操作步骤如下。 Step 01右击“开始”按钮,在弹出的快捷菜单中选择“运行”菜单项,如图 5-42所示。 图 5-42 “运行”菜单项 Step 02打开“运行”对话框,在“打开”文本框中输入注册表命令“regedit”,如图 5-43所示。 图 5-43 “运行”对话框 表”窗口,如图 5-44所示。 图 5-40 “命令提示符”窗口 Step 02按 Enter键,此时会显示输入的 D盘文件系统类型,并在窗口中显示 chkdsk状态报告,同时,列出符合不同条件的文件,如图 5-41所示。 图 5-44 “注册表”窗口 图 5-41 显示 chkdsk状态报告 在窗口的左侧展开 HKEY LOCAL MACHINE/SOFTWARE/MICROSOFT/ WINDOWS/CURRENTVERSION/ EXPLORER/DESKTOP/NAMESPACE树形结构,如图 5-45所示。 图 5-45 展开注册表分支结构 Step 05在窗口的左侧空白处右击,在弹出的快捷菜单中选择“新建” →“项”菜单项,如图 5-46所示。 图 5-46 “项”菜单项 Step 06即可新建一个项,并将其重命名为“ 645FFO40-5081-101B-9F08-00AA002F954E”,如图 5-47所示。 第5章 渗透测试框架Metasploit Step 07在窗口的右侧选中系统默认项并右击,在弹出的快捷菜单中选择 “修改 ”菜单项,打开“编辑字符串”对话框,将数值数据设置为“回收站”,如图 5-48所示。 图 5-48 “编辑字符串”对话框 Step 08单击“确定”按钮,退出注册表,重新启动计算机,即可将清空的文件恢复出来,如图 5-49所示。 图 5-49 恢复清空的文件 Step 09右击该文件夹,从弹出的快捷菜单中选择“还原”菜单项,如图 5-50所示。 图 5-47 重命名新建项 图 5-50 “还原”菜单项 Step 10即可将回收站之中的“图片”文件夹还原到其原来的位置,如图 5-51所示。 图 5-51 还原图片文件夹 第6章 渗透信息收集与踩点侦查 第6章 渗透信息收集与踩点侦查 黑客在入侵之前,都会进行踩点以收集相关信息,在信息收集中,最重要的就是收集服务器的配置信息和网站的敏感信息,其中包括域名及子域名信息、确定扫描的范围以及获取相关服务与端口信息、CMS指纹以及目标网站的 IP地址等。本章介绍渗透信息收集与踩点侦查的相关知识。 6.1 收集域名信息 在知道目标的域名之后,首先需要做的事情就是获取域名的注册信息,包括该域名的 DNS服务器信息、备案信息等。域名信息收集的常用方法有以下几种。 6.1.1 Whois查询 一个网站在制作完毕后,要想发布到互联网上,还需要向有关机构申请域名,而且申请到的域名信息将被保存到域名管理机构的数据库中,任何用户都可以进行查询,这就使黑客有机可乘了。因此,踩点流程中就少不了查询 Whois。 (1)在中国互联网信息中心网页上查询 中国互联网信息中心是非常权威的域名管理机构,在该机构的数据库中记录着所有以 .cn为结尾的域名注册信息。查询 Whois的操作步骤如下: Step 01在 Microsoft Edge浏览器中的地址栏中输入中国互联网信息中心的网址“http:// www.cnnic.net.cn/”,即可打开其查询页面,如图 6-1所示。 Step 02在其中的“查询”区域中的文本框中输入要查询的中文域名,这里输入 “淘宝 .cn”,然后输入验证码,如图 6-2所示。 图 6-1 互联网信息中心首页 图 6-2 输入中文域名 Step 03单击“查询”按钮,打开“验证码”对话框,在“验证码”文本框中输入验证码,如图 6-3所示。 图 6-3 “验证码”对话框 Step 04单击“确定”按钮,即可看到要查询域名的详细信息,如图 6-4所示。 图 6-4 域名详细信息 (2)在中国万网网页上查询 中国万网是中国最大的域名和网站托管服务提供商,它提供 .cn的域名注册信息,而且还可以查询 .com等域名信息。查询 Whois的操作步骤如下。 Step 01在 Microsoft Edge浏览器中的地址栏中输入万网的网址“https://wanwang.aliyun. com/”,即可打开其查询页面,如图 6-5所示。 图 6-5 万网首页 Step 02在打开的页面中的“域名”文本框中输入要查询的域名,然后单击“查询域名”按钮,即可看到相关的域名信息,如图 6-6所示。 图 6-6 域名详细信息 Step 03在域名信息右侧,单击“Whois信息”超链接,即可查看 Whois信息,如图 6-7所示。 图 6-7 Whois信息 6.1.2 DNS查询 DNS即域名系统,是 Internet的一项核心服务。简单地说,利用 DNS服务系统可以将互联网上的域名与 IP地址进行域名解析,因此,计算机只认识 IP地址,不认识域名。该系统作为可以将域名和 IP地址相互转换的一个分布式数据库,能够帮助用 第6章 渗透信息收集与踩点侦查 户更为方便地访问互联网,而不用记住被机器直接读取的 IP地址。 目前,查询 DNS的方法比较多,常用的方式是使用 Windows系统自带的 nslookup工具来查询 DNS中的各种数据。下面介绍两种使用 nslookup查看 DNS的方法。 (1)使用命令行方式 该方式主要是用来查询域名对方的 IP地址,即查询 DNS的记录,通过该记录黑客可以查询该域名的主机所存放的服务器,其命令格式为:Nslookup 域名, 例如想要查看 www.baidu.com对应的 IP信息,其具体的操作步骤如下: Step 01打开“命令提示符”窗口,在其中输入“nslookup www.baidu.com”命令,如图 6-8所示。 图 6-8 输入命令 按 Enter键,即可得出其运行结果,在运行结果中可以看到 “名称”和 “Addresses”行分别对应域名和 IP地址,而最后一行显示的是目标域名并注明别名,如图 6-9所示。 (2)交互式方式可以使用 nslookup的交互模式对域名进行查询,具体的操作步骤如下: 在“命令提示符”窗口中运行 “nslookup”命令,然后按 Enter键,即可得出其运行结果,如图 6-10所示。 图 6-10 运行“nslookup”命令 Step 02在“命令提示符”窗口中输入命令 “set type=mx”,然后按 Enter键,进入命令运行状态,如图 6-11所示。 图 6-11 运行“set type=mx”命令 Step 03在“命令提示符”窗口中再输入想要查看的网址(必须去掉 www),如 baidu. com,按 Enter键,即可得出百度网站的相关 DNS信息,即 DNS的 MX关联记录,如图 6-12所示。 图 6-9 查询域名和 IP地址 图 6-12 查看 DNS信息 图 6-19 DNS服务器信息 图 6-20 邮件服务器信息 如图 6-21所示为查询到的子域名信息。 6.3 网络中的踩点侦查 踩点,概括地说就是获取信息的过程。踩点是黑客实施攻击之前必须要做的工作之一,踩点过程中所获取的目标信息也决定着攻击是否成功,下面就具体介绍一下实施踩点的具体流程,了解了具体的踩点流程,可以帮助用户更好地防护自己计算机的安全。 6.3.1 侦查对方是否存在 黑客在攻击之前,需要确定目标主机是否存在,目前确定目标主机是否存在最为常用的方法就是使用 Ping命令。 Ping命令常用于对固定 IP地址的侦查,下面就以侦查某网站的 IP地址为例,其具体的侦查步骤如下: Step 01在 Windows 10系统界面中,右击 “开始”按钮,在弹出的快捷菜单中选择 “运行”菜单项,打开“运行”对话框,在“打开”文本框中输入 “cmd”,如图 6-23所示。 图 6-21 子域名信息 单击子域名下方的 图标,跳转到另一个网页,再单击“快速扫描”按钮,即可查看子域名开放的端口,如图 6-22所示。 图 6-23 “运行”对话框 第6章 渗透信息收集与踩点侦查 Step 02单击“确定”按钮,打开“命令提示符”窗口,在其中输入 “ping www.baidu. com”,如图 6-24所示。 图 6-24 “运行”对话框 Step 03按 Enter键,即可显示出 ping百度网站的结果,如果 ping通过了,将会显示该 IP地址返回的 byte、time和 TTL的值,说明该目标主机一定存在于网络之中,这样就具有了进一步攻击的条件,而且 time时间越短,表示响应的时间就越快,如图 6-25所示。 图 6-25 ping百度网站的结果 Step 04如果 ping不通过,则会出现 “无法访问目标主机”提示信息,这就表明对方要么不在网络中、要么没有开机、要么是对方存在,但是设置了 ICMP数据包的过滤等。图 6-26就是 ping IP地址为 “192.168.0.100”不通过的结果。 注意:在 ping没有通过,且计算机又存在网络中的情况下,要想攻击该目标主机,就比较容易被发现,达到攻击目的就比较难。 图 6-26 ping命令不通过的结果 另外,在实际侦查对方是否存在的过程中,如果是一个 IP地址一个 IP地址地侦查,将会浪费很多精力和时间,那么有什么方法来解决这一问题呢?其实这个问题不难解决,因为目前网络上存在有多种扫描工具,这些工具的功能非常强大,除了可以对一个 IP地址进行侦查,还可以对一个 IP地址范围内的主机进行侦查,从而得出目标主机是否存在以及开放的端口和操作系统类型等。常用的工具有 SuperSsan、 nmap等。 利用 SuperScan扫描 IP地址范围内的主机的操作步骤如下: Step 01双击下载的 SuperScan可执行文件,打开“SuperScan”操作界面,在“扫描”选项卡的“IP地址”栏目中输入起始 IP和结束 IP,如图 6-27所示。 图 6-27 “SuperScan”操作界面 Step 02单击“扫描”按钮,即可进行扫描。在扫描完毕之后,即可在“SuperScan”操 作界面中查看扫描到的结果,主要包括在该 IP地址范围内哪些主机是存在的,非常方便直观,如图 6-28所示。 6.3.2 侦查对方的操作系统 黑客在入侵某台主机时,事先必须侦查出该计算机的操作系统类型,这样才能根据需要采取相应的攻击手段,以达到自己的攻击目的。常用侦查对方操作系统的方法为:使用 ping命令探知对方的操作系统。 一般情况下,不同的操作系统对应的 TTL返回值也不相同, Windows操作系统对应的 TTL值一般为 128;Linux操作系统的 TTL值一般为 64。因此,黑客在使用 Ping命令与目标主机相连接时,可以根据不同的 TTL值来推测目标主机的操作系统类型,一般在 128左右的数值是 Windows系列的机器, 64左右的数值是 Linux系列。这是因为不同的操作系统的机器对 ICMP报文的处理与应答也有所不同, TTL的值是每过一个路由器就会减 1。 在“运行”对话框中输入“ cmd”,单击“确定”按钮,打开 cmd命令行窗口,在其中输入命令“ ping 192.168.0.135”,然后按 Enter键,即可返回 Ping到的数据信息,如图 6-29所示。 图 6-29 数据信息 分析上述操作代码结果,可以看到其返回 TTL值为 128,说明该主机的操作系统是一个 Windows操作系统。 6.3.3 侦查对方的网络结构 找到适合攻击的目标后,在正式实施入侵攻击之前,还需要了解目标主机的网络机构,只有弄清楚目标网络中防火墙、服务器地址之后,才可进行第一步入侵。可以使用 tracert命令查看目标主机的网络结构。 tracert命令用来显示数据包到达目标主机所经过的路径并显示到达每个节点的时间。 tracert命令功能同 Ping类似,但所获得的信息要比 Ping命令详细得多,它把数据包所走的全部路径、节点的 IP以及花费的时间都显示出来。该命令比较适用于大型网络。 tracert命令的格式: tracert IP地址或主机名。 例如:要想了解自己计算机与目标主机 www.baidu.com之间的详细路径传递信息,就可以在“命令提示符”窗口中输入“tracert www.baidu.com”命令进行查看,分析目标主机的网络结构,如图 6-30所示。 图 6-30 目标主机的网络结构 6.4 弱口令信息的收集 在网络中,每台计算机的操作系统都不是完美的,都会存在着这样或那样的漏洞信息以及弱口令等,如 NetBios信息、 Snmp信息、NT-Server弱口令等。 6.4.1 弱口令扫描 常见的弱口令指的是仅包含简单数字和字母的口令,如“ 123”“abc”等,这样的口令很容易被别人破解,从而使用户的计算机面临风险,因此不推荐用户使用。用户口令最好由字母、数字和符号混合组成,并且至少要达到 8位的长度。 用户设置的口令不够安全是获取弱口令的前提,因此在设置口令时应注意以下事项: (1)杜绝使用空口令或系统缺省的口令,因为这些口令众所周知,为典型的弱口令。 (2)口令长度不小于 8个字符。 (3)口令不可为连续的某个字符(如 AAAAAAAA)或重复某些字符的组合(如 tzf.tzf.)。 (4)口令尽量为大写字母( A~ Z)、小写字母( a~ z)、数字( 0~ 9)和特殊字符四类字符的组合。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。 (5)口令中避免包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、 E-mail地址等与本人有关的信息,以及字典中的单词。 (6)口令中避免使用数字或符号代替某些字母的单词。 6.4.2 制作黑客字典 黑客在进行弱口令扫描时,有时并不 第6章 渗透信息收集与踩点侦查 能得到自己想要的数据信息,这时就需要黑客掌握的相关信息来制作自己的黑客字典,从而尽快破解出对方的密码信息。目前网上有大量的黑客字典制作工具,常用的有流光、易优超级字典生成器等。 1. 易优超级字典生成器 易优超级字典生成器是一款十分好用的密码字典生成工具,采用高度优化算法,制作字典速度极快。具有精确选择字符、自定义字符串、定义特殊位、修改已有字典生日字典制作、电话密码的制作等功能。 使用易优超级字典生成字典文件的具体操作步骤如下: Step 01启动易优超级字典生成器的运行程序,在其主窗口中可以看到有关易优超级字典生成器的功能介绍,如图 6-31所示。 图 6-31 “超级字典生成器”主窗口 Step 02选择“基本字符”选项卡,在其中选择字典文件需要数字以及大小写英文字母,如图 6-32所示。 图 6-32 “基本字符”选项卡 Step 03选择“生日”选项卡,在其中设置生 日的范围以及生日显示格式等属性,如图 6-33所示。 图 6-33 “生日”选项卡 Step 04选择“生成字典”选项卡,单击“浏览”按钮,即可选择要生成字典文件的保存位置,如图 6-34所示。 图 6-36 “字典制作完成”提示框 2. 流光黑客字典 使用流光可以制作黑客字典,具体操作步骤如下: Step 01在下载并安装流光软件之后,再打开其主窗口,如图 6-37所示。 图 6-34 “生成字典”选项卡 Step 05单击“生成字典”按钮,即可看到 “真的要生成字典吗”提示框,如图 6-35所示。 图 6-35 “真的要生成字典吗”提示框 图 6-37 “流光”主窗口 Step 02选择“工具”→“字典工具”→“黑客字典工具 III-流光版”菜单项,或使用 “Ctrl+H”快捷键,即可打开“黑客字典流光版”对话框,如图 6-38所示。 图 6-38 “黑客字典流光版”对话框 Step 06单击“确定”按钮,即可开始生成字 典文件,等完成后将会出现一个“字典制作完成”提示框,如图 6-36所示。 第6章 渗透信息收集与踩点侦查 Step 03选择“选项”选项卡,在其中确定字 Step 06单击“保存”按钮,返回到“黑客字符的排列方式,根据要求勾选“仅仅首字典流光版”对话框,即可看到设置的文件母大写”复选框,如图 6-39所示。存放位置,如图 6-42所示。 图 6-39 “选项”选项卡 Step 04选择“文件存放位置”选项卡,进入 “文件存放位置”界面,如图 6-40所示。 图 6-42 “黑客字典流光版”对话框 Step 07单击“确定”按钮,即可看到设置好的字典属性,如图 6-43所示。 图 6-40 “文件存放位置”选项卡 Step 05单击“浏览”按钮,即可打开“另存为”对话框,在“文件名”文本框中输入文件名,如图 6-41所示。 图 6-43 “字典属性”对话框 Step 08如果和要求一致,则单击“开始”按钮,即可生成密码字典。图 6-44即为打开的生成字典文件。 图 6-41 “另存为”对话框 图 6-44 生成的字典文件 6.4.3 获取弱口令信息 目前,网络上存在有很多弱口令扫描工具,常用的有 X-Scan、流光等。利用这些扫描工具可以探测目标主机中的 NT-Server弱口令、 SSH弱口令、 FTP弱口令等。 1. 使用X-Scan扫描弱口令 使用 X-Scan扫描弱口令的操作步骤如下: 在 X-Scan主窗口中选择“扫描”→“扫描参数”菜单项,即可打开 “扫描参数”对话框,在左边的列表中选择“全局设置”→“扫描模块”选项,在其中勾选相应弱口令复选框,如图 6-45所示。 图 6-45 设置扫描模块 Step 02选择“插件设置”→“字典文件设置”选项,在右边的列表中选择相应的字典文件,如图 6-46所示。 Step 03选择“检测范围”选项,即可设置扫描 IP地址的范围,在“指定 IP范围”文本框中可输入需要扫描的 IP地址或 IP地址段,如图 6-47所示。 图 6-47 设置 IP范围 Step 04参数设置完毕后,单击“确定”按钮,返回到“X-Scan”主窗口,在其中单击“扫描”按钮,即可根据自己的设置进行扫描,等扫描结束之后,会弹出“检测报告”窗口,从中可看到目标主机中存在的弱口令信息,如图 6-48所示。 图 6-48 扫描结果显示 2. 使用流光扫描弱口令 使用流光可以探测目标主机的 POP3、 SQL、FTP、HTTP等弱口令。下面具体介绍一下使用流光探测 SQL弱口令的具体操作步骤。 图 6-46 设置字典文件 第6章 渗透信息收集与踩点侦查 在流光的主窗口中,选择“探测”→“高级扫描设置”菜单项,即可打开“高级扫描设置”对话框,在其中填入起始 IP地址、结束 IP地址,并选择目标系统之后,再在“检测项目”列表中勾选 “SQL”复选框,如图 6-49所示。 图 6-49 “高级扫描设置”对话框 Step 02选择“SQL”选项卡,在其中勾选 “对 SA密码进行猜解”复选框,如图 6-50所示。 图 6-50 “SQL”选项卡 Step 03单击“确定”按钮,即可打开“选择流光主机”对话框,如图 6-51所示。 图 6-51 “选择流光主机”对话框 Step 04单击“开始”按钮,即可开始扫描,扫描完毕的结果如图 6-52所示,在其中可以看到如下主机的 SQL的弱口令。 图 6-52 “扫描结果”窗口 6.5 实战演练 6.5.1 实战1:开启 CPU最强性能 在 Windows 10操作系统之中,用户可以开启 CPU最强性能,具体的操作步骤如下。 Step 01按 Win+R组合键,打开“运行”对话框,在“打开”文本框中输入 mscon.g,如图 6-53所示。 图 6-53 “运行”对话框 Step 02单击“确定”按钮,在弹出的对话框中选择“引导”选项卡,如图 6-54所示。 图 6-54 “引导”界面 Step 03单击“高级选项”按钮,弹出“引导高级选项”对话框,勾选“处理器个数”复选框,将处理器个数设置为最大值,本机最大值为 4,如图 6-55所示。 图 6-55 “引导高级选项”对话框 Step 04单击“确定”按钮,弹出“系统配置”对话框,单击“重新启动”按钮,重启计算机系统,CPU就能达到最大性能了,这样计算机运行速度就会明显提高,如图 6-56所示。 6.5.2 实战2:阻止流氓软件自动运行 当在使用计算机的时候,有可能会遇到流氓软件,如果不想程序自动运行,这时就需要用户阻止程序运行。具体操作步骤如下: Step 01按 Win+R组合键,在打开的“运 行”对话框中输入“gpedit.msc”,如图 6-57所示。 图 6-57 “运行”对话框 Step 02单击“确定”按钮,打开“本地组策 略编辑器”窗口,如图 6-58所示。 图 6-58 “本地组策略编辑器”窗口 Step 03依次展开“用户配置”→“管理模 板”→“系统”文件,双击“不运行指定的 Windows应用程序 ”选项,如图 6-59所示。 Step 04打开 “不运行指定的 Windows应用 图 6-56 “系统配置”对话框 程序”窗口,选择“已启用”来启用策略,如图 6-60所示。 第6章 渗透信息收集与踩点侦查 图 6-59 “系统”设置界面 图 6-60 选择“已启用” Step 05单击下方的“显示”按钮,打开“显示内容”对话框,在其中添加不允许的应用程序,如图 6-61所示。 图 6-61 “显示内容”对话框 Step 06单击“确定”按钮,即可把想要阻止的程序名添加进去,此时,如果再运行此程序,就会弹出相应的应用提示框了,如图 6-62所示。 图 6-62 限制信息提示框 第7章 SQL注入攻击及防范技术 SQL注入(SQL Injection)攻击,是众多针对脚本系统的攻击中最常见的一种攻击手段,也是危害最大的一种攻击方式。由于 SQL注入攻击易学易用,使得网上各种 SQL注入攻击事件成风,对网站安全的危害十分严重。本章就来介绍 SQL注入攻击及防范 技术。 7.1 什么是 SQL注入 SQL注入是一种常见的 Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或利用潜在的数据漏洞进行攻击。 7.1.1  认识 SQL SQL语言,也被称为结构化查询语言(Structured Query Language),是一种特殊的编程语言,用于存取数据以及查询、更新和管理关系数据库系统。由于它具有功能丰富、使用方便灵活、语言简洁易学等突出的优点,深受计算机用户的欢迎。 7.1.2  SQL注入漏洞的原理 针对 SQL注入的攻击行为可描述为通过用户可控参数中注入 SQL语法,破坏原有 SQL结构,达到编写程序时意料之外结果的攻击行为。其成因可以归结为以下两个原因叠加造成的。 (1)程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造 SQL语句。 (2)未对用户可控参数进行足够的过滤便将参数内容拼接进入到 SQL语句中。 7.1.3  注入点可能存在的位置 根据 DQL注入漏洞的原理,在用户“可控参数”中输入 SQL语法,也就是说 Web应用在获取用户数据的地方,只要带入数据库查询,都有存在 SQL注入的可能,这些地方通常包括 GET数据、 POST数据、 HTTP头部( HTTP请求报文其他字段)、 Cookie数据等。 7.1.4  SQL注入点的类型 不同数据库的函数、注入方法都是有差异的,所以在注入前,还要对数据库的类型进行判断。按提交参数类型分, SQL注入点可以分为如下 3种。 (1)数字型注入点。这类注入的参数是“数字”,所以称为“数字型”注入点,例如“ http://******?ID=98”。这类注入点提交的 SQL语句,其原形大致为: Select * from 表名 where 字段 =98。当提交注入参数为“ http://******?ID=98 And[查询条件 ]”时,向数据库提交的完整 SQL语句为:Select * from 表名 where 字段 =98 And [查询条件 ]。 (2)字符型注入点。这类注入的参数是“字符”,所以称为“字符型”注入点,例如“ http://******?Class=日期”。这类注入点提交的 SQL语句,其原形大致为: Select * from 表名 where 字段 ='日期 '。当提交注入参数为“ http://******?Class=日期 And[查询条件 ]”时,向数据库提交的完整 SQL语句为: Select * from 表名 where 字段 ='日期 ' and [查询条件 ]。 (3)搜索型注入点。这是一类特殊的注入类型,这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有“ keyword=关键字”,有的不显示明显的链接地址,而是直接通过搜索框表单提交。 搜索型注入点提交的 SQL语句,其原形大致为: Select * from 表名 where 字段 like '%关键字 %'。当提交注入参数为 “keyword='and [查询条件 ] and'%'='”,则向数据库提交的完整 SQL语句为: Select * from 表名 where 字段 like '%' and [查询条件 ] and '%'='%'。 7.1.5 SQL注入漏洞的危害 攻击者利用 SQL注入漏洞,可以获取数据库中的多种信息,例如管理员后台密码,从而获取数据库中内容。在特别情况下还可以修改数据库内容或者插入内容到数据库,如果数据库权限分配存在问题,或者数据库本身存在缺陷,那么攻击者可以通过 SQL注入漏洞直接获取 webshell或者服务器系统权限。 7.2 SQL注入攻击的准备 用户搭建的 SQL注入平台可以帮助我们演示 SQL注入的过程, SQL注入平台的搭建过程可以参照第 4章中的 4.1.3小节的内容,本节介绍 SQL注入攻击的准备。 第7章 SQL注入攻击及防范技术 7.2.1 攻击前的准备 黑客在实施 SQL注入攻击前会进行一些准备工作,同样,要对自己的网站进行 SQL注入漏洞的检测,也需要进行相同的准备。 1. 取消友好HTTP错误信息 在进行 SQL注入入侵时,需要利用从服务器上返回各种出错信息,但在浏览器中默认设置时不显示详细错误返回信息的,所以通常只能看到“ HTTP 500服务器错误”提示信息。因此,需要在进行 SQL注入攻击之前先设置 IE浏览器。具体的设置步骤如下。 在 IE浏览器窗口中,选择“工具”→“Internet选项 ”菜单项,即可打开 “Internet选项”对话框,如图 7-1所示。 图 7-1 “Internet选项”菜单项 Step 02选择“高级”选项卡,取消勾选“显示友好 HTTP错误信息”复选框之后,单击“确定”按钮,即可完成设置,如图 7-2所示。 2. 准备猜解用的工具 与任何攻击手段相似,在进行每一次入侵前,都要经过检测漏洞、入侵攻击、种植木马后门长期控制等几个步骤,同样,进行 SQL注入攻击也不例外。在这几个入侵步骤中,黑客往往会使用一些特殊的工具,以大大提高入侵的效率和成功率。在进行 SQL注入攻击测试前,需要准备如下攻击工具。 图 7-2 取消显示友好 HTTP错误信息 (1)SQL注入漏洞扫描器与猜解工具 ASP环境的注入扫描器主要有 NBSI、 HDSI、Pangolin_bin、WIS+WED和冰舞等,其中 NBSI工具可对各种注入漏洞进行解码,从而提高猜解效率,如图 7-3所示。 图 7-3 常用的 ASP注入工具 NBSI 冰舞是一款针对 ASP脚本网站的扫描 工具,可全面寻找目标网站存在的漏洞,如图 7-4所示。 图 7-4 冰舞主窗口 (2)Web木马后门 Web木马后门适用于注入成功后,安装在网站服务器上用来控制一些特殊的木马后门。常见的 Web木马后门有“冰狐浪子 ASP”木马、海阳顶端网 ASP木马等,这些都是用于注入攻击后控制 ASP环境的网站服务器。 (3)注入辅助工具 由于某些网站可能会采取一些防范措施,所以在进行 SQL注入攻击时,还需要借助一些辅助的工具,来实现字符转换、格式转换等功能。常见的 SQL注入辅助工具有“ ASP木马 C/S模式转换器”和“ C2C注入格式转换器”等。 7.2.2 寻找攻击入口 SQL注入攻击与其他攻击手段相似,在进行注入攻击前要经过漏洞扫描、入侵攻击、种植木马后门进行长期控制等几个过程。所以查找可攻击网站是成功实现注入的前提条件。 由于只有 ASP、PHP、JSP等动态网页才可能存在注入漏洞。一般情况下, SQL注入漏洞存在于“ http://www.xxx.xxx/abc. asp?id=yy”等带有参数的 ASP动态网页 中。因为只要带有参数的动态网页且该网页访问了数据库,就可能存在 SQL注入漏洞。如果程序员没有安全意识,没有对必要的字符进行过滤,则其构建的网站存在 SQL注入的可能性就很大。 在浏览器中搜索注入站点的步骤如下: Step 01在浏览器中的地址栏中输入网址 “www.baidu.com”,打开 baidu搜索引擎,输入“allinurl:asp?id=”进行搜索,如图7-5所示。 图 7-5 搜索网址中含有“asp?id=”的网页 Step 02打开baidu搜索引擎,在搜索文本中输入“allinurl:php?id=”进行搜索,如图 7-6所示。 图 7-6 搜索网址中含有“php?id=”的网页 利用专门注入工具进行检测网站是否存在注入漏洞,也可在动态网页地址的参数后加上一个单引号,如果出现错误则可能存在注入漏洞。由于通过手工方法进行 第7章 SQL注入攻击及防范技术 注入检测的猜解效率低,所以最好是使用专门的软件进行检测。 NBSI可以在图形界面下对网站进行注入漏洞扫描。运行程序后单击工具栏上的“网站扫描”按钮,在“网站地址”栏中输入扫描的网站链接地址,再选择扫描方式。如果是第一次扫描的话,可以选择“快速扫描”单选项,如果使用该方式没有扫描到漏洞时,再使用“全面扫描”单选项。单击“扫描”按钮,即可在下面列表中看到可能存在 SQL注入的链接地址,如图 7-7所示。在扫描结果列表中将会显示注入漏洞存在的可能性,其中标记为“可能性:极高”的注入成功的概率较大些。 7.3 SQL注入攻击演示 使用 SQLi-Labs可以演示 SQL注入过程,关于搭建 SQL注入平台的过程可以参照第 4章的 4.1.3小节的内容。 7.3.1 恢复数据库 SQL注入攻击离不开数据库,用户除了使用 PHP创建数据库外,还可以在 phpMyAdmin中恢复数据库,具体操作步骤如下: Step 01单击WampServer服务按钮 ,在弹 出的下拉菜单中选择“ phpMyAdmin”命 Step 04单击“浏览”按钮,打开“打开”令,如图 7-8所示。对话框,在其中选择要导入的 sql-lab.sql文 件,如图 7-11所示。 图 7-8 “phpMyAdmin”命令 Step 02打开 phpMyAdmin欢迎界面,在“用户名”文本框中输入“ root”,密码为空,如图 7-9所示。 图 7-9 phpMyAdmin欢迎界面 Step 03单击“执行”按钮,在打开的界面中选择 “导入 ”选项卡,进入 “导入到当前服务器”界面,如图 7-10所示。 图 7-11 “打开”对话框 Step 05单击“打开”按钮,返回到“导入到当前服务器”界面中,可以看到导入的数据库文件,单击“执行”按钮,如图 7-12所示。 图 7-12 导入数据库文件 Step 06数据库导入完毕后,可以看到界面中有导入成功的信息提示,如图 7-13所示。 图 7-10 “导入到当前服务器”界面 图 7-13 导入成功信息提示 7.3.2 SQL注入攻击 在浏览器中打开“ http://127.0.0.1/sqli-labs/”,可以看到有很多不同的注入点,分为基本 SQL注入、高级 SQL注入、SQL堆叠注入、挑战 4个部分,总共约 75个 SQL注入漏洞。如图 7-14所示,单击相应的超链接,即可在打开的页面中查看具体的注入点介绍。 图 7-14 查看注入点 本节就来演示通过 Less-1 GET-Error based-Single quotes-String(基于错误的 GET单引号字符型注入)注入点来获取数据库用户名与密码的过程。具体操作步骤如下: Step 01在浏览器中输入“http://127.0.0.1/sqli-labs/Less-1/?id=1”并运行,发现可以正确显示信息,如图 7-15所示。 图 7-15 显示信息 Step 02查看是否存在注入。在 http://127.0.0. 1/sqli-labs/Less-1/?id=1后面加入单引号,这里在浏览器中运行“http://127.0.0.1/sqli-labs/Less-1/?id=1'”,发现结果出现报错,那么存在注入,如图 7-16所示。 Step 03利用 order by语句逐步判断其表格有几列。这里在浏览器中运行“http://127. 第7章 SQL注入攻击及防范技术 0.0.1/sqli-labs/Less-1/?id=1' order by 3--+;”,从结果中发现表格有三列,如图 7-17所示。 图 7-16 报错信息 图 7-17 判断表格有几列 Step 04判断其第几列有回显,这里注意 id后面的数字要采用一个不存在的数字,比如 -1,-100都可以,这里采用的是 -1。这里在浏览器中运行“http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,2,3--+;”,从结果中发现 2、3列有回显,如图 7-18所示。 图 7-18 判断第几列有回显 Step 05查看数据库、列、用户和密码。这里在浏览器中运行“http://127.0.0.1/ sqli-labs/Less-1/?id=-1' union select 1,2,database()--+;”,可以查看其数据库名字,如图 7-19所示。 图 7-19 查看数据库名字 知道数据库名字以后可以查看数据库信息。这里在浏览器中运行 “http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables--+;”,如图 7-20所示。 图 7-20 查看数据库信息 Step 07查询用户名和密码。这里在浏览器中运行“http://127.0.0.1/sqli-labs/Less-1/?id=-1'union select 1,2, group_concat(concat_ ws('~',username,password)) from security. users--+;”,如图 7-21所示。 图 7-21 查询用户名和密码 7.4 常见的注入工具 SQL注入工具有很多,常见的注入工具包括 Domain注入工具、 NBSI注入工具等。本节就来介绍常见注入工具的使用。 7.4.1 NBSI注入工具 NBSI(网站安全漏洞检测工具,又叫 SQL注入分析器)是一套高集成性 Web安全检测系统,是由 NB联盟编写的一个非常强的 SQL注入工具。使用它可以检测出各种 SQL注入漏洞并进行解码,提高猜解效率。 在 NBSI中可以检测出网站中存在的注入漏洞,对其进行注入,具体实现步骤如下: 运行 NBSI主程序,即可打开 “NBSI”主窗口,如图 7-22所示。 Step 02单击“网站扫描”按钮,即可进入 “网站扫描”窗口,如图 7-23所示。在 “网站地址”中输入要扫描的网站地址,这里选择本地创建的网站,选中“快速扫描”单选按钮。 Step 03单击“扫描”按钮,即可对该网站进行扫描。如果在扫描过程中发现注入漏洞,漏洞地址及其注入性的高低将会显示在 “扫描结果”列表中,如图 7-24所示。 图 7-23 “网站扫描”窗口 图 7-24 扫描后的结果 Step 04在“扫描结果”列表中单击要注入的网址,即可将其添加到下面的“注入地址”文本框中,如图 7-25所示。 图 7-25 添加要注入的网站地址 Step 05单击“注入分析”按钮,即可进入 “注入分析”窗口中,如图 7-26所示。在 第7章 SQL注入攻击及防范技术 其中勾选 “ Post”复选框,可以在 “特征字符”文本区域中输入相应的特征字符。 图 7-26 “注入分析”窗口 Step 06设置完毕后,单击“检测”按钮即可对该网址进行检测,其检测结果如图 7-27所示。如果检测完毕之后,“未检测到注入漏洞”单选按钮被选中,则该网址是不能被用来进行注入攻击的。 图 7-27 对选择的网站进行检测 注意:这里得到的是一个数字型 +Access数据库的注入点, ASP+MSSQL型的注入方法与其一样,都可以在注入成功之后去读取数据库的信息。 Step 07在 NBSI主窗口中单击“扫描及工具”按钮右侧的下拉箭头,在弹出的快捷菜单中选择“ Access数据库地址扫描”菜单项,如图 7-28所示。 Step 10将扫描出来的数据库路径进行复制, 将该路径粘贴到 IE浏览器的地址栏中,即可自动打开浏览器下载功能,并弹出“另存为”对话框,或使用其他的下载工具,如图 7-31所示。 图 7-28 “Access数据库地址扫描”菜单项 Step 08在打开的“扫描及工具”窗口,将前面扫描出来的“可能性:较高”的网址复制到 “扫描地址 ”文本框中;并勾选 “由根目录开始扫描”复选框,如图 7-29所示。 图 7-29 “扫描及工具”窗口 Step 09单击“开始扫描”按钮,即可将可能存在的管理后台扫描出来,其结果会显示在“可能存在的管理后台”列表中,如图 7-30所示。 图 7-31 “另存为”对话框 Step 11单击“保存”按钮,即可将该数据下载到本地磁盘中,打开后结果如图 7-32所示,这样,就掌握了网站的数据库了,实现了 SQL注入攻击。 图 7-30 可能存在的管理后台 图 7-32 数据库文件 在一般情况下,扫描出来的管理后台不止一个,此时可以选择默认管理页面,也可以逐个进行测试,利用破解出的用户名和密码进入其管理后台。 7.4.2 Domain注入工具 Domain是一款出现最早,而且功能非常强大的 SQL注入工具,即旁注检测、 SQL猜解决、密码破解、数据库管理等功能。 1. 使用Domain实现注入 使用 Domain实现注入的具体操作步骤如下: Step 01先下载并解压 Domain压缩文件,双击“Domain注入工具”的应用程序图标,即可打开“Domain注入工具”的主窗口,如图 7-33所示。 图 7-33 “Domain注入工具”主窗口 Step 02单击“旁注检测”选项卡,在“输入域名”文本框内输入需要注入的网站域名。并单击右侧的 按钮,即可检测出该网站域名所对应的 IP地址,单击“查询”按钮,即可在窗口左下部分列表中列出相关站点信息,如图 7-34所示。 图 7-34 “旁注检测”页面 第7章 SQL注入攻击及防范技术 Step 03选中右侧列表中的任意一个网址并单击 “网页浏览 ”按钮,即可打开 “网页浏览”页面,可以看到页面最下方的“注入点”列表中,列出了所有刚发现的注入点,如图 7-35所示。 图 7-35 “网页浏览”页面 Step 04单击“二级检测”按钮,即可进入 “二级检测”页面,分别输入域名和网址后可查询二级域名以及检测整站目录,如图 7-36所示。 图 7-36 “二级检测”页面 Step 05若单击“网站批量检测”按钮,即可打开“网站批量检测”页面,在该页面中可查看待检测的几个网址,如图 7-37所示。 图 7-37 “网站批量检测”页面 Step 06单击“添加指定网址”按钮,即可打开“添加网址”对话框,在其中输入要添加的网址。单击 OK按钮,即可返回“网站批量检测”页面,如图 7-38所示。 图 7-38 “添加网址”对话框 Step 07单击页面最下方的“开始检测”按钮,即可成功分析出该网站中所包含的页面,如图 7-39所示。 图 7-39 成功分析网站中所包含的页面 Step 08单击“保存结果”按钮,即可打开 “Save As”对话框,在其中输入想要保存 的名称。单击 Save按钮,即可将分析结果保存至目标位置,如图 7-40所示。 图 7-40 保存分析页面结果 Step 09单击“功能设置”按钮,即可对浏览网页时的个别选项进行设置,如图 7-41所示。 图 7-41 “功能设置”页面 Step 10在“Domain注入工具”主窗口中选择“SQL注入”选项卡,单击“批量扫描注入点”按钮,即可打开“批量扫描注入点”标签页。单击“载入查询网址”按钮,即可在“批量扫描注入点”下方的列表中,显示出关联的网站地址。选中与前面设置相同的网站地址,最后单击右侧的 “批量分析注入点”按钮,即可在窗口最下方的“注入点”列表中,显示检测到并可注入的所有注入点,如图 7-42所示。 图 7-42 “扫描注入点”标签页 Step 11单击“SQL注入猜解检测”按钮,在 “注入点”地址栏中输入上面检测到的任意一条注入点,如图 7-43所示。 图 7-43 “SQL注入猜解检测”页面 Step 12单击“开始检测”按钮并在“数据库”列表下方单击“猜解表名”按钮,在 “列名”列表下方单击 “猜解列名 ”按钮;最后在 “检测结果 ”列表下方单击 “猜解内容”按钮,稍等几秒钟后,即可在检测信息列表中看到 SQL注入猜解检测的所有信息,如图 7-44所示。 2. 使用Domain扫描管理后台 使用 Domain扫描管理后台的方法很简单,具体的操作步骤如下: Step 01在“Domain注入工具”的主窗口中选择 “SQL注入”选项卡,再单击 “管理 第7章 SQL注入攻击及防范技术 入口扫描”按钮,即可进入“管理入口扫描”标签页,如图 7-45所示。 图 7-44 SQL注入猜解检测的所有信息 图 7-45 “管理入口扫描”标签页 Step 02在“注入点”地址栏中输入前面扫描到的注入地址,并根据需要选择“从当前目录开始扫描”单选项,最后单击“扫描后台地址”按钮,即可开始扫描并在下方的列表中显示所有扫描到的后台地址,如图 7-46所示。 Step 03单击“检测设置区”按钮,在该页面中可看到“设置表名”“设置字段”和“后台地址”三个列表中的详细内容。通过单击下方的“添加”和“删除”按钮,可以对三个列表的内容进行相应的操作,如图 7-47所示。 图 7-46 扫描后台地址 图 7-48 “综合上传”页面 图 7-47 “检测设置区”页面 3. 使用Domain上传WebShell 使用 Domain上传 WebShell的方法很简单,具体的操作步骤如下: Step 01在“Domain注入工具”主窗口中单击“综合上传”选项卡,根据需要选择上传的类型(这里选择类型为:动网上传漏洞),在“基本设置”栏目中,填写前面所检测出的任意一个漏洞页面地址并选中 “默认网页木马”单选项,在“文件名”和“Cookies”文本框中输入相应的内容,如图 7-48所示。 Step 02单击“上传”按钮,即可在“返回信息”栏目中,看到需要上传的 WebShell地址,如图 7-49所示。单击“打开”按钮,即可根据上传的 WebShell地址打开对应页面。 7.5 SQL注入攻击的防范 随着 Internet逐渐普及,基于 Web的各种非法攻击也不断涌现和升级,很多开发人员被要求使他们的程序变得更安全可靠,这也逐渐成为这些开发人员共同面对的问题和责任。由于目前 SQL注入攻击被大范围地使用,因此对其进行防御非常重要。 7.5.1 对用户输入的数据进行过滤 要防御 SQL注入,用户输入的变量就绝对不能直接被嵌入到 SQL语句中,所以必须对用户输入内容进行过滤,也可以使用参数化语句将用户输入嵌入到语句中,这样可以有效防止 SQL注入式攻击。在数据库的应用中,可以利用存储过程实现对用户输入变量的过滤,例如可以过滤掉存储过程中的分号,这样就可以有效避免 SQL注入攻击。 总之,在不影响数据库应用的前提下,可以让数据库拒绝分号分隔符、注释分隔符等特殊字符的输入。因为,分号分隔符是 SQL注入式攻击的主要帮凶,而注释只有在数据设计时用得到,一般用户的查询语句是不需要注释的。把 SQL语句中的这些特殊符号拒绝掉,即使在 SQL语句中嵌入了恶意代码,也不会引发 SQL注入式攻击。 7.5.2 使用专业的漏洞扫描工具 黑客目前通过自动搜索攻击目标并实施攻击,该技术甚至可以轻易地被应用于其他的 Web架构中的漏洞。企业应当投资于一些专业的漏洞扫描工具,如 Web漏洞扫描器,如图 7-50所示。一个完善的漏洞扫描程序不同于网络扫描程序,专门查找网站上的 SQL注入式漏洞,最新的漏洞扫描程序也可查找最新发现的漏洞。程序员应当使用漏洞扫描工具和站点监视工具对网站进行测试。 图 7-50 Web漏洞扫描器 第7章 SQL注入攻击及防范技术 7.5.3 对重要数据进行验证 MD5(Message-Digest Algorithm5)又称为“信息摘要算法”,即不可逆加密算法,对重要数据用户可以用 MD5算法进行加密。 在 SQL Server数据库中,有比较多的用户输入内容验证工具,可以帮助管理员来对付 SQL注入式攻击。例如,测试字符串变量的内容,只接受所需的值;拒绝包含二进制数据、转义序列和注释字符的输入内容;测试用户输入内容的大小和数据类型,强制执行适当的限制与转换等。这些措施既能有助于防止脚本注入和缓冲区溢出攻击,还能防止 SQL注入式攻击。 总之,通过测试类型、长度、格式和范围来验证用户输入,过滤用户输入的内容,这是防止 SQL注入式攻击的常见且行之有效的措施。 7.6 实战演练 7.6.1 实战1:检测网站的安全性 360网站安全检测平台为网站管理者提供了网站漏洞检测、网站挂马实时监控、网站篡改实时监控等服务。使用 360网站安全检测平台检测网站安全的操作步骤如下。 Step 01在 IE浏览器中输入 360网站安全检测平台的网址“http://webscan.360.cn/”,打开 360网站安全的首页,在首页中输入要检测的网站地址,如图 7-51所示。 Step 02单击“检测一下”按钮,即可开始对网站进行安全检测,并给出检测的结果,如图 7-52所示。 图 7-51 输入网站地址 图 7-52 检测的结果 Step 03如果检测出来网站存在安全漏洞,就会给出相应的评分,然后单击“我要更新安全得分”按钮,就会进入 360网站安全修复界面,在对站长权限进行验证后,就可以修复网站安全漏洞了,如图 7-53所示。 7.6.2 实战2:查看系统注册表信息 注册表(Registry)是 Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。通过注册表,用户可以添加、删除、修改系统内的软件配置信息或硬件驱动程序。查看 Windows系统中注册表信息的操作步骤如下: 在 Windows操作系统中选择“开始”→“运行”菜单项,打开“运行”对话框,在其中输入命令“regedit”,如图 7-54所示。 图 7-54 “运行”对话框 Step 02单击“确定”按钮,打开“注册表编辑器”窗口,在其中查看注册表信息,如图 7-55所示。 图 7-55 “注册表编辑器”窗口 图 7-53 修复网站安全漏洞 第8章 XSS漏洞攻击及防范技术 跨站脚本攻击(Cross Site Script为了区别于 CSS简称为 XSS)是最普遍的 Web应用安全漏洞,这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的 目的。 8.1 跨站脚本攻击概述 跨站脚本攻击指的是恶意攻击者往 Web页面里插入恶意 html代码,当用户浏览该页之时,嵌入其中 Web里面的 html代码会被执行,从而达到恶意用户的特殊目的。 8.1.1 认识 XSS XSS攻击全称跨站脚本攻击,它允许恶意 Web用户将代码植入到提供给其他用户使用的页面中,通过调用恶意的 JS脚本来发起攻击。 XSS攻击如此普遍和流行的主要因素有如下几点: (1)Web浏览器本身的设计是不安全的,浏览器包含了解析和执行 JavaScript等脚本语言的能力,这些语言可以用来创建各种丰富的功能,而浏览器只会执行,不会判断数据和代码是否恶意。 (2)输入和输出是 Web应用程序最基本的交互,在这过程中,若没有做好安全防护,Web程序很容易出现 XSS漏洞。 (3)现在的应用程序大部分是通过团队合作完成的,程序员之间的水平参差不齐,很少有人受过正规的安全培训,不管是开发程序员还是安全工程师,很多没有真正意识到 XSS的危害。 (4)触发跨站脚本攻击的方式非常简单,只要向 HTML代码中注入脚本即可,而且执行此类攻击的手段众多,譬如利用 CSS、Flash等。XSS技术的运用灵活多变,做到完全防御是一件相当困难的事情。 随着 Web 2.0的流行,网站上交互功能越来越丰富。 Web 2.0鼓励信息分享与交互,这样用户就有了更多的机会去查看和修改他人的信息,比如通过论坛、 blog或社交网络,于是黑客也就有了更广阔的空间发动 XSS攻击。 8.1.2 XSS的模型 XSS通过将精心构造的代码( JS)注入到网页中,并由浏览器解释运行这段 JS代码,以达到恶意攻击的效果。当用户访问被 XSS脚本注入的网页, XSS脚本就会被提取出来,用户浏览器就会解析这段 XSS代码,也就是说用户被攻击了。 用户最简单的动作就是使用浏览器上网,并且浏览器中有 JavaScript解释器,可以解析 JavaScript,然后浏览器不会判断代码是否恶意。也就是说, XSS的对象是用户和浏览器。图 8-1为 XSS攻击模型示意图。 图 8-1 XSS攻击模型示意图 8.1.3 XSS的危害 微博、留言板、聊天室等用于收集用户输入的地方,都有可能被注入 XSS代码,都存在遭受 XSS的风险,只要没有对用户的输入进行严格过滤,就会被 XSS。总之,常见 XSS的危害如下: (1)窃取 Cookie信息。恶意 JavaScript可以通过“ document.cookie”获取 Cookie信息,然后通过 XMLHttpRequest或者 Fetch加上 CORS功能将数据发送给恶意服务器;恶意服务器拿到用户的 Cookie信息之后,就可以在其他计算机上模拟用户的登录,然后进行转账等操作。 (2)监听用户行为。恶意 JavaScript可以使用“ addEventListener”接口来监听键盘事件,比如可以获取用户输入的信用卡等信息,将其发送到恶意服务器。黑客掌握了这些信息之后,又可以做很多违法的事情。 (3)通过修改 DOM伪造假的登录窗口,用来欺骗用户输入用户名和密码等信息。 (4)在页面内生成浮窗广告,这些广告会严重影响用户体验。 8.1.4 XSS的分类 常见的 XSS攻击有反射型、 DOM-based型和存储型。其中反射型、 DOM-based型可以归类为非持久型 XSS攻击,存储型归类为持久型 XSS攻击。 1. 反射型 反射型 XSS一般是攻击者通过特定手法(如电子邮件)诱使用户去访问一个包含恶意代码的 URL,当受害者单击并访问这些专门设计的链接时,恶意代码会直接在受害者主机上的浏览器执行。 此类 XSS通常出现在网站的搜索栏、用户登录口等地方,常用来窃取客户端 Cookies或进行钓鱼欺骗。 2. DOM-based型 客户端的脚本程序可以动态地检查和修改页面内容,而不依赖于服务器端的数据。例如客户端从 URL中提取数据并在本地执行,如果用户在客户端输入的数据包含了恶意的 JavaScript脚本,而这些脚本没有经过适当的过滤和消毒,那么应用程序就可能受到 DOM XSS攻击。 3. 存储型 攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。这意味着只要访问了这个页面,就都有可能会执行这段恶意脚本,因此存储型 XSS的危害会更大。 存储型 XSS一般出现在网站留言、评论等交互处,恶意脚本存储到客户端或者服务端的数据库中。 8.2 XSS平台搭建 跨站点“ Scripter”(又名 Xsser)是一个自动框架,用于检测、利用和报告基于 Web的应用程序中的 XSS漏洞。它包含几个可以绕过某些过滤器的选项,以及各种特殊的代码注入技术。本节就来介绍 XSS平台的搭建。 第8章 XSS漏洞攻击及防范技术 8.2.1 下载源码 搭建 XSS测试平台的前提就是下载 XSS源码,下载地址为“ https://pan.baidu. com/s/1NV4NhFfjtRwBh34x-QZhNQ”,下载之后将 xss压缩包解压到 www的文件夹下,该文件夹就是网站的根目录,如图 8-2所示。 图 8-2 XSS源码 8.2.2 配置环境 源码下载完成后,下面还需要配置环境,具体操作步骤如下: Step 01打开 PHPmyadmin工作界面,单击数据库,创建一个名称 xssplatform的数据库,如图 8-3所示。 图 8-3 创建数据库 选中 xssplatform数据库,在 PHP-myadmin工作界面中单击“导入”按钮, 进入“要导入的文件”界面,在其中单击 “浏览 ”按钮,打开“选择要加载的文件”对话框,在其中选择要导入的数据库文件,如图 8-4所示。 图 8-4 选择要恢复的数据库 Step 03单击“打开”按钮,返回到“导入”工作界面中,可以看到添加的数据库文件路径,如图 8-5所示。 图 8-5 查看添加的数据库 Step 04单击“执行”按钮,即可将备份好的数据库文件导入到 xssplatform数据库中,可以看到该数据库包含了 9张数据表,如图 8-6所示。 图 8-9 修改网站域名 Step 08配置伪静态文件(.htaccess),具体代码如下: 修改 xss文件夹下的 con.g.php文件,这里修改的是用于数据库连接的语句,具体内容包括用户名、密码、数据库名,如图 8-7所示。 修改 xss文件夹下的 con.g.php文件,这里修改 url配置内容,具体内容包括访问 URL起始和伪静态的设置,如图 8-8所示。 图 8-6 恢复数据库 图 8-7 修改数据库连接信息 然后将伪静态文件( .htaccess)放置到 xss文件夹下,如图 8-10所示。到这里 XSS平台就搭建好了。 图 8-8 修改 url配置信息 Step 07进入 PHPmyadmin工作界面,运行如下 SQL语句: 图 8-10 配置伪静态文件 注意:一定要配置这个文件,如果没有配置的话,XSS平台生成的网址将不能获取他人的 Cookie信息。 将地址修改成创建的网站域名,如图 8-9所示。 第8章 XSS漏洞攻击及防范技术 8.2.3 注册用户 环境配置完成后,还需要注册才能使用 XSS平台,注册用户的操作步骤如下: Step 01在地址栏中输入“http://localhost/xss/ index.php”,即可打开 XSS Platform主页,如图 8-11所示。 图 8-11 XSS Platform主页 Step 02单击“注册”按钮,即可进入注册页面,在其中输入注册信息,如邀请码、用户名、邮箱、密码等信息,如图 8-12所示。 Step 03单击“提交注册”按钮,即可完成用户的注册操作,并进入我的项目页面,如图 8-13所示。 Step 04注册好自己的数据账户后,登录 PHPmyadmin工作界面,在其中将自己的账户“fendou”权限设置为 1,如图 8-14所示。 Step 05在地址栏中输入“http://localhost/xss/ index.php”,即可打开 XSS Platform主页,在其中输入注册的用户信息,这里输入 “fendou”,如图 8-15所示。 图 8-13 我的项目页面 图 8-14 修改账户的权限 图 8-15 输入用户信息 Step 06单击“登录”按钮,即可进入 XSS Platform主页,在其中单击“邀请”按钮,进入“邀请码生成”页面,如图 8-16所示。 图 8-16 “邀请码生成”页面 Step 07单击“生成奖品邀请码”和“生成其8.2.4 测试使用他邀请码”超链接,即可生成邀请码,如新建一个项目,测试生成的 XSS漏洞 图 8-17所示。是否可以使用,具体操作步骤如下: 图 8-17 生成邀请码 Step 08退出“fendou”用户,使用生成的邀请码邀请好友注册,如图 8-18所示。 Step 01在 XSS Platform主页中单击 “我的项目”右侧“创建”按钮,如图 8-20所示。 图 8-21 输入项目名称与描述 图 8-18 使用邀请码注册 Step 09单击“提交注册”按钮,即可完成用户的注册,当前用户为“fendou123”,如图 8-19所示。 图 8-20 创建“我的项目” Step 02在打开的“创建项目”工作界面中输入项目名称和项目描述信息,如图 8-21所示。 Step 03单击“下一步”按钮,进入项目详 细信息页面,这里勾选“默认模块”复选框,如图 8-22所示。 Step 04单击“下一步”按钮,即可完成项目 的创建,如图 8-23所示。 Step 05在地址栏中输入“http://localhost/xss/ JI2vUi”网址并运行,即可出现如图 8-24所示的运行结果,这就说明 Apache伪静态 图 8-19 完成用户的注册 第8章 XSS漏洞攻击及防范技术 配置成功,如图 8-24所示。 图 8-22 项目详细信息页面 图 8-23 完成项目的创建 图 8-25 Apache伪静态配置未成功 8.3 XSS攻击实例分析 XSS攻击是在网页中嵌入客户端恶意脚本代码,这些恶意代码一般是使用 JavaScript语言编写的。本节就来分析一些简单的 XSS攻击实例。 8.3.1 搭建 XSS攻击 DVWA(Damn Vulnerable Web App)是一个基于 php/MySQL搭建的 Web应用程序,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助 Web开发者更好地理解 Web应用安全防范的过程。使用 DVWA搭建 XSS攻击靶场的操作步骤如下: 下载 DVWA源码,下载地址为 “https://github.com/ethicalhack3r/DVWA”,如图 8-26所示。 图 8-24 Apache伪静态配置成功 提示:如果伪静态没有配置成功就会出现如图 8-25所示的错误提示信息。 图 8-26 DVWA下载页面 Step 02将下载的 DVWA安装包解压,然后 Step 05在 DVWA安装网页的底部单击“创将解压的文件夹放置在 Wampserver32的建 /重置数据库”按钮,就可以安装数据库www目录下,如图 8-27所示。了,如图 8-30所示。 图 8-27 DVWA文件夹 打开 DVWA目录,会看到 con.g. inc.php文件,打开该文件夹,将默认的数据库用户名设置为“ root”,密码设置为 “ 123”,因为 PHPmyadmin的默认数据库名为“ root”,密码设置了“ 123”,如图 8-28所示。 图 8-28 修改 con.g.inc.php文件 Step 04在浏览器中输入 http://localhost/dvwa/ setup.php,进入 DVWA安装网页,如图 8-29所示。 图 8-29 DVWA安装网页 图 8-30 安装数据库 Step 06安装完数据库后,网页会自动跳转 DVWA的登录页,输入用户名“ admin”,密码“ password”,如图 8-31所示。 图 8-31 输入用户名与密码 Step 07单击“登录”按钮,就可以进入该网站平台,可以进行安全测试的实践了,如图 8-32所示。 Step 08单击“ DVWA”按钮,进入 DVWA安全页面,在其中设置 DVWA的安全等级为“ low”,最后单击“提交”按钮即可,如图 8-33所示。 图 8-32 DVWA网站平台 8.3.2 反射型 XSS 反射型 XSS又称为非持久性跨站点脚本攻击,它是最常见的 XSS类型。漏洞产生的原因是攻击者注入的数据反映在响应中。一个典型的非持久性 XSS包含一个带 XSS攻击向量的链接,即每次攻击需要用户的点击。 下面演示反射型 XSS的过程,具体操作步骤如下: Step 01在 DVWA工作界面中选择 XSS(反射型)选项,进入 XSS(反射型)操作界面,如图 8-34所示。 Step 02在文本框中随意输入一个用户名,这里输入“Tom”,提交之后就会在页面上显示,从 URL中可以看出,用户名是通过 第8章 XSS漏洞攻击及防范技术 name参数以 GET方式提交的,如图 8-35所示。 图 8-34 XSS(反射型)操作界面 图 8-35 输入用户名 Step 03查看源代码,可以看出没有做任何限制,如图 8-36所示。 图 8-36 查看源代码 Step 04在输入框中输入 “payload:”,这是 JavaScript语句,大家可以自行学习,前端表单的执行语句是 JavaScript,如图 8-37所示。 图 8-37 执行 JavaScript语句 Step 05单击“提交”按钮,即可弹出信息提示框,并将数据存入数据库,如图 8-38所示。 图 8-38 信息提示框 Step 06查看网页源码可以看到语句已经嵌入到代码中,如图 8-39所示。这样等到别的客户端请求这个留言时,会将数据取出并在显示留言时执行攻击代码。 图 8-39 查看网页源码 在输入框中输入 “”,如图 8-40所示。 图 8-40 输入 JavaScript语句 Step 08单击“提交”按钮,即可在弹出的信息框中显示 Cookie信息,如图 8-41所示。 图 8-41 查看 Cookie信息 8.3.3 存储型 XSS 存储型 XSS又被称为持久性 XSS,是最危险的一种跨站脚本。存储型 XSS可以出现的地方更多,在任何一个允许用户存储的 Web应用程序都可能会出现存储型 XSS漏洞。下面演示存储型 XSS的过程,具体操作步骤如下: Step 01在 DVWA工作界面中选择 XSS(存储型)选项,进入 XSS(存储型)操作界面,如图 8-42所示。 图 8-42 XSS(存储型)操作界面 Step 02在文本框中输入 JavaScript语句,这里发现名字的长度受限制,这里需要将 “maxlength”属性值修改为“100000”,表示名称的长度不受限制,如图 8-43所示。 图 8-43 修改“maxlength”属性值 在名称和浏览文本框中输入 JavaScript语句,如图 8-44所示。 图 8-44 输入 JavaScript语句 第8章 XSS漏洞攻击及防范技术 Step 04单击“提交留言”按钮,即可弹出如图 8-45所示的信息提示框,表示语句执行成功。 图 8-45 信息提示框 Step 05修改 JavaScript语句为“”,如图 8-46所示。 图 8-46 修改 JavaScript语句 Step 06单击“提交留言”按钮,在弹出好几次“hello”之后,才会弹出“xss”信息提示框,如图 8-47所示。 图 8-47 信息提示框 Step 07返回到 DVWA中的 XSS(存储型)操作界面中,可以看到存储型 XSS之前输入的信息依旧还在,如图 8-48所示。这也是反射型 XSS与存储型 XSS之间最大的区别。 这样,当攻击者提交一段 XSS代码后,被服务器端接收并存储,当攻击者再次访问某个页面时,这段 XSS代码被程序读出来响应给浏览器,造成 XSS跨站攻击。 图 8-48 XSS(存储型)操作界面 8.3.4 基于 DOM的 XSS DOM的全称为 Document Object Model,即文档对象模型, DOM通常用于代表在 HTML、XHTML和 XML中的对象。使用 DOM可以允许程序和脚本动态地访问和更新文档的内容。DOM型 XSS其实是一种特殊类型的反射型 XSS,它是基于 DOM文档对象模型的一种漏洞。 下面演示基于 DOM的 XSS的过程,具体操作步骤如下: 在 DVWA工作界面中选择 XSS(DOM型)选项,进入 XSS(DOM型)操作界面,如图 8-49所示。 图 8-49 XSS(DOM型)操作界面 Step 02在 DVWA工作界面中单击“查看源代码”按钮,在打开的界面中可以看到 DOM XSS服务器端没有任何 php代码,执行命令的只有客户端的 JavaScript代码,如图 8-50所示。 图 8-50 查看源代码界面 选择一种语言,这里选择 “English”,可以看到地址栏中“default”的值为“English”,如图 8-51所示。 图 8-51 选择一种语言 修改地址栏中 “default”的值为 “”,如图 8-52所示。 图 8-52 修改“default”的值 Step 05运行浏览器,即可弹出如图 8-53所示的信息提示框,语句执行成功。 图 8-53 运行结果 8.4 跨站脚本攻击的防范 XSS漏洞的起因是没有对用户提交的 数据进行严格的过滤处理。因此在思考解决 XSS漏洞的时候,我们应该重点把握如何才能更好地将用户提交的数据进行安全过滤。下面就来对跨站攻击方式的相关代码进行分析。 1. 过滤“<”和“>”标记 跨站脚本攻击的目标,是引入 Script代码在目标用户的浏览器内执行。最直接的方法,就是完全控制播放一个 HTML标记,如输入“