Получаем список пассажиров рейсов крупнейшего авиаперевозчика Украины

Получаем список пассажиров рейсов крупнейшего авиаперевозчика Украины

Информационная безопасность

#ПолныйПЭ

В данной статье речь пойдёт о том, как я обнаружил уязвимость, которая позволяла получить список пассажиров рейсов Международных Авиалиний Украины — самого крупного авиаперевозчика Украины, а также об отношении самой компании к факту наличия такой информации в публичном доступе.

Больше месяца назад я начал готовиться к отпуску и как раз пришло время бронировать авиабилеты. Так я оказался на сайте авиакомпании МАУ. В процессе выбора мест в самолёте, страница, которая должна была отображать схему мест, никак не хотела загружаться.

Я решил открыть в Google Chrome инструмент разработчика, чтобы попытаться понять, в чём проблема. Изучив запросы к серверу, я увидел, что данные о доступных местах сервером возвращаются.

Опробовав несколько разных браузеров, я так и не решил проблему, однако заметил, что запрос, который возвращает список доступных мест, выполнялся во всех браузерах успешно, не смотря на то, что сессионные куки были доступны только в Google Chrome.

Запрос выглядел следующим образом:

https://bookapi.flyuia.com/ancillary/seatmap?pnr=XXXXXX&currency=USD&flyuiacountrycode=uk&flyuialanguagecode=ru&locale=RU



где XXXXXX — PNR или, так называемый, код бронирования.

Ответ же сервера имел следующий вид во всех браузерах:

[ {
  "paxDetails" : {
    "uniqueId" : "2",
    "firstName" : "IVANOV",
    "title" : "Г-жа (Ms.)",
    "lastName" : "IVAN",
    "paxType" : "Adult",
    "cartPaxId" : "b1da2ebf-4525-35bd-afc1-b1f448132ad3"
  },
  "segmentDetails" : [ {
    "company" : "PS",
    "bookingClass" : "B",
    "flightNumber" : "1234",
    "departureAirport" : "KBP",
    "arrivalAirport" : "JFK",
    "departureDateTime" : "2018-02-01T00:05",
    "operatingAirline" : "PS"
  } ],
  "segmentId" : "1",
  "isAvailableForCheckIn" : true,
  "seat_rows" : [ {
    "seats" : [ {
      "id" : "aab4ca38-2c28-1f13-359d-4ad264d53a0e_1e80aae3-a68b-44de-ae14-aff839563612",
      "occupation" : "AVAILABLE",
      "letter" : "A",
      "rowNumber" : 4,
      "seatCharacteristics" : [ "W", "CH", "EK", "H", "for_infant" ],
      "price" : {
        "amount" : "16.00",
        "currency" : "USD"
      },
      "class" : "ECONOMY",
      "seat_type" : "SEAT",
      "ticket_value" : "FD3A"
   },...]



А это означало то, что информация о пассажирах была доступна любому пользователю с любого устройства лишь по PNR коду. Следовательно, зная номер бронирования, любой пользователь мог получить такие данные о пассажире, как фамилия, имя, взрослый это или ребёнок, номер рейса, аэропорты отбытия и прибытия, время отбытия.

Мне стало интересно, какие ещё «сюрпризы» хранит данный сервис.

Продолжив оформление билетов, я выбрал пункт заказа места для багажа.

Автор : Vegan410


Report Page