• 【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('
    ')                           # 去掉空行
            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
    
    
  • 相关阅读:
    MySQL与PostgreSQL对比
    Elastic Job3.0
    Nacos Config动态刷新值
    clickhouse数据类型
    字符串和整数之间的转换
    STL之优先队列 priority_queue
    c++智能指针
    springcloud gateway: discovery: locator: enabled: true 解释
    工具资源下载链接 webstorm
    技术链接汇总
  • 原文地址:https://www.cnblogs.com/17bdw/p/7598925.html
Copyright © 2020-2023  润新知