Re: Niebezpieczna dziura w httpd

Autor: Tomasz Surmacz (ts_at_papaja.ict.pwr.wroc.pl)
Data: Tue 28 Feb 1995 - 02:02:09 MET


Szymon Sokol (szymon_at_uci.agh.edu.pl) wrote:
> Krzysztof Mlynarski (krzysio_at_hebe.umcs.lublin.pl) wrote:
> : np. rozsylania kopiujacych sie e-mail'i... istnieja prostsze metody
> : tworzenia tego typu poczty nie wykorzystujace zawilych praktyk ze stosem
> : programu.
>
[...]
> i dostepne online. Mechanizm bledu w fingerd byl *dokladnie* ten sam co teraz
> w httpd - podajac demonowi string dluzszy niz bufor na ten string przeznaczony
> mozna bylo nadpisac stos, wlozyc zamiast wlasciwego adresu z procedury adres
> wskazujacy na dalsza czesc naszego stringu, a w niej zawrzec kawalek kodu
> robiacego co sie nam zywnie podoba. Np. "bootstrap loader" worma, co wlasnie
> zrobil RTM. Nie potrzeba nawet wykonywac zadnych komend shella - znacznie
> prosciej zrobic:
> FILE *f=fopen(".rhosts","w"); fprintf(f,"moj.host.edu ja\n"); fclose(f);
> i zalatwione... Taki kawalek kodu jak powyzej to gora kilkaset bajtow
> nawet na najbardziej rozrzutnym RISCu.

Co racja, to racja... Przygotownie kilku takich kawalkow kodu (a to dla
RISCa, a to dla Intela, a to dla SUNow, HP czy jeszcze innych maszyn)
to nie zaden problem. Potem tylko skrypt do wywolania wszystkich po
kolei na atakowanym serwerze WWW i robimy co chcemy...

Ale jak slusznie zauwazyl Krzysio, tego typu konta (tzn. konta z ktorych
dzialaja serwery - np. 'nobody' albo 'http' itp.) powinny miec shell-a
typu /bin/false (lub nieistniejacego), home-directory posiadane przez
root-a i najlepiej z zerowej dlugosci .rhosts (tez posiadanym przez
roota), no i W ZADNYM WYPADKU nie dzialac jako root, tylko jako
specjalny uid, ktory zbyt wiele nie moze. Wyjatkiem jest jedynie ftp,
ale to jest zupelnie inna historia.

Niestety przyklad httpd po raz kolejny pokazuje, ze zamiast strcpy()
nalezy wszedzie stosowac strncpy(), a juz obowiazkowo wtedy, gdy
kopiujemy dane 'wejsciowe', tzn. nie zaszyte w programie, lecz podane
przez uzytkownika.

Przy okazji - poprawka ze zmiana max. dlugosci z 256 na 8192 nie wnosi
nic nowego (problem jest dalej ten sam, tylko trzeba wiecej napchac na
wejsciu, zeby wejsc na stos) - za to mamy na wlasny program juz nie 256
bajtow, a 8kB. Tu sie zmiesci nawet maly demon a'la ftp, albo inna
zaraza, ktora bez udzialu .rhosts np. polaczy sie z powrotem, sciagnie
to, co trzeba, moze jeszcze po drodze zrobi 'exec ("gcc", argumenty...)'
i sobie skompiluje wiekszy i inteligentniejszy kawalek, nastepnie
poszuka w dokumentach dostepnych dla serwera httpd odpowiednich URLi i
adresow innych serwerow WWW, nastepnie...

... tu kazdy sam moze popuscic wodze fantazji.

Przypominam tylko, ze nazwa www-worm juz istnieje i oznacza cos
zupelnie innego. ;-)

Tomek

-- 
 _________  Tomasz R. Surmacz * ---- * http://www.ict.pwr.wroc.pl/~tsurmacz/
(_   _' __) Institute of Engineering Cybernetics, * tsurmacz_at_ict.pwr.wroc.pl
  |  (__  \ Technical University of Wroclaw, Poland  * ------- * irc: TomekS
  |__(____/ Snail-mail:  ul. Janiszewskiego 11/17,  50-372  Wroclaw,  Poland


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Wed 19 May 2004 - 15:49:56 MET DST