精华内容
下载资源
问答
  • 漏洞复现之Tomcat后台War包上传Getshell

    千次阅读 2019-03-19 17:07:41
    这种方法的利用上下文是你已经能够登录Tomcat的管理后台,注意是Tomcat的管理后台而不是Web应用程序的后台!本文章一切演示以vuln提供的漏洞环境为例 Tomcat后台 使用本文所描述的技能的前提是先进入Tomcat的...

    注意标题,后台War包上传Getshell!这种方法的利用上下文是你已经能够登录Tomcat的管理后台,注意是Tomcat的管理后台而不是Web应用程序的后台!本文章一切演示以vuln提供的漏洞环境为例

    Tomcat后台

    使用本文所描述的技能的前提是先进入Tomcat的管理后台,那么Tomcat管理后台的URI你知道吗?有哪些限制阻止你登录后台,你知道吗?正所谓知己知彼百战不殆,那不如我们首先了解下Tomcat后台相关设置吧!首先我们看一下Tomcat手册中给出的如下描述:

    Tomcat
    It would be quite unsafe to ship Tomcat with default settings that allowed anyone on the Internet to execute the Manager application on your server. Therefore, the Manager application is shipped with the requirement that anyone who attempts to use it must authenticate themselves, using a username and password that have one of manager-xxx roles associated with them (the role name depends on what functionality is required). Further, there is no username in the default users file ($CATALINA_BASE/conf/tomcat-users.xml) that is assigned to those roles. Therefore, access to the Manager application is completely disabled by default.

    怎么,没看明白?英语太差?好吧用中国话说就是Tomcat默认情况下是不允许任何人登录管理后台的。这样做也是为了安全起见,我们都知道弱密码或者默认密码这个东西,当我们发现某个管理页面的时候第一反映就是拿弱密码或者默认密码登录试试并且通过这种方法也经常能够遇到惊喜: > !所以Tomcat为了解决这个问题直接就不设置默认密码与用户名。
    那么问题来了,管理后台既然存在不可能不让用吧?!当然让用了,文档里也写的很清楚如果有使用管理后台的必要,需要使用者在用户配置文件中(tomcat-users.xml)手动设置用户名,密码并且根据其需要的功能设置用户角色,需要说明默认配置件中没有声明任何的用户角色。以本文所使用的漏洞环境的tomcat-users.xml内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <tomcat-users xmlns="http://tomcat.apache.org/xml"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
                  version="1.0">
    
        <role rolename="manager-gui"/>
        <role rolename="manager-script"/>
        <role rolename="manager-jmx"/>
        <role rolename="manager-status"/>
        <role rolename="admin-gui"/>
        <role rolename="admin-script"/>
        <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" />
        
    </tomcat-users>
    

    仔细观察上述文件中的角色就可以发现有几个是以manager为前缀有几个以admin为前缀。为什么会存在这种差异呢,这是因为Tomcat其实具有两个后台管理,一种是用于管理所部署Web应用,它对应的角色以manager开头;一个是用于管理虚拟主机,它对应的角色以admin开头。manger对应的四种角色作用分别为:

    • manager-gui:允许用户登录图形化的Web应用管理及部署页面,页面地址为/manger/html
      manager-gui
    • manager-status:允许用户访问查看服务器状态的页面,页面地址为/manager/status
      manager-status
    • manager-script:允许用户通过文本页面的形式执行管理命令,页面地址为/manager/text/命令?参数,具体命令可以参考此页面
      manager-script
    • manager-jmx:允许用户通过JMX代理接口并访问“服务器状态”页面。(具体使用方式参考下面给出的几篇利用它搞破坏文章:>)

    作为一个搞安全的人就需要有一双敏锐的眼睛:》,我在阅读文档是还看到下下面这句话:

    The HTML interface is protected against CSRF (Cross-Site Request Forgery) attacks, but the text and JMX interfaces cannot be protected. It means that users who are allowed access to the text and JMX interfaces have to be cautious when accessing the Manager application with a web browser. To maintain the CSRF protection:
    If you use web browser to access the Manager application using a user that has either manager-script or manager-jmx roles (for example for testing the plain text or JMX interfaces), you MUST close all windows of the browser afterwards to terminate the session. If you do not close the browser and visit other sites, you may become victim of a CSRF attack.
    It is recommended to never grant the manager-script or manager-jmx roles to users that have the manager-gui role.
    Note that JMX proxy interface is effectively low-level root-like administrative interface of Tomcat. One can do a lot, if he knows what commands to call. You should be cautious when enabling the manager-jmx role.

    通过上面描述有没有发现什么惊喜?描述中提到在通过图形化界面访问Web应用管理及部署平台时会有CSRF保护机制,但是通过manager-script和manager-jmx这两种接口来管理后台时没有CSRF保护机制,这就说明其有可能遭受到CSRF攻击,并且最后一段还提到了manage-jmx这种管理接口权限非常高,这所名它在渗透测试过程中很有利用价值!那么在实战中真的可以使用吗?当然了具体攻击姿势请移步此文,英文的看不得话就看翻译的,以及这一篇吧。

    接下来该介绍介绍虚拟主机管理了,以admin开头的两种角色为:

    • admin-gui :对应用图形花管理界面,地址为/host-manager/html
      host-manager-html
    • admin-script:允许用户通过文本页面的形式执行管理命令,页面地址为/manager/text/命令?参数,具体命令可以参考此处
      host-manager-text

    OK!后台部分内容到这里就介绍结束了!But,还需要有一点你需要知道,那就是通往后台的路没有那么简单,在复习下Tomcat的文档你会发现这句话:

    In addition to the password restrictions, access to the Manager web application can be restricted by the remote IP address or host by adding a RemoteAddrValve or RemoteHostValve. See valves documentation for details. Here is an example of restricting access to the localhost by IP address:

    <Context privileged="true">
             <Valve className="org.apache.catalina.valves.RemoteAddrValve"
                    allow="127\.0\.0\.1"/>
    </Context>
    

    我去!真的是费劲!原来Tomcat还可以通过配置文件限制IP访问,具体配置文件位置如下所示,分别对应这Tomat Web应用管理与部署后台接入的控制以及虚拟主机管理的介入控制。不过实战中如果真的遇到这种情况CRSF,SSRF是不错的选择!

    /usr/local/tomcat/webapps/manager/META-INF/context.xml
    /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
    

    以vuln提供的漏洞环境为例,context.xml内容如下,表示允许所有IP访问:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context antiResourceLocking="false" privileged="true" >
      <Valve className="org.apache.catalina.valves.RemoteAddrValve"
             allow="\d+\.\d+\.\d+\.\d+" />
    </Context>
    

    绕的有点远了,回到正题,我们还是看看War包上传Getshell吧,至于什么是War包这里就不详细解释了,你就把它理解为一种压缩包,这个压缩包里包含了你要上传的Web应用的所有资源(文件),你上传后Tomcat会自动将其解压部署为Web应用。
    要部署War包首先要生成一个War包,这里我们使用CVE-2017-12615这篇文章中的代码为例,打包命令如下:

    root@kali:~/evil# dir
    evil.jsp
    root@kali:~/evil# jar cvf evil.war .
    已添加清单
    正在添加: evil.jsp(输入 = 694) (输出 = 390)(压缩了 43%)
    root@kali:~/evil# dir
    evil.jsp  evil.war
    root@kali:~/evil# 
    参数解释如下:
    -c, --create               创建档案
    -v, --verbose              在标准输出中生成详细输出
    -f, --file=FILE            档案文件名。省略时, 基于操作
    

    接下来进入后上传War包:
    war
    如果上传成功你会看到如下信息:
    OK
    访问/evil/evil.jsp成功Getshell!
    Getshell

    总结

    读文档总是能够发现惊喜!

    展开全文
  • 关于docker如何部署war包,相信大家用docker命令也是知道怎么部署的,因此,本篇博客就来讨论下如何使用Dockerfile进行部署。 2、具体步骤 1、安装docker 由于centos自从6.5版本就才是支持docker了,因此,直接...

    0、参考与调料包

    参考:无

    调料包:CentOS7.4(操作系统)

    1、简介

    关于docker如何部署war包,相信大家用docker命令也是知道怎么部署的,因此,本篇博客就来讨论下如何使用Dockerfile进行部署。

    2、具体步骤

    1、安装docker

    由于centos自从6.5版本就才是支持docker了,因此,直接使用yum安装docker即可。

    yum install docker

    2、启动docker服务以及将其设计为开机自启

    systemctl start docker
    systemctl enable docker

    3、用vim编写Dockerfile文件,放在新建的文件夹test内

    #Dockerfile
    From tomcat:8-jre8
    MAINTAINER <edison>
    ADD yourOwnPackage.war /usr/local/tomcat/webapps/

    4、将yourOwnPackage.war(你需要部署的war包)放在新建文件夹test内,使用Dockerfile生成镜像(image)

    docker build -t webserver .

    5、启动容器

    docker run -d --rm -p 8081:8080 --name yourOwnPackage webserver

    6、访问8081端口

    3、附注

    作为一个懒人,能够一键解决安装,那不是更好吗?这种时候就需要一个shell脚本了,整理上述内容,得出如下的shell脚本,大家按照提示操作就可以了。shell脚本和Dockerfile文件可从http://47.106.202.164/owncloud/index.php/s/ipi68K62f4wGB87下载,分享密码123456。

    1、将test文件夹和onlyClick.sh放置在同一个文件夹;

    2、将需要部署的war包放入test文件夹内;

    3、替换掉shell脚本和Dockerfile内的yourOwnPackage;

    4、切换到onlyClick.sh所在路径下,运行onlyClick.sh。

    展开全文
  • 我们知道大多数服务器都是Linux系统,且是非图形化的指令操作,在这种情况下,如果调试服务器部署的程序就比较困难,下面的操作就是要实现利用本地的idea和tomcat来远程连接服务器,调试程序,检测代码bug。...

    前言

    我们知道大多数服务器都是Linux系统,且是非图形化的指令操作,在这种情况下,如果调试服务器部署的程序就比较困难,下面的操作就是要实现利用本地的idea和tomcat来远程连接服务器,调试程序,检测代码bug。


    一、修改服务器tomcat 参数

    这里说明一下下文“address=8000”是我在服务器开的8000端口进行调试,如果使用的是阿里云服务器需要在安全组里面添加自己想开的对应端口,必须保证我们使用的端口已经开放

    • linux服务器情况下

      • 第一种

        • 进入tomcat的bin目录下添加debug.sh文件(可复制startup.sh)

        • 然后在exec "$PRGDIR"/"$EXECUTABLE" start "$@"行上面添加下面这句

          export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,suspend=n,server=y"

      • 第二种

        • 同样进入tomcat的bin目录下在catalina.sh文件的开头添加CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,suspend=n,server=y"
    • windows服务器

      • 第一种
        • 进入tomcat的bin目录下打开catcalina.bat文件
        • 修改:set "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
          • 为:set "JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
      • 第二种
        • 进入tomcat的bin目录下打开catcalina.bat文件
        • 直接在开始位置添加set "JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"

    修改服务器tomcat 参数完成后,启动服务器的tomcat

    二、本地调试

    我本地是Windows系统,在开始本地调试前,我们需要做一些准备工作

    • 远程服务器部署的war包程序必须要和本地idea编辑器里面项目代码一模一样,因为是逐行调试核对,必须保证代码的一样
    • 其次我们默认war包已经在服务器部署好了,确定部署没有问题
    • 当修改服务器tomcat 参数后,启动服务器tomcat

    1.idea打开我们对应的本地项目,在启动项目图标那里点击,找到编辑Edit Configurations进入
    在这里插入图片描述
    2.然后找到Templates,下拉框找到Remote
    在这里插入图片描述
    3.找到Remote,修改端口号为我们刚才在服务器配置tomcat的端口号,我这里是8000.然后点击Apply再OK
    在这里插入图片描述
    4.下面看图,在此界面点击加号,然后再次找到Remote,就会看到序号3的界面,给这个连接起个名字(我起的test),Host处写服务器ip,Port写端口号,然后点击Apply再OK,
    在这里插入图片描述
    5.看下图,选择刚才起名字的Remote,我的是test,然后点击debug,看到控制台出现下图的字样就是连接成功了,可以进行远程调试服务器部署的war包程序了在这里插入图片描述


    到这里,我们利用本地idea和tomcat 远程调试服务器部署的war包程序的整个步骤就完全结束了。

    展开全文
  • tomcat安装好后,默认是附带了一个Tomcat Web Application Manager,可以在上面方便的进行部署等操作,我想直接通过war file to depliy功能直接上传我的war包部署到tomcat中,如下图: 我的war文件位于:E:\tomcat...

    tomcat安装好后,默认是附带了一个Tomcat Web Application Manager,可以在上面方便的进行部署等操作,我想直接通过war file to depliy功能直接上传我的war包部署到tomcat中,如下图:

    我的war文件位于:E:\tomcatwars\server.war

    选中这个文件,deploy:

    deploy后:

    发现Path是:/E:tomcatwarsserver ,并且点击后无法访问

    进入tomcat安装目录,查看webapps:

    注意这个目录的名称为:E:tomcatwarsserver,包含一个符号":"

    查看tomcat的错误日志:

     

    这段日志说明启动位于路径 /webapps/E:tomcatwarsserver 的程序失败,因为路径名有一个符号":",

    可是为什么文件夹名称含有一个":"呢?是不是跟浏览器的请求有关?

    用edge浏览器上传时是这样的:

    即包含了文件的全路径,tomcat肯定是依据上传的文件名简单进行去掉“\”,"/" 就作为文件名。

    那是不是浏览器问题?换一个chrome试下:

    留意chrome中选择一个文件后文件名是不包含全路径的,点击部署:

    可以看到部署成功了

    并且可以访问。

    总结:跟浏览器有关,edge有问题,chrome、firefox没有问题!!!

    为了解决这个问题耗费了我好多时间,而且网上也查不到相关文章,想想还是记录下来,帮助有需要的人!

    展开全文
  • 开发web工程时经常要获取工程的根目录,自己用Java实现的获取Tomcatwar包部署的Web工程根目录路径的方法,主要利用web工程默认的目录结构,此外也可以指定工程名称获取工程目录的绝对路径
  • 因为现在很多的项目都是达成jar包或者war包部署在服务器的tomcat或者其他web应用服务器上的,所以有时候我们想要排查问题的话第一项大就是看日志,但是又是收日志很不全面,而且看起来很费劲,所以我们就可以利用...
  • tomcat漏洞利用总结

    2019-07-30 14:38:00
    一、后台war包getshell  漏洞利用:  tomcat在conf/tomcat-users.xml配置用户权限 <?xml version="1.0" encoding="UTF-8"?> <tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi=...
  • Tomcat页面弱口令war包上传Getshell

    千次阅读 2020-07-19 12:23:54
    burpsuit对tomcat进行弱口令爆破→利用弱口令进入tomcat管理页面→制作war包上传getshell 在vulhub路径/vulhub/tomcat/tomcat8中启动tomcat环境 Tomcat默认页面登录管理在manager/html路径下 启动burpsuit抓包...
  • idea有Build Artifacts功能,可以一键打war包。这种方式适合没有maven等项目构建的。也就是老项目,把jar包放在lib里面的web项目。本人有幸参与改造公司的老项目。今天给大家分享如何打包!!! 一.idea配置tomcat...
  • 这是一个渗透测试工具,旨在利用Apache Tomcat凭据来自动生成和部署JSP后门,并在之后调用它并提供不错的外壳(通过Web gui,绑定在远程计算机上的侦听端口或作为反向tcp负载重新连接到对手)。 实际上,它会即时...
  • 利用已有镜像搭建自己的镜像 docker commit -p dc6da persoal:yq 将本地镜像new-repo:yq 修改为yuanqiang1/new-repo:yq docker tag new-repo:yq yuanqiang1/new-repo:yq 注意push推送的镜像格
  • Tomcat后台弱口令上传war

    千次阅读 2019-02-24 15:16:18
    利用暴力破解或者弱口令猜解的方式得到tomcat的后台登陆认证账户,即在登陆成功之时利用tomcat管理控制台WARfile to deploy 自动部署war的功能将我们的木马进行上传部署。在这里我们本地给大家准备的实验环境如下:...
  • 远程服务器上的tomcat怎么更新war

    千次阅读 2018-10-06 16:36:27
    1.导出最新的war包。     2.利用xftp5连接远程服务器,将旧的war包删除,新的war包复制过去。     3.重启tomcat
  • 进入tomcat的bin目录下在catalina.sh文件的开头添加CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,suspend=n,server=y" 1.idea打开我们对应的本地项目,在启动项目图标那里点击,找到编辑Edit ...
  • 有一次接到一个需求需要本地部署的...然而在要打包tomcat时发现磁盘利用率已经达到99%,剩余空间不足100M,怎么办?就想着先把原服务器上的war打包出来,然后再新部署就好了啊,我这人习惯再更改服务器上的文件时先将...
  • tomcat部署war包不成功解决方法

    万次阅读 2017-02-27 19:05:42
    一、利用Tomcat自动部署(直接将项目扔到tomcat下的webapps下) 这种方式很简单,但今天我尝试时,本地服务器可以成功(tomcat不重启情况下添加war包可以自动部署),但是远程服务器失败。 想了想,决定使用控制台...
  • 核心原理利用Tomcat的[Manager功能]和[Maven插件]实现快速部署。应用场景在前后端多人协同开发项目时,联调测试是很频繁的工作,这自然少不了在测试服务器频繁的更新后端API。为了简化各位后端同事的工作,可以使用...
  • eclipse导出war利用tomcat启动

    千次阅读 2019-12-09 19:37:07
    首先我们需要去利用eclipse导出war包 先修改pom文件 <packaging>war</packaging> 修改完pom文件需要去更新下maven 出现下图表示成功 导出war包的地址 我们需要把war包放在...
  • Tomcat任意文件上传漏洞(CVE-2017-12615) 漏洞介绍 当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击...
  • 利用WAR文件,可以把Servlet类文件和相关的资源集中在一起进行发布。在这个过程中,Web应用程序就不是按照目录层次结构来进行部署了,而是把WAR文件作为部署单元来使用。 一个WAR文件就是一个Web应用程序,建立WAR...
  • 文章目录一、远程代码执行漏洞(CVE-2017-12615)二、信息泄露漏洞(CVE-2017-12616)三、弱口令➕后台部署war文件 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由...
  • 转载自: Tomcat(二) Tomcat实现:Servlet与web.xml介绍 以及 源码分析Tomcat实现细节在《Tomcat(一) Tomcat是什么:Tomcat与Java技术 Tomcat与Web应用 以及Tomcat基本框架及相关配置》对Tomcat有了一个大体的认识...
  • 近期在项目中碰到的ApacheTomcat中间件愈来愈多,于是乎。想着做一个整理。将ApacheTomcat中间件的几大较为重要的高危漏洞做一个总结整理复现。用作来巩固更新自己的知识库。...
  • 1.首先Linux先安装java,Tomcat 中间件规范要求: 1) 软件必须下载到/services/download_soft_v --------(用xftp上传到此目录) 2) 软件必须安装到/services/current_apps --------------(将上传的java和tomcat ...
  • 欢迎点击「算法与编程之美」↑关注我们!本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。了解wartomcat服务器简单来说,war包是Jav...
  • 安装Tomcat 创建tomcat目录: mkdir/usr/local/tomcat 通过Xftp工具将tomcat安装包传输到该目录下 进入tomcat目录 cd /usr/local/tomcattomcat安装包进行解压 tar -zxvf apache-tomcat-8.5.47.tar.gz ...
  • Tomcat服务器漏洞利用

    2019-10-16 08:54:12
    Tomcat 是一款常见的webserver,如果后台口令设置的比较简单,容易被攻击者破解登录后台。通过猜解到的口令登录tomcat管理后台后,可以上传webshell对服务器进行入侵。入侵成功后找到服务器中的key.txt文件。 题目...
  • Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍。 一、Java ...
  • 程序开发者都知道,一个好的debug环境可以节省大量的时间。...所以这边文章就来讲一下如何利用eclipse远程调试tomcat。 首先你需要有一个tomcattomcat的安装可以查看另一篇文章:Apache-tomcat...
  • 1.拉取靶场镜像,打开靶场 2.登陆抓包进行爆破,设置一个位置,然后选择类型为custom iterator,然后在下面payload选项中选择三个位置,然后增加编码...密码是tomcat,用户名也是。 3.进入后台上传文件,然后getshel.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,303
精华内容 8,121
关键字:

tomcatwar利用