Відправка серверних заголовків у 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 атак на дані сайті.


Leave a Reply

You must be logged in to post a comment.