. Marko Lampret » 2008 » Maj
27.05.
2008

Ime? Priimek? Morda znamka monitorja, avtomobila, mobitela? Je vaše geslo izjemno enostavno in se verjetno nahaja nekje v slovarju?

Zakaj je uporaba kompleksnih gesel tako pomembna? V slučaju, da izkoristi varnostno luknjo v sistemu, lahko napadalec pridobi dostop do datoteke ali baze kjer so shranjena uporabniška imena in gesla. Ta gesla so sicer kriptirana, a obstajajo metode za razbijanje zaščite.

Gesla v spletnih aplikacijah so velikokrat kriptirana z MD5 algoritmom. Ta algoritem ustvari šifrirano geslo, ki ga je ob upoštevanju varnostnih priporočil skoraj nemogoče razbiti. V praksi se žal izkaže, da v primeru uporabe “slabih” gesel lahko šifrirano geslo razbijemo že v nekaj urah, ali še prej. Gesla, ki so zelo pogosta, pa lahko prosto dobimo na spletu. Za kriptiranje mojih primerov bom uporabil spletno stran http://www.md5encryption.com/.

Vzemimo uporabnika “markol” z geslom “marko”. Predpostavimo, da je geslo v taki obliki dovoljeno za uporabo v sistemu. Napadalec, ki bi dobil dostop do datoteke z gesli, bi v tej datoteki videl sledeč zapis, ki predstavlja uporabniško ime in kriptirano geslo:

markol:c28aa76990994587b0e907683792297c

Na spletu je moč dobiti baze kriptiranih gesel, kjer so shranjena najpogosteje uporabljena gesla, tako da napadalcu ni treba razbijati gesla. Primer take strani je http://gdataonline.com/seekhash.php. Če v okence za iskanje vpišem hash c28aa76990994587b0e907683792297c, se na zaslonu pojavi rezultat:

Hash MD5 \

Podobno se zgodi, če geslu pripišem letnico rojstva. Geslo je v tem primeru sicer dovolj dolgo, a je žal tako pogosto uporabljano, da se ga brez težav dobi v bazah na spletu. Te baze predstavljajo prvi korak napadalca k razbijanju pridobljenega gesla. Rezultati so vidni takoj, napadalcu ni treba niti poseči po programu za razbijanje gesel.

Marko82 md5

Zgoraj omenjeni primer predstavlja le del možnosti, ki jih imajo napadalci. Največja pomanjkljivost gesla je predvsem dolžina (oz. kratkost). Napadalec lahko nad geslom izvede “brute force” metodo za razbijanje gesel. To je v bistvu ugibanje gesla s poizkušanjem naključnih kombinacij nizov znakov, katerih MD5 bi lahko ustrezal geslu. Poglejmo, koliko časa potrebuje napadalec z zelo hitrim računalnikom za razbitje gesla z ugibanjem kombinacij:

dolžina: 4 znaki, nabor znakov: a-z -> manj kot 1 sekunda
dolžina: 4 znaki, nabor znakov: a-z A-Z 0-9 + simboli -> 4.8 sekunde
dolžina: 5 znakov, nabor znakov: a-z A-Z -> 25 sekund
dolžina: 6 znakov, nabor znakov: a-z A-Z 0-9 -> 1 ura
dolžina: 6 znakov, nabor znakov: a-z A-Z 0-9 + simboli -> 11 ur
dolžina: 7 znakov, nabor znakov: a-z A-Z 0-9 + simboli -> 6 tednov
dolžina: 8 znakov, nabor znakov: a-z A-Z 0-9 -> 5 mesecev
dolžina: 8 znakov, nabor znakov: a-z A-Z 0-9 + simboli -> 10 let
dolžina: 9 znakov, nabor znakov: a-z A-Z 0-9 + simboli -> 1000 let
dolžina: 10 znakov, nabor znakov: a-z A-Z 0-9 -> 1700 let
dolžina: 10 znakov, nabor znakov: a-z A-Z 0-9 + simboli -> 91800 let

Podobne tabele so tudi na naslovu: http://www.lockdown.co.uk/?pg=combi&s=articles

Poleg ugibanja kombinacij “na slepo” se lahko napadalec posluži tudi slovarjev in s tem pohitri čas ugibanja.

Geslo naj zadosti naslednjim kriterijem:
- dolžina vsaj 8 znakov
- uporaba velikih in malih črk ter številk
- geslo ne vsebuje besed, ki se jih dobi v slovarjih, niti imen znamk

Še en dober namig za izbiro varnega gesla, ki si ga ni težko zapomniti:

vir: http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/security-guide/s1-wstation-pass.html

1. izberite si verz iz pesmi, ki vam je všeč, npr: The sun is sleeping quietly, Once upon a century

2. prepišite prve znake v besedi (lahko tudi ločila) in upoštevajte velike-male črke: Tsisq,Ouac

3. zamenjajte črke s številkami (o=0, i=1, a=4, s=5, b=8, …), in dobili smo odlično geslo, ki si ga lahko zapomnimo s pomočjo verza: T515q,0u4c.

21.05.
2008

Malo sem se igral z iskalniki in poiskušal priti do raznih pomembnih osebnih podatkov, da vidim kdo v naši državi najbolj jezi informacijsko pooblaščenko. Iskal sem na razne načine s pomočjo Googla in Najdi.si, da bi dobil kar čimveč podatkov o naključnih posameznikih. Spreten prevarant bi te podatke lahko uporabil za krajo identitete.

Kar sem ugotovil, me je precej šokiralo.

Zanimivo je, kako na spletu ležijo nezaščiteni in javnosti na voljo nekateri sicer zaupni in pomembni dokumenti. Lep primer so pogodbe, ki sem jih prikazal spodaj. Nekaj spretnih prijemov pri iskanju je bilo takoj uspešnih in prišel sem do podatkov posameznikov, ki so sodelovali pri prodaji nepremičnin. Na vseh spodaj prikazanih pogodbah so napisani sledeči podatki: ime, priimek, naslov, davčna št. občana in matična številka občana.

Namenoma sem vse podatke skril, da nebi prišlo do zlorab.

Zasebnost

Pogodba 2

Pogodba 4

Pogodba 3

 

Kaj bi lahko v zgornjih primerih odgovorni naredili, da iskalniki sploh 
nebi prišli do osebnih podatkov?

1. Najlažja različica: administrativna delavka bi že pred objavo dokumentov na spletni strani iz njih izbrisala  osebne podatke.

2. S pomočjo datoteke robots.txt bi skrbnik spletne strani lahko iskalnikom prepovedal dostop do map, kjer se nahajajo dokumenti z osebnimi podatki:

# Začetek robots.txt datoteke
User-agent: *
Disallow: /mapa_z_dokumenti
# Konec datoteke

3. Datoteke, ki vsebujejo osebne podatke, bi objavili le na intranetnih straneh, zaščitenih z gesli.

 

Najslabša možna oblika neprimerne objave osebnih podatkov:

transakcijski račun

Brez večjih naporov sem preko iskalnika prišel do nekaj pogodb, kjer je poleg zgoraj navedenih osebnih podatkov tudi podatek o transakcijskem računu pogodbenih strank – navedeni sta številka in poslovalnica banke, kjer je račun odprt.

Se spomnite filma The Net? “To se nikakor ne more zgoditi” je bilo takrat moje mišljenje. V preteklih letih sem ga spremenil. Kraja identitete in varovanje podatkov sta postali pomembni temi, ki se jih mora zavedati vsak uporabnik spletnih storitev.

Se spomnite Clarksona? S pomočjo njegovega imena, rojstnega datuma in številke transakcijskega računa mu je neznanec z bančnega računa prenesel 500 funtov na račun dobrodelne organizacije.

Samo vprašanje časa je, kdaj se bo podoben primer pojavil pri nas. Dvomim pa, da bo denar pristal v rokah tistih, ki ga potrebujejo (kot v primeru Clarksona).

19.05.
2008

[ironija on] Podetjema MSI in ASUS gre očitno tako slabo, da si ne morejo privoščiti niti fotografa za njihov promocijski material. [ironija off]

Gre za reklamni material za nove sub-notebooke obeh podjetij – Asus EEE PC in MSI Wind.

Uporabili so kar generično fotografijo mladostnika z iBook-om, dodali svoj logotip, ter z grafičnimi orodji malo spremenili poteze prenosnika na fotografiji. Po podrobnejšem pregledu fotografij se opazi tudi, da je uporabnik dobil malce temnejšo polt. :)

Resnično dvomim, da se je splačal prihranek tistih nekaj 100€, ki bi jih sicer porabili za profesionalnega fotografa.

Ali pač?? Konec koncev zdaj te fotografije krožijo po celem medmrežju. :)
 

Fotoshop Asus in Msi

In še originalna fotografija:

vir:
http://www.engadget.com/2008/05/18/asus-and-msi-have-some-splaining-to-do/

18.05.
2008

Opažam, da velika večina začetnikov pri postavljanju predlog še vedno uporablja tabele. Verjamem, da je lažje začeti s tabelami in da nudijo takojšnje, lahko predvidljive rezultate. Ko pa enkrat stran postane obširna, se izkaže, da so tabele prava mora. Delanje popravkov postane precej oteženo, saj se je v kodi težko orientirati.

DIV značka nam nudi odlično nadomestilo za tabele. Treba se je le naučiti nekaj osnovnih CSS lastnosti in se zavedati teža, ki ji povzroča IE6. Ko to osvojimo, je vse lažje.

Kako centriramo stran s fiksno širino s pomočjo DIV značke?

Začetnik v HTMLju bi postavil tabelo s fiksno širino in dodal “align=center”. Ker pa nismo več začetniki, se bomo poslužili DIV značk.

Najprej HTML koda:

<div id=”ogrodje”>
Vsebina spletne strani….
</div>

In nato še CSS oblikovanje:

#ogrodje {
width: 800px;
margin-right: auto;
margin-left: auto;
}

Postavili smo sredinsko poravnano plast širine 800px. Enostavno, ne? DIV značkam lahko damo poljuben ID, s katerim smiselno poimenujemo polja.

Sredinsko centrirana stran fiksne širine. Vsebuje glavo, izbirni meni in vsebino.

HTML koda:

<div id=”ogrodje”>
   <div id=”glava”></div>
   <div id=”izbirni_meni”></div>
   <div id=”vsebina”></div>
</div>

CSS oblikovanje:

#ogrodje {
 width: 800px;  /* Določimo širino strani. */
/* Avtomatski odmik od desnega roba ekrana. */
 margin-right: auto; 
/* Avtomatski odmik od levega roba ekrana. */
 margin-left: auto;
}

#glava {
 height: 200px; /* Določimo višino glave. */
 width: 800px; /* Določimo širino glave. */
}

#izbirni_meni {
 width: 200px;  /* Določimo širino menija. */
 float: left; /* Določimo oblivanje z ostalimi elementi. */
 min-height: 300px; /* Določimo minimalno višino menija. */
}

#vsebina {
 width: 600px; /* Določimo širino vsebine. */
 float: left; /* Določimo oblivanje z ostalimi elementi. */
 min-height: 300px; /* Določimo minimalno višino vsebine. */
}

/*  Prikazanim elementom nisem določil barve ozadja, kot na sliki. */

Pa smo dobili nekaj takega:

 preprost izdelek

Dobili smo osnovo, na kateri lahko delamo dalje in to brez uporabe tabel!

Priporočam naslednje povezave za dodatno branje o CSS pozicioniranju:
- http://glish.com/css/
- http://www.456bereastreet.com/lab/developing_with_web_standards/csslayout/2-col/
- http://www.pixel2life.com

 

12.05.
2008

Joomla! CMS je trenutno eden izmed najbolj razširjenih odprtokodnih sistemov za urejanje vsebin na spletni strani. Zaradi preproste uporabe in velike količine brezplačnih dodatkov je Joomla! doživela izjemno pozitiven odziv pri uporabnikih.

Joomla! je zaradi svoje razširjenosti postala tudi pogosta tarča vdorov. Nekateri skrbniki spletnih strani zanemarjajo varnostni vidik vzdrževanja spletne strani in niso dovolj pazljivi pri izbiri dodatkov za Joomla! CMS, kar naredi njihovo spletno stran ranljivo.

V prejšnjem prispevku sem opisal spletne strani, kjer si lahko ogledate znane ranljivosti. Tokrat bom opisal nekaj korakov, ki zagotavljajo višjo varnost namestitve Joomla! sistema za urejanje vsebin. Seveda ti koraki ne naredijo vaše strani 100% varne, vseeno pa bistveno prispevajo k boljši zaščiti pred vdori.

1. Izbrišite namestitvene mape in datoteke

Po namestitvi Joomla! sistema izbrišite mape in datoteke (v to vas poziva tudi sam instalacijski proces).

2. Spremenite ime upravljalskega računa in nastavite dobro geslo

Dodatna razlaga ni potrebna. Po namestitvi CMSja spremenite ime uporabnika admin in mu določite geslo, ki ga ni mogoče zlahka ugotoviti. Najboljša je naključna kombinacija številk in črk.

3. Namestite aktualno različico in varnostno kopirajte podatke

Pogosto preverjajte, ali imate nameščeno zadnjo različico vašega Joomla! CMSja. To lahko storite v samem CMSju, pod opcijo “Check for latest version”, ali na domači strani.

Pred instalacijo nove različice OBVEZNO(!) naredite varnostno kopijo datotek in baz podatkov. Nekateri ponudniki gostovanja vam nudijo enostavno backup skripto z možnostjo določanja intervalov ustvarjanja varnostnih kopij. Preverite to možnost pri vašem ponudniku, saj vam avtomatizacija postopkov prihrani precej dela (in časa).

4. Preverite dodatke (module, komponente, mambote), preden jih namestite

Nekateri dodatki so napisani precej površno in ne vsebujejo “varovalk” pred zlonamerno kodo. Z namestitvijo nekakovostnega in nepreverjenega dodatka tvegate vdor. Zato je dobro dodatek prej preveriti preko raznih uporabniških forumov in seznamov znanih ranljivosti.

Primer: če vas zanima varnost dodatka PollXT, v Googlu iščete pod “PollXT vulnerability” in  na portalu Secunia iščete pod “PollXT“.

5. Pravilno nastavite gostovanje

Dobro je preveriti nastavitve gostovanja in jih ustrezno popraviti na priporočene nastavitve. Nekatere od spodnjih nastavitev lahko povzročijo nedelovanje posameznih dodatkov. Po spremembi nastavitev zato vedno preverite delovanje spletne strani.

- register_globals off
Povzroči, da napadalec ne more na preprost način vsiliti svojih vrednosti spremenljivk, ki izvedejo zlonamerno kodo.
Joomla ima tudi emulacijo te opcije, zato morate tudi v datoteki globals.php (korenska mapa Joomle) nastaviti vrednost define(‘RG_EMULATION’,1) na define(‘RG_EMULATION’,0). 

- url_fopen disallow
S tem korakom boste zagotovili zaščito pred vključitvijo datotek, ki se ne nahajajo na vašem strežniku. Napadalec ne bo mogel na enostaven način izvesti kode, ki se nahaja na njegovem strežniku.

- disable_functions = show_source, system, shell_exec, passthru, exec, popen, proc_open
Izklopite omenjene funkcije, ki so vprašljive z varnostnega stališča.

- magic_quotes_gpc = On
Z vklopom te opcije zagotovite zaščito pred določenimi SQL injection napadi. Ta opcija je aktualna le za Joomla! verzije 1.0.X., medtem ko v verziji 1.5 ni več potrebna.

- php_info.php
Ne pustite, da brskalniki pridejo do php_info.php datoteke. Preko nje lahko napadalec dobi pomembne informacije o vašem strežniku in storitvah kar preko Googla.

6. Pravilno nastavite pravice map in datotek

Priporočeno je, da so pravice nastavljene na 744 za mape in 644 za datoteke. Zgodilo se bo, da boste za namestitev dodatkov morali uporabiti za določene mape vrednost 777. Po namestitvi je priporočeno pravice spet znižati na vrednost 744. Več o pravicah.

Še nekaj povezav za dodatno branje:
- Joomla! security FAQ
- Administrators security checklist
- Joomla security tutorial