第5章〓Web服务器攻防实训
攻击者在确定了攻击对象后,只有在实施攻击前全面掌握被攻击对象的详细配置信息,才能从中发现可利用的安全漏洞,进而确定具体的攻击方法,并实施渗透攻击。因此,Web服务器的安全防范十分重要。本章主要针对Web服务器的安全问题,通过对几个典型的攻防实验操作,使读者对Web服务器的安全性有一个直观的认识。
5.1主机扫描: 路由信息的收集
5.1.1预备知识: 路由信息
路由路径跟踪是实现网络拓扑探测的主要手段,Linux操作系统中的traceroute和 Windows环境中的tracert程序分别提供了不同平台上的路由路径跟踪功能,两者的实现原理相同,都是用 TTL(time to live,生存时间)字段和 ICMP 错误消息确定从一个主机到网络上其他主机的路由,进而确定 IP 数据包访问目标 IP 所采取的路径。在对目标网络中的不同主机进行相同的路由跟踪后,攻击者就可以综合这些路径信息,绘制出目标网络的拓扑结构,并确定关键设备在网络拓扑中的具体位置信息。
路由器(router)是一种网络通信设备,它工作在网络层,可以将应用层的报文划分成一个个分组后独立地发送到目的地(目的网络),这个过程被称为路由。在网络拓扑组成中,路由器就是连接两个以上网络的互联设备。目前,路由器是互联网中连接不同局域网、广域网的网络互联设备。路由器根据不同的算法(路由协议)自动选择和设定路由,以最佳路径将原网络中的分组逐个发送到目的网络。路由器是互联网络的枢纽,可以将其理解为现代交通路网中的“交通警察”。
5.1.2实验目的和条件
1. 实验目的
在掌握TCP/IP体系结构,特别是掌握网络层路由协议和路由器工作原理的基础上,通过学习Linux操作系统环境下相关路由跟踪工具的使用方法,掌握路由信息的探测和信息收集与分析方法。尤其是通过对几个工具(主要有traceroute、dmitry、itrace、tcptraceroute、tctrace)应用功能的对比分析,可以发现不同工具的应用优势。
2. 实验条件
为使实验与实际应用有机结合,本实验使用一台运行Kali Linux 2021操作系统的计算机作为实验环境进行实验。
5.1.3实验过程
步骤1: 正确登录Kali Linux系统,选择菜单栏上的Terminal选项,打开终端操作窗口。
步骤2: traceroute(跟踪路由)是路由跟踪程序,用于确定 IP 数据包到目标主机所经过的路径。traceroute 命令可以用 IP生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由,其格式为“traceroute [参数] [主机]”。如果使用traceroute工具来追踪www.baidu.com(36.152.44.95是百度的IP地址,也可以直接使用域名www.baidu.com),追踪成功后将显示如图51所示的结果。由于traceroute默认使用udp方式,大部分应用服务器就不处理udp包,虽然图51中最后全是“*”,实际上已经是到达目标主机了。
图51使用traceroute工具成功追踪www.baidu.com的显示结果
需要注意的是,如果Kali Linux安装在虚拟机环境下,采用traceroute进行外网路由跟踪时,应将网络连接设置为非NAT 模式(如桥接模式),因为NAT是有网段隔离的,返回的ICMP包无法到达虚拟机。
步骤3: DMitry是黑客渗透流程中进行深度信息收集的利器。其常用功能如下。
(1) 进行TCP端口扫描,收集端口相关状态或其他信息。
(2) 从Netcraft.com获取主机信息、子域名、域名中包含的邮件地址。
(3) 收集Whois主机IP和域名等信息。
上述功能的具体使用方法可以通过dmitry h命令查看,如图52所示。
图52dmitry支持的使用参数
输入dmitry wnp www.baidu.com命令,扫描百度网站的Whois域名注册信息、对应服务器主机打开的端口信息,操作过程和显示结果分别如图53、图54所示,读者会发现该主机开放了SMTP的25端口。
图53百度网站的Whois域名注册信息
图54百度网站服务器打开的端口信息
步骤4: itrace工具的应用。itrace与traceroute使用I参数功能类似,使用ICMP反射请求跟踪路由。
执行itrace i eth0 d www.baidu.com命令,可以看到如图55所示的回复信息,说明已经进行了成功追踪。
图55使用itrace工具成功追踪到www.baidu.com后的显示信息
需要说明的是,百度www.baidu.com主机前面肯定是存在防火墙等安全设备的。这时,如果再使用traceroute工具追踪,将会得到如图56所示的结果,显示无法正常追踪,这充分说明了itrace工具的应用优势。
图56使用traceroute工具无法追踪到www.baidu.com主机的信息
步骤5: tcptraceroute工具的应用。tcptraceroute工具通过向目标主机发送TCP SYN数据包来追踪路由。与 traceroute使用T参数功能类似。
执行tcptraceroute www.baidu.com命令,可追踪到百度服务器的路由路径。如图57所示,追踪到的最后一跳主机的IP地址为36.152.44.95,而该地址为百度服务器的地址,说明已经进行了成功追踪。
图57tcptraceroute成功追踪www.baidu.com主机后的显示信息
步骤6: 与tcptraceroute相比,如果使用不带参数的traceroute进行追踪,则默认使用的是udp数据包,网络中一些路由器或防火墙可能会封掉ICMP返回的信息,该条信息会以“*”显示。同时大部分应用服务器不提供udp服务,因此最后没有收到主机不可达的信息,不停增大TTL值进行追踪,如图58所示。
图58使用traceroute发送upd追踪www.baidu.com后显示的结果
traceroute使用参数I发送ICMP请求,追踪结果如图59所示,网络中大部分路由不响应ICMP请求。
图59使用traceroute I发送ICMP追踪www.baidu.com后显示的结果
traceroute使用参数q,设定发送数据包的个数,如图510所示,会发现一些能够响应ICMP请求的路由器。
图510使用traceroute q发送ICMP追踪www.baidu.com后显示的结果
步骤7: my trace route工具的应用。在命令行终端中输入mtr www.baidu.com命令后,会出现如图511所示的路由追踪界面,该界面定时动态刷新结果。
图511使用mtr追踪www.baidu.com的显示信息
步骤8: tctrace工具的应用。tctrace工具命令格式与itrace类似,功能上与traceroute使用T参数类似。运行tctrace i eth0 d www.baidu.com命令,可追踪到百度服务器的路由路径。如图512所示,追踪的最后一跳显示reached; open信息,说明已经追踪成功。
图512使用tctrace工具成功追踪www.baidu.com主机后的显示信息
5.1.4任务与思考
通过本实验,虽然读者已经掌握了路由信息的获得方式,但为了能够适应复杂网络环境下的攻防要求,还需要进一步对路由器的相关功能进行学习。路由器的主要功能包括以下几方面。
(1) 在不同的网络间接收分组,然后根据分组中的目的IP地址来查询路由表,再通过合适的接口将分组转发出去。
(2) 选择最合理的路由,引导通信。为了实现这一功能,路由器要按照某种路由通信协议(典型协议有RIP、OSPF、BGP等)查找路由表。网络中的每个路由器按照这一规则动态地更新它所保存的路由表,以便维护有效的路由信息。
(3) 在转发分组的过程中,为了便于在网络间传送分组,路由器需要按照预定的规则把大的数据包(应用层的报文)分解成适合在不同网络之间自由传输的小数据包,到达目的地后再把分解的数据包重组成原有形式(应用层的报文)。
(4) 多协议的路由器可以连接使用不同通信协议的网络段,作为不同通信协议网络段间通信连接的平台。
(5) 路由器的主要任务是把通信引导到目的地网络(局域网),然后根据分组中的目的IP地址转发给指定的主机。后一个功能是通过网络地址解析协议(address resolution protocol,ARP)完成的。
(6) 动态限速。动态限速路由器能够实时地计算每位用户所需要的带宽,精确分析用户上网类型,并合理分配带宽。
(7) 缺乏源地址认证。路由器接收到一个分组时,正常情况下只会查看其目的IP地址,将以目的IP地址为查询路由表并转发分组,但其不会对源IP地址进行认证。即路由器对接收到的分组,只需要考虑它到哪里去,而不考虑它从哪里来。这一机制带来了网络安全问题,许多针对网络的攻击都是利用了这一机制,通过设置虚假的源IP地址来欺骗目的主机,再利用一些协议的工作机制(如TCP的三次握手)进行攻击。
5.2主机扫描: 主机探测
5.2.1预备知识: 主机扫描方法
主机扫描(host scan)是指通过对目标网络(一般为一个或多个 IP 网段)中主机 IP 地址的扫描确定目标网络中有哪些主机处于运行状态的技术。主机扫描的实现一般需借助 ICMP、TCP、UDP 等协议的工作机制,来探测并确定某一主机当前的运行状态和可被利用的资源(如打开的进程、开放的端口等)。
1. 基于 ICMP 协议的扫描方法
Internet 控制报文协议(internet control message protocol,ICMP)是TCP/IP协议栈的网际层提供的一个为主机或路由器报告差错或异常情况的协议。分组网间探测(Packet Internet Groper,PING)是ICMP的一个重要的应用功能,它是应用层直接调用网际层ICMP的一个特殊应用,通过使用ICMP回送请求与回送应答报文来探测两台主机之间网络的连通性。
2. 基于TCP的主机扫描方法
传输控制协议(transmission control protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。任意两个节点间每一个TCP通信的建立都需要有连接建立、数据传输和连接释放这3个过程(即TCP三次握手),其目的是让通信的双方都知道彼此的存在,并通过双方协商来确定具体的通信参数(如缓存大小、连接表中的项目、最大窗口值等)。
3. 基于UDP的主机扫描方法
用户数据报协议(user datagram protocol,UDP)是一个无连接(没有提供三次握手过程)的、尽最大努力交付(不可靠)的、面向报文(保留了报文的边界)的传输层通信协议。与TCP相比,UDP最大的优点是占用资源少、效率高,最大的缺点是不可靠。
5.2.2实验目的和条件
1. 实验目的
主机探测是主机扫描过程的重要组成部分。通过主机探测,可以在确定的范围(一般为一个或多个IP地址段)发现正在运行(存活)的主机,为下一步攻击(端口扫描和操作系统类型确定)奠定基础。在网络攻击过程中,每一个实现步骤之间都是相互关联和相互影响的,前一个环节的操作成果是后一个环节的基础。主机探测的主要目的是确定被攻击对象,只有对象的确定是准确无误的,那么后续的工作开展才会有价值和意义。
通过本实验,读者需要掌握Kali Linux环境下ping、arping、fping和nbtscan工具的使用方法,以及不同工具的应用特点和功能区别。
2. 实验条件
本实验需要在网络环境中进行。建议实验在一个局域网内部进行,这样可以通过实验发现本局域网中有哪些主机处于运行状态。例如,一个局域网中有50台主机,为了实验,可以让其中的10台(随意确定)运行,其他主机处于关闭状态。通过本实验,将实验结果与实际情况进行对比分析,以验证实验结果的正确性和可信性。
本实验中使用的攻击主机仍然是运行Kali Linux 2021系统的计算机。
5.2.3实验过程
步骤1: 正确登录Kali Linux系统。如果进入的是命令行模式,为方便实验进行,可输入startx命令切换到图形界面。选择菜单栏上的Terminal选项,打开终端操作窗口。
步骤2: ping工具的应用。ping是非常著名的用来检查主机是否在线的工具。该工具的工作原理基于发送ICMP ECHO Request包到目标主机,如果目标主机在线并且不对ping请求数据包进行阻止时,将回复一个ICMP ECHO Reply数据包。 ping命令的选项较多,最常用的有以下几个。
c count: ECHO_Request包发送数量。
i interface address: 源地址网络接口,该参数可以是IP地址或网卡名称。
s packetsize: 指定要发送的数据字节数,默认值是56字节,然后再与8字节的ICMP头数据组成64B的ICMP数据包。
在实验中,如果要检查目标IP地址192.168.244.132(被攻击对象的IP地址),且发送两个大小为1000字节的包,其命令为ping c 2 s 1000 192.168.244.132, 如图513所示。
图513ping c 2 s 1000 192.168.244.132的运行过程和结果
步骤3: arping工具的应用。arping是一个在局域网中利用ARP来探测目标主机连通性的工具。arping工具在测试特定IP地址在网络中是否使用时非常有用。该命令只能运行在本地局域网内,无法跨越路由器和网关。在终端窗口中,可以输入arping命令,按Enter键获取该命令的所有选项及其使用方法介绍。常用的选项为apring c。例如,输入arping c 5 192.168.244.132命令,其运行过程和结果如图514所示(可与图513中ping命令的运行过程和结果进行对比)。
图514arping c 5 192.168.244.132的运行过程和结果
步骤4: fping工具的应用。fping工具可以同时向多个目标主机(主机列表)发送ping(ICMP ECHO)请求包。主机列表可以在命令行中指定也可以通过包含目标主机的文件指定。默认模式下,fping通过监视目标主机的回复判断主机是否可用。如果目标主机返回应答,其信息将会从目标记录清单中删除; 如果主机在一段时间内不响应(超时或超过尝试次数),该主机将会被标记为不可达。默认情况下,fping将尝试向每个目标发送3个ICMP ECHO数据包。
在终端中执行fping h命令,可以查看该命令的帮助文档,如图515所示。
图515fping命令的帮助文档
fping可以识别多个主机,例如,通过fping 192.168.244.129 192.168.244.132命令(不同的IP地址之间用一个空格隔开),可以查看当前这两台主机是否处于运行状态,运行过程和结果如图516所示。
图516使用fping 192.168.244.129 192.168.244.132命令同时查看两台主机是否在线
另外,如果需要查看多个目标主机的统计结果,可以使用fping s命令加一个或多个域名(或IP地址)命令,如图517所示。
图517使用fping命令同时查看多个目标主机
输入fping g a q 192.168.138.0/24命令,可以生成目标网络中可用主机清单,如图518所示。
图518使用fping命令生成可用主机清单
步骤5: NBTScan工具的应用。NBTScan工具可用于扫描网络上NetBIOS名称信息,该工具对给出范围内的每一个地址发送NetBIOS状态查询,对于每个响应的主机来说,NBTScan列出它的IP地址、NetBIOS计算机名、登录用户名和MAC地址,但其只能用于局域网。直接执行nbtscan命令,会显示该命令的帮助文档,如图519所示。
图519nbtscan工具的帮助文档信息
例如,如果要显示192.168.224.0/24网段中的可用主机,可以使用nbtscan 192.168.244.0/24命令,如图520所示。
图520使用nbtscan工具同时显示192.168.244.0/24网段中的可用主机
5.2.4任务与思考
通过本实验的练习,读者还需要继续学习和掌握基于TCP 协议的主机扫描方法。
基于TCP的主机扫描方法的关键是TCP的三次握手过程。其中,ACK表示 Server(服务器)对Client(客户端)请求建立的确认,但是,如果Client根本没有进行SYN请求(第一次握手),而是直接进行确认(第三次握手),此时,Server就会认为出现了一个重要的错误,会向Client发送一个头部“复位”(RST)字段为1的报文,告诉Client必须释放本次连接,再重新建立TCP连接。根据该工作机制,如果攻击者向目标主机发送一个只有ACK的报文,当接收到目标主机一个RST反馈报文时,就可以确认目标主机的存在。
另一种是利用TCP三次握手过程针对主机的SYN扫描。如果目标主机处于运行状态,但主机上的服务器进程没有打开,则目标主机将返回一个 RST 报文; 如果目标主机上的服务器进程处于“监听”(listen)状态,则会返回一个第二次握手的ACK/SYN报文。不管返回哪一种报文,都可以从中判断目标主机的当前状态。
以上探测方法需要读者在继续深入学习TCP及相关协议工作原理的基础上,借助相关的工具软件通过具体的实验来学习和掌握。
5.3端口扫描: Zenmap工具的应用
5.3.1预备知识: 端口扫描
端口扫描(port scan)是对正处于运行状态的主机使用的TCP/UDP端口进行探测的技术。端口是用于标识计算机应用层中的各个进程在与传输层交互时的层间接口地址,两台计算机间的进程在通信时,不仅仅要知道对方的IP地址,还要知道对方的端口号。为此,可以将端口理解为进入计算机应用进程的窗口,在TCP和UDP中端口用16b字段表示,其值为0~65535。传输层的端口分为服务器端使用的端口号和客户端使用的端口号两大类。其中,服务器端使用的端口号又分为两类: 一类为熟知端口号(well known ports)或系统端口号,其值为0~1023,可以在 http://www.iana.org网站上查到; 另一类为登记端口号,其值为1024~49151,使用这类端口时需要在 IANA (the internet assigned numbers authority,互联网数字分配机构)进行登记。客户端使用的端口号被称为短暂端口号,其值为49152~65535,仅在客户进程运行时临时使用,通信结束后即会被收回。
由于TCP和UDP可以使用相同的端口号(如DNS同时使用了TCP 53和UDP 53 两个端口号),因此端口扫描需要分别针对TCP和UDP的端口号进行。由于TCP要比UDP复杂,因此针对TCP端口的扫描也要比UDP端口扫描复杂。TCP端口扫描包括连接(connect)扫描、SYN 扫描、TCP 窗口扫描、FIN 扫描、ACK 扫描等。
1. 连接扫描
攻击者(扫描主机)通过调用系统的connect()函数,可以与目标主机的每个端口尝试通过三次握手建立TCP连接,在攻击者发起连接请求(第一次握手)后,如果目标主机上对应的端口已被打开,则返回一个第二次握手的ACK/SYN报文,connect()调用将再发送一个ACK 确认报文以完成第三次握手。如果目标端口是关闭的,那么目标主机将会直接返回一个RST 报文。基于此工作原理,通过分析不同目标端口的返回报文信息,攻击者就可以判断哪些端口是开放或关闭的。该方法实现简单,但目标主机上会记录相关的尝试连接信息,容易被系统管理员或安全检测软件发现。
2. SYN 扫描
SYN 扫描也被称为半开连接扫描,是对连接扫描的一种改进。在连接扫描方法中,当被扫描端口打开时,目标主机会返回一个SYN/ACK报文。当攻击者收到第二次握手的SYN/ACK报文时,其实不需要进行第三次ACK握手,就已经可以判断出被扫描端口当前是否处于打开状态。不过,当目标主机(server)向TCP连接请求者(client)返回SYN/ACK报文后,其将处于“半开连接”状态,等待请求者的ACK确认,以便完成第三次握手过程。此时,攻击者并没有向目标主机返回ACK确认报文,而是构造了一个RST报文,让目标主机自行释放该“半开连接”。
由于各类操作系统一般不会记录“半开连接”信息,因此SYN扫描的安全性要比连接扫描好。
3. UDP 端口扫描
UDP端口扫描用于探测目标主机上已打开的UDP端口和网络服务。UDP端口扫描的实现原理是: 首先构造并向目标主机发送一个特殊的 UDP 报文,如果被扫描的UDP端口关闭,将返回一个基于ICMP的“端口不可达”差错报文; 如果被扫描的UDP端口处于打开状态,处于“监听”状态的UDP网络服务将响应特殊定制的数据报文,从而返回UDP数据。
UDP端口扫描的实现原理简单,效率较高。但是,如果被探测的网络服务是一个未知的应用时,就可能无法返回UDP数据。
5.3.2实验目的和条件
1. 实验目的
在学习TCP三次握手、TCP/UDP端口、服务进程等网络基本知识的基础上,通过对Zenmap和nmap工具使用方法的练习,进一步掌握端口扫描的实现方法。
2. 实验条件
为了取得更好的实验效果,建议本实验在局域网中进行。本实验中攻击者采用运行Windows 10操作系统的计算机,需要在该主机上安装nmap程序,目前最新版本为7.9.2,官方下载地址为: https://nmap.org/dist/nmap7.92setup.exe,该程序同时支持控制台和图形界面两种运行模式。
5.3.3实验过程
步骤1: 运行程序Nmap Zenmap GUI,启动图形化的Zenmap工具。
Zenmap默认提供10种可供选择的扫描方式,可以通过单击“配置”菜单项来选择。在选择了具体的扫描方式后,就可以看见相应扫描方式所采用的命令,所执行的命令显示在“命令”框中,如图521所示。
图521Zenmap默认提供的扫描方式
步骤2: 如果扫描方式不符合攻击者的当前要求,可以创建一个新的扫描方式(新的配置或命令),或者在已有扫描方式的基础上进行编辑(编辑选中配置),如图522所示。
图522创建一个新扫描方式
步骤3: 在本实验中,可以选择“新的配置或命令”选项,打开如图523所示对话框,在该对话框中出现了“配置”“扫描”、Ping、“脚本”“目标”“源”“其他”“定时”等选项卡。读者可根据具体的攻击实验需要进行选择和配置。
在“配置”选项卡中“配置文件名”文本框中输入一个标识本次扫描操作的名称SYNPortScan。
图523设置新扫描配置的文件名
步骤4: 选择“扫描”选项卡后,出现如图524所示的对话框。本实验将对192.168.244.0/24这个C网段所有主机进行端口扫描,因此在“目标(可选)”文本框中输入: 192.168.244.0/24。由于扫描方式选择半连接扫描,因此“TCP扫描”处选择“TCP SYN扫描(sS)”,其他选项设置为无。所有信息输入结束后,单击“保存更改”按钮进行确认。
图524对扫描对象及相关参数的配置
需要说明的是,在具体实验过程中,读者可结合不同情况,通过选取不同的选项,学习扫描过程,并对扫描结果进行分析,以便对工具的应用和功能有更加全面的认识,同时对知识的系统掌握也会有所帮助。
步骤5: 选择刚才新建的扫描配置SYNPortScan,“命令”处将显示该配置的命令,如本实验中的nmap sS 192.168.244.0/24,如图525所示。
图525选择新建的扫描配置
步骤6: 单击“扫描”按钮,开始对192.168.244.0/24网段存在的主机进行端口扫描,扫描结果如图526所示。其中,在“主机”列表中显示了当前处于运行状态的所有主机,在右侧列表中显示了其中一台主机当前已打开的端口信息,包括端口号、当前状态、服务进程的名称及主机网卡的MAC地址等内容,收集到的信息非常全面。
图526显示扫描结果
步骤7: 单击“拓扑”按钮,可以查看此次扫描发现的网络拓扑结构,如图527所示。
图527显示扫描结果的拓扑结构
步骤8: 如果要保存Zenmap的扫描结果,可以从“扫描”菜单中选择“保存扫描”选项,进行保存,默认保存格式为XML,如图528所示。
图528保存当前的扫描结果
步骤9: 在实验中,可以对同一对象范围或同一对象范围中的不同部分进行多次扫描,并对扫描结果进行比较,看是否存在不同。在本实验中,保存了第一次扫描结果后,接着修改扫描目标(如192.168.244.1118)(缩小了扫描范围),然后可以进行第二次扫描,并保存扫描结果,可将文件名确定为nmap02.xml。
然后,在“工具”菜单中选择“结果比对”选项,对两次扫描结果进行比较。其中,在扫描A 下拉列表中选择nmap01.xml选项,在扫描B下拉列表中选择nmap02.xml选项,比较结果如图529所示。
图529对两次扫描结果进行比较分析
其中,字符“”(红色背景)表明扫描B中没有该行结果,相对地,字符“+”(绿色背景)表明扫描B 中增加了该扫描结果。由图529可以看出,两次扫描的IP范围不同。
步骤10: 控制台式nmap。在Windows 10操作系统中,选择“开始”→“运行”,在出现的对话框中输入cmd命令,进入命令提示符操作窗口。直接执行nmap命令,会显示该命令的帮助文档,如图530所示。
图530nmap命令的帮助文档
步骤11: 使用namp sS 192.168.244.0/24命令,可实现与步骤6一样的功能,如图531所示。
图531命令行式nmap扫描
5.3.4任务与思考
通过本实验,使读者可以对nmap和Zenmap两个典型工具的功能特点和使用方法有一个较为全面的认识,通过比较分析,读者也可以掌握更多有关端口扫描的知识。与nmap相比,Zenmap的优势表现在以下几方面。
(1) 提供良好的交互性。Zenmap可以更直观的方式输出结果,甚至能绘制其已发现网络的拓扑图。
(2) 可以在两个扫描结果之间进行比较。
(3) 能够对扫描结果进行跟踪。
(4) 能够帮助渗透测试人员多次运行相同配置的扫描。
(5) 显示所执行的命令,以方便渗透测试人员检查。
5.4系统类型探测: 主机系统识别
5.4.1预备知识: 主机探测
通过主机扫描和端口扫描,可以确定被攻击目标使用的IP地址及已开放的端口。在此基础上,还需要对被攻击主机所使用的操作系统类型和具体的版本号及提供的网络服务进行探测,为攻击者下一步选择具体的攻击方法并确定具体的攻击步骤做好准备。系统类型探测分为操作系统类型探测和网络服务类型探测两种。
1. 操作系统类型探测
操作系统类型探测(OS identification)是采取一定的技术手段,通过网络远程探测目标主机上安装的操作系统类型及其版本号的方法。在确定了操作系统的类型和具体版本号后,可以为进一步发现安全漏洞和渗透攻击提供条件。
协议栈指纹分析(stack fingerprinting)是一种主流的操作系统类型探测手段,其实现原理在于不同类型和版本的操作系统中,网络协议栈的实现方法存在着一些细微的区别,这些细微区别就构成了该版本操作系统的指纹信息。通过创建完整的操作系统协议栈指纹信息库,可以将探测或网络嗅探所得到的指纹信息在数据库中进行比对,精确地确定其操作系统的类型和版本号。
2. 网络服务类型探测
网络服务类型探测(service identification)的目的是确定目标主机上打开的端口,以及该端口上绑定的网络应用服务类型及版本号。通过网络服务类型探测,可以进一步确定目标主机上运行的网络服务及服务进程对应的端口。
操作系统类型探测主要依赖于TCP/IP协议栈的指纹信息,它涉及网络层、传输层、应用层等各层的信息; 而网络服务类型探测主要依赖网络服务在应用层协议实现所包含的特殊指纹信息。例如,同样是在应用层提供HTTP服务的Apache和IIS,两者在实现HTTP规范时的具体细节上存在一些差异,根据这些差异可以辨别出目标主机的TCP 80端口上运行的HTTP服务是通过Apache还是通过IIS实现的。
5.4.2实验目的和条件
1. 实验目的
通过本实验,使读者对网络服务进程有更深入的学习,同时通过对主机系统识别工具使用方法的练习,掌握主机识别的主要方法和途径。
2. 实验条件
为便于实验的进行,本实验采用如表51所示的实验清单。
表51主机识别实验清单
类型
序号
软硬件要求
攻击机
1
数量: 1台
2
操作系统版本: Kali Linux 2021
3
软件版本: p0f, xprobe2,nmap
靶机
1
数量: 1台
2
操作系统版本: Windows XP
3
软件版本: 无
5.4.3实验过程
步骤1: 运行攻击机。正确登录Kali Linux系统,如果进入的是命令行模式,为方便实验进行,可输入startx命令进入图形界面。选择菜单栏上的Terminal选项,打开终端操作窗口。
步骤2: 运行p0f工具。p0f工具利用SYN数据包实现操作系统被动检测技术,和其他扫描软件不同,它不向目标系统发送任何的数据,只是被动地接受来自目标系统的数据进行分析,进而实现目标系统类型的识别。因此,p0f一个很大的优点是: 几乎无法被检测到,而且p0f是专门的系统识别工具,其指纹数据库非常详尽,更新也比较快,特别适合安装在网关中。p0f可以工作在连接到本地的机器、本地连接到的机器、不能连接到的机器、可以浏览其社区的机器等几种场景下。
执行p0f h命令,系统将显示其所有参数及帮助说明(若该工具不存在,可以通过apt install p0f命令安装),如图532所示。
图532p0f的帮助信息
步骤3: 打开该程序后,首先输入p0f o p0f.log命令,该命令会将登录信息保存到p0f.log文件中,如图533所示。此时,攻击机监听默认网口的SYN数据包,当目标主机与攻击机建立TCP连接,即可猜测目标主机的操作系统了。
图533输入p0f o p0f.log命令将探测信息保存到p0f.log文件中
步骤4: 打开Windows XP并正常登录,运行靶机。
靶机正常启动后,需要产生一些网络活动以触发TCP连接。例如,可以telnet 到一台主机(根据实验环境而定),接着就会识别系统类型。这里telnet虽然没有成功,但不影响实验效果,如图534所示。
图534通过telnet命令触发TCP连接
步骤5: 攻击机的命令行终端中会回显探测到目标主机的操作系统信息,如图535所示。从回显信息我们可以发现,p0f工具已经分析出IP地址为192.168.244.132的目标主机的操作系统类型为Windows NT,精确度不是很高。
图535分析探测到的主机类型
步骤6: 在攻击机上查看p0f.log文件。通过cat p0f.log命令,查看通过p0f工具被动分析目标主机操作系统类型信息的历史记录,如图536所示。
图536p0f工具分析的历史记录
步骤7: 使用nmap工具进行主机类型的探测。nmap工具最著名的功能之一是用TCP/IP协议栈fingerprinting进行远程操作系统探测。与p0f不同,nmap会主动发送一系列TCP和UDP报文到远程主机,检查响应中的每一个bit,把结果和数据库nmaposfingerprints中超过1500个已知的操作系统的fingerprints进行比较,如果有匹配,就打印出操作系统的详细信息。在命令行终端中执行nmap O PN sV 192.168.244.132命令,探测结果如图537所示。
图537nmap操作系统探测结果
从图中可以发现,主机192.168.244.132打开了135、139等TCP端口,其MAC地址为00:0C:29:3F:23:BC,其操作系统类型为Microsoft Windows XP SP2 or SP3,探测结果准确。
步骤8: 使用xprobe2工具进行主机类型的探测。xprobe2是一个主动的操作系统识别工具,通过模糊签名匹配、可能性猜测、同时多匹配和签名数据库来识别操作系统。因为该工具使用原始套接字,所以其必须运行在root权限下。在命令行终端中直接执行xprobe2命令,系统将显示其所有参数及帮助说明(若该工具不存在,可以通过apt install xprobe命令安装),如图538所示。
图538显示xprobe2的帮助信息
步骤9: 对远程主机探测,可以直接通过xprobe2,并指定远程主机IP地址或主机名。例如,通过xprobe2 www.sina.com.cn命令将会对该主机进行远程探测,显示结果如图539所示,可以看出远程主机为FreeBSD操作系统(注意: 如果在虚拟机环境下采用xprobe进行操作系统类型探测,需将网络连接模式设置为非NAT模式,否则探测结果可能为乱码)。
图539显示探测到的远程主机操作系统类型
5.4.4任务与思考
通过本实验,读者将对Kali Linux的操作方法有更全面的掌握。同时,还有一个问题需要读者思考: 获取到系统版本后能做什么?
其实,回答了这个问题,也就为后面的实验提前做了准备。获得系统版本之后可以继续探测该系统存在哪些漏洞,然后利用漏洞找到对应的攻击工具,进一步获取攻击过程中所需要的信息。
5.5漏洞扫描: Web安全漏洞
扫描及审计
5.5.1预备知识: Web漏洞的获取方法与w3af
1. 漏洞扫描
漏洞扫描除可用于网络攻击外,还可用于对网络的安全防御。系统管理员能够通过对网络漏洞的系统扫描,全面地了解网络的安全状态,并对发现的安全漏洞及时安装补丁程序,提升网络防范攻击的能力。
漏洞扫描技术的工作原理是基于目标对象(操作系统、网络服务、应用程序等)的特征码来实现的。例如,对于同一个类型和版本号的操作系统来说,针对某一安全漏洞,对于某些网络请求的应答,安装安全补丁前后会存在一些细微的差异,这些差异便构成了针对特定安全漏洞的特征码(指纹信息)。漏洞扫描技术正是利用了这些特征码来识别目标对象是否存在特定的安全漏洞。
2. 漏洞扫描器
网络漏洞扫描器对目标系统进行漏洞检测时,首先探测目标网络中的存活主机,对存活主机进行端口扫描,确定系统已打开的端口,同时根据协议栈指纹技术识别出主机的操作系统类型。然后,扫描器对开放的端口进行网络服务类型的识别,确定其提供的网络服务。漏洞扫描器根据目标系统的操作系统平台和提供的网络服务,调用漏洞资料库(一般该资料库需要与业界标准的 CVE 保持兼容)中已知的各种漏洞进行逐一检测,通过对探测响应数据包的分析判断漏洞是否存在。
3. w3af
Web应用攻击与审计架构(web application attack and audit framework,w3af)是一个Web应用安全的攻击、审计平台,其通过增加插件的方式来对功能进行扩展。w3af是一款用Python语言编写的工具,同时支持GUI和命令行模式。
w3af目前已经集成了大量的功能丰富的各类攻击和审计插件,为便于使用,其对插件进行了分类,而且有些插件还提供了实用工具,并支持多种加/解密算法。下面介绍几类典型的w3af插件。
(1) Crawl类插件。Crawl(爬取)类插件的功能是通过爬取网站站点获得新的URL地址。如果用户启用了Crawl类的插件,则其将会产生一个循环操作: A插件在第一次运行时发现了一个新的URL,w3af会将其发送到插件B; 如果插件B发现了一个新的URL,则会将其发送到插件A。这个过程持续进行,直到所有插件都已运行且无法找到更多的新信息为止。
(2) Audit类插件。Audit(审计)类插件会向Crawl插件爬取出的注入点发送特制的探测信息,以确认是否存在漏洞。
(3) Attack类插件。如果Audit插件发现了漏洞,Attack(攻击)类插件将会利用该漏洞进行攻击,通常会在远程服务器上返回一个操作界面,或进行SQL注入以获取数据库中的数据。
(4) Infrastructure类插件。Infrastructure(基础设施)类插件用来探测有关目标系统的信息,如目标系统是否安装了Web应用程序防火墙(web application firewall,WAF)和目标系统上运行的操作系统HTTP守护进程等。
(5) Grep类插件。Grep(检索)类插件会分析其他插件发送的HTTP请求和应用信息,并识别存在的漏洞。
(6) Output类插件。Output(输出)类插件会将插件的数据以文本、XML或HTML形式保存,供分析使用。另外,如果启用了text_file和xml_file两个Output插件,就会记录有关Audit类插件发现的任何漏洞。
另外,Mangle类插件允许用户修改基于正则表达式的请求和响应; Broutforce类插件在爬取阶段可以对系统进行暴力登录; Evasion类插件通过修改由其他插件生成的HTTP请求来绕过简单的入侵检测规则。
5.5.2实验目的和条件
1. 实验目的
在进行本实验之前,读者需要对漏洞的产生、安全威胁及管理方法有所掌握。在此基础上,通过对w3af工具使用方法的学习,使读者能够掌握服务器安全漏洞的扫描和审计方法。
2. 实验条件
本实验中使用的软硬件清单如表52所示。
表52Web安全漏洞扫描及审计实验清单
类型
序号
软硬件要求
攻击机
1
数量: 1台
2
操作系统版本: Kali Linux 2020
3
软件版本: w3af 2019.1.2
靶机
1
数量: 1台
2
操作系统版本: Windows XP
3
软件版本: XAMPP, DVWA
5.5.3实验过程
步骤1: 运行攻击机,正确登录Kali Linux 2020系统,选择菜单栏上的Terminal选项,打开终端操作窗口。
步骤2: 运行cd w3afmaster命令,切换到w3af工作目录,然后使用ls命令查看当前目录下的文件,如图540所示。
图540显示w3afmaster目录下的内容
步骤3: 使用./w3af_console命令启用w3af,并转到个性化的控制台模式(w3af>>>),如图541所示。虽然该工具同时提供了GUI版本,但考虑到控制的灵活性和自定义配置的方便,在具体应用中建议使用控制台版本。
图541w3af的个性化控制台模式
为便于实验的进行,建议读者使用help帮助命令,查看相关的命令介绍。
步骤4: 首先使用plugins命令配置相关的插件,然后用help命令查看操作命令的帮助信息,如图542所示。
图542进入plugins目录并显示帮助信息
步骤5: 输入output html_file命令启用html_file格式的输出,然后输入output命令查看output类插件,将显示如图543所示的信息。
图543输入output命令后显示的信息
步骤6: 输入output config html_file命令对html_file格式的输出进行配置。接着使用view命令列出可利用的选项和值,如图544所示。
图544使用view命令列出可利用的选项和值
步骤7: 使用set output_file /root/testreport.html命令,设置输出的扫描报告文件为testreport.html,如图545所示。
图545设置输出的扫描报告文件testreport.html
步骤8: 使用back命令返回plugins,再使用crawl命令查看爬取类插件。同时使用crawl web_spider命令开启网页蜘蛛,如图546所示。
图546开启网页蜘蛛
步骤9: 使用audit all命令开启所有审计插件,输入audit命令查看,如图547所示。
图547开启所有审计插件
步骤10: 输入grep all命令开启所有检索类插件,如图548所示。
图548显示漏洞类型
步骤11: 使用back命令返回,接着使用target命令进入target目录,如图549所示。
图549使用target命令进入target目录
步骤12: 启动靶机上的服务器,确认网站可以访问,如图550所示。
图550靶机网站服务运行
步骤13: 设置目标地址(target)为http://192.168.138.130/dvwa/index.php,为下一步扫描进行准备,如图551所示。
图551设置目标地址(target)
步骤14: 使用back命令返回主目录w3af>>>,然后使用start命令开始扫描,如图552所示。
图552使用start命令开始扫描
步骤15: 扫描结束后,使用exit命令退出w3af。然后切换到root目录下,使用ls l testreport.html命令查看是否生成扫描报告testreport.html文件,如图553所示(存在该文件)。
图553退出扫描并查看创建的文件是否存在
步骤16: 利用浏览器(本实验为Firefox)打开testreport.html文件,其将显示如图554所示的信息。在该页面中详细记录了前面实验中扫描得到的信息。
图554显示testreport.html文件的内容
5.5.4任务与思考
在具体应用中,主要使用漏洞扫描器进行漏洞的扫描和发现。下面介绍漏洞扫描器的组成和主要功能。
1. 安全漏洞数据库
安全漏洞数据库一般与通用漏洞披露目录(common vulnerabilities and exposures,CVE)保持兼容,主要包含安全漏洞的具体信息、漏洞扫描评估的脚本、安全漏洞危害评分(一般采用 CVSS标准)等信息,新的安全漏洞被公开后,数据库需要及时更新。其中,通用漏洞评价体系(common vulnerability scoring system,CVSS)是一个开放的并且能够被产品厂商免费采用的标准。
2. 扫描引擎模块
作为漏洞扫描器的核心部件,扫描引擎模块可以根据用户在配置控制台上设定的扫描目标和扫描方法,对用来扫描网络的请求数据包进行配置与发送,并将从目标主机接收到的应答包与漏洞数据库中的漏洞特征码进行比对,以判断目标主机上是否存在这些安全漏洞。为了提高效率,扫描引擎模块一般提供了主机扫描、端口扫描、操作系统扫描、网络服务探测等功能,供具体扫描时选用。
3. 用户配置控制台
用户配置控制台是供用户进行扫描设置的操作窗口,需要扫描的目标系统、检测的具体漏洞等信息都可以通过配置控制台设置。
4. 扫描进程控制模块
在针对漏洞的具体扫描过程中,攻击者不仅需要知道扫描结果,许多时候还要实时了解扫描过程中显示的内容,以便通过一些细节获取有价值的信息。扫描进程控制模块提供了这些功能。
5.6XSS跨站脚本攻击
5.6.1预备知识: 关于DVWA
DVWA(damn vulnerable web application)是基于PHP+MySQL的一套用于常规Web漏洞教学和检测Web脆弱性的程序,可以为安全专业人员测试自己的专业技能和工具提供所需要的环境,帮助Web开发者更好地掌握Web应用安全防范的过程。
DVWA提供了以下10个功能模块。
(1) Brute Force(暴力破解)。
(2) Command Injection(命令行注入)。
(3) CSRF(跨站请求伪造)。
(4) File Inclusion(文件包含)。
(5) File Upload(文件上传)。
(6) Insecure CAPTCHA(不安全的验证码)。
(7) SQL Injection(SQL注入)。
(8) SQL Injection(Blind)(SQL盲注)。
(9) XSS(Reflected)(反射型跨站脚本)。
(10) XSS(Stored)(存储型跨站脚本)。
需要注意的是,DVWA的代码被分为4种安全级别: Low、Medium、High和Impossible。初学者可以通过比较4种级别的代码,接触一些PHP代码审查的内容。
5.6.2实验目的和条件
1. 实验目的
通过本实验,读者可掌握以下内容。
(1) 了解XSS漏洞的攻击原理及相关知识。
(2) 能够进行简单的攻击分析。
2. 实验条件
由于DVWA环境是基于PHP/MySQL的,因此需要先安装DVWA环境。为了便于操作,建议直接使用XAMPP集成软件来搭建。本实验在Windows环境下安装,并使用与XAMPP集成的DVWA,具体操作步骤如下。
步骤1: 安装XAMPP。从http://www.xampps.com/官网下载和安装,只需注意选择Windows环境,其他的按照系统提示进行即可。
步骤2: 下载DVWA压缩包。从http://www.dvwa.co.uk/官网下载DVWA压缩包,并将压缩包解压到dvwa,再将其复制到XAMPP安装目录下的\xampp\htdocs目录。
步骤3: 通过XAMPP的控制台启动XAMPP的Apache和MySQL服务,如图555所示。
图555通过XAMPP的控制台启动XAMPP的Apache和MySQL服务
步骤4: 修改\xampp\htdocs\dvwa\config下的config.php配置文件,在该配置文件中包含了连接MySQL数据库的密码(XAMPP集成环境下面MySQL的默认登录账号为root,密码为空)。
步骤5: 在浏览器中输入http://127.0.0.1/DVWA/setup.php,就可以访问DVWA的配置页面,如图556所示。单击该页面中的Create/Reset Database按钮,直接建立DVWA的数据库。
图556访问DVWA配置页面并通过Create/Reset Database建立数据库
另外,在XAMPP环境下,也可以通过如图557所示的操作界面来创建DVWA数据库。只有Setup Check全部显示为绿色,而没有出现红色时,才能表示完全安装成功。
图557在XAMPP环境下创建DVWA数据库
步骤6: 创建好DVWA数据库后,系统将自动跳转到DVWA的登录首页,如图558所示,系统默认的登录账号名称和密码为admin/password。
图558DVWA登录页面
5.6.3实验过程
步骤1: 进入实验场景,依次选择“开始”→“所有程序”→XAMPP→XAMPP Control Panel选项打开XAMPP控制台,在如图555所示的界面中开启Apache HTTP服务和MySQL服务。
步骤2: 打开DVWA网站。在浏览器中输入http://127.0.0.1/dvwa,正确输入账号名称和密码(系统默认为admin/password)后登录,如图559所示。
图559DVWA成功登录后的主页面
步骤3: 选择XSS(Reflected)选项后,打开存在漏洞的网站(本实验为http://127.0.0.1/dvwa/vulnerabilities/xss_r/),将该URL复制到浏览器的地址栏,进入如图560所示的界面。
图560存在反射型XSS漏洞页面
步骤4: 选择DVWA Security的安全级别,此处选择low(低)选项,如图561所示。
图561DVWA Security的安全级别
步骤5: 查看正常输入输出。在输入框中输入test,单击Submit按钮,可以看到页面上的正常返回结果,如图562所示,说明这个页面的功能是将用户输入的信息直接发送给用户。
图562页面正常返回效果
步骤6: 查看PHP源码。单击右下角的View Source按钮可以看到页面的PHP源码,如图563所示。从源码中可以看出,页面直接将用户输入的信息返回给用户。
图563页面PHP源码
步骤7: 进行攻击测试。在输入框中输入,可以看到非正常返回结果页面,如图564所示。同时在地址栏中可以看到输入内容的URL编码,如图565所示。由此说明,Web应用将未经验证的数据通过请求发送给客户端。
图 564页面攻击效果
图 565被攻击页面此时的地址栏内容
步骤8: 验证此类漏洞的非持久性。重新访问DVWA页面,单击刷新按钮或再次选择左侧XSS(Reflected)选项,可以看到页面恢复正常,由此说明之前输入的信息未保存,是非持久性跨站脚本漏洞。
步骤9: 存储型XSS攻击。打开存在漏洞的网站http://localhost/dvwa/vulnerabilities/xss_s/,在DVWA页面中选择左侧的XSS(Stored)选项,出现如图566所示的界面。
图566存在存储型XSS漏洞的页面
步骤10: 查看正常输入输出。在Name输入框中输入test,在Message输入框中输入This is a test comment。 单击Sign Guestbook按钮,可以得到正常的返回结果,如图567所示,说明该网页是为用户发表署名和评论的。
图567正常返回效果
步骤11: 查看PHP源码。单击右下角的View Source按钮,可以看到页面的PHP源码,如图568所示。从源码中可以看出,页面允许用户存储未正确过滤的信息。
图568页面PHP源码
步骤12: 进行攻击测试。在Name输入框中输入Test,在Message输入框中输入,单击Sign Guestbook按钮,再次访问页面就可以看到如图569所示的对话框。
步骤13: 验证漏洞的存储性。重新访问DVWA页面,单击刷新按钮或再次选择左侧的XSS(Stored)选项,可以看到页面仍然为如图569所示之前的对话框,说明之前输入的信息已被保存。
图569被攻击的页面
5.6.4任务与思考
可通过以下方法来防范XSS 攻击。
1. XSS 过滤
虽然XSS攻击的对象是客户端,但XSS的本质是Web应用服务的漏洞,所以必须同时对Web服务器和客户端进行安全加固才能避免攻击的发生。XSS过滤需要在客户端和服务器端同时进行。
2. 输入验证
输入验证就是对用户提交的信息进行有效性验证,仅接受有效的信息,阻止或忽略无效的用户输入信息。在对用户提交的信息进行有效性验证时,不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
3. 输出编码
由于大多数Web应用程序都会把用户输入的信息完整地输出到页面中,从而导致XSS漏洞的存在。为解决这一问题,当需要将一个字符串输出到Web网页,但又无法确定这个字符串是否包含XSS特殊字符时,为了确保输出内容的完整性和正确性,可以使用HTML编码(HTML encode)进行处理。
5.7针对MS SQL的提权操作
5.7.1预备知识: MS SQL提权
在很多时候,当攻击者入侵一个系统后,需要得到的是这个系统的管理员权限。但是,一般情况下获取到的往往是普通用户账户信息,拥有的权限相对较小。这时就必须采取提权方式,将普通用户的权限提升到管理员的权限。提权是指操作者提高自己在系统中的操作权限,主要用于网站入侵过程,在攻击者入侵某一网站时,往往需要通过各种漏洞提升Web Shell权限以夺得该服务器的控制权。
MS SQL是指微软的SQL Server数据库服务器,它是一个数据库平台,提供从服务器到终端的完整数据库解决方案,其中的数据库服务器部分是一个数据库管理系统,用于建立、使用和维护数据库。
MS SQL提权是专门针对MS SQL数据库用户账户管理权限的一种攻击方式,通过提升普通用户账户的权限,获取对MS SQL数据库系统的管制权限。
5.7.2实验目的和条件
1. 实验目的
在熟悉系统提权攻击基本方法的基础上,以MS SQL数据库系统为操作对象,掌握针对MS SQL提权的实现方法。
2. 实验条件。
本实验中使用的软硬件清单如表53所示。
表53MS SQL提权实验清单
类型
序号
软硬件要求
攻击机
1
数量: 1台
2
操作系统版本: Windows XP以上
3
软件版本: XScan扫描器,SQL Tools工具,SQL查询分析器
靶机
1
数量: 1台
2
操作系统版本: Windows Server 2003
3
软件版本: 无
5.7.3实验过程
步骤1: 进入实验环境,分别运行攻击机Windows XP和靶机Windows Server 2003的操作系统。
步骤2: 查看靶机的IP地址并确认MS SQL服务已经正常启动,如图570和图571所示。
图570使用ipconfig命令查看靶机的IP地址
图571查看SQL Server是否已经正常启动
步骤3: 在攻击机上运行XScan扫描器并进行设置,如图572所示。
图572设置XScan扫描器
步骤4: 扫描的目标IP地址设置为靶机的IP地址(参照图570中显示的IP地址),如图573所示。根据需要,在确定攻击对象的IP地址范围但是无法确定具体IP地址的前提下,可以在“指定IP范围”文本框中输入需要扫描的IP地址或地址段。
图573输入扫描的IP地址或地址段
步骤5: 选择了扫描参数中的“扫描模块”选项后,在中间的列表框内选中“SQLServer弱口令”复选框,如图574所示。
图574设置扫描模块
步骤6: 在选择了“其他设置”选项后,在打开的如图575所示的对话框中可以根据需要选择相应的功能项。如选中“显示详细进度”复选框后可以实时查看扫描过程的进展情况。
图575设置“其他设置”功能项
步骤7: 选择“插件设置”→“字典文件设置”选项,在打开的如图576所示的对话框中设置扫描过程中需要使用的字典(也可以使用默认字典)。
图576设置扫描过程中使用的字典
步骤8: 单击“确定”按钮开始进行扫描,扫描结果如图577所示,得到了MS SQL数据库使用的弱口令(sa/123456)。
图577显示扫描结果
步骤9: 使用第三方工具SQL Tools连接到MS SQL数据库(也可以使用MS SQL自身提供的SQLServer工具进行连接),如图578所示。
图578使用SQL Tools工具连接到MS SQL数据库
步骤10: 连接成功后进入如图579所示的操作界面。
图579连接成功后的操作界面
步骤11: 选择“利用目录”→“执行DOS命令”选项,在如图580所示的文本框中输入要执行的命令,如输入whoami命令查看在线的用户。
图580执行DOS命令界面
步骤12: 使用查询分析器连接MS SQL数据库,如图581所示。
图581使用查询分析器连接MS SQL数据库
步骤13: 在查询分析器中执行如下代码(执行过程和结果如图582所示。
;EXEC sp_configure 'show advanced options', 1 --
;RECONFIGURE WITH OVERRIDE --
;EXEC sp_configure 'xp_cmdshell', 1 --
;RECONFIGURE WITH OVERRIDE --
;EXEC sp_configure 'show advanced options', 0 --
图582在查询分析器中执行相关代码
步骤14: 再次使用SQL Tools执行whoami命令时,如图583所示,从返回的信息可以看出,已经获得了最高权限(system),权限提升过程结束。
图583已经实现提权操作
5.7.4任务与思考
本实验介绍了针对MS SQL数据库系统的提权实现方法,通过实验读者会发现提权攻击存在的危害性。通过提权,普通用户将会拥有管理员的权限。在拥有了管理员权限后,攻击者可以像控制本地计算机一样来操控被攻击对象。
在大多数情况下,MS SQL服务器将被安装在一个混合模式下,它的默认用户是sa,很多时候默认用户只会设置一个简单的密码,这意味着攻击者容易使用字典文件进行暴力破解得到密码。为此,针对MS SQL提权攻击,最简单和有效的办法还是为系统管理员账户设置复杂的密码并定期或不定期更换,同时提供完整的系统日志,并及时对日志记录进行分析,当发现攻击迹象时尽快找到攻击源,并进行必要的封堵。另外,还需要及时为MS SQL数据库系统安装补丁程序。