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 泄漏邮箱帐号和密码
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 利用关键字搜索配置文件
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 目录信息泄露敏感文件
图 4 泄漏数据库配置文件
3. 通过 sqltools 对该主机的数据库进行连接
如图 5 所示, 通过 sqltools 对上面获取的密码和数据库进行连接, 成功连接后, 可以执行命令, 数据库配置的权限为 system, 直接获取服务器权限.
图 5 链接数据库
4. 直接添加用户并获取服务器密码
通过 net user hack hacker /add net localgroup administrators hack /add 类似命令添加用户, 直接远程登录服务器, 通过 wce 等工具获取服务器密码, 如图 6 所示.
图 6 登录并获取服务器管理密码
1.1.6 信息泄露扫描工具
开源信息泄露扫描工具: https://github.com/lijiejie/BBScan, 对于信息泄露, 可以通过 BBScan 等工具进行扫描.
1.1.7war 信息泄露安全防范
1. 在站点正式上线后, 对站点进行利用 wvs 等工具进行漏洞扫描
2. 对敏感文件进行访问, 在根目录禁止打包文件, 删除无关文件.
题外话: 我在 51CTO 博客上线了自己的专栏sqlmap 渗透攻击入门到实战, 欢迎网安同道们切磋交流
来源: http://blog.51cto.com/simeon/2119372