pokus o prunik

Miroslav Geisselreiter mgeisselreiter na spojprojekt-brno.cz
Pátek Červenec 20 10:43:45 CEST 2001


Dobrý den,

nainstaloval jsem na svém fw na RH 6.2CZ server ftpd-BSD-0.3.2-2.i386.rpm a
nastavil přístup jen vybraným firmám. Taky mi zde delší dobu běží
apache-1.3.12-4cs. A teď se někdo pokoušel o průnik. Část logů:

/var/log/secure:
Jul 19 16:19:01 nirvana ftpd-BSD[1368]: warning: can't get client address:
Connection reset by peer
Jul 19 16:19:01 nirvana ftpd-BSD[1368]: refused connect from unknown
Jul 19 20:33:26 nirvana ftpd-BSD[1747]: refused connect from 212.7.64.159

komentář kamaráda:
Přišel paket, který má nejspíš pozměněnou (padělanou ?) IP adresu,
protože server nedokázal doručit odpověď a remcá. Vzhledem k tomu, že
protistraně nedokázal doručit pakety, asi se nic nestalo. Nejspíš byl
spuštěm exploit a nepovedlo se to.
Obrana : není třeba, nic se nestalo.

logy apache: access.log:

64.156.242.30 - - [19/Jul/2001:18:36:24 +0200] "GET
/default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%
u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a
HTTP/1.0" 400 333
216.55.161.166 - - [19/Jul/2001:19:16:53 +0200] "GET
/default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%
u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a
HTTP/1.0" 400 333

a zkoušel to z dalších adres.

komentář kamaráda:
Chuťovka. Někdo se pokouší o průnik - exploit "Buffer underrun".
Programy psané v Cčku trpí jednou nectností. Kdy se na nějaký řetězec
vyhradí paměť, dá se obvykle zapsat víc, protože se to kontroluje
dost ledabyle. Pak se takto zapsané data dostanou do zásobníku a za
určité konstelace se tím dá vnutit a spustit binární kód. Tady ty
znaky "NNN..." mají zaplnit vyhrazný prostor pro URL požadované
stránky a ten zbytek je hexa kód instrukcí.

Jestli jsem to dobře přeložil, je to něco takového :

nop
nop
pop       ax
push      CBD3
add       word [bx+si-90],di
nop
pop       ax
push      CBD3
add       word [bx+si-90],di
nop
pop       ax
push      CBD3
add       word [bx+si-90],di
nop
nop
nop
nop
add       bx,0300
add       byte [bx+si],al
mov       bx,word [bp+di]
push      bx
call      word [bp+di+78]
add       byte [bx+si],al
add       byte [bx+si],al


Machruje se tam se zásobníkem (pop ax - vyzvedne slovo, push CBD3 -
vloží zpátky něco jiného) a pak se pokouší spustit rutinu na adrese
[bp+di+78]. Přitom bp je pomocný ukazatel do zásobníku, takže to může
udělat paseku. Přinejmenším shodit proces (apache).

Naštěstí je toto v Cčku celkem známý problém a všechny slušně napsané
programy si to kontrolují samy a jsuy tedy proti přetečení bufferu
odolné. Vidíš sám, že apache nedělá nic špatného, akorát se diví.

Tomu odpovídají logy apache: error.log:

[Thu Jul 19 18:36:24 2001] [error] [client 64.156.242.30] Client sent
malformed Host header
[Thu Jul 19 19:16:53 2001] [error] [client 216.55.161.166] Client sent
malformed Host header

komentář kamaráda:
V předchozím logu byl opis toho, co klient požadoval a tady apache
brečí (vcelku právem), že mu to nedává smysl. Čili jde o totéž jako v
přechozím případě.

Znáte někdo tento exploit, poradíte, co proti němu mohu dělat? Děkuji za
rady a tipy.

---
Miroslav Geisselreiter
E-mail: mg na gz.cz
http://www.gz.cz
(články a fotky z Indie apod.)



Další informace o konferenci Linux