Предыстория
У моего товарища, с которым мы выпили много водки учились в одной школе, и выросли в одном городе, есть сайт и форум(я кстати его гордый совладелец), посвященный моему любимому городу Волковыску, соавтором которого я тоже являюсь. Один из разделов этого сайта — форум Волковыска.
Так вот, повадился один казёл конкурент вначале спамить форум, а потом и вообще нащупал уязвимость в движке форума, который сделан на phpBB 3, и стал хозяйничать в админке: удалять сообщения, менять пользователям пароли и заходить под их аккаунтами, следовательно, читать личку. Первым делом я посоветовал защитить админку при помощи .htpassword, но перед этим надо было узнать IP пользователя, который так некрасиво поступил.
Этот пользователь, судя по логам apache, пользовался сервисом anonymouse.org, что, казалось бы, делало его неуязвимым, ибо anonymouse вначале скачивает сайт себе, потом отдает в браузер пользователю.
Решение
Потыкался я в этот сервис и понял одно, он перебивает все возможные ссылки на странице. НО…. Оказалось он не выполняет JavaScript, и тут меня осенило. Внизу страницы был создан фрейм, с таким вот кодом:
<iframe id="super_iframe" width="1" height="1"></iframe>
Далее, за ним размещался такой вот Javascript-код:
<script type="text/javascript"> var sUrl = 'http://forum.volkovysk.org/acces_log.php'; document.getElementById('super_iframe').src = sUrl; </script>
В файле acces_log.php происходило определение реального IP-адреса пользователя. Как реализована эта функция написано тут. Далее, с полученным адресом можно делать что угодно, например, я просто записывал его в базу данных вместе с данными о времени.
насколько я понимаю, данный метод блокировки по ip не совсем корректен
если я захожу через корпоративный прокси, то мой внешний ip равен ip-прокси, и если его забанят, то никто из нашей сети не сможет зайти на сайт. жестко )
мне кажется можно было поступить по другому, указать только разрешенные для админки ip, а все остальные блокировать:
Allow from xxx.xxx.xxx.xxx
Deny from all
, где xxx.xxx.xxx.xxx — ip админа, их можно указывать несколько
PS. Кстати если можно, поподробнее про уязвимость phpBB3. пока в сети не находил, чтоб упоминались какие то страшные уязвимости. хочется знать, так как использую этот движок много где
пример убедительно доказывает
1) жабаскрипт — зло
2) ифреймы — зло.
xaoc, согласен, что способ не лучший, но у админа самого динамический IP, поэтому надо было бы все время править файлик на сервере, но способ хороший согласен.
graveron, да, и первое и второе зло для того кто пакостит в сети, хотя ифреймы сами по себе зло на мой взгляд 🙂
Про уязвимость в админке обязательно напишу, у меня даже эксплоит перловый есть, юзащий эту уязвимость, правда она работала только в версии 3.0
Я держу у себя фаерволл, который блокирует скрытые фреймы, потомучто правильно товарищ сказал ранее — ифреймы — зло.
Ифреймы да, если я вижу сайт сделанный на ифреймах, то как-то мнение о его разработчиках не очень сразу 🙂