Žiniatinklio pažeidžiamumų bandymas naudojant „Damn Vulnerable Web App“

Turinys

Tikslas yra tas, kad tiek pradedantieji, tiek profesionalūs vartotojai, norintys analizuoti ir spręsti saugumo problemas, gali išbandyti savo žinias, įgūdžius ir įrankius imituojamoje aplinkoje. įrankiai yra labai naudingi žiniatinklio kūrėjams Jie gali suprasti programos ar svetainės problemas ir patobulinti programavimą arba ieškoti pažeidžiamumų.

Nors dauguma kūrėjų ėmėsi atsargumo priemonių nuo galimų pažeidžiamumų, daugelis pažeidžiamumų, tokių kaip Kryžminis svetainių scenarijus (XSS) arba SQL injekcijos, kurie daro įtaką daugelio svetainių, taigi ir vartotojų, saugumui.

Šioje pamokoje mes ketiname įdiegti ir sukonfigūruoti svetainę, kad ji būtų naudojama kaip bandymų laboratorija žiniatinklio saugos auditams atlikti, kur rasime įvairių, dar dažniau pasitaikančių, pažeidžiamumų, siūlančių įvairius pažeidžiamumo lygius, kuriuos vėliau galima išanalizuoti.

Mes naudosime „Damn Vulnerabilty Web Application“ (DVWA), tai yra svetainė, kurią reikia įdiegti bet kuriame turimame serveryje, įskaitant vietinį, kad galėtume atlikti bandymus. Mes galime jį atsisiųsti iš oficialios svetainės.

Atsisiuntę mums reikia žiniatinklio serverio arba vietinio serverio, kaip nurodyta vadovėliuose:

  • Kaip įdiegti „Xampp“, kad jūsų kompiuteris taptų žiniatinklio serveriu
  • „Easyphp“ nešiojamasis žiniatinklio serveris

Atsisiuntę „Damn Vulnerabilty Web Application“ (DVWA) ZIP failą, mes jį išpakuojame ir nukopijuojame į žiniatinklio serverio aplanką, tokiu atveju „Linux“ naudojame „Xampp“.

Toliau turime sukonfigūruoti duomenų bazę, iš kurios eisime iš „phpmyadmin“.

Jei norime tai padaryti iš terminalo lango, naudosime šią komandą, kurią galime pasiekti per ssh:

 ssh vartotojas @ miip
Pirmiausia prisijungsime prie „MySQL“ serverio iš komandinės eilutės naudodami šią komandą:
 mysql -u root -p
Tokiu atveju pagrindinis vartotojas nurodomas su -u vėliava, o tada -p vėliava naudojama norint nurodyti, kad „MySQL“ turėtų prašyti slaptažodžio. Mes įvedame prieigos raktą, kad galėtume prisijungti prie MYSQL.

Tada mes galime sukurti duomenų bazę iš komandinės eilutės:

 sukurti duomenų bazę dvwa;
Toliau einame į konfigūracijos katalogą ir tada redaguojame failą config.inc.php, čia mes modifikuojame duomenis, kad nurodytume duomenų bazės pavadinimą, naudotoją ir prieigos slaptažodį:
 
Išsaugome konfigūraciją ir turime eiti į naršyklę, kurioje yra žiniatinklis, ir spustelėti Sukurti / iš naujo nustatyti duomenų bazę tęsti diegimą.

Tada sukursime sukonfigūruotos duomenų bazės duomenis ir pamatysime kai kuriuos žiniatinklio įrankius.

Po įdiegimo, kai grįšime į žiniatinklį http: // localhost / dvwa, gausime prisijungimo ekraną:

Norėdami patekti į svetainę, naudosime šiuos duomenis:

Vartotojas: admin
Raktas: Slaptažodis

Kairiajame žiniatinklio stulpelyje turime meniu, kurį galime pamatyti DVWA SAUGUMASIš čia galime sukonfigūruoti pažeidžiamumo sunkumo lygį, saugumo lygis yra žemas, vidutinis, aukštas arba neįmanomas.

Saugos lygis keičia DVWA pažeidžiamumo lygį:

Žemas saugumo lygisŠis saugumo lygis yra visiškai pažeidžiamas ir neturi jokių saugumo priemonių, todėl leis lengviau išbandyti įsilaužimo metodus. Jis naudojamas kaip pavyzdys, kaip žiniatinklio programų pažeidžiamumas pasireiškia netinkama kodavimo praktika, ir būti platforma, skirta mokyti arba išmokti pagrindinių išnaudojimo, nulaužimo ir įsilaužimo metodų.

Vidutinis saugumo lygisŠis lygis parodo pažeidžiamumus, kai kūrėjas nesugebėjo užtikrinti, kad kode ir kūrinyje nėra pažeidžiamumų.

Aukštas saugumo lygisŠiuo lygiu siekiama, kad pažangiausi vartotojai susidurtų su vidutinio sunkumo problemomis, o žiniatinklio kode yra netinkamos programavimo praktikos. Čia galime išbandyti pažangias technologijas.

Neįmanoma saugumo lygioŠis lygis yra saugiausias nuo visų pažeidžiamumų. Jis naudojamas palyginti pažeidžiamą šaltinio kodą su saugiu šaltinio kodu. Šiuo lygiu siekiama parodyti, kaip svetainė turi būti tinkamai sukurta ir kaip ji turi reaguoti prieš galimas atakas.

Mes nustatėme žemiausią lygį, kad galėtume išbandyti įvairius įsilaužimo metodus ir pažeidžiamumo aptikimą.

Išbandykite žiaurią jėgą nulaužti prisijungimą naudojant savo scenarijų
Mes pasiekiame „Brute Force“ nuorodą ir matome, kad yra prisijungimo forma, įvedame bet kokius duomenis į vartotojo vardą ir slaptažodį, kad jie nepavyktų ir pamatytume, ar įvyksta klaida.

Kai nepavyksta prisijungti, matome URL su įvestais duomenimis, paimdami URL, kuris mums rodo:
http: // localhost / dvw … see & Login = Login #,

Todėl galime sukurti scenarijų, kuris patikrintų skirtingus vartotojo ir slaptažodžio derinius, arba naudoti tokią programą kaip „xHydra“, kuri yra grafinė „Hydra“ sąsaja, arba tiesiai iš komandinės eilutės, jei tai vienintelė prieiga prie serverio per SSH.

Norėdami įdiegti „Hydra“, naudosime šias komandas:

 sudo add-apt-saugykla ppa: pi-rho / securitysudo apt-get updates sud apt-get install hydra hydra-gtk
Įdiegę turėsime ieškoti arba sukurti naudotojų sąrašus ir galimus raktus txt formatu arba ieškoti žodyno, kurį naudosime, kaip tai darėme pamokoje.

Taip pat tekstinis failas su galimų vartotojų vardais, taip pat galime naudoti kai kurias jau veikiančias duomenų bazes, tokias kaip šie skullsecurity.org žodynai, naudojami daugelyje įrankių, antivirusinės programos ir pan., Kurie leidžia įsilaužti arba įsilaužti. Visi duomenų šaltiniai gali būti naudojami nemokamai.

Toliau mes naudosime hidrą su sąrašais, kuriuos turime naudodami šias komandas:

 hydra -L /home/innove/usuarios.txt -P /home/innove/claves.txt 192.168.0.11 http -post -form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login : Prisijungti nepavyko "-w 10 -V 

Matome, kad kai kurie rezultatai buvo teigiami, o žalia spalva rodomi vartotojai ir slaptažodis, kurie pasiekė patvirtintą prisijungimą. Jei bandysime naudoti administratoriaus vartotoją ir slaptažodį, pateksime į vartotojo skydelį

SQL įpurškimo pažeidžiamumas
Esant žemiausiam saugumo lygiui, žiniatinklis yra pažeidžiamas SQL injekcijos, prieš pradėdami įvesti kodą į teksto lauką, galime stebėti kodą, kuris yra pažeidžiamas PHP lentelėje.

 
Klaida ta, kad duomenys turėtų būti siunčiami ne GET, o naudojant POST, antra, reikia patikrinti, ar gautuose duomenyse nėra kenkėjiško kodo.

SQL sakinys tiesiogiai vykdo tai, kas atkeliauja be jokių valdiklių ar patikrinimų. Taigi kodas tampa pažeidžiamas SQL injekcijoms, pavyzdžiui, galime gauti visą vartotojų sąrašą, jei SQL injekcijos puslapyje vietoj ID pridėsime šį kodą:

 1 'ARBA 1 = 1 UNION SELECT null, version () #
Rezultatas bus vartotojų sąrašas.

Taip pat galime gauti visą lentelių sąrašą, jei teksto lauke pritaikysime šį kodą.

 1 'ARBA 1 = 1 UNION SELECT null, table_name iš INFORMATION_SCHEMA.table

Mes galime taikyti kitus derinius, kad gautume vartotojų sąrašą ir pamatytume kiekvienos lentelės duomenis.

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką
wave wave wave wave wave