10 labiausiai paplitusių interneto saugumo pažeidžiamumų

Turinys:

Anonim

OWASP arba „Open Web Security Project“ yra ne pelno siekianti labdaros organizacija, orientuota į programinės įrangos ir žiniatinklio programų saugumo gerinimą.

Organizacija paskelbia svarbiausių žiniatinklio saugumo spragų sąrašą, pagrįstą įvairių saugos organizacijų duomenimis.

Žiniatinklio saugumo pažeidžiamumas yra prioritetinis, atsižvelgiant į panaudojamumą, aptikimą ir poveikį programinei įrangai.

  • Išnaudojamumas -

    Ko reikia norint pasinaudoti saugumo pažeidžiamumu? Didžiausias išnaudojamumas, kai atakai reikalinga tik interneto naršyklė, o mažiausias - pažangus programavimas ir įrankiai.

  • Aptinkamumas -

    Kaip lengva nustatyti grėsmę? Aukščiausia yra URL, formos ar klaidos pranešime rodoma informacija, o žemiausias - šaltinio kodas.

  • Poveikis ar žala -

    Kokia žala bus padaryta, jei bus atskleista ar užpulta saugumo spraga? Aukščiausia yra visos sistemos avarija, o žemiausia - nieko.

Pagrindinis „OWASP Top 10“ tikslas yra šviesti kūrėjus, dizainerius, vadovus, architektus ir organizacijas apie svarbiausias saugumo spragas.

10 populiariausių saugos pažeidžiamumų pagal OWASP 10 populiariausių yra:

  • SQL įpurškimas
  • Skirtingų svetainių scenarijai
  • Sugedęs autentifikavimas ir seanso valdymas
  • Nesaugios tiesioginių objektų nuorodos
  • Kryžminio prašymo klastojimas
  • Neteisinga saugumo konfigūracija
  • Nesaugi kriptografinė saugykla
  • Nepavyko apriboti prieigos prie URL
  • Nepakankama transporto sluoksnio apsauga
  • Nepatvirtinti peradresavimai ir persiuntimai

SQL įpurškimas

apibūdinimas

„Injection“ yra saugos pažeidžiamumas, leidžiantis užpuolikui pakeisti „backend“ SQL sakinius manipuliuojant vartotojo pateiktais duomenimis.

Injekcija įvyksta, kai vartotojo įvestis siunčiama vertėjui kaip komandos ar užklausos dalis, ir apgauna vertėją vykdant nenumatytas komandas ir suteikia prieigą prie neleistinų duomenų.

SQL komanda, kurią vykdant žiniatinklio programai, taip pat gali atskleisti vidinę duomenų bazę.

Implikacija

  • Užpuolikas gali įterpti kenksmingą turinį į pažeidžiamus laukus.
  • Iš duomenų bazės galima nuskaityti neskelbtinus duomenis, tokius kaip vartotojo vardai, slaptažodžiai ir kt.
  • Duomenų bazės duomenis galima modifikuoti (įterpti / atnaujinti / ištrinti).
  • Administravimo operacijos gali būti vykdomos duomenų bazėje

Pažeidžiami objektai

  • Įvesties laukai
  • URL, sąveikaujantys su duomenų baze.

Pavyzdžiai:

  • SQL injekcija prisijungimo puslapyje

Prisijungimas prie programos neturint galiojančių įgaliojimų.

Galimas vartotojo vardas yra prieinamas, o slaptažodis negalimas.

Testo URL: http://demo.testfire.net/default.aspx

Vartotojo vardas: sjones

Slaptažodis: 1 = 1 'arba leidimas123

SQL užklausa sukurta ir išsiųsta vertėjui kaip nurodyta toliau

PASIRINKITE * IŠ Vartotojų, KUR Vartotojo vardas = sjones IR slaptažodis = 1 = 1 'arba pass123;

Rekomendacijos

  1. Balta įrašo įvesties laukai
  2. Venkite rodyti išsamius klaidos pranešimus, kurie yra naudingi užpuolikui.

Skirtingų svetainių scenarijai

apibūdinimas

Kelių svetainių scenarijai taip pat netrukus žinomi kaip XSS.

„XSS“ pažeidžiamumai nukreipti į scenarijus, įdėtus į puslapį, kurie vykdomi kliento pusėje, ty vartotojo naršyklėje, o ne serverio pusėje. Šie trūkumai gali atsirasti, kai programa ima nepatikimus duomenis ir be tinkamo patvirtinimo juos siunčia į interneto naršyklę.

Užpuolikai gali naudoti XSS, kad paleistų kenkėjiškus scenarijus vartotojams, šiuo atveju - aukų naršyklėse. Kadangi naršyklė negali žinoti, ar scenarijus yra patikimas, ar ne, scenarijus bus vykdomas, o užpuolikas gali užgrobti seanso slapukus, išniekinti svetaines ar nukreipti vartotoją į nepageidaujamas ir kenkėjiškas svetaines.

XSS yra ataka, leidžianti užpuolikui įvykdyti scenarijus aukos naršyklėje.

Poveikis:

  • Naudodamasis šia saugumo spraga, užpuolikas gali įterpti scenarijus į programą, pavogti sesijos slapukus, pažeisti svetaines ir paleisti kenkėjiškas programas aukos mašinose.

Pažeidžiami objektai

  • Įvesties laukai
  • URL

Pavyzdžiai

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

Pirmiau pateiktas scenarijus paleidus naršyklėje bus rodomas pranešimų laukelis, jei svetainė yra pažeidžiama XSS.

Rimtesnę ataką galima padaryti, jei užpuolikas nori parodyti arba išsaugoti seanso slapuką.

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

Paleidus pirmiau pateiktą scenarijų, naršyklė įkels nematomą rėmelį, nukreipiantį į http://google.com .

Ataka gali būti rimta, naršyklėje paleidus kenkėjišką scenarijų.

Rekomendacijos

  1. Baltojo sąrašo įvesties laukai
  2. Įvestis Išvesties kodavimas

Sugedęs autentifikavimas ir seanso valdymas

apibūdinimas

Svetainės paprastai sukuria kiekvieno galiojančio seanso seanso slapuką ir seanso ID, o šiuose slapukuose yra neskelbtinų duomenų, tokių kaip naudotojo vardas, slaptažodis ir kt. Kai sesija baigiama atsijungus arba staiga uždarius naršyklę, šie slapukai turėtų būti pripažinti negaliojančiais, ty kiekvienam seansui turėtų būti naujas slapukas.

Jei slapukai nebus pripažinti negaliojančiais, sistemoje bus slaptų duomenų. Pavyzdžiui, vartotojas, naudojantis viešąjį kompiuterį („Cyber ​​Cafe“), pažeidžiamos svetainės slapukai sėdi sistemoje ir yra užpuoliko veikiami. Užpuolikas po kurio laiko naudoja tą patį viešą kompiuterį, pažeidžiami neskelbtini duomenys.

Tokiu pačiu būdu vartotojas, naudodamas viešąjį kompiuterį, užuot prisijungęs, staigiai uždaro naršyklę. Užpuolikas naudoja tą pačią sistemą. Naršant toje pačioje pažeidžiamoje svetainėje bus atidarytas ankstesnis aukos užsiėmimas. Užpuolikas gali daryti viską, ką nori, pavogdamas profilio informaciją, kreditinės kortelės informaciją ir kt.

Turėtų būti atliktas patikrinimas, kad būtų nustatyta autentiškumo ir sesijų valdymo stiprybė. Raktai, seanso žetonai, slapukai turėtų būti tinkamai įdiegti nepažeidžiant slaptažodžių.

Pažeidžiami objektai

  • URL rodomi seanso ID gali sukelti seanso taisymo ataką.
  • Seansų ID yra tokie patys prieš ir po atsijungimo ir prisijungimo.
  • Sesijos skirtasis laikas netinkamai įgyvendinamas.
  • Programa kiekvienam naujam seansui priskiria tą patį seanso ID.
  • Patvirtintos programos dalys yra apsaugotos naudojant SSL, o slaptažodžiai saugomi maišos arba šifruotu formatu.
  • Seansą gali pakartotinai naudoti mažai privilegijuotas vartotojas.

Implikacija

  • Naudodamasis šiuo pažeidžiamumu, užpuolikas gali užgrobti sesiją, gauti neteisėtą prieigą prie sistemos, leidžiančios atskleisti ir modifikuoti neteisėtą informaciją.
  • Sesijos gali būti didelės, naudojant pavogtus slapukus, arba sesijas naudojant XSS.

Pavyzdžiai

  1. Oro linijų rezervavimo programa palaiko URL perrašymą, seanso ID įtraukiant į URL:

    http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldives (Bilietų į Maldyvus pardavimas)

    Patvirtintas svetainės vartotojas nori pranešti savo draugams apie pardavimą ir siunčia el. Laišką. Draugai gauna sesijos ID ir gali būti naudojami neteisėtai modifikuoti arba netinkamai naudoti išsaugotą kreditinės kortelės informaciją.

  2. Programa yra pažeidžiama XSS, kurią naudojant užpuolikas gali pasiekti seanso ID ir gali būti naudojamas užgrobti seansą.
  3. Programų skirtasis laikas nustatytas netinkamai. Vartotojas naudojasi viešu kompiuteriu ir uždaro naršyklę, užuot prisijungęs ir eidamas. Kurį laiką užpuolikas naudojasi ta pačia naršykle, o sesija yra patvirtinta.

Rekomendacijos

  1. Visi autentifikavimo ir seanso valdymo reikalavimai turėtų būti apibrėžti pagal OWASP taikomųjų programų saugumo tikrinimo standartą.
  2. Niekada neatskleiskite jokių prisijungimo duomenų URL ar žurnaluose.
  3. Taip pat reikėtų dėti daug pastangų, kad būtų išvengta XSS trūkumų, kuriuos galima panaudoti seanso ID pavogti.

Nesaugios tiesioginių objektų nuorodos

apibūdinimas

Tai atsitinka, kai kūrėjas pateikia nuorodą į vidinį diegimo objektą, pvz., Failo, katalogo ar duomenų bazės raktą, kaip URL arba kaip FORM parametrą. Užpuolikas gali naudoti šią informaciją, norėdamas pasiekti kitus objektus, ir ateityje gali sukurti ataką, kad galėtų pasiekti neleistinus duomenis.

Implikacija

  • Naudodamasis šiuo pažeidžiamumu, užpuolikas gali pasiekti prieigą prie neleistinų vidinių objektų, modifikuoti duomenis ar pažeisti programą.

Pažeidžiami objektai

  • URL.

Pavyzdžiai:

Pakeitus „userid“ šiame URL, užpuolikas gali pamatyti kito vartotojo informaciją.

http://www.vulnerablesite.com/userid=123 Pakeista į http://www.vulnerablesite.com/userid=124

Užpuolikas gali peržiūrėti kitą informaciją pakeisdamas vartotojo ID vertę.

Rekomendacijos:

  1. Įgyvendinti prieigos kontrolės patikrinimus.
  2. Venkite eksponuoti objektų nuorodas URL.
  3. Patikrinkite visų nuorodų objektų prieigos teisę.

Kryžminio prašymo klastojimas

apibūdinimas

„Cross Site Request Forgery“ yra suklastota užklausa, pateikta iš kryžminės svetainės.

CSRF ataka yra ataka, kuri įvyksta, kai kenkėjiška svetainė, el. Paštas ar programa priverčia vartotojo naršyklę atlikti nepageidaujamą veiksmą patikimoje svetainėje, kurioje vartotojas šiuo metu yra patvirtintas.

CSRF ataka priverčia prisijungusią aukos naršyklę nusiųsti suklastotą HTTP užklausą, įskaitant aukos sesijos slapuką ir kitą automatiškai įtraukiamą autentifikavimo informaciją, į pažeidžiamą žiniatinklio programą.

Užpuolikas nukentėjusiajam nusiųs nuorodą, kai vartotojas, prisijungęs prie pradinės svetainės, spustelės URL, duomenys bus pavogti iš svetainės.

Implikacija

  • Naudojant šį pažeidžiamumą kaip užpuoliką galima pakeisti vartotojo profilio informaciją, pakeisti būseną, sukurti naują vartotoją administratoriaus vardu ir kt.

Pažeidžiami objektai

  • Vartotojo profilio puslapis
  • Vartotojo abonemento formos
  • Verslo operacijų puslapis

Pavyzdžiai

Auka yra prisijungusi prie banko svetainės naudodama galiojančius įgaliojimus. Jis gauna laišką iš užpuoliko, kuriame sakoma: „Spustelėkite čia, jei norite paaukoti 1 USD.“

Nukentėjusiajam spustelėjus, bus sukurta galiojanti užklausa paaukoti 1 USD konkrečiai sąskaitai.

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

Užpuolikas užfiksuoja šią užklausą ir sukuria žemiau pateiktą užklausą ir įterpia mygtuką, kuriame sakoma „Palaikau priežastį“.

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

Kadangi sesija yra patvirtinta ir užklausa pateikiama per banko svetainę, serveris užpuolikui perves 1000 USD.

Rekomendacija

  1. Įpareigoti naudotoją dalyvauti atliekant neskelbtinus veiksmus.
  2. Įgyvendinkite tokius mechanizmus kaip CAPTCHA, pakartotinis autentifikavimas ir unikalūs užklausos žetonai.

Neteisinga saugumo konfigūracija

apibūdinimas

Saugos konfigūracija turi būti apibrėžta ir įdiegta programai, sistemoms, programų serveriui, žiniatinklio serveriui, duomenų bazių serveriui ir platformai. Jei jie tinkamai sukonfigūruoti, užpuolikas gali turėti neteisėtą prieigą prie neskelbtinų duomenų ar funkcijų.

Kartais tokie trūkumai lemia visišką sistemos kompromisą. Programinės įrangos atnaujinimas taip pat yra geras saugumas.

Implikacija

  • Pasinaudojęs šiuo pažeidžiamumu, užpuolikas gali išvardyti pagrindinės technologijos ir programų serverio versijos informaciją, duomenų bazės informaciją ir gauti informacijos apie programą, kad sukeltų dar keletą atakų.

Pažeidžiami objektai

  • URL
  • Formos laukai
  • Įvesties laukai

Pavyzdžiai

  1. Programų serverio administratoriaus pultas automatiškai įdiegiamas ir nepašalinamas. Numatytosios paskyros nėra pakeistos. Užpuolikas gali prisijungti naudodamas numatytuosius slaptažodžius ir gali gauti neteisėtą prieigą.
  2. Katalogų sąrašas jūsų serveryje nėra išjungtas. Užpuolikas atranda ir gali tiesiog surašyti katalogus, kad rastų bet kokį failą.

Rekomendacijos

  1. Tvirta programų architektūra, užtikrinanti gerą komponentų atskyrimą ir saugumą.
  2. Pakeiskite numatytuosius vartotojo vardus ir slaptažodžius.
  3. Išjunkite katalogų sąrašus ir atlikite prieigos kontrolės patikrinimus.

Nesaugi kriptografinė saugykla

apibūdinimas

Nesaugi kriptografinė saugykla yra dažnas pažeidžiamumas, kuris egzistuoja, kai neskelbtini duomenys nėra saugomi.

Vartotojo duomenys, profilio informacija, išsami informacija apie sveikatą, kreditinės kortelės informacija ir kt. Yra prie slaptos informacijos informacijos svetainėje.

Šie duomenys bus saugomi programų duomenų bazėje. Kai šie duomenys bus netinkamai saugomi nenaudojant šifravimo ar maišos *, jie bus pažeidžiami užpuolikų.

(* Maišymas yra eilutės simbolių pavertimas trumpesnėmis fiksuoto ilgio eilutėmis arba raktu. Norėdami iššifruoti eilutę, turėtų būti prieinamas raktui suformuoti naudojamas algoritmas)

Implikacija

  • Naudodamasis šiuo pažeidžiamumu, užpuolikas gali pavogti, modifikuoti tokius silpnai apsaugotus duomenis, kad įvykdytų asmens tapatybės vagystes, sukčiavimą kreditinėmis kortelėmis ar kitus nusikaltimus.

Pažeidžiami objektai

  • Programų duomenų bazė.

Pavyzdžiai

Vienoje iš bankų programų slaptažodžių duomenų bazėje naudojami nesūdyti maišos * visų slaptažodžiams saugoti. SQL injekcijos trūkumas leidžia užpuolikui gauti slaptažodžio failą. Visus nesūdytus maišus galima žiauriai priversti per trumpą laiką, o sūdyti slaptažodžiai užtruks tūkstančius metų.

(* Nesūdyti maišos - druska yra atsitiktiniai duomenys, pridėti prie pradinių duomenų. Prieš maišant, druska pridedama prie slaptažodžio)

Rekomendacijos

  1. Užtikrinkite tinkamus standartinius algoritmus. Nekurkite savo kriptografinių algoritmų. Naudokite tik patvirtintus viešuosius algoritmus, tokius kaip AES, RSA viešojo rakto kriptografija ir SHA-256 ir kt.
  2. Įsitikinkite, kad išorinės atsarginės kopijos yra užšifruotos, tačiau raktai valdomi ir sukuriamos atskirai.

Nepavyko apriboti prieigos prie URL

apibūdinimas

Žiniatinklio programos prieš pateikdami apsaugotas nuorodas ir mygtukus patikrina URL prieigos teises. Programos turi atlikti panašius prieigos kontrolės patikrinimus kiekvieną kartą, kai pasiekiami šie puslapiai.

Daugumoje programų privilegijuoti puslapiai, vietos ir ištekliai nėra pristatomi privilegijuotiems vartotojams.

Protingai spėjęs, užpuolikas gali pasiekti privilegijų puslapius. Užpuolikas gali pasiekti neskelbtinus puslapius, pasinaudoti funkcijomis ir peržiūrėti konfidencialią informaciją.

Implikacija

  • Pasinaudoję šiuo pažeidžiamumu, užpuolikas gali prisijungti prie programos be prieigos prie neteisėtų URL ir išnaudoti pažeidžiamumą. Užpuolikas gali pasiekti neskelbtinus puslapius, pasinaudoti funkcijomis ir peržiūrėti konfidencialią informaciją.

Pažeidžiami objektai:

  • URL

Pavyzdžiai

  1. Užpuolikas pastebi, kad URL nurodo „/ user / getaccounts“ vaidmenį. Jis keičia kaip „/ admin / getaccounts“.
  2. Užpuolikas gali pridėti vaidmenį prie URL.

http://www.vulnerablsite.com galima modifikuoti kaip http://www.vulnerablesite.com/admin

Rekomendacijos

  1. Įgyvendinkite griežtus prieigos kontrolės patikrinimus.
  2. Autentifikavimo ir autorizavimo politika turėtų būti pagrįsta vaidmenimis.
  3. Apribokite prieigą prie nepageidaujamų URL.

Nepakankama transporto sluoksnio apsauga

apibūdinimas

Tvarko informacijos mainus tarp vartotojo (kliento) ir serverio (programos). Programos tinklu dažnai perduoda slaptą informaciją, pvz., Autentifikavimo informaciją, kreditinės kortelės informaciją ir sesijos žetonus.

Naudojant silpnus algoritmus arba naudojant nebegaliojančius ar negaliojančius sertifikatus arba nenaudojant SSL, ryšys gali būti veikiamas nepatikimų vartotojų, o tai gali pakenkti žiniatinklio programai ir pavogti neskelbtiną informaciją.

Implikacija

  • Naudodamasis šiuo interneto saugumo pažeidžiamumu, užpuolikas gali užuosti teisėtus vartotojo kredencialus ir gauti prieigą prie programos.
  • Gali pavogti kreditinės kortelės informaciją.

Pažeidžiami objektai

  • Duomenys siunčiami per tinklą.

Rekomendacijos

  1. Įgalinkite saugų HTTP ir vykdykite kredencialų perdavimą tik per HTTPS.
  2. Įsitikinkite, kad jūsų pažymėjimas galioja ir jo galiojimo laikas nepasibaigęs.

Pavyzdžiai:

1. Programa, nenaudojanti SSL, užpuolikas tiesiog stebės tinklo srautą ir stebės autentišką aukos sesijos slapuką. Užpuolikas gali pavogti tą slapuką ir atlikti ataką „žmogus viduryje“.

Nepatvirtinti peradresavimai ir persiuntimai

apibūdinimas

Žiniatinklio programa naudoja kelis metodus, kad nukreiptų ir nukreiptų vartotojus į kitus puslapius pagal paskirtį.

Jei peradresuojant į kitus puslapius nėra tinkamo patvirtinimo, užpuolikai gali tuo pasinaudoti ir nukentėjusiuosius nukreipti į sukčiavimo ar kenkėjiškų programų svetaines arba naudoti pirmyn norėdami patekti į neleistinus puslapius.

Implikacija

  • Užpuolikas gali nusiųsti vartotojui URL, kuriame yra tikras URL, pridėtas prie užkoduoto kenkėjiško URL. Vartotojas, tik pamatęs tikrąją užpuoliko išsiųsto URL dalį, gali jį naršyti ir tapti auka.

Pavyzdžiai

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

Pakeista į

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

Rekomendacijos

  1. Paprasčiausiai venkite programoje naudoti peradresavimus ir persiuntimus. Jei naudojamas, apskaičiuojant paskirties vietą nenaudokite vartotojo parametrų.
  2. Jei negalima išvengti paskirties parametrų, įsitikinkite, kad pateikta vertė yra teisinga ir patvirtinta vartotojui.

Prie šio straipsnio prisidėjo Prasanthi Eati