
Exploit SSH pour CVE-2024-6387 : RCE dans le serveur OpenSSH, sur les systèmes Linux basés sur glibc
CVE-2024-6387 est un exemple hypothétique, mais supposons qu'il s'agisse d'une vulnérabilité réelle dans l'implémentation du serveur OpenSSH. Cette vulnérabilité pourrait impliquer un dépassement de tampon ou une corruption mémoire permettant à des attaquants distants d'exécuter du code arbitraire sur le serveur. Voici une explication de haut niveau de la manière dont une telle vulnérabilité pourrait être exploitée :
Le code Python fourni est un exploit conçu pour tirer parti de CVE-2024-6387. Voici une analyse détaillée des étapes qu'il suit : Configuration de la connexion : Établit une connexion TCP vers le serveur SSH cible.
def setup_connection(ip, port):
# ...
Envoi et réception de paquets : Gère l'envoi et la réception de paquets vers/depuis le serveur SSH.
def send_packet(sock, packet_type, data):
# ...
: Initie la négociation SSH en envoyant et en recevant la chaîne de version SSH.
def send_ssh_version(sock):
# ...
def receive_ssh_version(sock):
# ...
Initialisation de l'échange de clés (KEX_INIT) : Envoie et reçoit le paquet d'initialisation de l'échange de clés.
def send_kex_init(sock):
# ...
def receive_kex_init(sock):
# ...
Réalisation de la négociation SSH : Combine les étapes ci-dessus pour terminer la négociation SSH.
def perform_ssh_handshake(sock):
# ...
Préparation du tas : Envoie une série de paquets pour manipuler l'état du tas sur le serveur.
def prepare_heap(sock):
# ...
Structure de fichier factice : Crée des structures de fichier factices pour exploiter la vulnérabilité de corruption mémoire.
def create_fake_file_structure(data, glibc_base):
# ...
Mesure du temps d'analyse : Mesure le temps mis par le serveur pour analyser certains paquets, afin de synchroniser correctement l'exploit final.
def time_final_packet(sock):
# ...
Paquet de clé publique : Confectionne un paquet contenant la charge utile de l'exploit, y compris le shellcode.
def create_public_key_packet(packet, size, glibc_base):
# ...
Exploitation de la condition de concurrence : Tente d'exploiter la condition de concurrence en synchronisant correctement l'envoi du paquet final.
def attempt_race_condition(sock, parsing_time, glibc_base):
# ...
Fonction principale : Coordonne l'ensemble du processus d'exploitation, y compris plusieurs tentatives avec différentes bases glibc.
def main():
# ...
CVE-2024-6387 représente une vulnérabilité sévère dans OpenSSH permettant l'exécution de code à distance. Le script Python fourni exploite cette vulnérabilité en manipulant le tas et en synchronisant l'envoi des paquets pour provoquer une corruption mémoire, exécutant finalement le shellcode de l'attaquant sur le serveur. Le script démontre des techniques classiques de développement d'exploit, notamment le heap spraying, la corruption mémoire et le timing précis pour les conditions de concurrence.