(转载翻译)OWASP v5 4.1.4 枚举WEB服务器上的应用程序

nicky   ·   发表于 2020-03-30 20:12:44   ·   技术文章投稿区

概要

测试WEB应用程序漏洞的最重要一步是找出WEB服务器上托管了哪些特定的应用程序。许多应用程序都有已知的漏洞和已知的攻击方法,可以利用这些漏洞来获得远程控制或数据。此外,由于人为它们仅仅只能在”内部”使用,所以很多应用程序经常配置错误或者直接不更新了,因此不存在威胁。

随着虚拟WEB服务器快速增长,IP地址和WEB服务器之间的传统1:1关系正在不断打破。具有符号名称解析为相同IP地址的多个网站或应用程序并不少见。这种情况下不仅仅限于托管环境,也适用于普通公司环境。

有时候甲方会给安全专业人员提供一组IP地址作为测试目标。有争论的是,这种情况更类似与渗透测试类型的参与,但是在任何情况下,都希望这种分配能够测试目标访问的所有WEB应用程序。

有一个新的问题就是给定的IP地址在80端口上有一个HTTP服务,但是如果渗透测试人员通过指定的IP地址来访问它该页面就会提示”该网址未配置任何WEB服务”类似的信息。

作为系统可能会”隐藏”许多与不相关的字符(DNS)名称相关的WEB应用程序。显然,渗透测试人员测试所有应用程序或仅测试他们知道的应用程序会严重影响分析范围。

有时候给定目标很广泛。可以为测试人员提供IP地址及符合对应字符的列表。但是这个列表会忽略某些网站,并且客户可能都不知道。

其它影响评估范围的问题是由发布在非显而易见的网址上的网络应用程序代表,其它地方未提及过。这可能是由于错误配置所引起的也有可能是有意引起的。为了解决这些问题,有必要执行WEB应用程序发现。

测试目的

枚举WEB服务器上范围内的应用程序

如何测试

有三个因素会影响与给定的DNS名称(IP地址)相关的应用程序数量:

1.不同的域名基于一个URL

假如一个WEB应用程序的入口是www.example.com ,那么我们会认为原地址应该是http://www.example.com 。但是,即使这是最常见的情况,也没有任何强制应用程序从/开始的情况。

例如相同的符号名称可能会与以下3个WEB应用程序有关联:
http://www.example.com/url1 http://www.example.com/url2 http://www.example.com/url3

在这种情况下,URL http://www.example.com/ 不会与有意义的页面进行关联,并且这三个页面可能会被因此,除非测试人员明确知道如何访问它,即测试人员可能知道三个其中的一个就行了。不过通常无需以这种方式分布WEB应用程序。除非网站站长不希望以标准方式来访问他们。并准备将其确切位置告诉用户。

同样,这也不代表这些网站被锁起来只不过是不被人所知到而已。

2.非标准端口

虽然WEB服务通常位于80和443端口,但这些端口号并没有什么特别之处。实际上,WEB应用程序可以与任意TCP端口进行关联,并且可以通过以下指定端口号来引用格式是这样:
http[s]://www.example.com:port/ 或者是http://www.example.com:20000/

3.虚拟主机

DNS可以让单个IP地址与一个或多个符号名称相关联。比如一个IP地址为192.168.1.100可以与域名为www.example.com , helpdesk.example.com, webmail.example.com进行关联。不必所有名称都属于同一个DNS域。通过使用所谓的虚拟主机,可以将这种1-N关系提供不同的内容。指定我们所引用的虚拟主机的信息嵌入到HTTP 1.1 host 头中。

除非他们知道 helpdesk.com webmail.example.com,否则不会还以除了最明显的www.example.com 之外还存在其他的WEB应用程序。

解决第一个问题的方法 非标准网址

一般情况下是无法完全确定存在非标准命名的WEB应用程序。由于是非标准的,因此没有固定的命令约定。但是测试人员可以使用多种技术来破解。

首先,如果WEB服务器配置错误并允许目录浏览,则可能会发现这些应用程序。漏洞扫描程序直接提供帮助。

其次,这些应用程序可能会被其它网站引用,并且有可能被网络搜索引擎抓取并贴上编码。如果测试人员怀疑 www.example.com 上有可能存在此类隐藏的应用程序,则可以使用站点运营商(站长之家)来检查www.example.com 。在返回的URL中,可能有一个指向这样的非显而易见的应用程序。

还有一个选择是探测可能是未发布应用程序的备胎URL。比如可以从https://www.example.com/webmail https://webmail.example.com/ 或者是 https://mail.example.com/ 之类的URL访问WEB邮件前端。管理界面也是如此,管理界面也会有可能隐藏URL(比如Tomcat管理界面)上发布,但在任何地方都没有引用。因此进行一些字典式搜索,可能会产生一些结果。

解决问题而的方法 非标准端口

其实很容易检查非标准端口上是否存在WEB应用程序这里直接上nmap端口扫描程序 -sV选项是执行服务识别,并将识别任意端口上的https 服务。所需的是对整个 64000 TCP端口地址空间进行全面扫描。

比如,以下命令将通过TCP连接扫描查找IP地址为192.168.1.100并且尝试确定哪些服务绑定了它们。可以用以下命令:
nmap -PN -sT -sV -p0-65535 192.168.1.100

检查输出并查找HTTP或SSL封装服务是足够了。上面的命名会输出:

从这个例子可以看出:
1.Apache服务在80端口上
2.901端口有一个 Samba SWAT Web页面
3.端口1241上的服务不是https,而是SSL封装的Nessus防护软件
4.端口3690具有一个未指定的服务
5.8000端口上的另一个未指定服务可能是http,因为在这个端口上找到http服务器并不罕见。让我们研究下这个问题:

这也证明了实际上它是一个HTTP服务器。或者测试人员可以通过浏览器来进行访问。或使用GET/HEAD perl命令来模仿HTTP交互。

漏洞扫描程序可能也会执行相同的任务。不过首先检查所选的扫描程序是否能识别在非标准端口上运行的HTTP服务。比如,Nessus能够在任意端口上识别它们,并将针对Nmap提供有关已知WEB服务器漏洞以及SSL配置的大量测试。HTTPS服务,如前所述,Nessus还能够发现流行的应用程序或WEB界面。

针对第三个问题 虚拟主机

有许多技术可以用于识别给定IP地址x.y.z比如说DNS区域转移。

鉴于DNS服务器在很大程度上不支持区域传输,因此如今该技术的使用会受到限制。但是,还是可以值得一试的。首先测试人员必须确定服务是在x.y.z的名称服务器上。如果x.y.z.t的符号名是已知的,则可以通过nslookup,host或dig等工具进行请求DNS来确定其服务器名称

如果没有为xyzt知道任何域名的信息,但是目标定义至少包含一个符号名,则测试人员可以尝试应用上面相同的过程并查询该名称服务器。如果目标由ip地址为x.y.z.t和域名Mail.example.com组成,请先确定域名example.com的名称服务器。

下面的示例演示如何使用host命令为www.owasp.org 标识服务器名称:

现在可以将区域传输请求到域名为example.com的名称服务器上。如果测试人员够幸运,他们将获得该域的DNS目录列表。这也包括明显的www.example.com 和不太明显的helpdesk.example.com还有webmail.example.com进去。检查区域传输返回的所有名称,并考虑要与评估相关的域名。

尝试从其名称服务器之一请求owasp.org的区域传输:

DNS反向查询

此过程类似于上一个过程,但是依赖反向(PTR)DNS记录。而不是请求区域传输。可以尝试将记录类型设置为PTR并在给定的IP地址上查询。如果测试人员够幸运,他们可以直接获得DNS名称。但是成功率不能保证。

基于WEB的DNS搜索

这种搜索类似于DNS区域传输,但是依赖于基于WEB的服务,该服务可在DNS上启用基于名称的搜索。一种这样的功能是在Netcraft搜索DNS服务上。测试人员可能会查看甲方的域名名称列表然后他们会把得到的和正在用工具搜索的进行匹配。

反向IP服务

反向IP服务类似DNS反向查询,不同的地方是测试人员只能查询web的应用查询而不是服务器名称。由于它们倾向返回部分结果,因此最好使用多种工具来进行配合下面是一些常用的工具和网站查询:
Domain Tools Reverse IP(得注册)
Bing
webhosting info
DNStuff
Net Square

转载:https://github.com/OWASP/wstg/blob/master/document/4-Web_Application_Security_Testing/01-Information_Gathering/04-Enumerate_Applications_on_Webserver.md

后续

目前尝试翻译的是OWASP V5,这个版本目前还没有全部中文版,只有零星的几部分。所以我尝试一下,看看能不能在半年到九个月的时间,一个人肝完。质量这个问题还真不好保证,目前我的英语水平一般般托福也只有80多但是会尽量改善翻译问题。希望大家看完要是觉得好的话可以点个赞或者是打赏一下。谢谢大家。

用户名金币积分时间理由
奖励系统 100.00 0 2020-07-23 21:09:56 投稿满 10 赞奖励
奖励系统 50.00 0 2020-06-09 17:05:55 投稿满 5 赞奖励

打赏我,让我更有动力~

0 Reply   |  Until 2020-3-30 | 614 View
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.