Безопасность как искусство
229,19
рейтинг
28 марта 2012 в 15:49

Разработка → Инъекция 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 ;)

Автор: @chipik
Digital Security
рейтинг 229,19
Безопасность как искусство

Комментарии (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 который у них очень странный. а вот на такие хитрости не догадался

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

Самое читаемое Разработка