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