- Vous êtes cool les gars! Donc, personne ne nous a encore laissé tomber!
- Nous avons essayé.Oui, la vie des chasseurs de vulnérabilité est remplie de compliments spécifiques de la part des clients et de situations non moins spécifiques. Au cours de la dernière année, nous avons effectué plus de cinquante tests de pénétration dans différentes entreprises et, il faut le dire, nous avons tout vu. Un seul mot de passe pour tous les comptes et systèmes, le stockage ouvert des mots de passe dans la base de données, les restes de la fonctionnalité de débogage dans un environnement de combat ... Par conséquent, lorsque nos collègues de JSOC CERT ont
raconté plusieurs histoires sur les enquêtes sur les incidents cybernétiques, nous, du département Pentest, avons décidé de suivre et de montrer l'autre côté de la «barricade» »: L'infrastructure du client vue par un pirate informatique. Aujourd'hui, nous allons vous parler des pentests externes les plus intéressants de ces derniers temps, lorsque nous avons dû pénétrer le périmètre interne du client, ne disposant que d'une liste de ses adresses IP externes et noms de domaine.
Odyn
Lundi:
- Les gars, commencez plus vite avec un pentest - vous n'avez que 3 semaines pour nous pirater. Mais gardez à l'esprit que vos chances sont minimes: ils nous vérifient chaque année et ne trouvent aucun indice.
Après 4 heures:
"Nous sommes déjà à l'intérieur."
- Allez? Ça ne peut pas être comme ça! Maintenant, vérifions les journaux ...
Vendredi:
- Merde, vraiment. Comment ça?! Mais comme le temps n'a pas fonctionné, peut-être chercherez-vous autre chose?
- Oui, pas question.
Et nous avons commencé à chercher. En parcourant le périmètre de l'organisation, nous sommes tombés sur un hôte sur lequel 4 applications Web tournaient, un serveur FTP et le panneau d'administration phpMyAdmin étaient bloqués. L'analyse des applications web n'y a pas révélé de vulnérabilités critiques (par exemple, injections SQL, XXE, RCE, etc.) qui nous permettraient d'accéder au serveur. À un moment donné, ils sont passés au FTP - et là, c'était déjà plus intéressant: un accès anonyme a été ouvert sur le serveur, mais uniquement pour la lecture.

Pendant plusieurs jours, nous avons examiné le contenu du serveur et trouvé des lignes étranges dans les journaux - quelques mots de passe mal entrés pour l'un des administrateurs de l'application Web.

Sur la base des mauvaises options, nous avons fait une hypothèse sur ce à quoi devrait ressembler le mot de passe, et il est venu. Nous avons décidé de l'essayer pour phpMyAdmin, et - oh, un miracle - il est également apparu. Ensuite, c'était une petite affaire - télécharger le shell, accéder au réseau interne, y prendre pied et se développer déjà à l'intérieur.

C’est ainsi que la paresse ordinaire (et comment expliquer autrement la réticence à saisir différents mots de passe pour chaque panneau d’administration?) Ouvre la voie aux pirates vers le réseau interne de l’organisation.
Pourquoi déboguer dans un environnement de combat?
La plupart de nos percées se produisent grâce aux applications Web, et nous rencontrons souvent de curieux «restes» de temps de développement et de test. Souvent, nous trouvons des journaux, quelques morceaux de modes de débogage, mais pas toujours avec leur aide, nous avons réussi à effectuer RCE (exécution de code à distance).
Lors de l'un de nos clients, nous avons découvert un système CRM, sur lequel nous avons décidé de passer un peu plus de temps (et, je dois dire, plus tard, il a payé). En effectuant l'analyse de la demande, nous avons trouvé les restes des tests, qui, apparemment, ont été utilisés au stade du développement. L'authentification s'est produite en eux de manière très miraculeuse: seuls le nom d'utilisateur et le fait de passer un paramètre contenant un mot de passe ont été vérifiés. Cinq minutes de recherche et de lecture de la documentation standard - et nous avons entre nos mains le nom du compte superutilisateur intégré. Remplir la coque était déjà une question de technologie.

Un autre exemple. Au début du projet, nous avons lancé une bruteforce récursive de sous-domaines et l'avons laissé. Après un certain temps, à notre grande surprise, un sous-domaine de cinquième niveau appelé test.debug.application.client.ru est apparu, sur lequel nous avons trouvé une application Web avec Adminer installée. Il s'agit d'une application d'administration de base de données légère, dans les anciennes versions dont, si elle n'est pas configurée correctement, vous pouvez interagir avec une base de données SQLite sans mot de passe.
Le fait qu'il n'y avait pas de données dans cette base de données n'était pas important - après tout, dans SQLite, vous pouvez créer une base de données sur un chemin arbitraire avec un simple shell Web à l'intérieur, ce qui permet de gérer facilement le serveur et d'exécuter des commandes à partir d'une page Web.
Il ne restait plus qu'à trouver l'adresse complète de l'application Web sur le serveur. Ici, nous avons été aidés par tous les «bien-aimés» CMS 1C-Bitrix, qui, dans un message d'erreur, ont volontiers partagé avec nous où il se trouve. Il ne restait alors plus qu'à remplir la coque et à terminer le projet.

Le travail avec SQLite DB peut être consulté
ici .
Journaux trouvés? Mots de passe en cadeau!
Un client nous a demandé de réaliser un pentest d'une application web. Au cours des trois dernières années, il a organisé des pentests avec une autre équipe et a probablement réussi à colmater certains trous sur le périmètre, nous ne nous attendions donc pas à un succès rapide.
Pendant l'exploration de l'application Web, nous avons trouvé une page sur laquelle l'autorisation utilisateur était enregistrée. L'heure et la connexion de l'utilisateur qui s'est connecté à l'application ont été affichées dans le journal. Nous avons écrit un script qui, une fois quelques minutes, a interrogé cette page, analysé la réponse et noté les connexions trouvées dans un fichier. Après quelques jours, nous avons réussi à collecter une centaine de connexions. Nous avons décidé de commencer la sélection des mots de passe - pour 5 connexions, ils ont été trouvés dans la liste des
pires 500 mots de passe .
Après avoir accédé à l'application, nous avons continué à l'analyser et trouvé un autre fichier intéressant - toutes les requêtes de base de données en temps réel y étaient affichées. Avec un outil de débogage aussi pratique, la recherche de vulnérabilités et l'exploitation de l'
injection SQL basée sur le temps booléen est devenue une tâche triviale.
Malgré le fait que ce soit déjà 2019, les gens croient toujours que le stockage des mots de passe dans une base de données sous une forme ouverte est une bonne idée. Nous l'utilisons et trouvons l'injection SQL et obtenons un compte administrateur avec lequel remplir le web-shell et l'accès ouvert au réseau interne de l'organisation n'était pas un gros problème.
Marques de recadrage
Tout d'abord, effectuez des tests de pénétration périodiques - ils vous aideront à trouver les zones minces que vous pourriez avoir manquées au stade du développement ou lors du passage des environnements de test aux environnements de combat.
Deuxièmement, tenez toujours compte du facteur humain: les gens sont tout simplement trop paresseux pour changer de mot de passe, et ils peuvent même utiliser un seul mot de passe sur plusieurs sites. Oui, les administrateurs pèchent aussi cela.
Troisièmement, supprimez les modes de débogage dans les environnements de combat.
PS
En général, la vie quotidienne du département Pentest est pleine de toutes sortes de «divertissements» et, bien sûr, les tests externes ne sont pas les seuls. Le client peut souhaiter vérifier les vulnérabilités du périmètre interne (pentest interne), ou analyser la sécurité des applications Web et mobiles, ainsi que des réseaux WiFi, ou prendre des dispositions pour que les employés vérifient en utilisant des méthodes d'ingénierie sociale.
Dans notre temps libre des projets, nous
comprenons le zen, recherchons de nouvelles vulnérabilités, améliorons nos outils et techniques. Et nous sommes engagés dans un bugbounty (où sans lui).
Vous découvrirez la diversité de nos «aventures» dans les articles suivants.