10 najčešćih ranjivosti web sigurnosti

Sadržaj:

Anonim

OWASP ili Open Web Security Project neprofitna je dobrotvorna organizacija usmjerena na poboljšanje sigurnosti softvera i web aplikacija.

Organizacija objavljuje popis glavnih ranjivosti web sigurnosti na temelju podataka različitih sigurnosnih organizacija.

Ranjivosti web sigurnosti imaju prioritet, ovisno o iskoristivosti, detektivnosti i utjecaju na softver.

  • Iskoristivost -

    Što je potrebno za iskorištavanje sigurnosne ranjivosti? Najveća iskoristivost kada napad zahtijeva samo web preglednik, a najmanja napredni programi i alati.

  • Otkrivost -

    Koliko je lako otkriti prijetnju? Najviše su informacije prikazane na URL-u, obrascu ili poruci o pogrešci, a najmanje izvorni kod.

  • Utjecaj ili šteta -

    Kolika će biti šteta ako se sigurnosna ranjivost izloži ili napadne? Najveći je potpuni pad sustava, a najniži je uopće ništa.

Glavni cilj OWASP Top 10 je educirati programere, dizajnere, menadžere, arhitekte i organizacije o najvažnijim sigurnosnim ranjivostima.

Top 10 sigurnosnih ranjivosti prema OWASP Top 10 su:

  • SQL ubrizgavanje
  • Cross Site Scripting
  • Neispravna provjera autentičnosti i upravljanje sjednicama
  • Nesigurne reference izravnih objekata
  • Krivotvorenje zahtjeva za više web lokacija
  • Pogrešna konfiguracija sigurnosti
  • Nesigurna kriptografska pohrana
  • Nije ograničen pristup URL-u
  • Nedovoljna zaštita transportnog sloja
  • Nevaljana preusmjeravanja i prosljeđivanje

SQL ubrizgavanje

Opis

Injection je sigurnosna ranjivost koja napadaču omogućuje izmjenu pozadinskih SQL izraza manipuliranjem podacima koje je dostavio korisnik.

Ubrizgavanje se događa kada se korisnički unos pošalje tumaču kao dio naredbe ili upita i prevari tumača da izvršava nenamjeravane naredbe i daje pristup neovlaštenim podacima.

SQL naredba koja kada se izvršava putem web aplikacije također može otkriti pozadinsku bazu podataka.

Implikacija

  • Napadač može ubrizgati zlonamjerni sadržaj u ranjiva polja.
  • Osjetljivi podaci poput korisničkih imena, lozinki itd. Mogu se čitati iz baze podataka.
  • Podaci baze podataka mogu se mijenjati (Umetanje / ažuriranje / brisanje).
  • Administratorske operacije mogu se izvršiti na bazi podataka

Ranjivi predmeti

  • Polja za unos
  • URL-ovi u interakciji s bazom podataka.

Primjeri:

  • SQL ubrizgavanje na stranicu za prijavu

Prijava u aplikaciju bez valjanih vjerodajnica.

Dostupno je važeće korisničko ime, a zaporka nije dostupna.

URL za testiranje: http://demo.testfire.net/default.aspx

Korisničko ime: sjones

Lozinka: 1 = 1 'ili pass123

SQL upit stvoren i poslan Interpreteru kao u nastavku

ODABERITE * IZ korisnika GDJE Korisničko ime = sjones I Lozinka = 1 = 1 'ili pass123;

Preporuke

  1. Bijela lista popisa za unos
  2. Izbjegavajte prikazivanje detaljnih poruka o pogreškama koje su korisne napadaču.

Cross Site Scripting

Opis

Cross Site Scripting je ukratko poznat i kao XSS.

XSS ranjivosti ciljaju skripte ugrađene u stranicu koje se izvršavaju na klijentskoj strani, odnosno korisničkom pregledniku, a ne na poslužiteljskoj strani. Te se pogreške mogu pojaviti kada aplikacija uzima nepovjerene podatke i šalje ih web pregledniku bez odgovarajuće provjere valjanosti.

Napadači mogu koristiti XSS za izvršavanje zlonamjernih skripti na korisnicima u ovom slučaju preglednicima žrtve. Budući da preglednik ne može znati je li skripta pouzdana ili ne, skripta će se izvršiti, a napadač može oteti kolačiće sesije, pokvariti web stranice ili preusmjeriti korisnika na neželjene i zlonamjerne web stranice.

XSS je napad koji napadaču omogućuje izvršavanje skripti na žrtvinom pregledniku.

Implikacija:

  • Koristeći ovu sigurnosnu ranjivost, napadač može ubrizgati skripte u aplikaciju, može ukrasti kolačiće sesije, pokvariti web stranice i pokrenuti zlonamjerni softver na žrtvinim računalima.

Ranjivi predmeti

  • Polja za unos
  • URL-ovi

Primjeri

1. http://www.vulnerablesite.com/home?" < script > alert(" xss") script >

Gornja skripta kada se pokrene u pregledniku, prikazat će se okvir za poruku ako je web lokacija ranjiva na XSS.

Ozbiljniji napad može se izvršiti ako napadač želi prikazati ili pohraniti kolačić sesije.

2. http://demo.testfire.net/search.aspx?txtSearch > http://google.com width = 500 height 500>

Gornja skripta prilikom pokretanja preglednik će učitati nevidljivi okvir koji pokazuje na http://google.com .

Napad se može ozbiljiti pokretanjem zlonamjerne skripte na pregledniku.

Preporuke

  1. Bijela polja za unos
  2. Ulazno izlazno kodiranje

Neispravna provjera autentičnosti i upravljanje sjednicama

Opis

Web stranice obično stvaraju kolačić sesije i ID sesije za svaku važeću sesiju, a ti kolačići sadrže osjetljive podatke poput korisničkog imena, lozinke itd. Kada se sesija završi odjavom ili naglim zatvaranjem preglednika, ti bi kolačići trebali biti nevaljani, tj. Za svaku sesiju trebao bi postojati novi kolačić.

Ako kolačići nisu nevaljani, osjetljivi podaci će postojati u sustavu. Na primjer, korisnik koji koristi javno računalo (Cyber ​​Cafe), kolačići ranjive web stranice sjede u sustavu i izloženi su napadaču. Napadač koristi isto javno računalo nakon nekog vremena, osjetljivi podaci su ugroženi.

Na isti način, korisnik koji koristi javno računalo, umjesto da se odjavi, naglo zatvara preglednik. Napadač koristi isti sustav, kada pregledava isto ranjivo mjesto, otvorit će se prethodna sesija žrtve. Napadač može učiniti sve što želi od krađe podataka o profilu, podataka o kreditnoj kartici itd.

Treba provjeriti kako bi se utvrdila snaga provjere autentičnosti i upravljanja sesijama. Ključevi, tokeni sesija, kolačići trebaju se pravilno implementirati bez ugrožavanja lozinki.

Ranjivi predmeti

  • ID-ovi sesija izloženi na URL-u mogu dovesti do napada fiksacije sesije.
  • ID-ovi sesija isti su prije i nakon odjave i prijave.
  • Isteka vremena sesije nisu pravilno implementirana.
  • Aplikacija dodjeljuje isti ID sesije za svaku novu sesiju.
  • Autentificirani dijelovi aplikacije zaštićeni su SSL-om, a lozinke se pohranjuju u raspršeni ili šifrirani format.
  • Nisko privilegirani korisnik može ponovo koristiti sesiju.

Implikacija

  • Koristeći ovu ranjivost, napadač može oteti sesiju, dobiti neovlašteni pristup sustavu koji omogućava otkrivanje i izmjenu neovlaštenih podataka.
  • Sesije se mogu visoko podići pomoću ukradenih kolačića ili sesije pomoću XSS-a.

Primjeri

  1. Aplikacija za rezervaciju zrakoplovnih usluga podržava prepisivanje URL-a, stavljanje ID-ova sesija u URL:

    http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldivi (Prodaja karata za Maldive)

    Autentificirani korisnik web stranice želi obavijestiti svoje prijatelje o prodaji i šalje e-poštu. Prijatelji dobivaju ID sesije i mogu se koristiti za neovlaštene izmjene ili zlouporabu spremljenih podataka o kreditnoj kartici.

  2. Aplikacija je ranjiva na XSS, kojim napadač može pristupiti ID-u sesije i može se koristiti za otmicu sesije.
  3. Vremenska ograničenja za aplikacije nisu pravilno postavljena. Korisnik koristi javno računalo i zatvara preglednik umjesto da se odjavi i ode. Napadač koristi isti preglednik nešto kasnije i sesija je ovjerena.

Preporuke

  1. Svi zahtjevi za provjeru autentičnosti i upravljanje sesijama trebali bi biti definirani prema OWASP-ovom standardu za provjeru sigurnosti aplikacija.
  2. Nikada ne izlažite nikakve vjerodajnice u URL-ovima ili Dnevnicima.
  3. Također treba uložiti snažne napore kako bi se izbjegle XSS mane koje se mogu koristiti za krađu ID-ova sesije.

Nesigurne reference izravnih objekata

Opis

To se događa kada programer izloži referencu na interni objekt implementacije, kao što je datoteka, direktorij ili ključ baze podataka u URL-u ili kao parametar FORM. Napadač može koristiti ove podatke za pristup drugim objektima i može stvoriti budući napad za pristup neovlaštenim podacima.

Implikacija

  • Koristeći ovu ranjivost, napadač može dobiti pristup neovlaštenim unutarnjim objektima, može izmijeniti podatke ili ugroziti aplikaciju.

Ranjivi predmeti

  • U URL-u.

Primjeri:

Promjena "korisničkog imena" u sljedećem URL-u može napadača natjerati da vidi podatke drugih korisnika.

http://www.vulnerablesite.com/userid=123 Izmijenjeno u http://www.vulnerablesite.com/userid=124

Napadač može pregledavati druge podatke mijenjanjem vrijednosti korisničkog ID-a.

Preporuke:

  1. Provesti provjere kontrole pristupa.
  2. Izbjegavajte izlaganje referenci na objekte u URL-ovima.
  3. Provjerite autorizaciju za sve referentne objekte.

Krivotvorenje zahtjeva za više web lokacija

Opis

Krivotvorenje zahtjeva za više web mjesta krivotvoreni je zahtjev koji je stigao s više mjesta.

CSRF napad je napad koji se događa kada zlonamjerna web stranica, e-pošta ili program uzrokuju da preglednik korisnika izvrši neželjenu radnju na pouzdanom web mjestu za koje je korisnik trenutno autentificiran.

CSRF napad prisiljava prijavljeni preglednik žrtve da pošalje krivotvoreni HTTP zahtjev, uključujući kolačić sesije žrtve i sve druge automatski uključene podatke o autentifikaciji, ranjivoj web aplikaciji.

Napadač će žrtvi poslati vezu kada korisnik klikne na URL kada je prijavljen na izvorno web mjesto, a podaci će se ukrasti s web mjesta.

Implikacija

  • Korištenje ove ranjivosti kao napadača može promijeniti podatke o korisničkom profilu, promijeniti status, stvoriti novog korisnika u ime administratora itd.

Ranjivi predmeti

  • Stranica korisničkog profila
  • Obrasci korisničkog računa
  • Stranica poslovne transakcije

Primjeri

Žrtva je prijavljena na web mjesto banke koristeći valjane vjerodajnice. Dobija poštu od napadača s porukom "Kliknite ovdje da biste donirali $ 1 za uzrok."

Kada žrtva klikne na nju, stvorit će se valjani zahtjev za doniranje 1 dolara na određeni račun.

http://www.vulvablebank.com/transfer.do?account=cause&amount=1

Napadač bilježi ovaj zahtjev i izrađuje zahtjev ispod i ugrađuje u gumb s porukom "Podržavam uzrok".

http://www.vulvablebank.com/transfer.do?account=Attacker&amount=1000

Budući da je sesija ovjerena, a zahtjev dolazi putem web stranice banke, poslužitelj bi napadaču prebacio 1000 dolara.

Preporuka

  1. Naredite prisutnost korisnika tijekom izvođenja osjetljivih radnji.
  2. Primijenite mehanizme poput CAPTCHA, ponovne provjere autentičnosti i jedinstvenih žetona zahtjeva.

Pogrešna konfiguracija sigurnosti

Opis

Sigurnosna konfiguracija mora se definirati i primijeniti za aplikaciju, okvire, poslužitelj aplikacija, web poslužitelj, poslužitelj baze podataka i platformu. Ako su pravilno konfigurirani, napadač može imati neovlašteni pristup osjetljivim podacima ili funkcijama.

Ponekad takve mane rezultiraju potpunim kompromisom sustava. Ažuriranje softvera također je dobra sigurnost.

Implikacija

  • Koristeći ovu ranjivost, napadač može nabrojati osnovne podatke o tehnologiji i verziji poslužitelja aplikacija, podatke baze podataka i prikupiti informacije o aplikaciji za pokretanje još nekoliko napada.

Ranjivi predmeti

  • URL
  • Polja obrasca
  • Polja za unos

Primjeri

  1. Administratorska konzola poslužitelja aplikacija automatski se instalira i ne uklanja. Zadani računi se ne mijenjaju. Napadač se može prijaviti sa zadanim lozinkama i može dobiti neovlašteni pristup.
  2. Popis direktorija nije onemogućen na vašem poslužitelju. Napadač otkriva i može jednostavno popisati direktorije kako bi pronašao bilo koju datoteku.

Preporuke

  1. Snažna aplikacijska arhitektura koja osigurava dobro razdvajanje i sigurnost između komponenata.
  2. Promijenite zadana korisnička imena i lozinke.
  3. Onemogućite popise direktorija i provedite provjere kontrole pristupa.

Nesigurna kriptografska pohrana

Opis

Nesigurna kriptografska pohrana česta je ranjivost koja postoji kada se osjetljivi podaci ne pohranjuju sigurno.

Vjerodajnice korisnika, podaci o profilu, podaci o zdravlju, podaci o kreditnim karticama itd. Podliježu podacima o osjetljivim podacima na web mjestu.

Ti će se podaci pohraniti u bazu podataka aplikacija. Kad se ti podaci nepravilno pohrane ne upotrebljavajući šifriranje ili raspršivanje *, bit će ranjivi za napadače.

(* Hashing je transformacija znakovnih nizova u kraće nizove fiksne duljine ili ključ. Da bi se dešifrirao niz, trebao bi biti dostupan algoritam koji se koristi za oblikovanje ključa)

Implikacija

  • Korištenjem ove ranjivosti napadač može ukrasti, izmijeniti takve slabo zaštićene podatke kako bi izvršio krađu identiteta, prijevaru s kreditnom karticom ili druga kaznena djela.

Ranjivi predmeti

  • Baza podataka aplikacija.

Primjeri

U jednoj od bankarskih aplikacija baza podataka lozinki koristi neslane hashove * za pohranu svih lozinki. Propust SQL ubrizgavanja omogućuje napadaču dohvat datoteke lozinke. Svi neslani hashovi mogu se za kratko vrijeme forsirati, dok bi slanim lozinkama trebale tisuće godina.

(* Neslano hashiranje - sol je slučajni podatak koji se dodaje izvornim podacima. Sol se dodaje lozinci prije raspršivanja)

Preporuke

  1. Osigurajte odgovarajuće jake standardne algoritme. Ne stvarajte vlastite kriptografske algoritme. Koristite samo odobrene javne algoritme kao što su AES, kriptografija javnog ključa RSA i SHA-256 itd.
  2. Osigurajte da su sigurnosne kopije izvan mjesta šifrirane, ali tipkama se upravlja i izrađuju sigurnosne kopije odvojeno.

Nije ograničen pristup URL-u

Opis

Web aplikacije provjeravaju prava pristupa URL-u prije generiranja zaštićenih veza i gumba. Aplikacije moraju izvršiti slične provjere kontrole pristupa svaki put kad se pristupi tim stranicama.

U većini aplikacija povlaštene stranice, lokacije i resursi ne prikazuju se privilegiranim korisnicima.

Pametnim pogađanjem napadač može pristupiti privilegiranim stranicama. Napadač može pristupiti osjetljivim stranicama, pozivati ​​funkcije i pregledavati povjerljive podatke.

Implikacija

  • Korištenjem ovog napadača ranjivosti možete dobiti pristup neovlaštenim URL-ovima, bez prijave u aplikaciju i iskorištavanja ranjivosti. Napadač može pristupiti osjetljivim stranicama, pozvati funkcije i pregledati povjerljive podatke.

Ranjivi objekti:

  • URL-ovi

Primjeri

  1. Napadač primjećuje da URL označava ulogu kao "/ user / getaccounts." Mijenja se kao "/ admin / getaccounts".
  2. Napadač može dodati ulogu URL-u.

http://www.vulnerablsite.com može se izmijeniti kao http://www.vulnerablesite.com/admin

Preporuke

  1. Provedite jake provjere kontrole pristupa.
  2. Politike autentifikacije i autorizacije trebaju se temeljiti na ulogama.
  3. Ograničite pristup neželjenim URL-ovima.

Nedovoljna zaštita transportnog sloja

Opis

Bavi se razmjenom informacija između korisnika (klijenta) i poslužitelja (aplikacije). Aplikacije često putem mreže prenose osjetljive podatke poput pojedinosti o autentifikaciji, podataka o kreditnim karticama i tokena sesija.

Korištenjem slabih algoritama ili upotrebom isteklih ili nevaljanih certifikata ili nekorištenjem SSL-a može se omogućiti da komunikacija bude izložena nepouzdanim korisnicima, što može ugroziti web aplikaciju ili ukrasti osjetljive podatke.

Implikacija

  • Koristeći ovu ranjivost web sigurnosti, napadač može njuškati vjerodajnice legitimnih korisnika i dobivajući pristup aplikaciji.
  • Može ukrasti podatke o kreditnoj kartici.

Ranjivi predmeti

  • Podaci poslani mrežom.

Preporuke

  1. Omogućite sigurni HTTP i prisilite prijenos vjerodajnica samo preko HTTPS-a.
  2. Provjerite je li vaš certifikat valjan i nije li istekao.

Primjeri:

1. Aplikacija koja ne koristi SSL, napadač će jednostavno nadgledati mrežni promet i promatrati autentični kolačić sesije žrtve. Napadač može ukrasti taj kolačić i izvršiti napad "Čovjek u sredini".

Nevaljana preusmjeravanja i prosljeđivanje

Opis

Web aplikacija koristi nekoliko metoda za preusmjeravanje i prosljeđivanje korisnika na druge stranice u predviđenu svrhu.

Ako tijekom preusmjeravanja na druge stranice ne postoji valjana provjera valjanosti, napadači to mogu iskoristiti i preusmjeriti žrtve na web lokacije s krađom identiteta ili zlonamjernog softvera ili koristiti prosljeđivanje za pristup neovlaštenim stranicama.

Implikacija

  • Napadač može korisniku poslati URL koji sadrži izvorni URL dodan kodiranim zlonamjernim URL-om. Korisnik samo vidjevši izvorni dio URL-a koji je poslao napadač može ga pregledavati i postati žrtva.

Primjeri

1. http://www.vulnerablesite.com/login.aspx?redirectURL=ownsite.com

Izmijenjeno u

http://www.vulnerablesite.com/login.aspx?redirectURL=evilsite.com

Preporuke

  1. Jednostavno izbjegavajte korištenje preusmjeravanja i prosljeđivanja u aplikaciji. Ako se koristi, nemojte uključivati ​​upotrebu korisničkih parametara u izračunu odredišta.
  2. Ako se parametri odredišta ne mogu izbjeći, osigurajte da je navedena vrijednost valjana i odobrena za korisnika.

Ovaj članak je napisao Prasanthi Eati