Pentesting av web -sårbarheter med Damn Vulnerable Web App

Innholdsfortegnelse

Målet er at både nybegynnere og profesjonelle brukere som er interessert i å analysere og løse sikkerhetsproblemer, kan sette sin kunnskap, ferdigheter og verktøy på prøve i et simulert miljø, denne typen verktøy er veldig nyttige for webutviklere De kan forstå problemene som en applikasjon eller et nettsted kan ha, og forbedre programmeringen eller se etter sårbarheter.

Selv om de fleste utviklere har tatt forholdsregler mot potensielle sårbarheter, er mange sårbarheter som f.eks Cross Site Scripting (XSS) eller SQL -injeksjoner, som påvirker sikkerheten til mange nettsteder og dermed til brukerne.

I denne opplæringen skal vi installere og konfigurere et nettsted som skal brukes som testlaboratorium for nettsikkerhetsrevisjoner, hvor vi vil finne forskjellige sårbarheter, enda mer vanlige, som foreslår ulike vanskelighetsgrader i sårbarheter, som deretter kan analyseres.

Vi vil bruke Damn Vulnerabilty Web Application (DVWA), det er et nettsted å installere på hvilken som helst server vi har, inkludert en lokal for å kunne utføre pentestingstester. Vi kan laste det ned fra det offisielle nettstedet.

Etter nedlasting trenger vi en webserver eller en lokal server som angitt i opplæringsprogrammene:

  • Slik installerer du Xampp for å gjøre datamaskinen til en webserver
  • Easyphp bærbar webserver

Nå etter å ha lastet ned zip -filen til Damn Vulnerabilty Web Application (DVWA), pakker vi den ut og kopierer den til mappen til vår webserver, i så fall bruker vi Xampp under Linux.

Deretter må vi konfigurere databasen for dette, vi går fra phpmyadmin.

Hvis vi vil gjøre det fra et terminalvindu, bruker vi følgende kommando, vi kan få tilgang via ssh:

 ssh bruker @ miip
Først skal vi logge på MySQL -serveren fra kommandolinjen med følgende kommando:
 mysql -u root -p
I dette tilfellet er rotbrukeren spesifisert med -u -flagget, og deretter brukes -p -flagget for å indikere at MySQL bør be om et passord. Vi skriver inn tilgangsnøkkelen for å kunne logge på MYSQL.

Deretter kan vi lage databasen fra kommandolinjen:

 lage database dvwa;
Deretter går vi til config -katalogen og redigerer deretter filen config.inc.php, her endrer vi dataene for å angi navnet på databasen, brukeren og passordet for tilgang:
 
Vi lagrer konfigurasjonen, og vi må gå til nettleseren der vi har nettet og klikke på Opprett / tilbakestill database å fortsette med installasjonen.

Deretter vil vi lage dataene i databasen som vi konfigurerer, og vi kan se noen verktøy som nettet bringer.

Etter installasjonen, når vi går tilbake til nettet http: // localhost / dvwa, får vi en påloggingsskjerm:

For å få tilgang til nettstedet bruker vi følgende data:

Bruker: admin
Nøkkel: passord

I den venstre kolonnen på nettet har vi en meny på slutten, vi kan se alternativet DVWA SIKKERHETHerfra kan vi konfigurere vanskelighetsgraden for sårbarheter, sikkerhetsnivåene er lave, middels, høye eller umulige.

Sikkerhetsnivået endrer sårbarhetsnivået til DVWA:

Lavt sikkerhetsnivåDette sikkerhetsnivået er helt sårbart og har ingen sikkerhetstiltak, så det vil gjøre det lettere for oss å teste hackingsteknikker. Bruken er å være et eksempel på hvordan webprogrammets sårbarheter manifesterer seg gjennom dårlige kodingspraksis og å tjene som en plattform for å lære eller lære grunnleggende utnyttelse, sprekk og hackingsteknikker.

Middels sikkerhetsnivåDette nivået viser sårbarheter, der utvikleren ikke har sikret at koden og utviklingen ikke har noen sårbarheter.

Høyt sikkerhetsnivåDette nivået tar sikte på at de mest avanserte brukerne skal møte en middels vanskelighet, med en blanding av dårlig programmeringspraksis i webkoden. Her kan vi prøve avanserte teknikker.

Sikkerhetsnivå umuligDette nivået er det sikreste mot alle sårbarheter. Den brukes til å sammenligne sårbar kildekode med sikker kildekode. Dette nivået tar sikte på å demonstrere hvordan et nettsted må utvikles riktig og hvordan det må reagere før mulige angrep.

Vi satte det laveste nivået for å kunne teste forskjellige hackingsteknikker og sårbarhetsdeteksjon.

Test Brute Force for å knekke en pålogging med ditt eget skript
Vi får tilgang til Brute Force -lenken, og vi ser at det er et påloggingsskjema, vi legger inn data i brukernavn og passord for å få det til å mislykkes og se om det oppstår en feil.

Når påloggingen mislykkes, ser vi en nettadresse med dataene som er angitt, og tar URL -adressen som viser oss:
http: // localhost / dvw … se & Logg inn = Logg inn #,

Derfor kan vi lage et skript som tester forskjellige kombinasjoner for bruker og passord eller bruke et program som xHydra som er et grafisk grensesnitt for Hydra eller direkte fra kommandolinjen hvis det er den eneste tilgangen vi har via SSH til serveren.

For å installere Hydra bruker vi følgende kommandoer:

 sudo add-apt-repository ppa: pi-rho / securitysudo apt-get updatesudo apt-get install hydra hydra-gtk
Etter installasjonen må vi søke eller lage brukerlister og mulige nøkler i txt -format eller lete etter en ordbok som skal brukes som vi gjorde i opplæringen.

Også en tekstfil med navn på mulige brukere. Vi kan også bruke en allerede funksjonell database, for eksempel disse skullsecurity.org -ordbøkene som brukes i mange verktøy, antivirus, etc., som tillater passordsprekk eller hacking. Alle datakilder er gratis å bruke.

Deretter bruker vi hydra med listene vi har ved å bruke følgende kommandoer:

 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 : Pålogging mislyktes "-w 10 -V 

Vi kan se at noen resultater har vært positive, og viser grønt brukerne og passordet som oppnådde den aksepterte påloggingen. Hvis vi prøver med admin bruker og passord, vil vi gå inn for å se brukerpanelet

Sårbarhet for SQL -injeksjon
På det laveste sikkerhetsnivået er nettet sårbart for SQL -injeksjon, før vi begynner å injisere kode i tekstfeltet, kan vi observere koden som konsulterer tabellen i PHP som er sårbar.

 
Feilen er at dataene ikke skal sendes av GET, men ved å bruke POST, og for det andre må det kontrolleres at dataene som kommer ikke inneholder skadelig kode.

SQL -setningen utfører direkte det som kommer uten kontroller eller verifisering. Så dette gjør koden sårbar for SQL -injeksjoner, for eksempel kan vi få den komplette listen over brukere hvis vi på SQL -injeksjonssiden i stedet for en id legger til følgende kode:

 1 'ELLER 1 = 1 UNION SELECT null, versjon () #
Resultatet blir listen over brukere.

Vi kan også få hele tabelllisten hvis vi bruker følgende kode i tekstfeltet.

 1 'ELLER 1 = 1 UNION SELECT null, tabellnavn FRA INFORMATION_SCHEMA.tabeller

Vi kan bruke andre kombinasjoner for å få en liste over brukere og se dataene i hver tabell.

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

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave