1.1WAR文件信息泄露及利用

1.1.1war简介

WAR文件常见于Java应用中,WAR文件和JAR文件的文件格式是一样的,并且都是使用jar命令来创建,但就其应用来说,WAR文件和JAR文件是有根本区别的。JAR文件的目的是把类和相关的资源封装到压缩的归档文件中,而对于WAR文件来说,一个WAR文件代表了一个Web应用程序,它可以包含 Servlet、HTML页面、Java类、图像文件,以及组成Web应用程序的其他资源,而不仅仅是类的归档文件。

如果一个Web应用程序的目录和文件非常多,那么将这个Web应用程序部署到另一台机器上,全部复制过去,在复制过程中如果出现意外,非常麻烦!设计者想到了一个方法即将Web应用程序打包成Web 归档(WAR)文件,这个过程和把Java类文件打包成JAR文件的过程类似。利用WAR文件,可以把Servlet类文件和相关的资源集中在一起进行发布。在这个过程中,Web应用程序就不是按照目录层次结构来进行部署了,而是把WAR文件作为部署单元来使用。一个WAR文件就是一个Web应用程序,建立WAR文件,就是把整个Web应用程序(不包括Web应用程序层次结构的根目录)压缩起来,指定一个.war扩展名。一般是在在产品发布阶段使用WAR文件,在这个阶段基本不会对程序进行修改。

1.1.2生成War文件

1.JDK环境

制作war包的环境安装Java SE Development Kit(JDK)1.4以上版本,目前版本为8.0.1440.1,下载地址http://sw.bos.baidu.com/sw-search-sp/software/0e4489b4c514e/jdk-10_windows-x64_bin_10.0.0.0.exe。在有些Java开发工具中会默认安装JDK。Java Runtime Environment是运行环境,即允许java应用程序必须安装。默认安装路径在C:\Program Files (x86)\Java\jdk1.8.0_144\bin,安装完毕后在“计算机”-“计算机属性”-“高级”-“环境变量”中设置添加path值“C:\Program Files (x86)\Java\jdk1.8.0_144\bin”,即在原有的值后面增加一个“;”然后将java所在路径值增加在后面即可。“java –version”命令可以查看java版本信息。

2.生成jar文件

(1)生成jar文件

切换到j2sdk的bin目录,找到jar命令

在linux上,jar命令位于:/usr/java/j2sdk1.4.2/bin

在win上,jar命令位于:C:\Program Files (x86)\Java\jdk1.8.0_144\bin

执行jar -cvf 将要生成的包名“.war”要压缩的目录名,例如,要压缩C:/index目录下的子目录和jsp文件,则先切换到jar文件所在的路径,键入如下命令:

cd C:/index

jar -cvf index.war *

即可在当前目录下得到index.war,随后可以把index.war上传到服务器

(2) 将两个类文件归档到一个名为 classes.jar 的档案中:

       jar cvf classes.jar Foo.class Bar.class

(3) 使用现有的清单文件 'mymanifest' 并将 foo/ 目录中的所有文件归档到 'classes.jar' 中: jar cvfm classes.jar mymanifest -C foo/ .

3. 使用eclpise导出war,在eclpise中可以选中一个项目,然后选择“Export”, 选中“Web”下面的“WAR file”,点击“Nex”通过“Browse”选择保存路径,点击“Finish”完成即可。

4.查看war文件

 jar -tf index.war

1.1.3设置及部署war文件

1.部署war

在TOMCAT中部署war,其部署步骤如下:

(1)将war文件拷贝到tomcat目录/webapps/ 下。

(2)将必要的jar文件拷贝到tomcat目录/lib/ 下。

2.设置server.xml配置文件

(1)修改tomcat目录/conf/下的server.xml。

<!-- Tomcat Manager Context -->

<Context path="/manager" docBase="manager" debug="0"privileged="true"/>

将这段代码中的

<Context path="/manager" docBase="manager" debug="0" privileged="true"/>

拷贝一下并修改:path="" 为war路径,docBase=""为你的war的文件名,默认为管理地址。

(3)完毕,启动tomcat

3.自动解压设置

在tomcat安装目录下的conf目录下有个server.xml,搜索“unpackWARs”关键字,在<Host>标签中会有对其的设置,如果设置成true,那么tomcat在启动的时候,会在webapps目录下自动解压你那个war文件;如果设置成false,则tomcat直接访问war文件。

1.1.4WAR文件信息泄露及利用思路

1.war文件信息泄露

WAR文件信息泄露是指部署的war文件由于配置不当,导致其整个包文件以及其它重要配置文件信息泄露,例如可以直接浏览目录,获取其下面的数据库配置文件:WEB-INF/jdbc.properties,jdbc.properties为数据库连接配置文件,其中包含数据库连接的账号和密码等重要信息,在有些java应用中可能配置有邮箱账号和密码等敏感信息,笔者曾经在某大型网络中还见过将windows操作系统账号和密码写进配置文件,一旦这些文件信息泄露,将导致严重的安全隐患。如图1所示,在该配置文件中包含了邮箱帐号和密码等信息。

1.jpg

图1泄漏邮箱帐号和密码

2.重要的配置文件

java一般其重要配置文件位于其对应WEB-INF目录下,常见的重要配置文件有:

config/config.properties

configure/configure.properties

applicationContext.xml

sysconfig.properties

web.xml

config.xml

jdbc.properties

3.利用思路

(1)通过配置文件寻找真实路径信息。

(2)通过配置文件获取邮箱帐号和密码信息,包含邮箱帐号和密码的配置文件,其邮箱帐号99%都可以登录成功。登录邮件后可以对其邮箱信件内容进行查看,可以进行apt***等。

(3)获取配置文件中的数据库连接信息,如果外网或者内网能够访问数据库端口,则可以直接连接数据库,操作和管理数据库,甚至进行服务器提权。

(4)其它重要信息。获取一些有助于进一步***到url等配置信息。

4.war信息泄露获取方法

(1)目录信息泄露,直接访问其相应的目录可以获取

(2)扫描软件扫描获取。通过一些漏洞扫描工具,通过扫描即可获取。

(3)通过shadon、zoomeye、fofa漏洞搜索引擎对关键字进行搜索

1.1.5寻找war信息泄露实战

1.使用fosa搜索jdbc.properties

打开https://fofa.so,在其搜索框中输入"jdbc.properties"进行搜索,如图1所示可以获取20多个信息泄露记录。

2.jpg

图2利用关键字搜索配置文件

2.对其泄漏的记录进行查看

   对其中的记录进行逐个查看,如图3所示,可以看到该泄漏的文件存在目录泄漏漏洞,通过访问站点直接可以获取其配置文件的信息。如图4所示,其jdbc.properties配置文件中配置了SQL Server的sa账号和密码:

jdbcDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbcUser=sa

jdbcPassword=cx******5

jdbcUrl=jdbc\:sqlserver\://120.****.***\:1433;DatabaseName=test2

3.jpg

图3目录信息泄露敏感文件

4.jpg

图4泄漏数据库配置文件

3.通过sqltools对该主机的数据库进行连接

如图5所示,通过sqltools对上面获取的密码和数据库进行连接,成功连接后,可以执行命令,数据库配置的权限为system,直接获取服务器权限。

5.jpg

图5链接数据库

4.直接添加用户并获取服务器密码

    通过net user hack hacker /add net localgroup administrators hack /add类似命令添加用户,直接远程登录服务器,通过wce等工具获取服务器密码,如图6所示。

6.jpg

图6登录并获取服务器管理密码

1.1.6信息泄露扫描工具

开源信息泄露扫描工具:https://github.com/lijiejie/BBScan,对于信息泄露,可以通过BBScan等工具进行扫描。

1.1.7war信息泄露安全防范

1.在站点正式上线后,对站点进行利用wvs等工具进行漏洞扫描

2.对敏感文件进行访问,在根目录禁止打包文件,删除无关文件。


题外话:我在51CTO博客上线了自己的专栏《sqlmap******入门到实战》,欢迎网安同道们切磋交流