川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > 常见问题

软件测试工程师必备技能—服务器端信息测试

作者:川石学院 日期:2021-09-17 14:55:32 点击数:

  本章节主要讲解“软件测试的服务器端信息测试”服务器端信息测试主要是从服务器对客户端开发的信息角度来测试服务器被攻击的可能性,以及被攻击的难易程度。

  主要需要测试以下几方面的信息:

  •   服务器允许运行账号权限测试。

  •   Web 服务器端口测试。

  •   Web 服务器版本信息测试。

  •   HTTP 方法测试。

  •   HTTP DELETE 方法测试。

  •   HTTP PUT 方法测试。

  •   HTTP TRACE 方法测试。

  软件测试工程师必备技能—服务器端信息测试(图1)

  图12-5 Rational AppScan 工作流程

  •   HTTP MOVE 方法测试。

  •   HTTP COPY 方法测试。

  (1)服务器允许运行账号权限测试。

  一般地,运行Web 服务器所在的操作系统所开放的账号权限越高,那么Web 服务器遭到攻击的可能性越大,并且产生的危害也越大。因此,不应使用Root、Administrator 等特权账号或高级别权限的操作系统账号来运行Web 系统,应该尽可能地使用低级别权限的操作系统账号,以此降低Web 服务器被攻击的风险。

  测试时登录Web 服务器操作系统,查看运行Web 服务器的操作系统账号,确定操作系统的账号是否为Root、Administrator 等特权账号或高级别权限账号,如果是,则存在漏洞。

  对于Windows 操作系统:打开Windows 任务管理器,选择“进程”选项卡,选中“显示所有用户的进程”复选框,检查运行Web 服务器的账号。

  对UNIX 或Linux 系统:运行“ps–ef|grep java”命令,返回结果第一列的操作系统用户就是运行Web 服务器的账号。

  例如以下运行信息:

  •   root 4035 4010 0 17:13 pts/2 00:00:00 grep java

  (2)Web 服务器端口测试。

  有时Web 服务器除业务端口外还会开放一些默认端口(如JBoss 开放的8083),这些默认端口对最终用户是不需要开放的,而且也不会维护,容易被攻击,本测试的目的在于发现服务器上未使用的Web 端口。

  可以使用端口扫描工具对Web 服务器域名或IP 地址(如IP 地址为192.168.1.103)进行扫描,检查未开放业务不需要使用的Web 服务端口。常用的端口扫描工具有NetScanTools、WinScan、SuperScan、NTOScanner、WUPS、NmapNT 和Winfingerprint。

  以扫描工具SuperScan 3.00 为例,SuperScan 是一款基于TCP 协议的端口扫描器、Pinger 和主机名解析器。可以针对任意的IP 地址范围的Ping 和端口扫描,并且能同时扫描多个任意端口;解

  析和反向解析任意IP 地址或范围;使用内建编辑器修改端口列表及端口定义;使用用户自定义的应用程序与任何被发现打开的端口进行连接;查看被连接主机的回应;保存扫描列表到文本文件中。

  在主界面中的IP 组的Start 文本框中输入开始的IP,在Stop 文本框中输入结束的IP,在Scantype 组中选择All list ports from 单选项,并指定扫描端口范围(1~65535),如图12-6 所示。

  软件测试工程师必备技能—服务器端信息测试(图2)

  图12-6 设置扫描参数

  单击Scan 组中的Start 按钮,就可以在选择的IP 地址段内扫描不同主机开放的端口。扫描完成后,选中扫描到的主机IP,单击Expand all 按钮会展开每台主机的详细扫描结果,如图12-7所示。

  (3)Web 服务器版本信息测试。

  为了防止黑客攻击,在很多情况下,通过获取Banner 的信息可以获取HTTP 指纹识别方法。

  通常会将Web 服务器的信息进行隐藏或者通过配置、增加插件来更改或模糊服务器的Banner 信息。

  HTTP 指纹识别现在已经成为应用程序安全中一个新兴的话题,指纹识别可以分为两步:

  •   一是对指纹进行收集和分类;

  •   二是将未知的指纹同被存储在数据库中的指纹进行比较,从而找出最符合的指纹。

  软件测试工程师必备技能—服务器端信息测试(图3)

  图12-7 显示扫描结果

  操作系统指纹识别在网络评估中是一件常见的工作,现在已有很多操作系统指纹识别技术,操作系统指纹识别为什么能成功呢?因为每个操作系统实现TCP/IP 协议时有微小的差别,当前比较流行的是利用TCP/IP 堆栈进行操作系统识别。

  HTTP 指纹识别的原理大致也是如此,记录不同服务器对HTTP 协议执行中的微小差别进行识别,HTTP 指纹识别比TCP/IP 堆栈指纹识别复杂许多,因为定制HTTP 服务器的配置文件、增加插件或组件使得更改HTTP 的响应信息变得更复杂。

  在测试过程中可以使用一些工具进行渗透测试,来获取Web 服务器的相关版本信息。Httprint就是一个Web 服务器指纹工具,通过该工具可以对Web 服务器进行渗透测试。尽管可以通过改变服务器的旗帜字符串(server bannerstrings),或通过类似mod_security或servermask的插件混淆事实,但Httprint 工具依然可以依赖Web 服务器的特点去准确地识别Web 服务器。Httprint 也可用于检测没有服务器旗帜字符串的网络功能设备,如无线接入点、路由器、交换机、电缆调制解调器等。

  运行Httprint_gui.exe,在Host 列中输入主机域名(如果没有域名则输入IP 地址),在端口列中输入端口号。如果为HTTPS,则要选择锁图标列的复选框,如图12-8 所示。

  单击程序下方的运行按钮,查看相关报告,确定报告中是否存在Web 服务器准确的版本信息,如图12-9 所示。

  (4)HTTP 方法测试。

  HTTP 方法测试主要是测试HTTP 开发的方法,有些Web 服务器默认情况下开放了一些不必要的HTTP 方法(如DELETE、PUT、TRACE、MOVE、COPY),这样就增加了受攻击面。

  HTTP 请求常见的方法有(所有的方法必须为大写):GET、POST、HEAD、PUT、DELETE、TRACE、CONNECT 和OPTIONS,详细见表12-7。

  软件测试工程师必备技能—服务器端信息测试(图4)

  图12-8 httprint 运行主界面

  软件测试工程师必备技能—服务器端信息测试(图5)

  图12-9 httprint 报告

  软件测试工程师必备技能—服务器端信息测试(图6)

  表12-7 HTTP 请求方法

  HTTP 方法测试的步骤如下:

  •   第一步:单击“开始”→“运行”命令,输入cmd 命令后按Enter 键,运行cmd.exe。

  •   第二步:输入命令“telnet IP 端口”(其中IP 和端口按实际情况填写,用空格隔开,如telnet192.168.1.3 80)。

  •   第三步:按Enter 键。

  •   第四步:在新行中输入命令OPTIONS /HTTP/1.1,然后按Enter 键。

  •   第五步:观察返回结果中Allow 的方法列表。

  返回结果样例:

  •   http/1.1 200 OK

  •   server: Apache-Coyote/1.1

  •   X-Powered-By: Servlet 2.4; JBoss-4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)/Tomcat-5.5

  •   Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS

  •   Content-Length: 0

  •   Date: Mon, 29 Jun 2009 08:02:47 GMT

  •   Connection: close

  如果返回结果中包含不安全的HTTP 方法(如DELETE、PUT、TRACE、MOVE、COPY),则验证对这些方法的防范措施是否可用,如果方法可用则说明存在漏洞,测试无法通过。

  注意:由于不同的Web 服务器支持的HTTP 协议版本不同,如果系统不支持HTTP/1.0,那么第四步返回“HTTP/1.0 400 Bad Request”,这种情况下,应该更改第四步的输入行为OPTIONS / HTTP/1.0。

  (5)HTTP DELETE 方法测试。

  如果Web 服务器开放了DELETE 方法,那么攻击者能够通过该方法删除Web 服务器上的文件,所以需要测试通过DELETE 方法是否能将服务器上的文件删除。DELETE 方法测试步骤如下:

  在测试前先在Web 网站上创建一个文件(如test.txt)。

  •   第一步:单击“开始”→“运行”命令,输入cmd 命令后按Enter 键,运行cmd.exe。

  •   第二步:输入命令“telnet IP 端口”(其中IP 和端口按实际情况填写,用空格隔开,如telnet

  •   192.168.1.3 80),并按Enter 键。

  •   第三步:在新行中输入命令DELETE /test.txt HTTP/1.0,然后按Enter 键。

  •   第四步:查看服务器上的test.txt 文件是否被删除。

  该文件不能被删除,如果被删除,说明Web 服务存在风险。

  注意:由于不同的Web 服务器支持的HTTP 协议版本不同,如果系统不支持HTTP/1.0,那么第三步返回“HTTP/1.0 400 Bad Request”,这种情况下,应该更改第三步的输入行为DELETE /index.jsp HTTP/1.1。

  (6)HTTP PUT 方法测试。

  如果Web 服务器开放了PUT 方法,那么攻击者能够通过该方法上传任意文件到Web 服务器的一些目录中,包括一些Web 木马程序。测试时可以使用测试工具来模拟上传文件,对服务器可写权限进行测试。

  IIS PUT Scaner 为一款检测服务器可写漏洞的工具,通过IIS PUT Scaner

  工具检测的步骤如下:

  •   第一步:运行IIS PUT Scaner 程序(假设已经安装该工具)。

  •   第二步:在Start IP 和End IP 输入框中输入Web 服务器的IP 地址,在Port 输入框中输入对应的端口,选中复选框Try to upload file 和Try on other systems,如图12-10 所示。

  软件测试工程师必备技能—服务器端信息测试(图7)

  图12-10 IIS PUT Scaner 主界面

  •   第三步:查看结果,PUT 栏中的值不能为YES,如果是且Update File 栏中的值为ok,说明文件可以被上传到服务器。同时查看Web 服务器中没有新创建的文件(如上传test.txt 文件),并且通过http://IP/test.txt请求不到该文件。

  注意:本测试适用于所有的Web 服务器,不仅仅是IIS。

  (7)HTTP TRACE 方法测试。

  如果Web 服务器开放了TRACE 方法(主要用于客户端通过向Web 服务器提交TRACE 请求来进行测试或获得诊断信息),攻击者能够通过该方法进行跨站攻击。

  跨站脚本攻击(Cross Site Script Execution,XSS)是指入侵者在远程Web 页面的HTML 代码中插入具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面时,嵌入其中的脚本将被解释执行。由于HTML 语言允许使用脚本进行简单交互,入侵者便通过技术手段在某个页面里插入一个恶意HTML 代码,例如记录论坛保存的用户信息(Cookie),由于Cookie 保存了完整的用户名和密码资料,用户就会遭受安全损失。如JavaScript脚本语句aler(t document.cookie)就能轻易获取用户信息,它会弹出一个包含用户信息的消息框,入侵者运用脚本就能把用户信息发送到他们自己的记录页面中,稍作分析便可以获取用户的敏感信息。

  HTTP TRACE 方法测试的步骤如下:

  •   第一步:单击“开始”→“运行”命令,输入cmd 命令后Enter 车键,运行cmd.exe。

  •   第二步:输入命令“telnet IP 端口”(其中IP 和端口按实际情况填写,用空格隔开,如telnet192.168.1.3 80),然后按Enter 键。

  •   第三步:在新行中输入TRACE/HTTP/1.0 命令,然后按Enter 键。

  •   第四步:观察返回的结果信息,Web 服务器返回的信息提示TRACE 方法“not allowed”。

  注意:由于不同的Web 服务器支持的HTTP 协议版本不同,如果系统不支持HTTP/1.0,那么第三步返回“HTTP/1.0 400 Bad Request”,这种情况下,应该更改第三步的输入行为TRACE / HTTP/1.1。

  (8)HTTP MOVE 方法测试。

  如果Web 服务器开放了MOVE 方法,用于请求服务器将指定的页面移到另一个网络地址,该方法不安全,容易被利用。

  HTTP MOVE 方法测试的步骤如下:

  •   第一步:单击“开始”→“运行”命令,输入cmd 命令然后按Enter 键,运行cmd.exe。

  •   第二步:输入命令“telnet IP 端口”(其中IP 和端口按实际情况填写,用空格隔开,如telnet192.168.1.3 80),然后按Enter 键。

  •   第三步:在新行中输入MOVE /info/b.html /b.html HTTP/1.0 命令,并按Enter 键。

  •   第四步:观察返回的结果信息,Web 服务器返回的信息提示MOVE 方法“not supported”。

  注意:由于不同的Web 服务器支持的HTTP 协议版本不同,如果系统不支持HTTP/1.0,那么第三步返回“HTTP/1.0 400 Bad Request”,这种情况下,应该更改第三步的输入行为MOVE /info/b.html /b.html HTTP/1.1。

  (9)HTTP COPY 方法测试。

  如果Web 服务器开放了COPY 方法,用于请求服务器将指定的页面拷贝到另一个网络地址,该方法不安全,容易被利用。

  HTTP COPY 方法测试的步骤如下:

  •   第一步:单击“开始”→“运行”命令,输入cmd 命令后按Enter 键,运行cmd.exe。

  •   第二步:输入命令“telnet IP 端口”(其中IP 和端口按实际情况填写,用空格隔开,如telnet192.168.1.3 80),然后按Enter 键。

  •   第三步:在新行中输入COPY /info/b.html /b.html HTTP/1.0 命令,然后按Enter 键。

  •   第四步:观察返回的结果信息,Web 服务器返回的信息提示COPY 方法“not supported”。

  由于不同的Web 服务器支持的HTTP 协议版本不同,如果系统不支持HTTP/1.0,那么第三步返回“HTTP/1.0 400 Bad Request”;这种情况下,应该更改第三步的输入行为COPY /info/b.html /b.html HTTP/1.1。

  本章节关于“软件测试的服务器端信息测试”的内容就学习到这里,大家觉得文章有用的话记得没有来这里和小编一起学习涨薪技能哦。


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2021-09-17 14:55:32
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2021-09-17 14:55:32
  • 国外的月亮也不一定比国内测试猿的年薪美~2021-09-17 14:55:32
  • 建筑工程专业朱同学成功转行为软件测试人!2021-09-17 14:55:32
  • 财务管理专业转行软件测试月薪甩会计几条街!2021-09-17 14:55:32
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2021-09-17 14:55:32
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2021-09-17 14:55:32
  • 文科生转行软件测试照样拿下高薪15K!2021-09-17 14:55:32
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2021-09-17 14:55:32
  • 毕业1年,迷茫的他最终选择转行软件测试2021-09-17 14:55:32