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

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


============== httpd.conf =============

Auth_MYSQLinfo store.провайдер.ru nobody .

AuthName Mail_list

AuthType basic

Auth_MYSQLdatabase users

Auth_MYSQLpwd_table passwd

Auth_MYSQLuid_field email

Auth_MYSQLpwd_field passwd

Auth_MYSQLgrp_table logins

Auth_MYSQLgrp_field disal_group

Auth_MYSQL_EncryptedPasswords off

<limit get post>

order deny,allow

allow from all

require valid-user

</limit>

============== end of httpd.conf =========

Теперь мы точно знаем, где хранится клиентская база!

После непродолжительного изучения возможностей сервера статистики я нахожу скрипт, при помощи которого клиент может поменять пароль в базе (http://user_name:passwd@startserv.провайдер.ру/cgi-bin/connect.cgi). Снова захожу на http://users.провайдер.ру/user_name/shell.cgi и делаю "cat /usr/local/apache/doc/statserv/cgi-bin/connect.cgi". Эх! Не повезло! CGI-скрипт написан на языке Си и уже скомпилирован. Вот невезуха! Если бы использовался Perl, то пароль для доступа к MySQL можно было бы уже иметь на руках. Впрочем, настоящего кул-хацкера эта проблема не сможет надолго остановить!

Вторник, 12-00

Итак, мы имеем скомпиленный скрипт, который умеет коннектиться к MySQL-серверу на store.провайдер.ru (где, судя по всему, и находится то, что нас интересует). Причем в качестве входных параметров этот скрипт использует переменные REMOTE_USER и REMOTE_PASSWD (наш логин/пароль, при помощи которых мы авторизовались на сервере статистики). Интересно, а на какой системе скомпилена эта штука? Набираем "uname -an" и получаем Linux Mandrake 7.0. Класс! У меня на компьютере используется то же самое. Копирую (через shell.cgi) этот скрипт в свой домашний каталог и перекачиваю по FTP к себе на машинку. После изучения кода в HEX-редакторе оказывается, что программа использует libmysqlclient.so.6.0, что коннектится она к store.провайдер.ru:3306 к базе users и что логин/пароль вкомпилированы непосредственно в нее. Помучаться пришлось немало, но в итоге я научил эту программу запускаться на моем компьютере.

Следующим этапом было написание софтинки, которая слушает порт 3306 и в минимальном объеме эмулирует работу MySQL-сервера. Прописав в файл /etc/hosts строчку о том, что мой компьютер - store.провайдер.ru, я научил скрипт коннектиться в то самое место, которое мне было нужно. Не буду описывать подробности, факт тот, что логин/пароль для доступа к MySQL-серверу на store.провайдер.ру я все-таки вытащил.

Среда, 21-30

Предварительно просканировав store.провайдер.ру на наличие открытых портов, я понял, что проще всего добираться до MySQL-базы через хост users.провайдер.ру. Немного поразмыслив, я решил просто подвесить там "трубу", т.е. устроить редирект таким образом, чтобы, законнектившись на users.провайдер.ру:23456, я автоматически попадал на store.провайдер.ru:3306. На сервере http://www.rootshell.org нашлась программа datapipe.c. Загрузив ее на сервер и скомпилив ее через nobody-shell, который мы "поимели" пару часов назад (http://users.провайдер.ру/user_name/shell.cgi) мы получаем готовый транспорт для взлома. Остается только его запустить. Что и делается командой "./datapipe 23456 3306 store.провайдер.ru 2>&1".

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