PDA

Просмотр полной версии : найти и прочитать с сервера файл зная логин\пароль на mysql и больше ничего


FrozenShade
30.06.2008, 16:59
Возможно, я пишу не в тот раздел, поправьте меня если что.

Ситуация: "жертва" - две машины, обе имеют выходы в инет.
На 1й крутится: виндаХР, апач, RAdmin ftp, mail и ещё куча всякой моелочи.
На 2й крутится: линь и MySQL. Все другие порты кроме 3306 тупо закрыты.
MySQL не имеет привязки к localhost, зайти туда можно с любого места. Зачем так сделали - понятия не имею.

Методами вдумчивого копания сайта с 1й машины найден пароль рута на MySQL. Никуда больше пароль не подходит.
Т.Е. всё что у меня есть - это root\pass на MySQL.

Что нужно - считать файл со 2й машины (на которой MySQL).
Собственно вопрос: можно ли, зная название файла но не зная где он лежит, его найти?
Всё, что мне нужно - это получить содержимое этого файла. Но пути к нему я не знаю.
А в MySQL и SQL вообще разбираюсь крайне слабо...

mr.The
30.06.2008, 17:03
можно залить шшел и спокойно найти файл.


Это мой 500-ый пост. всем пива за мой счёт!)

Zitt
30.06.2008, 18:13
MySQL не имеет привязки к localhost, зайти туда можно с любого места. Зачем так сделали - понятия не имею.
так потомушто сервак который юзает БД на другой машине (на 1ой)...

ShAnKaR
30.06.2008, 22:30
можно попробовать открыть базу locate, и узнать путь до нужного файла, где ее искать в гугле написано было.

FrozenShade
01.07.2008, 00:53
Шелл некуда заливать, на том серве где MySQL нет больше ничего, все порты закрыты.
Лично я бы ограничил доступ на MySQL только с сервера №1 (да хотя бы фаерволом), на котором сайт, а они всем подряд открыли....

Можно поподробнее, что за locate? Я в MySQL ни бум-бум, мне это слово ни о чём ни говорит к сожалению, намекните о чём речь...

Solker
01.07.2008, 02:02
Попробуй открыть /etc/passwd и оттуда вытащить пароль от рута.

scrat
01.07.2008, 02:12
Попробуй открыть /etc/passwd и оттуда вытащить пароль от рута.
он ему ничего не даст,т.к. всё закрыто.

Naydav
01.07.2008, 02:18
В /etc/passwd пароли уже давно не храняться , в /etc/passwd в большинстве случаев хранится только логин-лист
теперь пароли(хеши) в /etc/shadow(в FreeBSD - /etc/master.passwd), если ничего не путаю..

вот вам пример /etc/passwd
http://www.ntfnt.ru/cgi-bin/creator.pl?bf=../../../../etc/passwd

Если мы будем знать даже весь путь к файлу, как мы сможем посмотреть его??? если все к 2 машине закрыто?
Через LOAD DATA INFILE ?
Но ведь для применения команды LOAD DATA INFILE к серверным файлам необходимо обладать привилегиями FILE для серверного хоста?

bxN5
01.07.2008, 04:08
не для хоста а для мускуля ,любой пользователь, которому предоставлена такая привилегия, имеет право прочитать или записать любой файл, который может прочитать или записать сервер MySQL.

Naydav
01.07.2008, 04:17
т.е права пользователя на котором крутится mysql?
да уж наверно врятли...
Так может стоит узнать сначала, есть ли такие права? если прав нет, то смысла путь к файлу узнавать
select file_priv from mysql.user

FrozenShade
01.07.2008, 22:04
на МуСКуЛ у меня есть пароль рута.
и я проверил, file_priv включён.

т.е. теоретически прочитать файл можно.
вопрос, есть ли средства его найти, если я знаю его название, но не знаю где конкретно установлена та программа, к которой он?

собственно, файл который нужен - это конфиг от одной программы. возможно, можно посмотреть какой-то реестр установленных программ? или в линях такого не предусмотрено?

Naydav
02.07.2008, 00:33
тебе стоит перенести тему в раздел - уязвимости...
я думаю там точно найдут решение

Doom123
02.07.2008, 01:02
залей шелл ...

Solker
02.07.2008, 02:02
залей шелл ...
Через что он на него зайдет? ^^

Какая версия MySQL?

Doom123
02.07.2008, 02:26
сервер не без сайтом .. особено сервер с мускл

Naydav
02.07.2008, 02:44
сервер не без сайтом .. особено сервер с мускл
Блин прочти что вообще спрашивается в этой теме :)
1 топик

krypt3r
02.07.2008, 08:35
можно попробовать открыть базу locate, и узнать путь до нужного файла, где ее искать в гугле написано было.

Если юзер, от имени которого запущен мускуль, не входит в группу slocate, а по дефолту это так, то даже если базу отыщет, он ее не прочитает

# ls -l /var/lib/slocate
-rw-r----- 1 root slocate 3844677 Июн 17 14:11 slocate.db

можно запустить мускульный клиент из консоли (со своей тачки)

$ mysql -hserver -uroot -ppassword

и попробовать ввести команду

mysql> \! find / -name '*filename*' -type f -print

Тем самым при удачном стечении обстоятельств найдешь файл, который нужен. А зная полный путь до него и имея права рута на мускуле, прочитать его не составить труда (если прав хватит, конечно) любым из имеющихся способом

gisTy
03.07.2008, 09:19
хм... а что мешает залить шелл через SQL-inj на первую машину, а с нее уже лезть на вторую, точнее пытаться лезть, ведь порты закрыты только извне (из интернет), а изнутри (с локалки) не может быть чтобы абсолютно все порты были закрыты, кроме мускульного..
просто апдейтишь таблицу из которой первый сайт берет например новости и вставляешь в базу произвольный пхп код, потом с первого сайта вызываешь запрос к базе, в нужную колонку в нужную таблицу и в файл заливается шелл, а там уже смотришь по обстоятельствам и узнаешь где конкретно лежит твой файл, и если прав хватит то просматриваешь его

FraiDex
03.07.2008, 09:57
Вот простенький скрипт:
<?php
file_get_contents('/etc/passwd');
$l = mysql_connect("localhost", "root");
mysql_query("CREATE DATABASE a");
mysql_query("CREATE TABLE a.a (a varchar(1024))");
mysql_query("GRANT SELECT,INSERT ON a.a TO 'aaaa'@'localhost'");
mysql_close($l); mysql_connect("localhost", "aaaa");
mysql_query("LOAD DATA LOCAL INFILE '/etc/passwd' INTO TABLE a.a");
$result = mysql_query("SELECT a FROM a.a");
while(list($row) = mysql_fetch_row($result))
print $row . chr(10);
?>

FrozenShade
03.07.2008, 21:44
Шелл не помог, с первой машины (сайт) на вторую (база) есть доступ только на базу.
Локатор - не смог разобраться :(

Походу бесполезняк...

...а последний приведённый скрипт, он, простите, к чему?
php там вертится на одной машине, загрузить оттуда etc/passwwd невозможно потому что там WinXP :) и такого файла просто нет.