Web -palvelimen tietoturva / directory climbing

Jos haluan ohjelmoida oman web -palvelimen, niin mietitäänpä, mitä joku krakkeri voisi yrittää varastaakseen tietoja:

Olennaisin on ehkä tämä:

hyökkääjä yrittänee ensiksi jotain tämäntapaista:

http://www.minunpalvelin.fi/../../../../../../etc/passwd

Silloin, kun kyse EI ole hyökkäysyrityksestä, onko tämä laillinen pyyntö vai ei:

http://www.minunpalvelin.fi/images/../index.html

Eli onko syytä hylätä kaikki pyynnöt, joissa merkkijonon osana on "/../", vai onko tuon sisällyttäminen pyyntöön joissain tapauksissa mahdollista muusta syystä kuin että kyse on yrityksestä murtaa palvelimen tietoturva ?

Entä, jos tuo on hoidettu?

Voiko myös tämä merkkjono johtaa onnistuneeseen hyökkäykseen, jos sitä ei ole erikseen estetty:

http://www.minunpalvelin.fi/../etc/passwd

tuo . on www-url-encoded -koodauksella sama kuin "."

Entä onko muita tapoja, joilla hyökkääjä voisi yrittää murtautua johonkin sellaiseen hakemistoon, jota EI ole tarkoitettu julkiseksi?

esim:

http://www.minunpalvelin.fi/C|/windows/system32/secretfile.dat

Win95:ssa oli komentorivikomento TRUENAME.

Sen lähin vastine Windows API:ssa on GetFullPathName,

itseasiassa GetFullPathNameA ja GetFullPathNameW.

Valitettavasti tuo funktio ei huoli parametriksi suhteellista kotihakemistoa, vaan se käyttää suhteellisena kotihakemistona oletushakemistoa (GetCurrentDirectory ja SetCurrentDirectory).

Eli:

1) mitkä kaikki ovat sellaisia koodauksia, joilla voisi yrittää saada aikaiseksi saman kuin suoraan "/../" ?

2) onko muita vaarallisia merkkijonoja, miten esim "/.../" tai "/..../" ?

entä "/test../" - miten näihin pitäisi suhtautua?

Vai kannattaako hylätä kaikki "/..mitätahansa" -tyyppiset merkkijonot ?

Wikipediassa oli ohje:

muunna ensin vaikkapa "index.html" muotoon "C:\PUBLIC_HTML\index.html"

Varmista sitten, että muunnettu (ja josta on poistettu mikä tahansa "/../" -esiintymä) aina alkaa "C:\PUBLIC_HTML\".

Windowsissa tuo GetFullPathName olisi hyvä tapa muuntaa jono siten, että mikä tahansa "/../" -osa ratkaistaan auki, mutta huonona puolena on sen riippuvuus sen hetkisestä oletushakemistosta.

Toinen vaihtoehto olisi kirjoittaa tuo muunnin itse.

Mutta JOS sen kirjoittaa itse, ongelmana on se, että riittääkö varoa tuota "/../" vai onko muitakin vaarallisia merkkijonoja, jos niin mitä ?
2149
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

Yksityiset tiedostot sijoitetaan tietysti eri hakemistoon, jonne ei ole päästy julkisesta verkosta.

Jos olisi hakemistoja

/dir-1
/dir-2
/public
/dir-3
/etc

niistä vain /public olisi julkisesti käytettävissä. Julkinen osoite sille olis muotoa http://esimerkki.fi/

Äänestä

Onkos /public hakemiston alihakemistot yksityisiä vai vaatiiko kokonaan oman juurihakemiston? Eli käykö /public/yksityinen/ vai täytyykö hakemiston olla /dir-1/ ?

Äänestä

Kommentoi aloitusta


Web_palvelimen_koodaus kirjoitti:

Jos haluan ohjelmoida oman web -palvelimen, niin mietitäänpä, mitä joku krakkeri voisi yrittää varastaakseen tietoja:

Olennaisin on ehkä tämä:

hyökkääjä yrittänee ensiksi jotain tämäntapaista:

http://www.minunpalvelin.fi/../../../../../../etc/passwd

Silloin, kun kyse EI ole hyökkäysyrityksestä, onko tämä laillinen pyyntö vai ei:

http://www.minunpalvelin.fi/images/../index.html

Eli onko syytä hylätä kaikki pyynnöt, joissa merkkijonon osana on "/../", vai onko tuon sisällyttäminen pyyntöön joissain tapauksissa mahdollista muusta syystä kuin että kyse on yrityksestä murtaa palvelimen tietoturva ?

Entä, jos tuo on hoidettu?

Voiko myös tämä merkkjono johtaa onnistuneeseen hyökkäykseen, jos sitä ei ole erikseen estetty:

http://www.minunpalvelin.fi/../etc/passwd

tuo . on www-url-encoded -koodauksella sama kuin "."

Entä onko muita tapoja, joilla hyökkääjä voisi yrittää murtautua johonkin sellaiseen hakemistoon, jota EI ole tarkoitettu julkiseksi?

esim:

http://www.minunpalvelin.fi/C|/windows/system32/secretfile.dat

Win95:ssa oli komentorivikomento TRUENAME.

Sen lähin vastine Windows API:ssa on GetFullPathName,

itseasiassa GetFullPathNameA ja GetFullPathNameW.

Valitettavasti tuo funktio ei huoli parametriksi suhteellista kotihakemistoa, vaan se käyttää suhteellisena kotihakemistona oletushakemistoa (GetCurrentDirectory ja SetCurrentDirectory).

Eli:

1) mitkä kaikki ovat sellaisia koodauksia, joilla voisi yrittää saada aikaiseksi saman kuin suoraan "/../" ?

2) onko muita vaarallisia merkkijonoja, miten esim "/.../" tai "/..../" ?

entä "/test../" - miten näihin pitäisi suhtautua?

Vai kannattaako hylätä kaikki "/..mitätahansa" -tyyppiset merkkijonot ?

Wikipediassa oli ohje:

muunna ensin vaikkapa "index.html" muotoon "C:\PUBLIC_HTML\index.html"

Varmista sitten, että muunnettu (ja josta on poistettu mikä tahansa "/../" -esiintymä) aina alkaa "C:\PUBLIC_HTML\".

Windowsissa tuo GetFullPathName olisi hyvä tapa muuntaa jono siten, että mikä tahansa "/../" -osa ratkaistaan auki, mutta huonona puolena on sen riippuvuus sen hetkisestä oletushakemistosta.

Toinen vaihtoehto olisi kirjoittaa tuo muunnin itse.

Mutta JOS sen kirjoittaa itse, ongelmana on se, että riittääkö varoa tuota "/../" vai onko muitakin vaarallisia merkkijonoja, jos niin mitä ?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu