Pentesterar webbsårbarheter med Damn Vulnerable Web App

Innehållsförteckning

Målet är att både nybörjare och professionella användare som är intresserade av att analysera och lösa säkerhetsproblem kan sätta sina kunskaper, färdigheter och verktyg på prov i en simulerad miljö, denna typ av verktyg är mycket användbara för webbutvecklare De kan förstå problemen som en applikation eller webbplats kan ha och förbättra programmeringen eller leta efter sårbarheter.

Även om de flesta utvecklare har vidtagit försiktighetsåtgärder mot potentiella sårbarheter, är många sårbarheter som t.ex. Cross Site Scripting (XSS) eller SQL -injektioner, som påverkar säkerheten för många webbplatser och därför för användare.

I den här handledningen ska vi installera och konfigurera en webbplats för att användas som ett testlabb för webbsäkerhetsrevisioner, där vi kommer att hitta olika sårbarheter, ännu vanligare, som föreslår olika svårighetsgrader i sårbarheter, som sedan kan analyseras.

Vi kommer att använda Damn Vulnerabilty Web Application (DVWA), det är en webbplats att installera på vilken server som helst som vi har, inklusive en lokal för att kunna göra pentestingstest. Vi kan ladda ner den från dess officiella webbplats.

Efter nedladdning behöver vi en webbserver eller en lokal server som anges i självstudierna:

  • Så här installerar du Xampp för att göra din dator till en webbserver
  • Easyphp bärbar webbserver

Nu när vi har laddat ner zip -filen för Damn Vulnerabilty Web Application (DVWA), packar vi upp den och kopierar den till mappen på vår webbserver, i så fall använder vi Xampp under Linux.

Därefter måste vi konfigurera databasen för detta kommer vi att gå från phpmyadmin.

Om vi ​​vill göra det från ett terminalfönster kommer vi att använda följande kommando, vi kan komma åt via ssh:

 ssh -användare @ miip
Först ska vi logga in på MySQL -servern från kommandoraden med följande kommando:
 mysql -u root -p
I det här fallet anges rotanvändaren med -u -flaggan, och sedan används -p -flaggan för att indikera att MySQL ska begära ett lösenord. Vi anger åtkomstnyckeln för att kunna logga in på MYSQL.

Sedan kan vi skapa databasen från kommandoraden:

 skapa databas dvwa;
Därefter går vi till konfigurationskatalogen och redigerar sedan filen config.inc.php, här ändrar vi data för att ange namnet på databasen, användaren och åtkomstlösenordet:
 
Vi sparar konfigurationen och vi måste gå till webbläsaren där vi har webben och klicka på Skapa / återställ databas för att fortsätta med installationen.

Därefter skapar vi data från databasen som vi konfigurerar och vi kan se några verktyg som webben ger.

Efter installationen, när vi går tillbaka till webben http: // localhost / dvwa, får vi en inloggningsskärm:

För att komma åt webbplatsen kommer vi att använda följande data:

Användare: administration
Nyckel: Lösenord

I den vänstra kolumnen på webben har vi en meny i slutet som vi kan se alternativet DVWA SÄKERHETHärifrån kan vi konfigurera svårighetsgraden för sårbarheter, säkerhetsnivåerna är låga, medelstora, höga eller omöjliga.

Säkerhetsnivån ändrar sårbarhetsnivån för DVWA:

Låg säkerhetsnivåDenna säkerhetsnivå är helt sårbar och har inga säkerhetsåtgärder, så det gör att vi lättare kan testa hackningstekniker. Dess användning är att vara ett exempel på hur sårbarheter i webbapplikationer manifesterar sig genom dåliga kodningspraxis och fungera som en plattform för att lära eller lära sig grundläggande exploaterings-, sprick- och hackningstekniker.

MedelsäkerhetsnivåDenna nivå visar sårbarheter, där utvecklaren inte har säkerställt att koden och utvecklingen inte har några sårbarheter.

Hög säkerhetsnivåDenna nivå syftar till att de mest avancerade användarna står inför en medelstor svårighet, med en blandning av dåliga programmeringsmetoder i webbkoden. Här kan vi prova avancerade tekniker.

Säkerhetsnivå OmöjligDenna nivå är den säkraste mot alla sårbarheter. Den används för att jämföra sårbar källkod med säker källkod. Denna nivå syftar till att visa hur en webbplats måste utvecklas korrekt och hur den måste reagera innan eventuella attacker.

Vi sätter den lägsta nivån för att kunna testa olika hackningstekniker och upptäckt av sårbarhet.

Testa Brute Force för att knäcka en inloggning med ditt eget skript
Vi får åtkomst till Brute Force -länken och vi ser att det finns ett inloggningsformulär, vi anger alla uppgif.webpter i användarnamnet och lösenordet för att få det att misslyckas och se om ett fel uppstår.

När inloggningen misslyckas ser vi en webbadress med inmatad data, med URL: en som visar oss:
http: // localhost / dvw … se & Logga in = Logga in #,

Därför kan vi skapa ett skript som testar olika kombinationer för användare och lösenord eller använda ett program som xHydra som är ett grafiskt gränssnitt för Hydra eller direkt från kommandoraden om det är den enda åtkomsten vi har via SSH till servern.

För att installera Hydra kommer vi att använda följande kommandon:

 sudo add-apt-repository ppa: pi-rho / securitysudo apt-get updatesudo apt-get install hydra hydra-gtk
Efter installationen måste vi söka eller skapa användarlistor och möjliga nycklar i txt -format eller leta efter en ordlista att använda som vi gjorde i handledningen.

Även en textfil med namn på möjliga användare, vi kan också använda en redan fungerande databas, till exempel dessa skullsecurity.org -ordböcker som används i många verktyg, antivirus, etc., som tillåter lösenordsprickning eller hackning. Alla datakällor är gratis att använda.

Därefter använder vi hydra med listorna som vi har med följande kommandon:

 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 : Inloggning misslyckades "-w 10 -V 

Vi kan se att vissa resultat har varit positiva och visar grönt användarna och lösenordet som uppnådde den accepterade inloggningen. Om vi ​​försöker med administratörsanvändaren och lösenordet kommer vi in ​​för att se användarpanelen

Sårbarhet i SQL -injektion
På den lägsta säkerhetsnivån är webben sårbar för SQL -injektion, innan vi börjar injicera kod i textfältet kan vi observera koden som konsulterar tabellen i PHP som är sårbar.

 
Felet är att data inte ska skickas av GET utan genom att använda POST och för det andra måste det kontrolleras att data som kommer inte innehåller skadlig kod.

SQL -satsen kör direkt det som kommer utan några kontroller eller verifiering. Så detta gör koden sårbar för SQL -injektioner, till exempel kan vi få en fullständig lista med användare om vi på SQL -injektionssidan istället för ett id lägger till följande kod:

 1 'ELLER 1 = 1 UNION SELECT null, version () #
Resultatet blir listan över användare.

Vi kan också få hela tabellistan om vi använder följande kod i textfältet.

 1 'ELLER 1 = 1 UNION SELECT null, tabellnamn FRÅN INFORMATION_SCHEMA.tabeller

Vi kan använda andra kombinationer för att få en lista med användare och se data i varje tabell.

Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave