XSS через PHP_SELF?

Гравицапа

elbirret elcno
XSS через PHP_SELF?

Каким образом может быть осуществлена атака, если в скрипте используется

form action="?<?=$_SERVER['PHP_SELF']?>"

И почему не стоит доверять данным из $_SERVER, $_FILES, $_ENV ?

З.Ы. Кстати это не описано в ФАКЕ по XSS на сайте
З.Ы.2 Было обращено внимание во время изучения http://talks.php.net/show/phpclub
 

Гравицапа

elbirret elcno
WP
http://phpinside.ru/?q=node/221
Эти опасные superglobals
Добавлено nw, Пят, 2005-10-21 09:47

На сайте phpguru.org опубликован список элементов суперглобальных массивов $_SERVER, $_FILES, $_ENV, использование которых в необработанном виде может быть опасно. В любом пособии по безопасности в PHP говорится о необходимости перепроверки пользовательского ввода $_POST и $_GET, однако не стоит забывать, что и значения других суперглобальных массивов могут быть подделаны.
Не менее интересны и комментарии к статье, в которых приводятся дополнения к статье и пояснения некоторых ситуаций.
К примеру, приводится потенциально опасный код:
form action="?<?=$_SERVER['PHP_SELF']?>"

который может послужить "дырой" для осуществления XSS.
 

WP

^_^
Ах да точно, не обратил внимания на PHP_SELF.
> каким образом может быть осуществлена атака
http://host/script.php/%22%3E%3Cscript%3Ealert('Matrix%20has%20you');%3C/script%3E%3C%22
 

Гравицапа

elbirret elcno
WP
хммм...понятно...спасибо...
а можешь почяснить почему так происходит?
То есть почему PHP инициализирует PHP_SELF таким образом?
И зачем там нужен / после script.php ?

-~{}~ 30.05.06 23:40:

И каким образом могут быть опасны в использовании $_SERVER, $_FILES, $_ENV ?
 

kruglov

Новичок
И каким образом могут быть опасны в использовании $_SERVER, $_FILES, $_ENV
Эээ... так только что через $_SERVER['PHP_SELF'] сделали бяку.

Аналогичные бяки делаются через запись кода в HTTP_USER_AGENT или REFERER.
Заходите вы статистику посмотреть свою - хоп, и "ку, дядя Вова".
 

WP

^_^
Гравицапа
> а можешь почяснить почему так происходит?
Могу.
> То есть почему PHP инициализирует PHP_SELF таким образом?
Это часть URL'а, всё сделано так как нужно.
> И зачем там нужен / после script.php ?
Затем чтобы PHP_SELF принял такое значение.
>
И каким образом могут быть опасны в использовании $_SERVER, $_FILES, $_ENV ?
Подумай сам.
 

Гравицапа

elbirret elcno
Гравицапа
> а можешь почяснить почему так происходит?
Могу.
?
> То есть почему PHP инициализирует PHP_SELF таким образом?
Это часть URL'а, всё сделано так как нужно.
Поясни, пжста.
Меня интересуетв первую очередь механизм работы PHP при этом.
Почему он (PHP) вообще переписывает $_SERVER['PHP_SELF']?
 

SiMM

Новичок
> Почему он (PHP) вообще переписывает $_SERVER['PHP_SELF']?
Он вообще ничего не переписывает, а честно берёт то, что ему дали, избавляя пользователя от всяких urldecode, а весь механизм можно увидеть самостоятельно, сделав вышеуказанную форму и послав запрос, затем лишь остаётся сделать Вид->Просмотр HTML-кода.
 

crocodile2u

http://vbolshov.org.ru
На конфе Расмус показал поучительный пример того, как можно атаковать через PHP_SELF, даже если прогонять значение при выводе через htmlspecialchars (IE-only issue, но нам от этого особо не легче...)
 

Andreika

"PHP for nubies" reader
%)
<html><head></head><body>
%2BADw-script%2BAD4-alert(document.cookie)%2BADw-/script%2BAD4-
</body></html>
через апач/HTMLредактор с ie

в каком случае ie будет плохо?
 

kruglov

Новичок
"This is the string: <script>alert(document.cookie)</script> written in UTF-7 with + converted to %2B."

Если в IE автоопределение кодировки и она явно не прописана...
 

Andreika

"PHP for nubies" reader
автоопределение включил

(на всяк случай отсутствие кодировки в заголовках)
HTTP/1.1 200 OK
Date: Wed, 31 May 2006 08:05:27 GMT
Server: Apache/1.3.34 (Win32)
Last-Modified: Wed, 31 May 2006 08:02:40 GMT
ETag: "0-5a-447d4da0"
Accept-Ranges: bytes
Content-Length: 90
Connection: close
Content-Type: text/html

<html><head></head><body>
%2wscript%24alert(document.cookie)%2w/script%24
</body></html>
 

Andreika

"PHP for nubies" reader
угу.. а надо еще <form обязательно написано чтоли?
если надо, то мож полный код покажете?
ЗЫ. utf-7 чего-то не наблюдаю
 

sal

Новичок
<html><head></head><body>
%2BADw-script%2BAD4-alert(document.cookie)%2BADw-/script%2BAD4-
</body></html>
На сколько я помню, если указать Content-type ослик не будет делать автоопределение кодировки. Или я не прав?

Не представляю русскоязычных сайтов без Content-type (а вы?).
 
Сверху