Відправка серверних заголовків у Flash
22:46 02.06.2011Можливість відправки серверних заголовків, що наявна в Flash, є важливою в контексті веб безпеки. Тому що для браузерів існують флеш плагіни, якими користуються майже 100% користивувачів Інтернет (різними версіями флеш плагіна). І дану можливість можна використати для атак на сайти і веб додатки, зокрема для проведення spoofing та XSS атак.
Для відправки довільних серверних заголовків потрібно використовувати відповідні методи, зокрема метод addRequestHeader класів LoadVars та XML, що з’явилися в AS1 у Flash 6. А починаючи з AS3 для цього потрібно використовувати властивість URLRequest.requestHeaders.
При цьому зазначу, що в мене відправка заголовків працює лише в IE6 та IE7 (і так само вона має працювати в IE8 та IE9), але не в інших браузерах. Що раніше у Flash плеері 8 і 9, що зараз у Flash плеері 10.
Компанія Adobe вже багато років як намагається обмежити даний функціонал - з метою безпеки - щоб його не можна було використати для атаки (але так чи інакше його все рівно з року в рік використовують для цих цілей). Для обмеження Adobe використала два підходи: чорний список (blacklist) заголовків, які не можна використовувати (і він збільшується з роками), та запровадження правила для міждоменної політики. В даному випадку необхідно в міждоменній політиці задавати дозвіл іншим сайтам на відправку заголовків даному сайту (це стосується лише міждоменних запитів і в рамках одного домена обмежень немає).
Більш детально про те, які заголовки були заборонені в яких версіях флеш плеєра, ви можете дізнатися на сторінці ActionScript error when an HTTP send action contains certain headers (Flash Player).
На даний час для версій Flash Player 10.0.22.87 і вище заборонена відправка наступних заголовків: Accept-Charset, Accept-Encoding, Age, Allow, Allowed, CONNECT, Connection, Content-Length, Content-Location, Content-Range, Cookie, DELETE, Date, ETag, Expect, GET, HEAD, Host, Keep-Alive, Last-Modified, Location, Max-Forwards, OPTIONS, ORIGIN, POST, PUT, Proxy-Authenticate, Proxy-Authorization, Proxy-Connection, Public, Range, Referer, Request-Range, Retry-After, Server, TE, TRACE, Trailer, Transfer-Encoding, URI, Upgrade, User-Agent, Vary, Via, WWW-Authenticate, Warning, x-flash-version.
Але при цьому всі інші серверні заголовки дозволені. Що дозволяє відправляти довільні заголовки (окрім вищезгаданих), серед яких можуть бути й такі, які використовується на різних веб сайтах. І це може бути використано для проведення spoofing та XSS атак на дані сайті.