【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



===========================================================

一个独立安全研究员,自由职业者的知识星球《公鸡队之家》,一边研究技术,一边分享到星球,一边养活自己,我们都有一颗好为人师的心,赠人玫瑰,手留余香。星球的价格是199¥/年。希望大家赏光,加入二维码在文末。

知识星球
posted @   17bdw  阅读(933)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示