Actionscript програмування, xss в htmltext і clicktag, wordpress і master-it
XSS в HtmlText і ClickTAG ActionScript
Колись давним давно, в минулому житті років 10 тому, мені необхідно було написати просту Flash гру на ActionScript.
Мета для створення тестового додатку була дуже проста. Показати базовий рівень знань в ActionScript.Завдання виявилося теж не складне:
Створити лабіринт, і обмежити його проходження однією хвилиною.
Природно ні про яку безпеку мови тоді взагалі не йшлося. В кінці поста ви навіть можете його спробувати пройти. 😀
Днями я знайшов скомпільованих файл тієї гри (исходник то вже і вдень з вогнем не знайдеш) і вирішив його просканувати HP SwfScan. Через кілька секунд з'явилося повідомлення про вразливою змінної, яка використовувалася в текстовому полі swf файлу.
Вектор атаки на таку змінну може виглядати так:
Головний винуватець бага - змінна HtmlVariable, яка не була проініціалізувати до її використання. Змінну, що не має значення за замовчуванням, можна порівняти з відром для сміття, в якому може знаходитися взагалі все що завгодно. Колись я вже про це писав тут.
І тут не важко здогадатися, що користувач може самостійно передати потрібне йому значення в вразливу змінну, і тим самим порушити логіку роботи веб додатки.
В окремих інших випадках, рекомендується використовувати фільтр (поставити наглядача за відром), щоб юзер, бува, не накидав туди свого сміття.
Не хочеться лізти в нетрі гри, тому наведу простий приклад використання txtField.htmlText який формується після натискання на об'єктний символ кнопка:
on (release)
// var HtmlVariable = "Болт";
if (txtFieldExists == false)
this. createTextField ( "txtField". this. getNextHighestDepth (), 270, 270, 160, 22);
txtField. html = true;
txtFieldExists = true;
>
txtField. htmlText = HtmlVariable;
>
В кінці поста ви зможете скачати скомпільований swf файл для тестування.
Точно така ж ініціалізація змінної ClickTAG всередині методу on (release) могла б врятувати батька російської демократії закрити уразливість FlashVar (ClickTAG).
Але щоб закінчити почате в попередній статті, хочеться додати ще кілька пропозицій щодо закриття уразливості в ClickTAG.
Тому рекомендація в даному випадку дуже проста:
Ця умова простежить за тим, щоб юзер був доставлений саме туди, куди він власне і планував.
Ну і на останок (для загального розвитку) ще кілька векторів для getURL і flash.external.ExternalInterface.call, які ви зможете протестувати в цьому swf файлі. Для початківців програмістів ActionScript, думаю буде дуже корисно.
on (release)
if (externalInterfaceVar! = undefined)
flash. external. ExternalInterface. call (_root .externalInterfaceVar);
>
>
І на завершення, моя перша (а інтуїція мені підказує, що і швидше за все остання) Flash гра лабіринт.
P.S.Лабірінт побудований таким чином, що на його проходження в середньому йде 50-55 секунд. Для коректного завершення гри необхідно увійти в «червоний» будиночок! Для навігації використовуємо стрілочки на клавіатурі. 😀
Цікаві матеріали по темі:
- Як відновити пароль від email, або що таке Brute Force Attack?
- Як перевірити сайт на віруси
- Вірус заблокував доступ в інтернет
- XSS в завантаженні XML на Flash сайтах
Відмінний пост Діма. супер дуже все дохідливо і зрозуміло. багатьом корисно знати таку інформацію, можливо тоді в інеті буде менше всякого калу, хоча таке поняття як бидлакод був є і буде 😀
Даємо просвіта в маси! 😀
Безпека - основа кодинга. На розуміння цих простих слів, у початківців розробників йде багато часу. Але це потрібно знати, т. К. Зустрічаються проекти, творці яких про це навіть і гадки не мають.
Дякую за статтю!