Просмотр полной версии : найти и прочитать с сервера файл зная логин\пароль на 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 вообще разбираюсь крайне слабо...
можно залить шшел и спокойно найти файл.
Это мой 500-ый пост. всем пива за мой счёт!)
MySQL не имеет привязки к localhost, зайти туда можно с любого места. Зачем так сделали - понятия не имею.
так потомушто сервак который юзает БД на другой машине (на 1ой)...
можно попробовать открыть базу locate, и узнать путь до нужного файла, где ее искать в гугле написано было.
FrozenShade
01.07.2008, 00:53
Шелл некуда заливать, на том серве где MySQL нет больше ничего, все порты закрыты.
Лично я бы ограничил доступ на MySQL только с сервера №1 (да хотя бы фаерволом), на котором сайт, а они всем подряд открыли....
Можно поподробнее, что за locate? Я в MySQL ни бум-бум, мне это слово ни о чём ни говорит к сожалению, намекните о чём речь...
Попробуй открыть /etc/passwd и оттуда вытащить пароль от рута.
Попробуй открыть /etc/passwd и оттуда вытащить пароль от рута.
он ему ничего не даст,т.к. всё закрыто.
В /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 для серверного хоста?
не для хоста а для мускуля ,любой пользователь, которому предоставлена такая привилегия, имеет право прочитать или записать любой файл, который может прочитать или записать сервер MySQL.
т.е права пользователя на котором крутится mysql?
да уж наверно врятли...
Так может стоит узнать сначала, есть ли такие права? если прав нет, то смысла путь к файлу узнавать
select file_priv from mysql.user
FrozenShade
01.07.2008, 22:04
на МуСКуЛ у меня есть пароль рута.
и я проверил, file_priv включён.
т.е. теоретически прочитать файл можно.
вопрос, есть ли средства его найти, если я знаю его название, но не знаю где конкретно установлена та программа, к которой он?
собственно, файл который нужен - это конфиг от одной программы. возможно, можно посмотреть какой-то реестр установленных программ? или в линях такого не предусмотрено?
тебе стоит перенести тему в раздел - уязвимости...
я думаю там точно найдут решение
залей шелл ...
Через что он на него зайдет? ^^
Какая версия MySQL?
сервер не без сайтом .. особено сервер с мускл
сервер не без сайтом .. особено сервер с мускл
Блин прочти что вообще спрашивается в этой теме :)
1 топик
можно попробовать открыть базу 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
Тем самым при удачном стечении обстоятельств найдешь файл, который нужен. А зная полный путь до него и имея права рута на мускуле, прочитать его не составить труда (если прав хватит, конечно) любым из имеющихся способом
хм... а что мешает залить шелл через SQL-inj на первую машину, а с нее уже лезть на вторую, точнее пытаться лезть, ведь порты закрыты только извне (из интернет), а изнутри (с локалки) не может быть чтобы абсолютно все порты были закрыты, кроме мускульного..
просто апдейтишь таблицу из которой первый сайт берет например новости и вставляешь в базу произвольный пхп код, потом с первого сайта вызываешь запрос к базе, в нужную колонку в нужную таблицу и в файл заливается шелл, а там уже смотришь по обстоятельствам и узнаешь где конкретно лежит твой файл, и если прав хватит то просматриваешь его
Вот простенький скрипт:
<?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 :) и такого файла просто нет.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot