Автор Тема: зъл shell code >:D - options(ае не знам как да кръстя темата :) )  (Прочетена 4195 пъти)

ludsic

  • Напреднали
  • *****
  • Публикации: 71
    • Профил
Здравейте
Значи имам примерно некво vulnarable apache пуснато на слака.
И идва некво script kiddie дето не разбира нито от асемблер нито от С
(а баща му не рабира как е могло да се пръкне такова идиотче...)
пуска exploit-a който му execute-ва shell на моята машина и по-конкретно
/bin/bash
A въпроса ми е - шела с правата на apache ли се execute-ва или по-точно
казано ако правата на /bin/shell са -rwxr-x--- т.е. на other групата не са дадени права ще може ли да се execute-не /bin/bash
Става въпрос КОНКРЕТНО за /bin/bash
Regards
Активен

B4 02 B2 4C CD 21 B2 61 CD 21 B2 6D CD 21 B2 65 CD 21 B2 72 CD 21 B4 4C B0 00 CD 21 00 00 00 00

eniac111

  • Напреднали
  • *****
  • Публикации: 263
  • Distribution: Debian / Ubuntu
  • Window Manager: Enlightenment DR16 / KDE4
    • Профил
    • WWW
Код
GeSHi (Bash):
  1. su apache || su www-data
==> може...
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Ще се изпълни с правата, с които е работил apache процеса, т.е твърде много вероятно няма да е root.
Активен

"Knowledge is power" - France is Bacon

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Освен, ако някой не е лепнал setuid бит към изпълнимия файл :) При така показания пример за правата не се забелязва такъв (на мястото на първия "х" щеше да пише "s"), но знае ли се каква е реалната ситуация...
« Последна редакция: Aug 12, 2009, 00:36 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Това няма да помогне, apache drop-ва привилегиите си и се изпълнява с uid-то указано в конфигурацията. В смисъл, apache ТРЯБВА да се стартира като root, иначе не може да си bind-не listening socket-а на порт 80 (80<1024).  Така че и да го suid-неш, нищо няма да стане. Можеш разбира се да се пробваш да му укажеш в конфигурацията да работи с uid0 обаче последния път като бях пробвал много лошо изрева и отказа да се стартира.
Активен

"Knowledge is power" - France is Bacon

ludsic

  • Напреднали
  • *****
  • Публикации: 71
    • Профил
Значи въпреки че няма права ще се изпълни
т.е. там където е проверката за това дали има права се слага едно jmp да я пропусне така или нещо от сорта
на прав път ли съм ?
Активен

B4 02 B2 4C CD 21 B2 61 CD 21 B2 6D CD 21 B2 65 CD 21 B2 72 CD 21 B4 4C B0 00 CD 21 00 00 00 00

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Хмм... не е задължително да го пуска директно през apache. Може да пусне cron задача.
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Значи въпреки че няма права ще се изпълни
В ситуацията от твоя пример няма да успее да изпълни /bin/bash, освен ако не получи достъп до реална конзола с root права. Setuid трябва да бъде зададен предварително от теб, за да му пуснеш вратичка. Да си имаш едно наум, когато използваш setuid. Понякога е нужно, но в повечето ситуации трябва да се пести ;)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Значи ако apache потребителя няма права да изпълни шела, не - няма да го изпълни. Обаче това, което искаш да направиш е ужасно глупаво и ще има много лоши последствия - в общи линии освен ако не вкараш непривилегированите потребители в една група - собственик на /bin/bash - те няма да могат да се логнат. После, /bin/bash не е единствения шел, твърде вероятно има и други - ksh например. Обикновените kiddies трудно ще модифицират шелкода, но някой с малко повече мозък в главата може да го модифицира да изпълнява нещо друго, не точно /bin/bash. Така че това не е точно най-добрия начин да се спасиш от такива неща.
Активен

"Knowledge is power" - France is Bacon

ludsic

  • Напреднали
  • *****
  • Публикации: 71
    • Профил
Значи ако apache потребителя няма права да изпълни шела, не - няма да го изпълни. Обаче това, което искаш да направиш е ужасно глупаво и ще има много лоши последствия - в общи линии освен ако не вкараш непривилегированите потребители в една група - собственик на /bin/bash - те няма да могат да се логнат. После, /bin/bash не е единствения шел, твърде вероятно има и други - ksh например. Обикновените kiddies трудно ще модифицират шелкода, но някой с малко повече мозък в главата може да го модифицира да изпълнява нещо друго, не точно /bin/bash. Така че това не е точно най-добрия начин да се спасиш от такива неща.

Значи първо тва си го измислих сам за да бъде по-интересен и смилаем въпроса ми
И сам се досетих проблема с потребителите но все пак благодаря за напомнянето :)
Идеята ми е да разкарам колкото се може повече неща които да може да пуска user apache httpd или там още квито могат да бъдат а при положение че освен root друг user  на машината не се ползва мисля че няма да е чак такъв проблем и другото което искам да попитам
аджаба на apache трябва ли му какъвто и да било шел
Активен

B4 02 B2 4C CD 21 B2 61 CD 21 B2 6D CD 21 B2 65 CD 21 B2 72 CD 21 B4 4C B0 00 CD 21 00 00 00 00

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Ако някъде имаш PHP скрипт. който вика system() предполагам ще му трябва.

Ама още веднъж ти казвам, не е достатъчно да отрежеш възможността уеб сървъра да изпълнява шелове. Шелкода спокойно може да изпълнява wget и тогава задачата пак се свежда до същото. Ако примерно ползваш PHP, шелкода може дори да си създаде файл и да изпише в него PHP код - резултатът ще бъде че ще могат да си изпълняват после неща през браузъра. Не е много сложно, ако не вярваш че е възможно - ето ти един пример:

http://www.gat3way.eu/poc/shellcode/test1.c.txt

x86 шелкод, който презаписва /var/www/index.html с "pwn3d by gat3way". Със същият успех може да се презапише с нещо от сорта на "<? eval(base64_decode($_GET['param'];);?> да речем.


В крайна сметка мисля, че това, което ти трябва се нарича SELinux.
Активен

"Knowledge is power" - France is Bacon

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Обаче като се замисля, май наистина не мога да се сетя за причина apache потребителя да има шел, това със system() не е вярно, там се вика /bin/sh -c .... така че дали в passwd има или няма шел, няма значение.
Активен

"Knowledge is power" - France is Bacon

ludsic

  • Напреднали
  • *****
  • Публикации: 71
    • Профил
Значи стигнахме до същината на идеята :)
Почти написах bash script който рекурсивно да махне от всички файлове пермишъните на other групата и правя така
пускам скрипта махам пермишъните после едно по едно давам права на апача за това което измрънка че му трябва и дори да изпълнят някакъв код на машината ми през bug на апача да не могат да направят кажи речи нищо няма wget, gcc etc. та дори да нямат и шел на който да се мъчат да изпълнят ls примерно което ще върне грешка защото и за това нямат права

//offtopic
тъпите еврокомци днес за 6-ти път си спират някой от сървърите за 5-10 минути
да им .... и .... .... админи дето имат :)
Активен

B4 02 B2 4C CD 21 B2 61 CD 21 B2 6D CD 21 B2 65 CD 21 B2 72 CD 21 B4 4C B0 00 CD 21 00 00 00 00

foxb

  • Напреднали
  • *****
  • Публикации: 175
    • Профил
    • WWW
Странно...

Защо всичките тези упражнения като можеш просто да си обновиш апаче?

ludsic

  • Напреднали
  • *****
  • Публикации: 71
    • Профил
Странно...

Защо всичките тези упражнения като можеш просто да си обновиш апаче?
Защото ми се занимава с нещо или по точно учи ми се нещо а не се хващам да науча квото и да било ако нямам конкретна задача
За тва съм се сетил сега и тва нищя
Търсил съм някакви exploit-и за apache и съм мислил дори да си сложа същата версия за да мога да си го exploit-на и да видя кво може да се направи и кво не може
От това което може да се направи как да се спре само че не можах да си намеря читав и тва остана в миналото
Затова питам тука хората които са се занимавали и знаят да кажат.
А и ми даде друга идея да си напиша script който проверява дали има нова версия да я сваля и да ми прашта смс а защо пък не направо и да пачва :)
Активен

B4 02 B2 4C CD 21 B2 61 CD 21 B2 6D CD 21 B2 65 CD 21 B2 72 CD 21 B4 4C B0 00 CD 21 00 00 00 00

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Tutorial for kernel options
Настройка на програми
HipHop 0 3149 Последна публикация Mar 12, 2002, 21:49
от HipHop
Source Code
Общ форум
Йордан 5 3677 Последна публикация Nov 28, 2003, 15:26
от Йордан
format code
Web development
Йордан 8 4771 Последна публикация Jun 02, 2004, 22:04
от Mecho_Puh
Mandriva 2007 internet options
Настройка на хардуер
G_baby 3 2690 Последна публикация Sep 03, 2007, 20:12
от cartman
Apache 2.1 error: options indexes not allowed here
Настройка на програми
lod 2 2586 Последна публикация Mar 13, 2008, 18:50
от lod