Linux за българи: Форуми

Сигурност => Системна Сигурност => Темата е започната от: ludsic в Aug 11, 2009, 23:44



Титла: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: ludsic в Aug 11, 2009, 23:44
Здравейте
Значи имам примерно некво vulnarable apache пуснато на слака.
И идва некво script kiddie дето не разбира нито от асемблер нито от С
(а баща му не рабира как е могло да се пръкне такова идиотче...)
пуска exploit-a който му execute-ва shell на моята машина и по-конкретно
/bin/bash
A въпроса ми е - шела с правата на apache ли се execute-ва или по-точно
казано ако правата на /bin/shell са -rwxr-x--- т.е. на other групата не са дадени права ще може ли да се execute-не /bin/bash
Става въпрос КОНКРЕТНО за /bin/bash
Regards


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: eniac111 в Aug 12, 2009, 00:04
Код
GeSHi (Bash):
  1. su apache || su www-data
==> може...


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: gat3way в Aug 12, 2009, 00:28
Ще се изпълни с правата, с които е работил apache процеса, т.е твърде много вероятно няма да е root.


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: neter в Aug 12, 2009, 00:32
Освен, ако някой не е лепнал setuid бит към изпълнимия файл :) При така показания пример за правата не се забелязва такъв (на мястото на първия "х" щеше да пише "s"), но знае ли се каква е реалната ситуация...


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: gat3way в Aug 12, 2009, 00:35
Това няма да помогне, apache drop-ва привилегиите си и се изпълнява с uid-то указано в конфигурацията. В смисъл, apache ТРЯБВА да се стартира като root, иначе не може да си bind-не listening socket-а на порт 80 (80<1024).  Така че и да го suid-неш, нищо няма да стане. Можеш разбира се да се пробваш да му укажеш в конфигурацията да работи с uid0 обаче последния път като бях пробвал много лошо изрева и отказа да се стартира.


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: ludsic в Aug 12, 2009, 00:37
Значи въпреки че няма права ще се изпълни
т.е. там където е проверката за това дали има права се слага едно jmp да я пропусне така или нещо от сорта
на прав път ли съм ?


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: neter в Aug 12, 2009, 00:38
Хмм... не е задължително да го пуска директно през apache. Може да пусне cron задача.


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: neter в Aug 12, 2009, 00:41
Значи въпреки че няма права ще се изпълни
В ситуацията от твоя пример няма да успее да изпълни /bin/bash, освен ако не получи достъп до реална конзола с root права. Setuid трябва да бъде зададен предварително от теб, за да му пуснеш вратичка. Да си имаш едно наум, когато използваш setuid. Понякога е нужно, но в повечето ситуации трябва да се пести ;)


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: gat3way в Aug 12, 2009, 00:44
Значи ако apache потребителя няма права да изпълни шела, не - няма да го изпълни. Обаче това, което искаш да направиш е ужасно глупаво и ще има много лоши последствия - в общи линии освен ако не вкараш непривилегированите потребители в една група - собственик на /bin/bash - те няма да могат да се логнат. После, /bin/bash не е единствения шел, твърде вероятно има и други - ksh например. Обикновените kiddies трудно ще модифицират шелкода, но някой с малко повече мозък в главата може да го модифицира да изпълнява нещо друго, не точно /bin/bash. Така че това не е точно най-добрия начин да се спасиш от такива неща.


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: ludsic в Aug 12, 2009, 00:54
Значи ако apache потребителя няма права да изпълни шела, не - няма да го изпълни. Обаче това, което искаш да направиш е ужасно глупаво и ще има много лоши последствия - в общи линии освен ако не вкараш непривилегированите потребители в една група - собственик на /bin/bash - те няма да могат да се логнат. После, /bin/bash не е единствения шел, твърде вероятно има и други - ksh например. Обикновените kiddies трудно ще модифицират шелкода, но някой с малко повече мозък в главата може да го модифицира да изпълнява нещо друго, не точно /bin/bash. Така че това не е точно най-добрия начин да се спасиш от такива неща.

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


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: gat3way в Aug 12, 2009, 01:10
Ако някъде имаш 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.


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: gat3way в Aug 12, 2009, 01:15
Обаче като се замисля, май наистина не мога да се сетя за причина apache потребителя да има шел, това със system() не е вярно, там се вика /bin/sh -c .... така че дали в passwd има или няма шел, няма значение.


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: ludsic в Aug 12, 2009, 01:24
Значи стигнахме до същината на идеята :)
Почти написах bash script който рекурсивно да махне от всички файлове пермишъните на other групата и правя така
пускам скрипта махам пермишъните после едно по едно давам права на апача за това което измрънка че му трябва и дори да изпълнят някакъв код на машината ми през bug на апача да не могат да направят кажи речи нищо няма wget, gcc etc. та дори да нямат и шел на който да се мъчат да изпълнят ls примерно което ще върне грешка защото и за това нямат права

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


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: foxb в Aug 12, 2009, 02:19
Странно...

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


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: ludsic в Aug 12, 2009, 02:43
Странно...

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


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: gat3way в Aug 12, 2009, 10:28
Вероятността някой да атакува уеб приложението работещо там е в пъти по-голяма, отколкото това. Apache се разработва отдавна, ползва се от много хора и повечето проблеми са му избистрени отдавна. Дори да се намери някой buffer overflow проблем, в днешно време писането на експлойти не е толкова лесно. Първо, ядрото до голяма степен прави нещата много сложни заради рандомизацията на адресното пространство и заради NX-бита на страниците памет. Второ, glibc от друга страна прави нещата сложни заради това че може да слага canary values в стека и да проверява дали стойността им е същата и ако са презаписани с друга стойност, да крашва програмата. После, атакуващият трябва да знае разни адреси или поне отмествания в паметта от нещо, тези неща са специфични за конкретния build. Ако се открие някой лош проблем и излезе някой зъл експлойт, това бързо ще се разчуе. Така че не виждам какво толкова се притесняваш.


Титла: Re: зъл shell code >:D - options(ае не знам как да кръстя темата :) )
Публикувано от: ludsic в Aug 12, 2009, 13:04
Чак пък да се притеснявам ... :)
Просто ми се занимава с нещо
Току виж ми прищракало да си сложа некъф слак с кернел 2.2.х :)
Информацията винаги е полезна :)