- PVSM.RU - https://www.pvsm.ru -

И снова об уязвимости $_SERVER[‘HTTP_HOST’]

На Хабре уже упоминали [1] об одной известной уязвимости, связанной с переменной $_SERVER['HTTP_HOST']. Только почему-то говорилось об SQL-инъекциях и о чем угодно, кроме XSS.

Возможности комментировать исходную статью у меня нет, поэтому в двух строках уточню. Допустим, у вас на сайте есть ссылки с абсолютным адресом, вида:

<script type="text/javascript" src="<?=$_SERVER['HTTP_HOST']  ?>/my.js"></script>

Допустим, адрес вашего сайта "www.user.com". Допустим, адрес моего сайта "www.hacker.com". Все, что мне нужно сделать, — это скинуть вам ссылку на специальную страницу моего сайта, откуда я сделаю самый обычный редирект на ваш же собственный сайт. Только для редиректа использую немного необычные заголовки. В качестве HTTP-target я укажу ваш собственный сайт "www.user.com", а вот в качестве хоста — мой "www.hacker.com". Хотя, в принципе, в абсолютной форме HTTP-target [2] нет ничего необычного.

Заголовки примут вид:

GET http://www.user.com HTTP/1.1
Host:www.hacker.com

И ваш скрипт вместо SERVER['HTTP_HOST'] подставит мой хост. Ваша ссылка src="<?=$_SERVER['HTTP_HOST'] ?>/my.js" примет вид не как вы ожидали "www.user.com/my.js", а "www.hacker.com/my.js". В результате чего с моего сайта ваш браузер с чистой совестью скачает скрипт и выполнит его.

А я получу ваши cookie.

Вы навскидку скажете, что у вас нет абсолютных ссылок? Ну, во-первых, как минимум TinyMCE по умолчанию использует абсолютные ссылки. Кроме того, не обязательно это должна быть ссылка на *.js Ссылка на css тоже годится [3]. Ну, или в крайнем случае, на iframe.

Поэтому, как обычно, никогда на доверяйте данным, пришедшим от клиента.

Автор: DamonEs

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/115708

Ссылки в тексте:

[1] упоминали: https://habrahabr.ru/post/166855/

[2] абсолютной форме HTTP-target: http://tools.ietf.org/html/rfc7230#section-5.3.2

[3] годится: http://stackoverflow.com/questions/476276/using-javascript-in-css

[4] Источник: https://habrahabr.ru/post/279829/