Инъекция Excel-формул в Google Docs

    Все вы наверняка знаете о программе от компании Google по поощрению исследователей в области информационной безопасности за предоставление информации о слабых местах на веб-ресурсах Google. Удалось и нам поучаствовать в данной программе. Вот небольшая история от меня и Леши Синцова d00kie.

    Однажды нам очень понадобилось провести небольшое анкетирование, и в качестве платформы для анкеты было решено использовать Google Docs.
    В Google Docs существует такой объект, как Google Forms, и используется он, как это понятно из названия, для создания разного рода форм, опросов и анкет.




    После создания формы, как правило, ссылка на нее публикуется в Интернете или раздается людям, которым необходимо пройти анкетирование.
    Так форма выглядит для заполняющего:



    А так создатель формы видит ответы на вопросы:



    Мне кажется, что любой веб-ресечер при виде формы инстинктивно вставляет туда ',",> и другие интересные символы :)
    Попробовали и мы, однако, как и ожидалось, всё энкодилось и фильтровалось.
    Хм… а ведь весь пользовательский ввод вставляется в Excel-таблицу, почему бы тогда не попробовать заинъектить какую-нибудь формулу?
    Формулы в Excel начинаются с символа "=".
    ОК, пробуем.



    Неудача. Хитрый Google вставляет символ пробела перед знаком "=", отчего формула воспринимается как простой текст в ячейке.
    Как же убрать пробел? Очень просто: используем backspace :)
    %08 — Hex-код клавиши backspace



    Соответственно, в поле формы пишем:
    %08=1+2+C3

    И вуаля!



    Формула отлично вставилась в таблицу.
    Оставалось только придумать интресный и практичный вектор для такой своеобразной инъекции. Тут на помощь пришли Google Functions:



    С помощью Google Functions стало возможным выполнять запросы на любые домены, а результаты запроса вставлять в указанную ячейку.
    Таким образом, сложился такой вектор атаки:

    1) В ячейку A1 помещаем критичные пользовательские данные (либо они уже там расположены)
    2) в ячейку Z31337 вставляем формулу, которая сделает GET-запрос на chipik_site.com/secret_data_in_base64_from_A1
    3) Читаем логи вебсервера, получаем данные из ячеек

    4) Profit!

    Описав багу и возможный вектор атаки ребятам из Google Security Team, мы очень скоро получили следующее письмо:



    а еще чуть-чуть позже увидели свои имена в Google Hall of Fame:



    Ну и напоследок — небольшой Google Hack ;)

    Digital Security 195,52
    Безопасность как искусство
    Поделиться публикацией
    Комментарии 24
    • +3
      Молодцы!
      А в чём суть последнего хака?
      • 0
        он показывает, что Google Forms активно используются и из них можно вытащить много интересного (персданные, блаблабла)
        • +1
          Перс-данные. Кроме шуток, но много какие формы их собирают, а через эту багу их можно(было) угнать… Последний скриншот как раз об этом… 8)
      • +1
        Оригинальный баг :) Поздравляю с Залом Славы!
        • 0
          Как же все-таки дыра в итоге была закрыта?
          • +4
            backspace — %08 перестал работать 8)
          • 0
            Каким образом в абстрактную ячейку А1 помещаются какие-то секретные данные? Поиск этих ячеек с конфиденциальной информацией вручную происходит?
            • 0
              Перебором — от а1 до z10 можно собрать всю таблицу, в принципе. Да, может не самый эффективный способ.
              • 0
                Данные в таблицу вносятся из формы, которую заполняют люди. В том числе и конфиденциальные.
                Искать можно и не вручную — никто не запрещает запихнуть в url множество ячеек.
              • +1
                Прошу заметить, что в отместку за backspace hsck тут www.google.com/about/corporate/company/halloffame.html
                все ваши ссылки биты

                Dmitry Chastuhin и пр.
                • 0
                  как то так a href="%20http://twitter.com/_chipik" rel=«nofollow»
                  • 0
                    А тут же рядом — нормальные.
                  • +2
                    Интересный, годный хак
                    • +2
                      1337 we thought it was a fun bug
                      • –3
                        Молодцы! А вот гугл расстроил! Совсем ребята жадными стали! За такие премии ни кто им в скором времени дыры нести не будет!
                        • +1
                          У них вроде есть еще премия в 31337 USD. За самые-самые.
                          • 0
                            не, норм ) мне такую же манибукерсы дали (1к евро)
                            • 0
                              А за что, если не секрет?
                              Тоже пользую MB/Skrill.
                            • 0
                              За дырки в Chromium двоим дали по $60 тыс.
                            • 0
                              В статье опущен интересный момент:
                              Каким образом гугл выплачивает вознаграждение? Как быстро? Облагается ли налогом?
                              • +1
                                Об этом мы говорили на одной из встреч Russian Defcon Group. Собственно, презенташку по этому поводу можно посмотреть тут: defcon-russia.ru/sixth/ZDI_google2.ppt
                              • +4
                                Раз уж разговор пошел про Google Docs — поделюсь интересным решением проверки сайта на работоспособность при помощи Google Spreadsheet.
                                • НЛО прилетело и опубликовало эту надпись здесь
                                  • +2
                                    очень любопытный хак! чуваки вы крутые )
                                    *уже который месяц пытаюсь обойти песочницу googleusercontent.com, google sites и csrf который у них очень странный. а вот на такие хитрости не догадался

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое