The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Использование JavaScript для атаки через манипуляцию с содержимым буфера обмена

24.05.2016 11:44

Появление в JavaScript средств для копирования и изменения данных в буфере обмена открыло двери для организации нового вида атаки по подстановке дополнительных команд при вставке данных в терминал из буфера обмена.

В отличие от ранее предложенной атаки, основанной на размещении невидимого блока "span", новая атака подменяет данные силами JavaScript, отслеживая событие копирования из текущего окна браузера в буфер обмена - определив нажатие Ctrl+C, скрипт ожидает 800 мс и осуществляет добавление дополнительных данных в буфер обмена. При этом браузер не запрашивает у пользователя подтверждения операции по изменению содержимого буфера обмена, а копируемая строка в представлении HTML соответствует строке на экране. Метод также предоставляет более простой способ подстановки в буфер обмена спецсимволов и шестнадцатеричных последовательностей (например, "\x1b"), которые могут применяться для атаки на vim.

В демонстрационном примере предлагается скопировать из окна браузера в буфер обмена строку (выделить и нажать Ctrl+C):


   echo "not evil"
при вставке которой в терминал будет выведена совсем иная последовательность:

   echo "evil"\n

Для скрытия лишнего ввода можно использовать команду "clear" или "echo -ne '\033[1F\033[2K'", например, в данном примере будет выполнено:


   touch ~/.evil
   clear
   echo "not evil"


  1. Главная ссылка к новости (https://www.reddit.com/r/netse...)
  2. OpenNews: Консорциум W3C представил JavaScript API для управления буфером обмена
  3. OpenNews: Релиз web-браузера Chrome 43
  4. OpenNews: Релиз Firefox 41
  5. OpenNews: Концепция атаки по подмене копируемого в терминал текста с сайта
Лицензия: CC-BY
Тип: Проблемы безопасности
Короткая ссылка: https://opennet.ru/44481-javascript
Ключевые слова: javascript
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (80) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:56, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –13 +/
    >отслеживая событие копирования из окна браузера в буфер обмена и через 800 мс после определения нажатия Ctrl+C осуществляя подстановку новых данных в буфер обмена

    и чо?
    ниче не понял из новости.

     
     
  • 2.4, Аноним (-), 11:59, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +28 +/
    Скопировал со страницы "sudo apt-get upgrade", а вставил в командную строку "rm -rf ~/*\n".
     
     
  • 3.23, Аноним (-), 14:00, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • –10 +/
    почему в новости это не написать?
     
     
  • 4.34, Аноним (-), 15:16, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +12 +/
    Потому что остальным всё и так понятно.
     
  • 3.37, Аноним (-), 15:24, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    либо ты проверяешь команды перед подтверждением, либо не сидишь под рутом.
     
     
  • 4.40, Crazy Alex (ok), 15:28, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Желательно то и другое. Но если что - перевод строки в буфер так же замечательно ложится, как и всё остальное. Вставил - и пошло исполнение сразу.
     
     
  • 5.41, Аноним (-), 15:30, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Желательно то и другое. Но если что - перевод строки в буфер
    > так же замечательно ложится, как и всё остальное. Вставил - и
    > пошло исполнение сразу.

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

     
     
  • 6.50, Uri (??), 17:50, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Попахивает паранойей.

    Вообще ничего не вставлять - смотришь на страничку и тут же сам в терминале набиваешь.

     
  • 5.42, Аноним (-), 15:32, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    а как же подтвердить паролем? ведь sudo?
     
     
  • 6.46, админлоскалхоста (?), 16:51, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    во второй раз судо иногда не спрашивает(после первой авторизации судо, около минуты есть возможность использовать судо без пароля)
     
     
  • 7.48, Аноним (-), 17:41, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    когда же народ начнет читать маны?
    Defaults        timestamp_timeout=0

    опять же - это линукс, и если пользователь настроил чтобы sudo не спрашивала пароль каждый раз и при этом копипастит (с левых?) сайтов СИСТЕМНЫЕ команды, то это полностью проблемы пользователя...

    как отписался ниже комментатор - такое поведение уже давно, а волновать стало только сейчас админов локалхоста.

     
     
  • 8.64, 1 (??), 10:05, 25/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Почему системные-то Просто копипастит - может стих для любимой в vime хочет ск... текст свёрнут, показать
     
  • 4.69, azure (ok), 17:23, 25/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Стереть все свои пользовательские файлы тоже нельзя назвать безопасной процедурой.
     

  • 1.2, Анинимим (?), 11:56, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    прикольно. теперь копирование из онлайн мануалов стало абсолютно небезопасным
     
     
  • 2.5, Клыкастый (ok), 12:00, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    ссылка №5 под статьёй - 2013-го года, так что "теперь" это уже "давно".
     
     
  • 3.56, Аноним (-), 20:30, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А если пройти по ссылкам дальше, то можно найти и статью 2008 года: http://www.ush.it/team/ascii/hack-tricks_253C_CCC2008/wysinwyc/what_you_see_i

    Не удивлюсь, если об этом писали и до 2008.

     
     
  • 4.61, sage (??), 01:42, 25/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Об этом раз в год пишут.

    http://people.zoy.org/~sam/filsdepute.txt — думаете, это txt, да? Скопируйте и вставьте текст. 2013 год. На чистом HTML, между прочим, без Javascript.

    https://thejh.net/misc/website-terminal-copy-paste — еще один вариант.

    http://www.ush.it/team/ascii/hack-tricks_253C_CCC2008/wysinwyc/what_you_see_i — за 2008 год.

     
     
  • 5.78, Аноним (-), 16:45, 27/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >>На чистом HTML, между прочим

    Неправда, там есть CSS.

     
  • 2.71, DmA (??), 08:57, 26/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    javascript должен по умолчанию быть отключён! Детский сад! Об этом твердят уже лет пятнадцать, политика многих корпораций предписывает отключать javascript уже давно.
     
     
  • 3.79, Аноним (-), 12:00, 11/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > javascript должен по умолчанию быть отключён! Детский сад! Об этом твердят уже
    > лет пятнадцать, политика многих корпораций предписывает отключать javascript уже давно.

    Не спасёт. Эта атака может быть проведена на чистои HTML.

     

  • 1.3, Клыкастый (ok), 11:58, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    красота какая. скоро так вот накопипастить можно чужой ключик на машинку, патч Бармина, проксю для браузера и много другой весёлой красоты.
     
  • 1.6, Аноним (-), 12:01, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как забанить доступ к буферу для js?
     
     
  • 2.12, Аноним (-), 12:20, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    В некоторых кутешных браузерах была такая галочка в настройках как минимум, по умолчанию снятая.
     
  • 2.14, НяшМяш (ok), 12:36, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    В лисе: dom.event.clipboardevents.enabled
     
     
  • 3.27, Nas_tradamus (ok), 14:23, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Сделал в false, перезапустил Лису 46.0.1 (mac os) - пример всё равно работает. Печальо как-то.
     
     
  • 4.39, Аноним (-), 15:25, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Некоторые сайты (вполне добропорядочные) ломаются от этого.
    Правильный вариант - NoScript.
     
     
  • 5.70, mumu (??), 23:40, 25/05/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    С носкриптом ломаются не некоторые сайты, а весь интернет.
     
     
  • 6.72, DmA (??), 08:59, 26/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > С носкриптом ломаются не некоторые сайты, а весь интернет.

    даже этот сайт на отлично работает без всякого javascript. Даже у почтовых серверов есть вариант без javascript. Так что не врите!

     
     
  • 7.74, Аноним (-), 17:19, 26/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> С носкриптом ломаются не некоторые сайты, а весь интернет.
    > даже этот сайт на отлично работает без всякого javascript. Даже у почтовых
    > серверов есть вариант без javascript. Так что не врите!

    Зайди для примера хоть на одну социалку, новостной сайт, форум.

     
     
  • 8.81, Аноним (81), 21:06, 15/01/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ОткрытаяСеть ... текст свёрнут, показать
     
  • 4.58, НяшМяш (ok), 21:03, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Действительно, ни на винде, ни на осиксе не сработало. Вот гадство-то.
     
  • 3.28, Genues (?), 14:24, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    48 бете лисы, увы, не помогло.
     

  • 1.7, Аноним (-), 12:02, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >после определения нажатия Ctrl+C

    а на мышебуфер не действует, ясно. Заранее вставленные теги продолжают рулить.

     
     
  • 2.11, zomg (?), 12:15, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Точно, с мышебуфером не работает. Прекрасно :)
     
  • 2.15, _ (??), 12:46, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    это просто пример, реализованный через document.addEventListener('keydown', ...),
    демонстрирующий изменение буфера из javascript от нажатий клавиш.
    Очевидно, изменить буфер из javascript можно когда угодно (даже независимо от действий пользователя).
     
     
  • 3.20, _ (??), 13:23, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    похоже наврал
     

  • 1.8, Аноним (-), 12:10, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Palemoon 26.0 не могу воспроизвести, это только в новых версиях актуально?
     
     
  • 2.9, Аноним (-), 12:11, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Palemoon 26.0 не могу воспроизвести, это только в новых версиях актуально?

    Да, только в новых. В Firefox 38 не работает, а в Firefox 46 сработало нормально.

     
     
  • 3.10, Michael Shigorin (ok), 12:12, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > Да, только в новых. В Firefox 38 не работает, а в Firefox
    > 46 сработало нормально.

    Прогресс, однако...

     
  • 3.25, Анонизмус (?), 14:13, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Firefox 46.0.1 не работает.
     
     
  • 4.26, Анонизмус (?), 14:16, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Firefox 46.0.1 не работает.

    Каюсь, работает.
    Анонизмус писатель, не читатель.

     
  • 3.47, Дегенератор (?), 17:28, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вы о чем, ребята?
     
     
  • 4.75, Аноним (-), 17:20, 26/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Вы о чем, ребята?

    О дегенератах вроде тебя.

     

  • 1.13, Аноним (-), 12:25, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Ничего не поделаешь, это JavaScript...
     
  • 1.16, manster (ok), 12:52, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    в хроме не пашет
     
     
  • 2.17, manster (ok), 12:53, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    в лисе тоже
     
     
  • 3.18, Аноним (-), 13:21, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Аналогично. А кто подвержен тогда?
     
  • 3.29, Анонимчег (?), 14:26, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Работает. в noscript сначала надо разрешить и копировать не мышей, а с клавиатуры.
     
     
  • 4.31, manster (ok), 14:32, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    да, через клавиатуру работает, спасибо
    Ну пока получается защита - копировать мышкой или проверять содержимое буфера перед вставкой ...
     
  • 2.30, Анонимчег (?), 14:29, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > в хроме не пашет

    [code]
       try {
                    var successful = document.execCommand('copy');
                    var msg = successful ? 'successful' : 'unsuccessful';
                    console.log('Copying text command was ' + msg);
                  } catch (err) {
                    console.log('Oops, unable to copy');
                  }
    [/code]

    А что в консоли у хрома, если не секрет?

     
     
  • 3.32, manster (ok), 14:32, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >            
    >     console.log('Copying text command was ' + msg);
    >            
    >   } catch (err) {
    >            
    >     console.log('Oops, unable to copy');
    >            
    >   }
    > [/code]
    > А что в консоли у хрома, если не секрет?

    "Copying text command was successful"

     

  • 1.19, Аноним (-), 13:22, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    в палемоне с мышебуфером и ноускриптом не работает. Когда заработает, напишите новость
     
     
  • 2.24, Аноним (-), 14:07, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    во wget тоже не работает
     
  • 2.36, Аноним (-), 15:21, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Напиши тут про PaleMoon когда он лицензию сменит с проприетарной на свободную.
     
     
  • 3.55, Аноним (-), 19:29, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    MPL нынче проприетарная лицензия? ок, ещё один даун на опеннете
     

  • 1.22, Аноним (-), 13:57, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    странно. яваскрипт-хейтерков пока почему-то не слышно...
     
     
  • 2.35, Crazy Alex (ok), 15:16, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Так нам наплевать - у нас JS отключен практически везде, а сама "новость" абсолютно тривиальна и ожидаема.
     
  • 2.43, Аноним84701 (?), 15:48, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > странно. яваскрипт-хейтерков пока почему-то не слышно...

    А фанатам разве не все божья роса^W^W равно? Они же искренно считают "вэээб технулогии" абсолютом гениальности, а не историческим нагромождением костылей, подпорок, картона и изоленты …


     
     
  • 3.49, Аноним (-), 17:49, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    всё костыль. Но ненавидеть следует только яваскрипт. Ишь чегось удумали - в буфер обмена лезть. Туда только сишникам и плюсовикам можно!
     
     
  • 4.65, Аноним (65), 11:22, 25/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Да, только им. И только если подразумевается работа только на локальной машине, в идеале.
     

  • 1.33, Sfinx (ok), 14:33, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Дык, забыл когда юзал Ctrl-V/Ctrl-C, мыш-буфера достаточно. А венде тут таки да капец ;)
     
     
  • 2.53, SysA (?), 18:34, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Дык, забыл когда юзал Ctrl-V/Ctrl-C, мыш-буфера достаточно. А венде тут таки да
    > капец ;)

    Вот тут и с мышом работает: https://thejh.net/misc/website-terminal-copy-paste ! :)


     
     
  • 3.60, Sfinx (ok), 22:00, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Дык, пашет. Походу пора paste() в терминале секьюрить.
     
     
  • 4.63, Денис (??), 06:11, 25/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    В "правильных" терминалах уже давно :)

    google -> rxvt confirm-paste

     
  • 3.66, Аноним (-), 14:37, 25/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Более того, тут работает безо всякого javascript, потому что сделано через слой css.

    Спасибо за полезный каммент.

     
  • 2.62, Аноним (-), 05:16, 25/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А венде

    http://i.imgur.com/czvM61C.png

     

  • 1.38, Аноним (-), 15:24, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Открыли Америку... Много лет уже существуют сайты, на которых при копировании текста в буфер добавляется ссылка на сайт. И только сейчас кто-то догадался, что можно не только ссылки, но и консольные команды добавлять?
     
  • 1.44, Аноним (-), 15:48, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В фаерфоксе 45 без носкриптов и прочего треша не сработало. В консоли:

    document.execCommand('cut'/'copy') was denied because it was not called from inside a short running user-generated event handler.

    В хромиуме 48 воспроизвелось.

     
     
  • 2.54, SysA (?), 18:36, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > В фаерфоксе 45 без носкриптов и прочего треша не сработало. В консоли:
    > document.execCommand('cut'/'copy') was denied because it was not called from inside a short
    > running user-generated event handler.
    > В хромиуме 48 воспроизвелось.

    У меня FF v46.0, SeaMonkey v2.40 работает! :(

     
     
  • 3.59, НяшМяш (ok), 21:06, 24/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    У меня вообще по-интересному работает. Один раз Ctrl+C нажал:

    > Copying text command was unsuccessful Pastejacking:57:17
    > Copying text command was successful Pastejacking:57:17
    > В выполнении document.execCommand('cut'/'copy') было отказано, так как оно не было вызвано изнутри короткоживущего обработчика события, сгенерированного пользователем.

     
  • 2.67, fleonis (ok), 15:48, 25/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    в 45 лисе на debian sid система зависла (после отключения noscript), пришлось нажать alt+sysreq и reb
     

  • 1.45, анон (?), 16:48, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    в 48 хроме не воспроизвелось. линукс.
     
  • 1.51, омномномнимус (?), 17:55, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Google-oriented programming :-)
     
  • 1.52, annual slayer (?), 18:28, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    в ff 36.0.1 это действует только при вставке внутри браузера, на терминал не влияет

    надо отправить багрепорт

     
  • 1.57, CHERTS (??), 21:02, 24/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Новость стара как мир, как и атака через WPAD. Еще с год назад читал статью про манипуляцию с буфером обмена.
     
     
  • 2.73, DmA (??), 17:01, 26/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Новость стара, но азбуку до сих пор печатают! Молодёжь ещё не знает, а с другой стороны склероз наступает :) Повторенье -мать учения.
     
     
  • 3.76, Аноним (-), 17:22, 26/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Новость стара, но азбуку до сих пор печатают! Молодёжь ещё не знает,
    > а с другой стороны склероз наступает :) Повторенье -мать учения.

    Беда в том, что дураков не способен даже собственный опыт научить. Не то, что чужой.

    Так было и так, к сожалению, будет.

     
     
  • 4.77, DmA (??), 17:44, 26/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Новость стара, но азбуку до сих пор печатают! Молодёжь ещё не знает,
    >> а с другой стороны склероз наступает :) Повторенье -мать учения.
    > Беда в том, что дураков не способен даже собственный опыт научить. Не
    > то, что чужой.
    > Так было и так, к сожалению, будет.

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

     

  • 1.68, Аноним (-), 16:18, 25/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    я изначально знал, что давать доступ к копированию через js - очень плохая идея. раньше это было закрыто мозилловским нестандартизированным апи + обязательной подписью js у мозиллы, то теперь это стало стандартом и без всяких разрешений.
     
  • 1.80, Аноним (-), 15:42, 14/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И чего? В чём проблема? А при чём тут яваскрипт? Он чё сам по себе это делает? Маразматорий, честно. С такой логикой вообще ВСЁ надо поотключать и вообще не пользоваться никакими программами, они ведь опасность потенциальную несут. Страдаете х*йнёй! :)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру