Deux en un: les données touristiques et les billets pour les événements culturels étaient accessibles au public

Aujourd'hui, nous allons examiner deux cas à la fois - les données des clients et partenaires de deux sociétés complètement différentes se sont avérées être en accès libre "grâce" aux serveurs ouverts Elasticsearch avec les journaux des systèmes d'information (SI) de ces sociétés.



Dans le premier cas, ce sont des dizaines de milliers (voire des centaines de milliers) de billets pour divers événements culturels (théâtres, clubs, promenades fluviales, etc.) vendus via le système Radario ( www.radario.ru ).


Dans le second cas, il s'agit des données sur les voyages touristiques de milliers (peut-être plusieurs dizaines de milliers) de voyageurs qui ont acheté des circuits via des agences de voyages connectées au système Sletat.ru ( www.sletat.ru ).


Je constate tout de suite que non seulement les noms des entreprises qui ont autorisé la mise à disposition des données diffèrent, mais aussi l'approche de ces entreprises pour la reconnaissance de l'incident et la réaction qui en a découlé. Mais tout d'abord ...


: . . , .


Premier cas. Radario


Dans la soirée du 05/06/2019, notre système a trouvé le serveur Elasticsearch , détenu par le service de vente de billets électroniques Radario , en libre accès .


Selon la triste tradition déjà établie, le serveur contenait des journaux détaillés du système d’information du service, à partir desquels il était possible d’obtenir des données personnelles, des identifiants de connexion et des mots de passe, ainsi que des billets directement électroniques pour divers événements à travers le pays.



Le volume total de journaux dépassait 1 To.


Selon le moteur de recherche Shodan, le serveur est dans le domaine public depuis le 03/11/2019. J'ai informé les employés de Radario le 05/06/2019 à 22:50 (heure de Moscou) et le 05/07/2019 vers 09:30 le serveur est devenu indisponible.


Les journaux contenaient un jeton d'autorisation universel (unique) donnant accès à tous les billets achetés via des liens spéciaux, sous la forme:


 http://radario.ru/internal/tickets/XXXXXXXX/print?access_token=******JuYWw6MDIzOWRjOTM1NzJiNDZjMTlhZGFjZmRhZTQ3ZDgyYTk http://radario.ru/internal/orders/YYYYYYY/print?access_token=******JuYWw6MDIzOWRjOTM1NzJiNDZjMTlhZGFjZmRhZTQ3ZDgyYTk 

Le problème résidait également dans le fait que le comptage des tickets était utilisé à travers la numérotation des commandes et en triant simplement le numéro de ticket ( XXXXXXXX ) ou la commande ( YYYYYYY ), il était possible d'obtenir tous les tickets du système.


Pour vérifier la pertinence de la base de données, je me suis même honnêtement acheté le billet le moins cher:




et l'a découvert plus tard sur un serveur public dans les journaux IP:


 http://radario.ru/internal/tickets/11819272/print?access_token==******JuYWw6MDIzOWRjOTM1NzJiNDZjMTlhZGFjZmRhZTQ3ZDgyYTk 

Je voudrais également souligner que des billets étaient disponibles à la fois pour des événements passés et pour ceux qui sont encore en cours de planification. Autrement dit, un attaquant potentiel pourrait utiliser le ticket de quelqu'un d'autre pour se rendre à l'événement prévu.


En moyenne, dans chaque index Elasticsearch contenant des journaux pour une journée spécifique (du 24 janvier 2019 au 7 mai 2019), il y avait de 25 à 35 mille billets.


En plus des billets eux-mêmes, l'index contenait également des identifiants (adresses e-mail) et des mots de passe textuels pour accéder aux comptes personnels des partenaires Radario vendant des billets pour leurs événements via ce service:


 Content: \"ReturnUrl=&UserEmail=***@yandex.ru&UserPassword=***\" 

Au total, plus de 500 paires login / mot de passe ont été trouvées. Dans les comptes personnels des partenaires, vous pouvez voir des statistiques sur la vente de billets:



En outre, dans le domaine public, il y avait des noms complets, des numéros de téléphone et des adresses e-mail d'acheteurs qui ont décidé de retourner les billets précédemment achetés:


 "Content": "{\"name\":\"***\",\"surname\":\"*** \",\"middleName\":\" \",\"passportType\":1,\"passportNumber\":\"\",\"passportIssueDate\":\"11-11-2011 11:11:11\",\"passportIssuedBy\":\"\",\"email\":\"***@mail.ru\",\"phone\":\"+799*******\",\"ticketNumbers\":[\"****24848\",\"****948732\"],\"refundReason\":4,\"comment\":\"\"}" 

En un jour choisi au hasard, plus de 500 enregistrements de ce type ont été découverts.


J'ai reçu une réponse à l'alerte du directeur technique de Radario:


Je suis CTO Radario et je vous remercie d'avoir repéré le problème. L'accès à l'élastique, comme vous le savez, nous avons fermé et résolvons le problème de la réémission des billets pour les clients.

Un peu plus tard, la société a fait une déclaration officielle:


Une vulnérabilité a été découverte dans le système de billetterie électronique Radario qui a provoqué une fuite des données du service client en temps opportun, a déclaré Kirill Malyshev, directeur marketing de la société, à l'agence de presse de Moscou.

«Nous avons vraiment découvert une vulnérabilité dans le fonctionnement du système associée à des mises à jour régulières, qui a été corrigée immédiatement après la détection. En raison de la vulnérabilité, dans certaines conditions, des actions hostiles de tiers peuvent entraîner des fuites de données, mais aucun incident n'a été enregistré. Pour le moment, tous les dysfonctionnements ont été éliminés », a déclaré K. Malyshev.

Le représentant de la société a souligné qu'il avait été décidé de réémettre tous les billets vendus lors de la résolution du problème afin d'éliminer complètement la possibilité de fraude à l'égard des clients du service.

Quelques jours plus tard, j'ai vérifié la disponibilité des données sur les liens divulgués - l'accès aux tickets "surlignés" était vraiment couvert. À mon avis, il s'agit d'une approche compétente et professionnelle pour résoudre le problème de la fuite de données.


Deuxième cas. "Fly.ru"


Tôt le matin du 15/05/2019, DeviceLock Data Breach Intelligence a révélé un serveur Elasticsearch public avec des journaux d'une certaine IP.



Plus tard, il a été établi que le serveur appartient au service de sélection de circuits "Fly.ru".


À partir de l'index cbto__0, il a été possible d'obtenir des milliers (11,7 milliers, y compris les doublons) d'adresses e-mail, ainsi que des informations de paiement (coût des visites) et des informations de voyage (quand, où, billets d'avion pour tous les voyageurs inclus dans la visite, etc. ) pour un montant d'environ 1,8 mille enregistrements:


 "full_message": "     : {\"SuccessReturnUrl\":\"https://sletat.ru/tour/7-1939548394-65996246/buy/?ClaimId=b5e3bf98-2855-400d-a93a-17c54a970155\",\"ErrorReturnUrl\":\"https://sletat.ru/\",\"PaymentAgentId\":15,\"DocumentNumber\":96629429,\"DocumentDisplayNumber\":\"4451-17993\",\"Amount\":36307.0,\"PaymentToolType\":3,\"ExpiryDateUtc\":\"2020-04-03T00:33:55.217358+03:00\",\"LifecycleType\":2,\"CustomerEmail\":\"XXX@mail.ru\",\"Description\":\"\",\"SettingsId\":\"8759d0dd-da54-45dd-9661-4e852b0a1d89\",\"AdditionalInfo\":\"{\\\"TourOfficeAdditionalInfo\\\":{\\\"IsAdditionalPayment\\\":false},\\\"BarrelAdditionalInfo\\\":{\\\"Tickets\\\":[{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX VIKTORIIA\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false},{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX ANDREI\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false},{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX Andrei\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false}],\\\"Segments\\\":[{\\\"Flight\\\":\\\"5659\\\",\\\"AviaCompany\\\":null,\\\"AviaCompanyIataCode\\\":null,\\\"DepartureCity\\\":\\\"LED\\\",\\\"DepartureAirport\\\":\\\"LED\\\",\\\"DepartureAirportIataCode\\\":\\\"LED\\\",\\\"DepartureDate\\\":\\\"2019-04-11T02:45:00\\\",\\\"DepartureTime\\\":null,\\\"ArrivalCity\\\":\\\"SHJ\\\",\\\"ArrivalAirport\\\":\\\"SHJ\\\",\\\"ArrivalAirportIataCode\\\":\\\"SHJ\\\",\\\"ArrivalDate\\\":\\\"2019-04-11T09:40:00\\\",\\\"ArrivalTime\\\":null,\\\"FareCode\\\":null},{\\\"Flight\\\":\\\"5660\\\",\\\"AviaCompany\\\":null,\\\"AviaCompanyIataCode\\\":null,\\\"DepartureCity\\\":\\\"SHJ\\\",\\\"DepartureAirport\\\":\\\"SHJ\\\",\\\"DepartureAirportIataCode\\\":\\\"SHJ\\\",\\\"DepartureDate\\\":\\\"2019-04-14T10:45:00\\\",\\\"DepartureTime\\\":null,\\\"ArrivalCity\\\":\\\"LED\\\",\\\"ArrivalAirport\\\":\\\"LED\\\",\\\"ArrivalAirportIataCode\\\":\\\"LED\\\",\\\"ArrivalDate\\\":\\\"2019-04-14T15:50:00\\\",\\\"ArrivalTime\\\":null,\\\"FareCode\\\":null}]},\\\"Tickets\\\":[{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX VIKTORIIA\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false},{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX ANDREI\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false},{\\\"Passenger\\\":{\\\"FIO\\\":\\\"XXX Andrei\\\"},\\\"ReservationSystem\\\":null,\\\"TicketNumber\\\":null,\\\"IsRefundPossible\\\":false}],\\\"Segments\\\":[{\\\"Flight\\\":\\\"5659\\\",\\\"AviaCompany\\\":null,\\\"AviaCompanyIataCode\\\":null,\\\"DepartureCity\\\":\\\"LED\\\",\\\"DepartureAirport\\\":\\\"LED\\\",\\\"DepartureAirportIataCode\\\":\\\"LED\\\",\\\"DepartureDate\\\":\\\"2019-04-11T02:45:00\\\",\\\"DepartureTime\\\":null,\\\"ArrivalCity\\\":\\\"SHJ\\\",\\\"ArrivalAirport\\\":\\\"SHJ\\\",\\\"ArrivalAirportIataCode\\\":\\\"SHJ\\\",\\\"ArrivalDate\\\":\\\"2019-04-11T09:40:00\\\",\\\"ArrivalTime\\\":null,\\\"FareCode\\\":null},{\\\"Flight\\\":\\\"5660\\\",\\\"AviaCompany\\\":null,\\\"AviaCompanyIataCode\\\":null,\\\"DepartureCity\\\":\\\"SHJ\\\",\\\"DepartureAirport\\\":\\\"SHJ\\\",\\\"DepartureAirportIataCode\\\":\\\"SHJ\\\",\\\"DepartureDate\\\":\\\"2019-04-14T10:45:00\\\",\\\"DepartureTime\\\":null,\\\"ArrivalCity\\\":\\\"LED\\\",\\\"ArrivalAirport\\\":\\\"LED\\\",\\\"ArrivalAirportIataCode\\\":\\\"LED\\\",\\\"ArrivalDate\\\":\\\"2019-04-14T15:50:00\\\",\\\"ArrivalTime\\\":null,\\\"FareCode\\\":null}]}\",\"FinancialSystemId\":9,\"Key\":\"18fe21d1-8c9c-43f3-b11d-6bf884ba6ee0\"}" 

Soit dit en passant, les liens vers des visites payantes fonctionnent plutôt bien:



Dans les index avec le nom graylog_ en texte clair se trouvaient les identifiants et les mots de passe des agences de voyages connectés au système Sletat.ru et vendant des circuits à leurs clients:


 "full_message": "Tours by request 155213901 added to local cache with key 'user_cache_155213901' at 5/6/2019 4:49:07 PM, rows found 0, sortedPriceLength 215. QueryString: countryId=90&cityFromId=1265&s_nightsMin=6&s_nightsMax=14&stars=403%2c404&minHotelRating=1&currencyAlias=RUB&pageSize=300&pageNumber=1&s_showcase=true&includeOilTaxesAndVisa=0&login=zakaz%40XXX.ru&password=XXX, Referer: , UserAgent: , IP: 94.154.XX.XX." 

Selon mes estimations, plusieurs centaines de paires login / mot de passe ont été allumées.


À partir du compte personnel de l'agence de voyages sur le portail agent.sletat.ru, il a été possible d'obtenir les données des clients, notamment les numéros de passeport, les numéros de passeport, les dates de naissance, le nom, le téléphone et l'adresse e-mail.



J'ai informé le service Sletat.ru le 15/05/2019 à 10h46 (heure de Moscou) et après quelques heures (jusqu'à 16h00), le serveur Elasticsearch a disparu de l'accès gratuit. Plus tard, en réponse à une publication dans Kommersant, la direction du service a fait une déclaration très étrange à travers les médias:


Le chef de l'entreprise, Andrei Vershinin, a expliqué que Sletat.ru fournit à un certain nombre des plus grands voyagistes-partenaires un accès à l'historique des requêtes dans le système de recherche. Et il a suggéré que DeviceLock l'avait reçu: "Cependant, dans la base de données spécifiée, il n'y a pas de données de passeport de touristes, de connexions et de mots de passe d'agences de voyage, de données de paiement, etc." Andrei Vershinin a noté que "Sletat.ru" n'a pas encore reçu de preuve d'allégations aussi graves. «Maintenant, nous essayons de contacter DeviceLock. Nous pensons qu'il s'agit d'un ordre. Certaines personnes n'aiment pas notre croissance rapide », a-t-il ajouté. "

Comme indiqué ci-dessus, les données de connexion, de mot de passe et de passeport des touristes sont dans le domaine public depuis assez longtemps (au moins à partir du 29/03/2019, lorsque le serveur de l'entreprise a été rendu public pour la première fois par le moteur de recherche Shodan). Bien sûr, personne ne nous a contactés. J'espère qu'au moins les agences de voyages ont signalé la fuite et les ont forcées à changer de mot de passe.


Des nouvelles sur les fuites d'informations et les initiés peuvent toujours être trouvées sur ma chaîne Telegram « Fuites d'informations ».

Source: https://habr.com/ru/post/fr452698/


All Articles