Екі бірде: туристік деректер мен мәдени іс-шараларға билеттер жалпыға қолжетімді болды

Бүгін біз бірден екі жағдайды қарастырамыз - екі мүлдем басқа компанияның клиенттері мен серіктестерінің деректері осы компаниялардың ақпараттық жүйелерінің (АЖ) журналдары бар ашық Elasticsearch серверлерінің «арқасында» еркін қол жетімді болды.

Екі бірде: туристік деректер мен мәдени іс-шараларға билеттер жалпыға қолжетімді болды

Бірінші жағдайда, бұл Radario жүйесі (www.radario.ru).

Екінші жағдайда, бұл Sletat.ru жүйесіне қосылған туристік агенттіктер арқылы турларды сатып алған мыңдаған (мүмкін бірнеше ондаған мың) саяхатшылардың туристік сапарлары туралы деректер (www.sletat.ru).

Деректердің жалпыға қолжетімді болуына мүмкіндік берген компаниялардың атаулары ғана емес, сонымен бірге бұл компаниялардың оқиғаны тануға деген көзқарасы және оған кейінгі реакциясы да әртүрлі екенін бірден атап өткім келеді. Бірақ ең бірінші нәрсе…

Дисклеймер: вся информация ниже публикуется исключительно в образовательных целях. Автор не получал доступа к персональным данным третьих лиц и компаний. Информация взята либо из открытых источников, либо была предоставлена автору анонимными доброжелателями.

Бірінші жағдай. «Радарио»

06.05.2019 күні кешке біздің жүйе Elasticsearch сервері тегін қолжетімді екенін анықтады, Radario электронды билет сату қызметіне тиесілі.

Бұрыннан қалыптасқан қайғылы дәстүрге сәйкес, серверде қызметтің ақпараттық жүйесінің егжей-тегжейлі журналдары болды, олардан жеке деректерді, пайдаланушы логиндері мен парольдерін, сондай-ақ бүкіл ел бойынша әртүрлі іс-шараларға электронды билеттерді алуға болады.

Екі бірде: туристік деректер мен мәдени іс-шараларға билеттер жалпыға қолжетімді болды

Журналдардың жалпы көлемі 1 ТБ-тан асты.

Shodan іздеу жүйесіне сәйкес, сервер 11.03.2019 жылдың 06.05.2019 наурызынан бастап жалпыға қолжетімді болды. Мен Radario қызметкерлеріне 22 жылы сағат 50:07.05.2019-де (MSK) және 09/30/XNUMX күні сағат XNUMX:XNUMX-да сервер қолжетімсіз болып қалғанын хабарладым.

Журналдарда арнайы сілтемелер арқылы барлық сатып алынған билеттерге қол жеткізуді қамтамасыз ететін әмбебап (бір) авторизация белгісі бар, мысалы:

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

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

Мәселе сонымен қатар билеттерді есепке алу үшін тапсырыстардың үздіксіз нөмірленуі және билет нөмірін қарапайым санау (ХХХХХХХ) немесе тапсырыс (ЖЖЖЖЖЖ), жүйеден барлық билеттерді алуға мүмкіндік болды.

Дерекқордың өзектілігін тексеру үшін мен тіпті ең арзан билетті сатып алдым:

Екі бірде: туристік деректер мен мәдени іс-шараларға билеттер жалпыға қолжетімді болды
Екі бірде: туристік деректер мен мәдени іс-шараларға билеттер жалпыға қолжетімді болды

және кейінірек оны АЖ журналдарында жалпыға ортақ серверде тапты:

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

Билеттердің өткен оқиғаларға да, әлі жоспарланып жатқан оқиғаларға да қолжетімді болғанын бөлек атап өткім келеді. Яғни, ықтимал шабуылдаушы жоспарланған оқиғаға кіру үшін басқа біреудің билетін пайдалана алады.

Орташа алғанда, белгілі бір күндегі журналдарды қамтитын әрбір Elasticsearch индексінде (24.01.2019 бастап 07.05.2019 дейін) 25-тен 35 мыңға дейін билет болды.

Билеттердің өзінен басқа, индексте осы қызмет арқылы өз іс-шараларына билеттерді сататын Radario серіктестерінің жеке шоттарына кіруге арналған логиндер (электрондық пошта мекенжайлары) және мәтіндік құпия сөздер бар:

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

Барлығы 500-ден астам логин/пароль жұбы анықталды. Билеттерді сату статистикасы серіктестердің жеке шоттарында көрінеді:

Екі бірде: туристік деректер мен мәдени іс-шараларға билеттер жалпыға қолжетімді болды

Сондай-ақ бұрын сатып алынған билеттерді қайтаруды шешкен сатып алушылардың аты-жөні, телефон нөмірлері және электрондық пошта мекенжайлары жалпыға қолжетімді болды:

"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":""}"

Кездейсоқ таңдалған бір күнде осындай 500-ден астам жазба табылды.

Мен Radario техникалық директорының ескертуіне жауап алдым:

Мен Radario техникалық директорымын және мәселені анықтағаныңыз үшін алғыс айтқым келеді. Өздеріңіз білетіндей, бізде эластикке қолжетімділік жабылды және клиенттерге билеттерді қайта шығару мәселесі шешіліп жатыр.

Біраз уақыттан кейін компания ресми мәлімдеме жасады:

Radario электронды билеттерді сату жүйесінде осалдық анықталып, жедел түрде түзетілді, бұл қызмет клиенттерінен деректердің ағып кетуіне әкелуі мүмкін, деп хабарлады Мәскеу қалалық жаңалықтар агенттігіне компанияның маркетинг жөніндегі директоры Кирилл Малышев.

«Біз жүйелі жаңартулармен байланысты жүйе жұмысында осалдықты анықтадық, ол табылғаннан кейін бірден түзетілді. Осалдықтың нәтижесінде белгілі бір жағдайларда үшінші тараптардың жағымсыз әрекеттері деректердің ағып кетуіне әкелуі мүмкін, бірақ ешқандай оқиғалар тіркелмеді. Қазіргі уақытта барлық олқылықтар жойылды», - деді Қ.Малышев.

Компания өкілі сервистік клиенттерге қатысты кез келген алаяқтық мүмкіндігін толығымен жою үшін мәселені шешу барысында сатылған барлық билеттерді қайта шығару туралы шешім қабылданғанын атап өтті.

Бірнеше күннен кейін мен ағып кеткен сілтемелер арқылы деректердің бар-жоғын тексердім - «ашық» билеттерге қол жеткізу шынымен жабылды. Менің ойымша, бұл деректердің ағып кету мәселесін шешудің сауатты, кәсіби тәсілі.

Екінші жағдай. «Fly.ru»

Таңертең ерте 15.05.2019 DeviceLock деректерін бұзу барлауы белгілі АЖ журналдары бар жалпыға қолжетімді Elasticsearch серверін анықтады.

Екі бірде: туристік деректер мен мәдени іс-шараларға билеттер жалпыға қолжетімді болды

Кейінірек сервер «Sletat.ru» тур таңдау қызметіне тиесілі екені анықталды.

Көрсеткіштен cbto__0 мыңдаған (қайталамаларын қосқанда 11,7 мың) электрондық пошта мекенжайларын, сондай-ақ кейбір төлем туралы ақпаратты (турдың құны) және тур туралы мәліметтерді (қашан, қайда, әуе билеті туралы мәліметтер) алуға мүмкіндік болды. всех турға енгізілген саяхатшылар және т.б.) шамамен 1,8 мың жазба сомасында:

"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":"[email protected]","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"}"

Айтпақшы, ақылы турларға сілтемелер өте жақсы жұмыс істейді:

Екі бірде: туристік деректер мен мәдени іс-шараларға билеттер жалпыға қолжетімді болды

Аты бар индекстерде graylog_ анық мәтінде Sletat.ru жүйесіне қосылған және өз клиенттеріне турларды сататын туристік агенттіктердің логиндері мен парольдері болды:

"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."

Менің бағалауым бойынша, бірнеше жүздеген логин/пароль жұбы көрсетілді.

Порталдағы туристік агенттіктің жеке кабинетінен agent.sletat.ru төлқұжат нөмірлерін, халықаралық төлқұжаттарды, туған күндерін, толық аты-жөндерін, телефон нөмірлерін және электрондық пошта мекенжайларын қоса, тұтынушы деректерін алуға мүмкіндік болды.

Екі бірде: туристік деректер мен мәдени іс-шараларға билеттер жалпыға қолжетімді болды

Мен Sletat.ru қызметіне 15.05.2019 жылы сағат 10:46-да (Мәскеу уақытымен) хабардар еттім, ал бірнеше сағаттан кейін (16:00-ге дейін) ол олардың еркін қолжетімділігінен жоғалып кетті. Кейінірек, Коммерсанттағы жарияланымға жауап ретінде қызмет басшылығы БАҚ арқылы өте оғаш мәлімдеме жасады:

Компания басшысы Андрей Вершинин Sletat.ru бірқатар ірі серіктес туроператорларға іздеу жүйесіндегі сұраулар тарихына қол жеткізуге мүмкіндік беретінін түсіндірді. Және ол DeviceLock оны алды деп есептеді: «Алайда көрсетілген дерекқорда туристердің төлқұжат деректері, туристік агенттіктердің логиндері мен құпия сөздері, төлем туралы ақпарат және т.б. жоқ». Андрей Вершинин Sletat.ru сайтына әзірге мұндай ауыр айыптау туралы ешқандай дәлел келмегенін атап өтті. «Біз қазір DeviceLock-ке хабарласуға тырысамыз. Бұл тапсырыс деп есептейміз. Кейбір адамдар біздің жылдам өсуімізді ұнатпайды », - деп қосты ол. "

Жоғарыда көрсетілгендей, туристердің логиндері, құпия сөздері және төлқұжат деректері ұзақ уақыт бойы қоғамдық доменде болды (кем дегенде 29.03.2019 жылдың XNUMX наурызынан бастап, компанияның сервері Shodan іздеу жүйесі алғаш рет қоғамдық доменде жазылған кезден бастап). Әрине, бізге ешкім хабарласпады. Кем дегенде, олар ақпараттың ағып кетуі туралы туристік агенттіктерді хабардар етіп, парольдерін өзгертуге мәжбүр етті деп үміттенемін.

Ақпараттың ағып кетуі және инсайдерлер туралы жаңалықтарды әрқашан менің Telegram каналымнан табуға болады »Ақпараттың ағып кетуі«.

Ақпарат көзі: www.habr.com

пікір қалдыру