【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

posted @ 2017-09-26 21:07  17bdw  阅读(914)  评论(0编辑  收藏  举报