Hacking og sikkerhet Pentesting med DE-ICE

Penetrasjonstest er handlingen med å teste et nettverk for sikkerhetsproblemer før det blir utnyttet av en ondsinnet angriper eller hackere. DE-ICE er en virtuell maskin som inneholder en installasjon Linux Slax og det tjener til å øve både for nybegynnere helt til avanserte utøvere.

Slax er en Live CD av operativsystemet GNU / Linux basert på Slackware -distribusjonen. Slax er et bærbart Linux -operativsystem, det tar ikke mye plass og gir rask ytelse.

Slax tilbyr et lager av forhåndsinstallert programvare og brukes mye av administratorer for å lage testplattformer, spesifikke distribusjoner og nyttig for å lage gjenopprettingsverktøy, penetrasjonstesting, sikkerhet og nettverkssimuleringer med virtuelle maskiner for systemadministratorer og utviklere av programvare eller sikkerhetseksperter, systemet opptar omtrent 190 MB. Et grafisk grensesnitt kan installeres eller ikke, men dette vil ta mye plass og gjøre systemet tregt.

De-ICE kan installeres i VirtualBox eller brennes til CD for bruk som LiveCD. Det er flere versjoner som presenterer forskjellige vanskelighetsgrader, versjonen for nybegynnere er DE-ICE1.100 og den mest komplekse for tiden er DE-ICE1.140. For denne opplæringen bruker vi DE-ICE 1.120-versjonen som er tilgjengelig på https: //www.vulnhub… .e-ice-s1120,10 /.

Denne virtuelle maskinen er spesielt forberedt på å teste vår kunnskap og anvende eventuelle penetrasjonstestteknikker eller -verktøy.

Pentesting av De-ICE PenTest Lab 1.120
For prosedyrer for penetrasjonstest installerer du DE-ICE.1.120-versjonen, og jeg bruker Linux Mint og VirtualBox for å installere DE-ICE. Den kan brukes fra ethvert operativsystem som lar deg lage en virtuell maskin.

Jeg begynner å lete etter min nåværende ip fra en terminal ved hjelp av ifconfig -kommandoen, og resultatet er følgende:

 IP: 192.168.0.11

Deretter bruker jeg annen programvare etter eget valg, men de kan prøve andre som passer brukeren.

A) jeg bruker Zenmap for å skanne alle verter mellom 1-254


I opplæringsprogrammene:
  • Zenmap visuelt verktøy for portsikkerhetstesting
  • Hvordan bruke Nmap til å skanne åpne porter på VPS og Metasploit -rammeverket for å teste serversikkerhet

Vi så noen verktøy for portskanning og hvordan vi bruker dem.

Vi åpner Zenmap, jeg tildeler IP og parametere slik at den skanner hele nettverket og viser meg det tilkoblede utstyret og IP -ene.

IP 192.168.0.1 tilsvarer Gateway IP til ruteren med port 80 åpen og IP -adressen til ruteren 192.168.0.10 med alle porter lukket.

Når jeg ser på topologien og egenskapene til hver vert, bestemmer jeg at ip 192.168.0.38 er WiFi ip på den virtuelle maskinen og ip 192.168.0.40 er ethernet -tilkoblingen er den virtuelle maskinen.

Jeg får tilgang til IP -en til den virtuelle maskinen eller VPS og finner et nettsted for å registrere produkter.

I prinsippet [color = # b22222] ville en alvorlig feil [/ color] være at dette nettstedet ikke har noen form for brukerkontroll, på denne måten vil det ha tilgang til alle brukere av nettverket, uansett hvor mye det er i et intranett.

Fra Zenmap observerer jeg også de skannede portene for denne verten.

Jeg finner flere porter åpne for å prøve brute force -angrep for å få tilgang ved å tvinge bruker og passord med verktøy som Hydra eller John the Ripper, blant andre.

Vi kan også se topologien for å analysere hver vert og hvem den er koblet til.

På denne måten kan vi se egenskapene til utstyret, hvordan nettverket er konfigurert og hvilke vertene vi kan angripe.

B) Sårbarhetsskanning


Jeg bruker OSWAP ZAP for å gjøre en sårbarhetsskanning. Vi så dette verktøyet i opplæringen:
  • Skann et nettstedssårbarhet med ZAP

Det lar oss skanne sårbarheter på et nettsted ved å presentere rapporter om sårbarhetene som er funnet.
Ved å bruke filter og aktive og passive skanningsregler kan vi finne sårbarhetene på nettet. Det viser oss også alle sidene som nettet inneholder, det indikerer til og med hvilke som er de som mottar en eller annen parameter via url.

Etter skanningen kan jeg se strukturen på nettet med sidene programmert i PHP og sårbarhetene i henhold til filtrene som er brukt.

Når det gjelder produktinnsettingssiden, ser vi at den mottar parametere gjennom POST -metoden, og vi kan også se feltene eller variablene den mottar.

C) XSS -kodeinjeksjon


Deretter går vi til siden for å legge til et produkt (Legg til produkt) og søke XSS injeksjonsteknikker hvor jeg injiserer html og Javascript -kode for å se om den er sårbar for denne typen angrep.

Som en første test legger jeg til html -koden til et eksternt bilde i produktbeskrivelsen, du kan velge hvilken som helst ved å søke i Google.

 
Hvis bildet er sårbart, vil det bli lagret i databasen, og det vil bli vist i listen over produkter som vi må søke i kombinasjonsboksen etter koden vi tilordner, resultatet er følgende:

[color = # b22222] Det er sårbart for XSS [/ color] siden vi kunne angi hvilken som helst html- eller javascript -kode, inkludert lenker.

Vi setter inn en iframe i beskrivelsesfeltet og lagrer:


Deretter ser vi etter produktet med kode 003, og vi kan se resultatet

Ved å bruke denne teknikken kan vi skrive inn et skjema med simulering av en pålogging og at dataene faktisk er lagret i en ekstern database. Vi kan deaktivere listen over produkter som forårsaker en omdirigering til et annet nettsted hvis vi i et produktregistreringsfelt legger til følgende html -kode:

 
Når noen prøver å se listen over produkter, blir de automatisk videresendt til nettstedet som er angitt i dette tilfellet Google.

D) SQL -injeksjon Databasetilgang


Sqlmap er et veldig nyttig verktøy for å teste sikkerheten til databaseservere i opplæringsprogrammene:
  • SQLMAP SQL -injeksjonsverktøy og hacking av etisk database
  • BadStore: Nett for pentestingstester.

Jeg bruker sqlmap for å avgjøre om noen databaser er tilgjengelige ved hjelp av følgende kommandoer.

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

Vi kan se at serveren er Apache 2.2.11, som bruker php 5.2.9 og at databaseserveren er MySQL 5.0.12, vi ser også alle tilgjengelige databaser, inkludert de som er konfigurasjon av baseserveren MySQL -data.

Deretter bruker jeg kommandoen for å bekrefte om det er tabeller i merch -databasen, som jeg antar har produkttabellen som vi skriver inn på nettet.

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

Vi fant tabellen som nettstedet bruker. Nedenfor kan jeg se på produkttabellen med følgende kommando

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

Jeg leter etter å finne ut brukerne som har en Mysql-konto som prøver å finne en administrator. Som standard bruker jeg sqlmap-dataordlisten i mappen sqlmap-dev / txt / wordlist.zip

I denne katalogen finner vi flere ordbøker, sqlmap har ansvaret for å pakke opp og bruke filen, for å søke etter brukere og passord for å teste om jeg kan oppdage og få brukernavnene konfigurert på MySQL -serveren, for dette bruker jeg følgende kommando:

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

Deretter ser jeg etter typen bruker for å se hva som er tilgangsrettighetene til hver bruker for å avgjøre hvem som er administratorer og hva som er deres tilgangskoder.

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

Som et resultat av utførelsen avsløres passordene til hver bruker for å få tilgang til databasene og hvilke privilegier de har.

Når skanningen er fullført, kan vi på slutten av listen se privilegiene til hver bruker og bestemme hvilke brukere som er administratorer.

Jeg finner ut at det er flere administratorbrukere, derfor tar jeg brukeren jdavenport som er administrator og passordet hans er babyl0n, for å prøve å få tilgang til systemet

Deretter prøver jeg å bryte SSH -port 22 med dataene som er innhentet:

Det kan sees at jeg fikk tilgang som administrator, og jeg har full kontroll over serveren. Ved å bruke cd / kommandoen går vi til rotkatalogen og derfra kan vi få tilgang til alle sektorer, for eksempel å se mappene og kontoene til de andre brukerne

Ved å ha tilgang via SSH med kombinasjonen av brukernavn og passord som vi har fått. Vårt neste mål vil være opptrapping av privilegier, selv om vi allerede har en root- eller administratorbruker.
For å manipulere tillatelsene må vi konsultere filene som inneholder tillatelser, brukere, grupper og tilgangskoder disse filene er i / etc -katalogen

  • Bruker og grupper med nøklene i katalogen: / etc / passwd
  • Grupper og tillatelser i katalogen: / etc / sudores

Vi kan få tilgang til filen med brukere og systemnøkler gjennom følgende kommando:

 nano / etc / password

Vi kan gå gjennom katalogene mellom dem, vi kan se filene på nettet som vi analyserte og laste dem ned senere via ftp eller fra ssh -konsollen, vi kan kopiere dem til vår lokale katalog hvis vi vil redigere dem eller se gjennom kode for å gjøre den mer sikker og teste igjen.

Nå som vi kjenner tilgangsdataene til en administrator, kan vi logge på den virtuelle maskinen.

Slik unngår du SQL -injeksjonsangrep
Sikkerheten på nettet er veldig viktig her på grunn av et SQL -injeksjonsproblem vi tar hele serveren.

Du må kontrollere hva som sendes som en parameter i nettadressene, for eksempel:

 http://192.168.0.40/products.php?id=1
Når vi utfører sql -spørringen, må vi kontrollere at tegn eller parametere som ikke samsvarer kan skrives inn, for eksempel:
 $ sql = SELECT * FRA brukere HVOR bruker = 'jose' og passord = '12345' ELLER '1' = '1';
Setningen ligner veldig på en brukerpålogging der vi søker om brukeren og passordet finnes, i tabellen for brukere, hvis det er noen registrert med et brukernavn som vi sender som parameter og hvis passordet er '12345 eller hvis 1 er samme til 1 '.

Dette uttrykket bestemmer at hvis nøkkelen ikke er korrekt, er uttrykket 1 lik 1 sant, og vi vil kunne gå inn i systemet uten å vite passordet.

En metode er å unnslippe variablene for eksempel i PHP:

 mysql_real_escape_string ($ _ POST [‘bruker’]);
Hvis vi trenger å sende parametere via url, bør vi kryptere dem ved hjelp av md5, sha1 eller base64, og vi kan sende forskjellige krypterte data slik at det endelige formatet til parameteren ikke er direkte relatert til data eller felt i databasen.

I tillegg bør det være et system som unngår portskanning og flere tilkoblinger fra samme IP, en brannmur i dette tilfellet med iptables ville være tilstrekkelig og en inntrengningsdetektor.

Et verktøy vi kan bruke er PortSentry eller Fail2Ban Den er installert fra et linux -depot, og vi trenger bare å konfigurere hvilke porter som skal beskyttes. Hvis en av disse portene blir skannet, vil den automatisk blokkere IP -adressen som angriper oss.

Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng
wave wave wave wave wave