Įsilaužimas ir saugumo bandymai su DE-ICE

Įsiskverbimo testavimas - tai tinklo pažeidžiamumo patikrinimas, prieš jį išnaudojant kenkėjiškam užpuolikui ar įsilaužėliams. „DE-ICE“ yra virtuali mašina, kurioje yra diegimas „Linux Slax“ ir tai padeda praktikuoti pradedantiesiems iki pat pažengusių praktikų.

„Slax“ yra tiesioginis GNU / Linux operacinės sistemos kompaktinis diskas pagrįstas „Slackware“ platinimu. „Slax“ yra nešiojama „Linux“ operacinė sistema, ji neužima daug vietos ir užtikrina greitą veikimą.

„Slax“ teikia iš anksto įdiegtos programinės įrangos saugyklą ir yra plačiai naudojama administratorių, kad sukurtų bandymo platformas, konkrečius paskirstymus ir būtų naudinga kuriant atkūrimo įrankius, skverbties testavimą, saugumą ir tinklo modeliavimą naudojant virtualias mašinas sistemos administratoriams ir programinės įrangos ar saugumo ekspertų kūrėjams, sistema užima apie 190 MB. Grafinė sąsaja gali būti įdiegta arba neįdiegta, tačiau tai užimtų daug vietos ir sulėtintų sistemos veikimą.

„De-ICE“ galima įdiegti „VirtualBox“ arba įrašyti į kompaktinį diską, kad būtų galima naudoti kaip „LiveCD“. Yra keletas skirtingų sunkumų lygių versijų, pradedantiesiems skirta versija DE-ICE1.100, o šiuo metu sudėtingiausia-DE-ICE1.140. Šiai pamokai naudosime DE-ICE 1.120 versiją, kurią galima rasti adresu https: //www.vulnhub… .e-ice-s1120,10 /.

Ši virtuali mašina yra specialiai paruošta patikrinti mūsų žinias ir pritaikyti bet kokius skverbties testavimo metodus ar priemones.

„De-ICE PenTest Lab 1.120“ bandymas
Skverbties testavimo procedūroms įdiekite DE-ICE.1.120 versiją, o aš naudoju „Linux Mint“ ir „VirtualBox“, kad įdiegčiau DE-ICE. Jį galima naudoti iš bet kurios operacinės sistemos, kuri leidžia sukurti virtualią mašiną.

Pradedu ieškoti dabartinio IP adreso iš terminalo, naudodamas komandą ifconfig, ir rezultatas yra toks:

 IP: 192.168.0.11

Toliau naudoju kitą pasirinktą programinę įrangą, tačiau jie gali išbandyti kitas, kad tiktų vartotojui.

A) Aš naudoju „Zenmap“, kad nuskaitytų visus kompiuterius 1-254


Pamokose:
  • „Zenmap“ vaizdinis įrankis, skirtas uosto saugumo bandymams
  • Kaip naudoti „Nmap“, norint nuskaityti VPS ir „Metasploit“ sistemos atvirus prievadus, kad būtų patikrintas serverio saugumas

Pamatėme kai kuriuos uosto nuskaitymo įrankius ir kaip juos naudoti.

Mes atidarome „Zenmap“, aš priskiriu IP ir parametrus, kad jis nuskaitytų visą tinklą ir parodytų man prijungtą įrangą ir IP.

IP 192.168.0.1 atitinka maršrutizatoriaus Gateway IP, kai prievadas 80 atidarytas, ir maršrutizatoriaus IP 192.168.0.10, kai visi prievadai uždaryti.

Žvelgdamas į kiekvieno pagrindinio kompiuterio topologiją ir charakteristikas, nusprendžiu, kad „ip 192.168.0.38“ yra virtualios mašinos „WiFi“ IP, o „ip 192.168.0.40“ yra „Ethernet“ ryšys - virtuali mašina.

Prisijungiu prie virtualios mašinos arba VPS IP ir randu svetainę produktams registruoti.

Iš esmės [spalva = # b22222] rimtas gedimas [/ spalva] būtų tai, kad šioje svetainėje nėra jokio tipo naudotojų prieigos kontrolės, tokiu būdu ji turėtų prieigą prie visų tinklo vartotojų, nesvarbu, kiek intranete.

Iš „Zenmap“ taip pat stebiu nuskaitytus šio prieglobos prievadus.

Manau, kad keli prievadai yra atviri, kad būtų galima pasiekti brutalios jėgos išpuolius, priverčiant vartotoją ir slaptažodį naudojant tokias priemones kaip „Hydra“ ar „John the Ripper“.

Taip pat galime pamatyti topologiją, skirtą kiekvienam pagrindiniam kompiuteriui ir su kuo jis yra susijęs.

Taigi tokiu būdu galime pamatyti įrangos charakteristikas, tai, kaip sukonfigūruotas tinklas ir kokie šeimininkai gali būti užpulti.

B) Pažeidžiamumo nuskaitymas


Aš naudoju OSWAP ZAP, norėdamas patikrinti pažeidžiamumą. Pamokoje pamatėme šį įrankį:
  • Nuskaitykite svetainės pažeidžiamumą naudodami ZAP

Tai leidžia mums patikrinti svetainės pažeidžiamumą, pateikiant ataskaitas apie rastus pažeidimus.
Naudodami filtrą ir aktyvias bei pasyvias nuskaitymo taisykles galime rasti žiniatinklio pažeidžiamumų. Jis taip pat rodo mums visus žiniatinklio puslapius, netgi nurodo, kurie yra tie, kurie gauna tam tikro tipo parametrus pagal URL.

Po nuskaitymo matau žiniatinklio struktūrą su PHP programuotais puslapiais ir pažeidžiamumus pagal taikomus filtrus.

Produkto įterpimo puslapio atveju matome, kad jis gauna parametrus naudojant POST metodą, taip pat galime matyti laukus ar kintamuosius, kuriuos jis gauna.

C) XSS kodo įpurškimas


Tada mes eisime į puslapį, norėdami pridėti produktą (pridėti produktą) ir taikyti XSS injekcijos metodai kur suleidžiu html ir „JavaScript“ kodą, norėdamas pamatyti, ar jis yra pažeidžiamas tokio tipo atakoms.

Kaip pirmąjį bandymą produkto aprašyme pridedu išorinio vaizdo html kodą, kurį galite pasirinkti ieškodami „Google“.

 
Jei vaizdas yra pažeidžiamas, jis bus išsaugotas duomenų bazėje ir bus rodomas produktų, kuriuos turėsime ieškoti derinyje, sąraše, kurį priskirsime, rezultatas bus toks:

[color = # b22222] Jis yra pažeidžiamas XSS [/ color], nes galime įvesti bet kokį html ar „JavaScript“ kodą, įskaitant nuorodas.

Į aprašymo lauką įterpiame iframe ir išsaugome:


Tada mes ieškome produkto pagal kodą 003 ir galime pamatyti rezultatą

Naudodami šią techniką galime įvesti formą, imituodami prisijungimą ir kad duomenys iš tikrųjų yra išsaugomi išorinėje duomenų bazėje. Mes galime išjungti produktų, kurie nukreipia į kitą svetainę, sąrašą, jei bet kuriame produkto registracijos lauke pridėsime šį html kodą:

 
Kai kas nors bandys pamatyti produktų sąrašą, jie bus automatiškai persiųsti į šiuo atveju nurodytą svetainę „Google“.

D) SQL injekcija Prieiga prie duomenų bazės


„Sqlmap“ yra labai naudingas įrankis, skirtas pamokų metu patikrinti duomenų bazių serverių saugumą:
  • SQLMAP SQL įpurškimo įrankis ir etinis duomenų bazės įsilaužimas
  • „BadStore“: internetinis testų testavimas.

Aš naudoju sqlmap, norėdamas nustatyti, ar yra duomenų bazių, naudojant šias komandas.

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --dbs

Matome, kad serveris yra „Apache 2.2.11“, kuris naudoja „php 5.2.9“ ir kad duomenų bazės serveris yra „MySQL 5.0.12“, taip pat peržiūrime visas turimas duomenų bazes, įskaitant tas, kurios yra bazinio serverio „MySQL“ duomenų konfigūracija.

Tada naudoju komandą, norėdamas patikrinti, ar prekių duomenų bazėje yra lentelių, kurios, manau, turi produktų lentelę, kurią įvedame žiniatinklyje.

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" -lentelės -D prekės

Radome lentelę, kurią naudoja svetainė. Žemiau galiu pažvelgti į produktų lentelę su šia komanda

 python sqlmap.py -u "http://192.168.0.50/products.php?id=1" --column -D merch -T produktai

Ieškau vartotojų, kurie turi „Mysql“ paskyrą ir bando rasti administratorių, pagal nutylėjimą naudoju sqlmap duomenų žodyną, esantį aplanke sqlmap-dev / txt / wordlist.zip

Šiame kataloge rasite kelis žodynus, „sqlmap“ bus atsakingas už failo išpakavimą ir naudojimą, naudotojų ir slaptažodžių paiešką, kad galėčiau išbandyti, ar galiu atrasti ir sukonfigūruoti vartotojų vardus „MySQL“ serveryje, todėl naudoju tokia komanda:

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" -vartotojai -slaptažodžiai

Toliau ieškau vartotojo tipo, kad pamatyčiau, kokios yra kiekvieno vartotojo prieigos teisės, siekiant nustatyti, kas yra administratoriai ir kokie yra jų prieigos kodai.

 python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --current -user --is -dba --is -dba --privileges --dbs -dump

Atliekant vykdymą, atskleidžiami kiekvieno vartotojo slaptažodžiai, skirti prieigai prie duomenų bazių ir kokios privilegijos jie turi.

Kai nuskaitymas bus baigtas, sąrašo pabaigoje galime pamatyti kiekvieno vartotojo privilegijas ir nustatyti, kurie vartotojai yra administratoriai.

Manau, kad yra keli administratoriaus vartotojai, todėl paimsiu vartotoją jdavenport kas yra administratorius ir jo slaptažodis babyl0n, bandyti prisijungti prie sistemos

Toliau bandau pažeisti SSH 22 prievadą gautais duomenimis:

Galima pastebėti, kad prieigą gavau kaip administratorius ir visiškai kontroliuoju serverį. Naudodami komandą cd / einame į šakninį katalogą ir iš ten galime pasiekti bet kurį sektorių, pvz., Pamatyti kitų vartotojų aplankus ir paskyras

Turėdami prieigą per SSH kartu su gautu vartotojo vardo ir slaptažodžio deriniu. Kitas mūsų tikslas bus privilegijų didinimas, nors jau turime pagrindinį ar administratoriaus vartotoją.
Norėdami manipuliuoti leidimais, turime susipažinti su failais, kuriuose yra leidimai, vartotojai, grupės ir prieigos kodai, kurie yra kataloge / etc

  • Vartotojas ir grupės su raktais kataloge: / etc / passwd
  • Grupės ir leidimai kataloge: / etc / sudores

Mes galime pasiekti vartotojų failą ir sistemos raktus naudodami šią komandą:

 nano / etc / password

Galime naršyti tarp jų esančius katalogus, matyti žiniatinklyje esančius failus ir juos vėliau atsisiųsti per ftp arba iš „ssh“ konsolės, galime nukopijuoti juos į vietinį katalogą, jei norime juos redaguoti arba peržiūrėti kodą, kad jis būtų saugesnis ir dar kartą išbandytas.

Dabar, kai žinome administratoriaus prieigos duomenis, galime prisijungti prie virtualios mašinos.

Kaip išvengti SQL įpurškimo išpuolių
Žiniatinklio saugumas čia yra labai svarbus, nes SQL įterpimo problema užima visą serverį.

Turite kontroliuoti, kas siunčiama kaip parametras URL, pavyzdžiui:

 http://192.168.0.40/products.php?id=1
Atlikdami SQL užklausą, turime įsitikinti, kad galima įvesti neatitinkančius simbolius ar parametrus, pavyzdžiui:
 $ sql = SELECT * FROM users WHERE user = 'jose' and password = '12345' OR '1' = '1';
Sakinys yra labai panašus į vartotojo prisijungimą, kuriame ieškome, ar yra vartotojo ir slaptažodžio, vartotojų lentelėje, ar yra kas nors užregistruotas naudotojo vardu, kurį siunčiame kaip parametrą, ir jei jo slaptažodis yra „12345“ arba jei 1 yra tas pats iki 1 '.

Ši išraiška nustato, kad jei raktas neteisingas, išraiška 1, lygi 1, yra teisinga ir mes galėtume patekti į sistemą nežinodami slaptažodžio.

Vienas iš būdų yra išvengti kintamųjų, pavyzdžiui, PHP:

 mysql_real_escape_string ($ _ POST [‘vartotojas’]);
Jei mums reikia siųsti parametrus url, turėtume juos užšifruoti naudodami md5, sha1 arba base64 ir galime siųsti įvairius užšifruotus duomenis, kad galutinis parametro formatas nebūtų tiesiogiai susijęs su duomenimis ar laukais duomenų bazėje.

Be to, turėtų būti sistema, kuri vengia prievadų nuskaitymo ir kelių jungčių iš to paties IP, šiuo atveju užtektų užkardos su „iptables“ ir įsilaužimo detektoriaus.

Viena priemonė, kurią galime naudoti, yra „PortSentry“ arba „Fail2Ban“ Jis įdiegtas iš „Linux“ saugyklos, ir mes turime tik sukonfigūruoti, kurie prievadai turėtų būti apsaugoti, jei vienas iš šių prievadų bus nuskaitytas, jis automatiškai užblokuos mus puolantį IP.

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

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave