Наш ассоциированный член www.Bikinika.com.ua

Завдання: підмінити вихідний текст сторінки

  1. Як це виглядає? Подивитися, як влаштована клієнтська частина веб-додатки (та, яка відображається...

Як це виглядає?

Подивитися, як влаштована клієнтська частина веб-додатки (та, яка відображається в браузері), дуже просто: для цього на будь-якій сторінці можна натиснути «Переглянути джерело сторінки» і отримати її повний исходник (HTML / CSS / JS-код). Але спробуй в Chrome'е відкрити посилання kurlak.com/john/source.html і подивитися її Сорец. Коли на сторінці чітко відображається питання «Can you view my source from Chrome?», То при запиті исходника відображається знущальна фраза «You can, but not that easily ...». Що за справи? Досліднику Джону Курлаку вдалося проспуфіть исходник веб-сторінки! Це може здатися безневинною витівкою, але насправді являє собою досить витончений хак. Адже якщо хтось підозрює, що на його сторінку був якимось чином впроваджений сторонній шкідливий код, то, відкривши ось так в браузері її исходник, він побачить рівно те, що захоче показати йому зловмисник!

Адже якщо хтось підозрює, що на його сторінку був якимось чином впроваджений сторонній шкідливий код, то, відкривши ось так в браузері її исходник, він побачить рівно те, що захоче показати йому зловмисник

Вихідний код сторінки source.html, що реалізує спуфинг

Як це працює?

В основі хака лежить нова фіча JavaScript - функція history.replaceState (). Вона дозволяє розробнику змінити URL сторінки без перезавантаження останньої. Наприклад, можна використовувати цю функцію, щоб поміняти URL сторінки з www.xakep.ru/example.html на www.xakep.ru/example2.html . При цьому з метою безпеки ім'я сервера змінити, природно, не можна - тільки сторінки.

При цьому з метою безпеки ім'я сервера змінити, природно, не можна - тільки сторінки

Опис history.replaceState () від Mozilla

Джон Курлак, експериментуючи з цією функцією, зауважив, що якщо змінити URL сторінки і подивитися її исходник, то браузер намагається показати сорци нової сторінки. Відповідно, якщо змінити адресу сторінки так, щоб ніхто не помітив, ми можемо підсунути що завгодно в якості її исходника! Головне, щоб ім'я сторінки виглядало точно так же. І тут згадався старий добрий трюк, який використовує Unicode-символ, який перевертає текст навпаки. Він називається «left to right» (LRO) і переставляє символи зліва направо. Фішка в тому, що якщо розмістити його після тексту, вже орієнтованого зліва направо, то ніяких перетворень не відбувається. Відповідно, ми можемо переадресувати користувача на іншу сторінку, яка користувачеві буде відображатися точно так же (наприклад, source.html). Символ LRO можна представити у вигляді десяткового коду 8237. Отримуємо простий код сторінки source.html:

<! DOCTYPE html> <html> <head> <title> Source </ title> <meta charset = "UTF-8"> <script type = "text / javascript"> history.replaceState (null, null, 'source. html '+ String.fromCharCode (8237)); </ Script> </ head> <body> <p> Can you view my source from Chrome? </ P> </ body> </ html>

Коли користувач відкриває сторінку source.html, то браузер автоматично змінює адресу сторінки на source.html + [LRO] - і в адресному рядку, як і раніше відображається потрібний нам index.html. Якщо ж подивитися вихідний код сторінки, то браузер намагається відобразити исходник сторінки source.htmlâ € (â € - це уявлення hex-коду символу LRO в ASCII). При цьому ніякі спецсимволи ніде не відображаються. Що ми робимо? Просто створюємо сторінку source.htmlâ € з потрібним нам вмістом, яке буде відображатися користувачеві у вигляді исходника. Бінго! Прочитати авторський пост на тему, завантажити вихідні і подивитися демонстрацію ти можеш тут: goo.gl/itGVr .

Як це виглядає?
Як це виглядає?
Коли на сторінці чітко відображається питання «Can you view my source from Chrome?
Що за справи?
ReplaceState (null, null, 'source. html '+ String.fromCharCode (8237)); </ Script> </ head> <body> <p> Can you view my source from Chrome?
Що ми робимо?

Новости