浅谈“Web服务器控制台地址泄漏”

一:漏洞名称:

Web容器控制台地址泄漏、中间件控制台地址泄漏、web服务器控制台地址泄漏

描述:

Web 控制台是一种基于 Web 的用户界面, 其常常被用于网站后台或者web容器控制台中,其不仅仅局限于容器或者网站管理后台,还包括一些数据库默认地址等。在web安全中,网站系统在泄漏其web容器(中间件)或者数据库的控制台后,存在增加被入侵的风险。常见的web控制台包括以下多种:tomcat、aria2、weblogic、websphere、oracle、jboss、等。这些web的容器控制台常见访问形式:http://hostname:port/load/,例如:http://x.x.x.x:8080/manage/。

检测条件:

已知Web网站具有中间件控制台页面。

检测方法:

常见的web控制台检测方法:整体思路为首先需识别网站容器的指纹,判断其所采用的中间件,然后去扫描其所开放的端口,根据开放端口信息和常见固定的路径,去判断其控制台地址。以下列举常见集中的检测方法:

  1. Apache+tomcat:tomcat常见的web控制台地址为:http://x.x.x.x/manager/html或者添加端口:http://x.x.x.x:8080/manager/html,从TOMCAT5(开始默认/admin后台不存在,tomcat5之前的控制台为/admin。
  2. Weblogic控制台:http://[weblogic所在机器IP]:[weblogic端口]/console若没有指定端口,且安装在本机上则为:(weblogic默认端口为7001)http://localhost:7001/console。
  3. Websphere控制台:websphere的控制台常见有两种,一种是基于http,另一种是基于https的,分别为如下:http://localhost:9060/ibm/console和https://localhost:9043/ibm/console/logon.jsp。
  4. Oracle web控制台:一般默认的是http://localhost:5500/em,一般存放于Oracle安装文件夹下的install文件夹下中文本文件,上面有web控制台的地址。
  5. Mongodb web控制台:自带了Web控制台:默认和数据服务一同开启。他的端口在Mongodb数据库服务器端口的基础上加1000,如果是默认的Mongodb数据服务端口(Which is 27017),则相应的Web端口为28017,这个页面可以看到当前Mongodb的所有连接、各个数据库和Collection的访问统计,包括:Reads, Writes, Queries, GetMores ,Inserts, Updates, Removes、写锁的状态、以及日志文件的最后几百行(CentOS+10gen yum 安装的mongodb默认的日志文件位于/var/log/mongo/mongod.log)。
  6. HP system managent控制台:该控制台一般默认的端口为2381,可在其后添加路径/cpqlogin.php?errno=100&severity=4,即可访问.https://localhost:2381/cpqlogin.php?errno=100&severity=4
  7. Service Registry 3控制台:在 Web 浏览器中键入以下 URL:http://hostname:port/soar/例如:http://localhost:6060/soar/如果系统中安装了 Registry,则 hostname 为 localhost。如果系统中尚未安装 Registry,请使用安装了 Registry 的系统的名称。port 的值通常为 6060,除非发生端口冲突。
  • Tomcat控制台URL:http://www.exmaple.com/manager/html
  • Tomcat控制台默认帐号admin,默认密码admin或空
  • Jboss控制台URL:http://www.exmaple.com/jmx-console/
  • Jboss控制台URL:http://www.exmaple.com/web-console/
  • Jboss控制台默认无须登陆,或者admin/admin
  • WebSphere控制台URL:http://www.exmaple.com/ibm/console/logon.jsp
  • WebSphere默认帐号admin,默认密码admin
  • Apache控制台URL:http://www.exmaple.com/server-status
  • Axis2控制台URL:http://www.exmaple.com/axis2-admin/
  • Axis2控制台默认口令帐户:admin/axis2
  • iSAP控制台URL:http://www.exmaple.com/admin/login.jsp
  • iSAP控制台默认的帐号和密码:admin/admin
  • “普元”管理控制台URL:http://www.exmaple.com/eosmgr/
  • “普元”管理控制台默认的帐号和密码:sysadmin/000000

 

 

风险等级:

【高危】:可访问默认中间件控制台,且能过成功获取 shell。

【中危】:可访问默认中间件控制台,并成功登录,但无法获取 shell。

【低危】:可访问默认中间件控制台,但无法登录且无法执行危险操作。

漏洞修复:

默认的web容器控制台泄漏于网络中,常常可被利用,进行对web系统的攻击,一旦进入这些控制台后,可对网站进行任意的部署,中断服务等危险行为,建议从以下几点出发,修复有关控制台地址泄漏的问题:

1、 对于必须暴露于公网或者其他网络中的控制台地址,则为其地址做访问白名单措施,即只允许白名单以内的用户IP地址可以访问到该控制台,通过过滤器(filter)实现:

     ①创建客户端IP过滤器ClientIpFilter

package com.huawei.filters;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.Filter;
import javax.servlet.ServletException;
import javax.servlet.FilterConfig;
public class ClientIpFilter implements Filter
{
    protected FilterConfig filterConfig;
    private String whiteIPlist[] = null;
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
        throws IOException, ServletException
    {
        String clientIP = req.getRemoteAddr();        
        if(IsIPinWhitelist(clientIP))
		{
		 	//验证成功,继续处理
			//System.out.println(clientIP+"调用Web Service,IP鉴权通过");
			chain.doFilter(req,res);		
		}		
		else
		{
			//验证不成功,禁止用户调用该服务。
			System.out.println(clientIP+"调用Web Service,IP鉴权不通过");
		 	//throw new ServletException(clientIP + "无权限访问Web Service!");
		}
    }    
	private boolean IsIPinWhitelist(String remoteIPAddress)
	{
		for(int i = 0; i < this.whiteIPlist.length; i++)
        {
			String strIP = this.whiteIPlist[i];
			if(strIP.equals(remoteIPAddress))
			{
				return true;
			}
        }		
		return false;
	}
	public void setFilterConfig(FilterConfig filterConfig)
    {
        this.filterConfig = filterConfig;
    }
    public void destroy()
    {
        filterConfig = null;
    }
    public void init(FilterConfig config)
        throws ServletException
    {
        this.filterConfig = config;
        String IPs = config.getInitParameter("IPList");
        this.whiteIPlist = IPs.split(",");
    }
}

     ② 在web.xml中部署过滤器ClientIpFilter

在对应的web.xml文件的</web-app>前增加以下内容,其中蓝色部分为需要根据实际情况配置的
IP地址白名单(也就是允许访问相应Web模块的客户端IP地址列表),IP地址间通过逗号隔开,
不允许有空格;其中红色部分为需要根据实际情况配置的Web目录。参考代码:
<filter>
	   <filter-name>ClientIpFilter</filter-name>
	   <filter-class>com.huawei.filters.ClientIpFilter</filter-class>
		 <init-param>
		   <param-name>IPList</param-name>
		   <param-value>192.168.1.11,192.168.2.22,10.70.107.119</param-value>
		 </init-param>
	</filter>
	<filter-mapping>
	   <filter-name>ClientIpFilter</filter-name>
	   <url-pattern>/WebService/*</url-pattern>
	</filter-mapping>

 

2、 修改控制台默认的用户名和名吗,并为其控制台设置强壮的口令措施,防止可被恶意或简单猜解得到用户名和密码。

3、 修改web容器控制台的默认端口,默认路径,避免可被直接利用,访问得到地址

4.例如:tomcat的修复方式:禁止别人访问tomcat主页,环境:tomcat 6.0 ;步骤1:在server.xml中 <Host name="localhost" appBase="webapps"修改改webapps为xxxxxx(自己设置的路径);步骤2:在tomcat-users.xml中 :<user name="admin" password="xxxx" roles="admin,manager" /> 更改用户名和密码(需强壮)。


其他补充:

CVE 全称“Common Vulnerabilities&Exposures” 公共漏洞和暴露。

CVE 为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称,帮助用户在各个独立漏洞数据库中和漏洞评估工具中共享数据。各个工具整合起来并不容易,所以就使得CVE成为了安全信息共享的关键字。类似一个字典表的作用。

在一个漏洞报告中指明的一个漏洞,如果有CVE名称,你就可以快速的在其他任何CVE兼容的数据库中find到对应的修补信息,方便解决安全问题。

 

CVE-ID 解析:

CVE prefix + Year + Arbitrary Digits

只有当最后四位随机的数字全部用光后,可以增加数字的位数。

所以不用纠结7169等的含义了,只是一个数字。

如果有对安全感兴趣的同学,时常关注下漏洞发布,有助于提高自身对漏洞安全的敏感性。

CVE相关链接:

https://cve.mitre.org/    #CVE官网  

http://cve.scap.org.cn/ #中文CVE漏洞信息库

http://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures

什么叫web容器以及作用?

就是一种所谓的中间件(大概理解为容器相当于大于等于中间件,有时候说容器可以指的是中间件,但是说中间件不能理解为容器。
你想,如果让你凭空写一个能通过web访问的程序,是不是很难?
有了web容器,只要按照它的规范写出功能逻辑(比如servlet,又比如asp)就可以了,而网络连接容管理,会话管理等功能都由容器实现,大大简化了开发

web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器。一个服务器可以有多个容器。

Web应用程序需要部署到Web容器中才能运行,两者都必须符合J2EE规范。Web容器主要任务是管理Web应用程序。

Servlet简介

  Servlet是sun公司提供的一门用于开发动态web资源的技术。
  Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
  1、编写一个Java类,实现servlet接口。
  2、把开发好的Java类部署到web服务器中。
  按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

Servlet(Server Applet)是 Java Servlet 的简称,是使用 Java 语言编写的运行在服务器端的程序。具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

通常来说,Servlet 是指所有实现了 Servlet 接口的类。

Servlet 主要用于处理客户端传来的 HTTP 请求,并返回一个响应,它能够处理的请求有 doGet() 和 doPost() 等。

Servlet 由 Servlet 容器提供,Servlet 容器是指提供了 Servlet 功能的服务器(如 Tomcat)。

Servlet 容器会将 Servlet 动态加载到服务器上,然后通过 HTTP 请求和 HTTP 应与客户端进行交互。

Servlet 应用程序的体系结构如图 1 所示。

Servlet 应用程序的体系结构
图 1  Servlet 应用程序的体系结构


在图 1 中,Servlet 的请求首先会被 HTTP 服务器(如 Apache)接收,HTTP 服务器只负责静态 HTML 页面的解析,而 Servlet 的请求会转交给 Servlet 容器,Servlet 容器会根据 web.xml 文件中的映射关系,调用相应的 Servlet,Servlet 再将处理的结果返回给 Servlet 容器,并通过 HTTP 服务器将响应传输给客户端。

Servlet 技术具有如下特点。

1)方便

Servlet 提供了大量的实用工具例程,如处理很难完成的 HTML 表单数据、读取和设置 HTTP 头,以及处理 Cookie 和跟踪会话等。

2)跨平台

Servlet 使用 Java 类编写,可以在不同的操作系统平台和不同的应用服务器平台运行。

3)灵活性和可扩展性强

采用 Servlet 开发的 Web 应用程序,由于 Java 类的继承性及构造函数等特点,使得应用灵活,可随意扩展。

除了上述几点以外,Servlet 还具有功能强大、能够在各个程序之间共享数据、安全性强等特点,此处不再详细说明,读者简单了解即可。

中间件:(https://www.php.cn/faq/418042.html

中间件是一类连接软件组件和应用的计算机软件,它包括一组服务。以便于运行在一台或多台机器上的多个软件通过网络进行交互。该技术所提供的互操作性,推动了一致分布式体系架构的演进,该架构通常用于支持并简化那些复杂的分布式应用程序,它包括web服务器、事务监控器和消息队列软件。

 

中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。

中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

IDC对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。

中间件是位于平台(硬件和操作系统)和应用之间的通用服务,如图1所示,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。

 

 

也许很难给中间件一个严格的定义,但中间件应具有如下一些特点:

①满足大量应用的需要;

②运行于多种硬件和OS平台;

③支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互;

④支持标准的协议;

⑤支持标准的接口。

由于标准接口对于可移植性、标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件就几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值