01.01.2015 Views

¦þ¹ ¼³¾Šł

¦þ¹ ¼³¾Šł

¦þ¹ ¼³¾Šł

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Þíèêñîèä<br />

ÕÀÊÅÐ\¹52\Ìàé\2003<br />

ÇÀÏÀÄËÎ Â LINUX<br />

Forb (forb@real.xakep.ru)<br />

Íà÷àòü ýòó ñòàòüþ õîòåëîñü<br />

áû ñ áàíàëüíîé,<br />

âñåì èçâåñòíîé ïîñëîâèöû:<br />

"Äåëó - âðåìÿ, ïîòåõå<br />

- ÷àñ". Âåäü ñîãëàñèñü,<br />

òåáå âðåìåíàìè õî÷åòñÿ<br />

ñäåëàòü ÷òî-òî íåõîðîøåå,<br />

äðóãèìè ñëîâàìè,<br />

óñòðîèòü êîìó-íèáóäü<br />

ïîäëÿíêó :). Åñëè òàê, òî<br />

ýòà ñòàòüÿ äëÿ òåáÿ. Èñïîëüçóÿ<br />

ôè÷è òâîåé ëþáèìîé<br />

Îñè (ÿ íàäåþñü, òû<br />

ïîíèìàåøü, î ÷åì èäåò<br />

ðå÷ü) òû ìîæåøü ðåàëüíî<br />

ïðèêîëîòüñÿ íàä òîâàðèùåì<br />

è äàæå â êàêîé-òî<br />

ñòåïåíè óäèâèòü åãî.<br />

Òîëüêî ïîìíè, ÷òî çëîé<br />

àäìèíèñòðàòîð õóæå òàòàðèíà<br />

:), ïîýòîìó îñòåðåãàéñÿ<br />

ëåòÿùèõ â òåáÿ õàáîâ<br />

èëè êëàâèàòóð.<br />

Çàïàäëî<br />

â Linux<br />

Èçó÷àåì íîâûå ïîäëÿíêè!<br />

Èòàê, ðàññìîòðèì äâå çàïîäëÿíñêèå øòó÷êè, êîòîðûå<br />

òîëüêî è æäóò ñâîþ æåðòâó. Ñ ïîìîùüþ ïåðâîé ìîæíî<br />

äîâåñòè ñâîåãî àäìèíà äî ïîëíîé àïàòèè è ìûñëè î òîì,<br />

÷òî íå ñóùåñòâóåò çàùèùåííîé ñèñòåìû, à âòîðàÿ ïðè<br />

îïðåäåëåííûõ îáñòîÿòåëüñòâàõ ìîæåò óâåñòè root-ïàðîëü.<br />

Íî îáî âñåì ïî ïîðÿäêó.<br />

Bug â LD_PRELOAD<br />

Íàçûâàòü ýòó îòëè÷èòåëüíóþ îñîáåííîñòü áàãîì óæå íå<br />

ñîâñåì ïðàâèëüíî. Áàãòðàê çíàåò î íåì, è âñå ñèñòåìû<br />

òîæå :). Íî ïîñëåäñòâèÿ, êîòîðûå îí âûçûâàåò, ìîãóò ðåàëüíî<br />

äîâåñòè òâîåãî àäìèíà äî èíôàðêòà (èëè çàïîÿ,<br />

çàâèñèò îò åãî õàðàêòåðà). Ñìûñë â òîì, ÷òî ïèøåòñÿ<br />

áèáëèîòåêà ñî ñëåäóþùèìè ôóíêöèÿìè: getuid, getgid,<br />

geteuid è getegid, âîçâðàùàþùèå 0. Ïðè óìåëîì èõ ïîäãðóæåíèè<br />

ñèñòåìà îïîçíàåò ïîëüçîâàòåëÿ êàê root. Íî ýòî<br />

òîëüêî íà ïåðâûé âçãëÿä. Íà ñàìîì äåëå, çàìåùåíèå<br />

ñèñòåìíûõ ôóíêöèé èäåò òîëüêî äëÿ íåSUIDíûõ ïðîãðàìì,<br />

òî åñòü áåç çàêðåïëåííîãî íà íèõ ôëàãà +s, ïîçâîëÿþùèõ<br />

âûïîëíÿòü áèíàðíèê c ïðàâàìè owner’à. Íî àäìèíû<br />

îáû÷íî íàðîä ëåíèâûé, áàãòðàêè ÷èòàþò ðåäêî, è<br />

ýòà ôèøêà ìîæåò âûçâàòü ó íèõ íåêîòîðîå óäèâëåíèå =).<br />

Èòàê, áëèæå ê òåëó. Äëÿ îñóùåñòâëåíèÿ ñòîëü ãðÿçíîé<br />

ìàõèíàöèè ñîçäàäèì ïðîãðàììó íà C, ïðèìåðíî ñëåäóþùåãî<br />

ñîäåðæàíèÿ:<br />

int getuid() { return (0); }<br />

int getgid() { return (0); }<br />

int geteuid() { return (0); }<br />

int getegid() { return (0); }<br />

Íå óäèâëÿéñÿ îòñóòñòâèþ â ñèøíèêå ôóíêöèè main() - åå<br />

íåò, òàê êàê ôàéë áóäåì êîìïèëèòü ñ ôëàãîì "shared",<br />

÷òî ïîçâîëèò åìó ïîäêëþ÷àòüñÿ ê äðóãèì áèíàðíèêàì.<br />

Êîìïèëèì:<br />

gcc -shared fake.c -o fake.so,<br />

ïîëó÷àÿ òåì ñàìûì ïîëíîöåííóþ áèáëèîòåêó fake.so (åñòåñòâåííî,<br />

÷òî èìÿ ñèøíèêà äîëæíî áûòü fake.c).<br />

Çàòåì âûïîëíèì íåïîñðåäñòâåííîå ïîäêëþ÷åíèå áèáëèîòåêè.<br />

Íàáåðåì ñëåäóþùóþ ñòðîêó:<br />

LD_PRELOAD=./fake.so /bin/bash<br />

È ÷òî æå ìû òåïåðü âèäèì Çàâåòíûé r00tîâûé prompt,<br />

òèïà [root@server user]#. Íè÷åãî óäèâèòåëüíîãî, ïðè îáðàáîòêå<br />

/etc/profile ñêðèïò óñïåøíî ñêóøàë ïåðåìåííóþ<br />

UID, êîòîðàÿ ñòàëà ðàâíîé íóëþ, ÷òî äàëî ïðàâî âûñòàâëÿòü<br />

prompt äëÿ ðóòà. Íî ôåéê åñòü ôåéê, ïîýòîìó ðàäîâàòüñÿ<br />

ðàíî. Ïðè âûïîëíåíèè êàêîé-ëèáî ïðèâèëåãèðîâàííîé<br />

îïåðàöèè òåáå ñêàæóò, ÷òî ó òåáÿ íåò ïðàâ. Íî<br />

âíåøíèé âèä î÷åíü âïå÷àòëÿåò, è ÿ ñïåðâà ïîäóìàë, ÷òî íà<br />

õàëÿâó ïîëó÷èë ðóòà, çàïóñòèâ îäèí åäèíñòâåííûé ôàéë :).<br />

Åñòåñòâåííî, â íåì âñå áûëî àâòîìàòèçèðîâàíî: êîìïèëÿöèÿ<br />

ïîääåëüíûõ ôóíêöèÿ+çàïóñê bash ñ áèáëèîòåêîé.<br />

Ñàìîå èíòåðåñíîå, îáðàùåíèå ê çàãðóæàåìûì ôóíêöèÿì<br />

ðàáîòàåò äëÿ âñåõ áèíàðíèêîâ áåç +s, â òîì ÷èñëå è id,<br />

ïîýòîìó æåðòâà ìîæåò ÷àñàìè ëþáîâàòüñÿ íà ñâîè ïðàâà<br />

=). Ïðè îáðàùåíèè æå ê áîëåå ñåðüåçíûì ôàéëàì, òàêèì<br />

êàê su, passwd è ò.ä. òåáÿ æäåò îáëîì-c. Äëÿ íèõ èñïîëüçóþòñÿ<br />

òîëüêî ñòàíäàðòíûå ôóíêöèè, äåëàÿ òåì ñàìûì<br />

ñèñòåìó áåçîïàñíîé. Ïîëüçû îò ýòîé øóòêè íèêàêîé, íî<br />

îíà ìîæåò áûòü óìåñòíà â êðèâûõ ñêðèïòàõ, êîòîðûå ïðîâåðÿþò<br />

ïåðåìåííóþ $UID íà íóëåâîå çíà÷åíèå :). Åñëè ýòî<br />

òàê, òî, âîçìîæíî, ñêðèïò ïîçâîëèò òåáå ñîâåðøèòü êàêèåëèáî<br />

ðóòîâûå äåéñòâèÿ. Ïîýòîìó õî÷ó äàòü íàïóòñòâèå<br />

ïðîãðàììèñòàì: íèêîãäà íå äåëàéòå ïðîñòóþ ïðîâåðêó<br />

ïðàâ ïîëüçîâàòåëÿ - âçëîìùèêè òîëüêî ýòîãî è æäóò.<br />

Õî÷åòñÿ îòìåòèòü, ÷òî ýòà ôèøêà ðàáîòàåò íå òîëüêî â<br />

Linux’å, íî è â SunOS è FreeBSD. Âîçìîæíî, â äðóãèõ<br />

ñèñòåìàõ òîæå, íî çà âûøåïåðå÷èñëåííûå ðó÷àþñü, òàê<br />

êàê ñîáñòâåííîðó÷íî òåñòèðîâàë íà íèõ.<br />

Ïèøåì ñâîé /bin/su<br />

Íà ýòîò ðàç çàéìåìñÿ áîëåå ñåðüåçíûìè âåùàìè, à òî÷íåå<br />

ïîïðîáóåì óâåñòè ïàðîëü àäìèíèñòðàòîðà ñèñòåìû,<br />

èìåÿ ïðè ýòîì ïðàâà îáû÷íîãî þçåðà (ðàçóìååòñÿ, ýòîò<br />

ãîòîâèì ëîâóøêó äëÿ þçåðà<br />

1 2 3 4<br />

82 Íüþñû Ôåððóì Inside PC_Zone Âçëîì

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!