- PVSM.RU - https://www.pvsm.ru -
На Хабре уже упоминали [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/
Нажмите здесь для печати.