Joomla! Admin user creation (3.4.4 → 3.6.3)

On October 25th, Joomla! was updated to version 3.6.4 to address two vulnerabilities :

CVE-2016-8869 concerning registration with elevated privileges.
CVE-2016-8870 concerning account creation while registration is disabled.

In this post, we wanted to quickly discuss the vulnerability and its impact on vulnerable installations.

Upon patch-diffing the two versions, we noticed that an entire method had been removed from the components/com_users/controllers/user.php file : the register method from the UsersControllerUser class.

patchdiff

Normally, the register method used by Joomla! is the one from the UsersControllerRegistration class, in components/com_users/controllers/registration.php.

The deleted one is most likely a leftover from old patches, and doesn’t enforce a check on whether or not user registration is enabled (as opposed to the UsersControllerRegistration.register method).

Moreover, the $data array is supposed to be sanitized in the first line below, but the unsanitized value is then used in the register function at the end of this snippet, allowing us to submit custom data such as group and uid values.

novalidation

We can call this method by posting our registration values on the index.php?option=com_users&task=User.register URL.

POST /index.php?option=com_users&task=User.register HTTP/1.1
 Host: localhost
 Connection: keep-alive
 Accept-Encoding: gzip, deflate
 Accept: */*
 User-Agent: python-requests/2.11.1
 Cookie: 96b8cb33d84fb0aa459957bcad81cf90=go86e62fsve2a3jaqdmk6h6oq4
 Content-Length: 284
 Content-Type: application/x-www-form-urlencoded

user[password1]=exploit&user[username]=exploit&user[email2]=exploit@exploit.exp&user[password2]=exploit&user[name]=exploit&user[email1]=exploit@exploit.exp&user[groups][]=7&7c48521fa302676bada83d0e344011f2=1

The newly created user is then found on the server  :

accindb

For a valid request, we need to retrieve a CSRF Token and post it with a value = 1.

We are able to specify a custom user[id] value. If that id pre-exists in the database, the corresponding user will be overwritten during the registration.

Additionally, we can get high privileges by posting an array of user[groups][] values that will be assigned to the account. The default group id for Administrators is 7.

However, the only way to get the SuperAdmin group (8 by default) is to overwrite a pre-existing SuperAdmin user by specifying his user id.

Note that if user registration is disabled, the new/overwritten user will be blocked from logging in resulting in a denial of service for the SuperAdmin account.

In order to find and compromise a SuperAdmin account, it is possible to bruteforce all user ids and try to create a user with all possible groups. This will ensure that only the existing SuperAdmin accounts are overwritten (only the SuperAdmin ids can be overwritten to have SuperAdmin rights).

To create an admin account when the Administrator group id isn’t 7, it is possible to assign all the group ids from 1-99 (but leave the SuperAdmin group id out).

Download the PoC

CybSec16

La Cybsec16 est maintenant terminée et toute l’équipe SCRT présente a de nouveau passé un bon moment en compagnie de différents acteurs du monde de la sécurité en suisse romande (et un peu au delà). Une excellente organisation, des conférences intéressantes et diversifiées ainsi que les divers events “networking” ont largement contribué au succès de l’événement.

Comme plusieurs personnes sont venues me demander les slides de ma présentation, les voici:

https://download.scrt.ch/cybsec16/chlam2308161-1_cybsec_swisscom.pdf

En extra, les slides de ma rump session préparée à la dernière seconde:

https://download.scrt.ch/cybsec16/chlam0311161-1_cybsec_rump.pdf

Merci aux organisateurs et à l’année prochaine!

SCRT infrastructure division – New partnership announcement

SCRT has launched a partnership with Skybox Security to help its clients to strenghlen their risk identification and measurement capabilities.

Information systems are constantly getting complexer and are very dynamic. Skybox provides a powerful set of integrated security solutions that give unprecedented visibility of the attack surface and key Indicators of Exposure (IOEs) such as exploitable attack vectors, hot spots of vulnerabilities, network security misconfigurations and non-compliant firewalls. Skybox allows to break down information silos through integration with dozens of security solutions that enterprises are already using. By extracting actionable intelligence from data using modeling and simulation, Skybox gives security leaders the insight they need to quickly make decisions about how to best address threat exposures that put their organization at risk, therefore increasing operational efficiency.

More information on Skybox Security at http://www.skyboxsecurity.com

GS Days 2015

La 7ème édition des “GS Days, Les Journées Francophones de la Sécurité de l’Information” s’est tenue ce mardi 24 mars 2015 à l’Espace St-Martin à Paris.

Cet événement a pour objectif d’informer et de démontrer à la communauté SSI : la réalité des menaces actuelles, leur simplicité de mise en œuvre et leurs impacts sur la SI au travers de sessions portant sur des sujets techniques, juridiques ou organisationnelles.

Faute de temps, la seule et unique session à laquelle j’ai pu personnellement assister est celle d’Emmanuel MACÉ, Security Specialist chez Akamaï, qui nous démontrait comment le Big Data s’applique au domaine de la sécurité.

Il est à relever que l’utilisation du Big Data par un CDN est une excellente initiative, car il dispose naturellement d’une masse de données impressionnantes, qui dans le cas d’Akamaï provient de quelques 200K serveurs. L’interface utilisée pour analyser ces données a été créée sur mesure et a nécessité plus de 2ans de développement avant d’obtenir des résultats fiables. Ceci démontre encore une fois à quel point la Big Data n’est pas forcément un sujet facile.

Un autre aspect également intéressant ayant été évoqué durant la session, est la possibilité de fournir des interfaces pour des SOCs tiers leur permettant d’effectuer des investigations qui leurs sont propres.

gsdays

Les GSdays furent également l’occasion pour moi de présenter un sujet technique portant sur une attaque de type Man-In-The-Middle sur réseau “dual-stack”.

L’attaque dont il est question fait référence à un article publié en 2011 par Alec Waters, chercheur en sécurité chez InfoSec Institute, décrivant comment créer un réseau IPv6 au-dessus d’un réseau IPv4 existant en mettant à profit la dual-stack active par défaut sur les systèmes d’exploitation récents. Cette dernière a été nommée “SLAAC Attack” en référence au processus utilisé pour cette attaque “Stateless Address Auto Configuration”.

En 2013, lors de la DEFCON 21, Scott Behrens et Brent Bandelgar de Neohapsis présentèrent “SuddenSix” un script Bash automatisant l’installation et la configuration des outils nécessaires.

Essayant de pousser la réflexion un peu plus loin, j’ai développé un script Python “pyMITM6” qui permet l’implémentation de l’attaque susmentionnée en s’affranchissant de la nécessité de multiples de logiciels et qui a été mis à disposition sur Github à la suite de cette session.

En conclusion, malgré mon passage relativement cours au GSDays, cet évènement reste un des grands rendez-vous de la sécurité informatique sur Paris offrant un contenu diversifié et bénéficiant non seulement d’un cadre, mais également d’une organisation exceptionnelle. Encore Merci.

Defcon 2014

Ah, Las Vegas…

Comme chaque année, une délégation de SCRT s’est rendue dans la capitale du jeu pour participer à la conférence Defcon. Cette année toutefois, sept ingénieurs ont pris part à cette expédition :

  • Une personne pour assister aux conférences
  • Une personne pour participer en tant que conférencier (et au CTF)
  • Le reste de l’équipe (6 personnes) pour participer au Capture The Flag

Après un week-end plutôt intense, voici un petit aperçu du CTF tel que nous l’avons vécu.

Capture The Flag

Le challenge Capture The Flag de Defcon est le plus prisé des concours de ce type. Son fonctionnement est un peu différent de concours comme Insomni’hack où il s’agit uniquement de résoudre des énigmes et épreuves techniques. Ici, chaque équipe se voit attribuer un serveur sur lequel plusieurs services sont disponibles. Chaque service renferme un “flag” qui doit être protégé et ce flag change toutes les cinq minutes. Chaque équipe possède les mêmes services et le but du jeu est multiple :

  1. Garder ses services fonctionnels durant tout le jeu, sous peine de perdre des points si le service ne répond plus
  2. Analyser les services afin de trouver les vulnérabilités qu’ils contiennent et :
    1. Corriger ces failles pour que les adversaires volent plus vos flags sinon, perte de points.
    2. Exploiter la vulnérabilité chez les adversaires afin de voler leurs flags, et ainsi gagner des points.

Comme on peut le voir, la tâche n’est pas de tout repos, et l’action est permanente, ne laissant que peu de répit à toute l’équipe.

Qualifications

Nous avons obtenu notre place en finale de justesse après avoir terminé en dix-septième place aux qualifications qui ont eu lieu un peu plus tôt dans l’année. Cette place nous a permis de nous retrouver parmi les vingt équipes qualifiées.

flag

Une fois dans la salle, un bloc de tables était attribué à chaque équipe. Un unique câble permettait de se connecter au réseau du jeu, qui nous a permis de nous connecter à notre serveur. Cette année, le serveur fonctionnait sur une carte ODROID U3 (processeur ARM) avec une distribution Ubuntu. Les organisateurs ont laissé une heure aux équipes pour mettre en place leur stratégie avant d’ouvrir le réseau, et ainsi commencer les hostilités.

Epreuves

En début de jeu, seuls deux services étaient proposés aux équipes, puis les organisateurs ont progressivement ajouté de nouveaux services, augmentant le nombre de paramètres à prendre en compte au cours du jeu.

Une épreuve très originale se présentait sous cette forme :

badge

Ce badge fonctionne avec un FPGA et possède un émetteur/récepteur radio. Il permet d’envoyer et de recevoir des messages aux autres équipes. Le processeur utilisé est un MSP430 modifié et une version du firmware est accessible pour analyse.

Au final, cinq services étaient disponibles. Certains d’entre eux ont été mis à jour plusieurs fois au cours du jeu, mais restaient sensiblement identiques tout en retirant on introduisant de nouvelles vulnérabilités.

La plupart des services étaient des binaires ARM – dynamique et statique – vulnérables à des corruptions mémoire, en particulier buffer overflows et Use-After-Free. Cette année nous retrouvions les services suivants:

  • Un jeu de space trading (binaire x86 lancé par qemu)
  • Un serveur Web
  • Un serveur imap
  • Un protocole binaire inventé par les organisateurs

Attaque

Comme les équipes n’ont pas d’accès root sur les serveurs de jeu, il n’y a pas de possibilité d’analyser le trafic réseau entrant. Les organisateurs ont bien entendu prévu une solution à ce problème et proposaient de télécharger le trafic réseau des cinq dernières minutes de jeu, et ce pour chaque équipe.

Une tactique de jeu que nous avons utilisé consistait à analyser le trafic réseau d’une attaque réussie, de récupérer l’exploit d’une autre équipe et ainsi de gagner du temps sur l’exploitation d’une vulnérabilité.

Toutefois il n’est pas possible de se contenter d’analyser et de rejouer les attaques des autres équipes: plusieurs vulnérabilités ne sont pas immédiatement rejouables et nécessitent une bonne compréhension du binaire affecté et du chemin d’exécution menant à la vulnérabilité. Il est donc nécessaire de consacrer beaucoup de resources sur le reverse-engineering des binaires afin de comprendre leur fonctionnement, trouver des vulnérabilités, les patcher puis les exploiter.

Défense

Le maintien du serveur est également une tâche difficile tant les attaques sont nombreuses et leur suivi difficile. Le maintien des services opérationnels est important puisqu’il influe directement sur le score. Dès lors, de nombreux scripts et outils d’analyse ont été mis en place pour que nous ayons un suivi presque continu sur de nombreux éléments du système, comme par exemple :

  • les fichiers créés par les services
  • les modifications des services en eux-même
  • la limitation du temps d’exécution des services

Au cours du jeu, certaines failles ont permis aux équipes d’obtenir un shell sur les serveurs adverses. Dès lors, une partie du travail du sysadmin consiste a constamment surveiller les processus du serveur et de tuer les processus non désirables en attendant un patch de la vulnérabilité exploitée. Tâche rendue compliquée par la créativité de nos adversaires pour maintenir un accès à notre serveur. A titre d’exemple, nos scripts ont tué environ 1338 processus /bin/sh sur la journée de dimanche…

Conférence – “Playing with car firmware… or how to brick your car”

photo

Cette année (et pour la deuxième année consécutive),  nous avons également eu la chance d’être sélectionnés pour présenter un sujet lors de cette 22ème édition de Defcon.

De nos jours, les voitures ne sont plus purement mécaniques. Les véhicules actuels contiennent tous de nombreux composants électroniques (ECU) reliés entre eux grâce à un réseau (CAN BUS).

Les communications sur le réseau CAN Bus sont d’ailleurs quelque chose de normalisé grâce aux standards ISO-TP ou ISO 15765-2.
Ces différents ECU surveillent et contrôlent en permanence l’état du véhicule.
Plusieurs travaux de recherche ont d’ailleurs été présentés lors de la dernière édition de Defcon, on retiendra entre autres la démonstration assez impressionnante de Charlie Miller & Chris Valasek. Pour rappel, leurs recherches portaient sur les modèles Ford Escape (2010) et Toyota Prius (2010) et ils ont notamment expliqué comment ils avaient réussi à prendre le contrôle de la direction, de l’accélération, du freinage et d’autres fonctions importantes de ces véhicules. Les chercheurs ont même trouvé un moyen de réaliser des attaques persistantes en modifiant le firmware de l’ECU pour envoyer de mauvais signaux, même quand ils n’étaient plus physiquement connectés aux unités de contrôle.

La plupart des recherches faites jusqu’à présent ont principalement porté sur les interactions possibles avec les différents ECU du véhicule au travers du réseau CAN Bus et plus particulièrement au travers de la prise OBD2.

Je n’ai trouvé que peu de publications concernant les systèmes multimédia qui équipent la plupart des véhicules récents. Ces équipements se matérialisent généralement au travers d’un écran permettant de contrôler le GPS et diverses fonctionnalités du véhicule : Bluetooth, lecteur musique/MP3, lecteurs vidéo, carnet d’adresse, GPS.. mais aussi : climatisation, éclairage, verrouillage centralisé, position des sièges pour ne citer que quelques exemples…

Comme on peut s’en rendre compte ces équipements ont une interaction assez importante avec le véhicule et peuvent contrôler bien plus de choses que le simple volume de la musique.
Il semblerait même que certaines options du véhicule (wifi à bord, télévision…) soient présentes « par défaut » sur tous les véhicules équipés du GPS et qu’il s’agisse juste d’une activation électronique.

….c’est donc le fruit de mes recherches sur ce thème que j’ai eu la chance de présenter pour Defcon.

Utilisateurs codés en dur dans le véhicule, mots de passe “par défaut”, SSID, ranges IP internes du constructeur…. il semblerait bien que l’industrie automobile aient encore quelques progrès à faire dans le domaine de la sécurité…

Ce fut un véritable plaisir de présenter ce sujet à un salle enthousiaste … et, il faut l’avouer, assez impressionnante (tant par sa taille, que par les personnes qui étaient présentes)

Les slides de ma conférences seront très prochainement disponibles sur le site de la defcon (en attendant, si vous demandez gentiment, c’est avec plaisir que nous vous les fournirons)

 

Conclusions

Le CTF fut une vraie réussite, tant sur le système de jeu que sur l’organisation et le niveau très élevé de la compétition.

Defcon reste une “immense” conférence avec les avantages et les inconvénients que cela représente…. il faut être motivés pour faire la queue partout (pour obtenir son badge, pour essayer d’accéder aux salles des conférences, pour manger…) mais c’est une occasion unique de croiser et cotoyer de nombreux passionnés et professionnels de la sécurité informatique.

Nicolas,Paul, Adrien, Michael, Alain,Florian,Karim