Pentesten van webkwetsbaarheden met Damn Vulnerable Web App

Inhoudsopgave

Het doel is dat zowel beginnende als professionele gebruikers die geïnteresseerd zijn in het analyseren en oplossen van beveiligingsproblemen hun kennis, vaardigheden en tools kunnen testen in een gesimuleerde omgeving, dit soort tools zijn erg handig voor webontwikkelaars Ze kunnen de problemen van een applicatie of website begrijpen en de programmering verbeteren of op zoek gaan naar kwetsbaarheden.

Hoewel de meeste ontwikkelaars voorzorgsmaatregelen hebben genomen tegen mogelijke kwetsbaarheden, zijn veel kwetsbaarheden zoals: Cross-site scripting (XSS) of SQL-injecties, die van invloed zijn op de veiligheid van veel websites en dus van gebruikers.

In deze tutorial gaan we een website installeren en configureren om te gebruiken als testlab voor webbeveiligingsaudits, waar we verschillende kwetsbaarheden zullen vinden, zelfs vaker voorkomend, met verschillende moeilijkheidsgraden in kwetsbaarheden, die vervolgens kunnen worden geanalyseerd.

We zullen Damn Vulnerabilty Web Application (DVWA) gebruiken, het is een website om te installeren op elke server die we hebben, inclusief een lokale om pentesting-tests te kunnen doen. We kunnen het downloaden van de officiële website.

Na het downloaden hebben we een webserver of een lokale server nodig zoals aangegeven in de tutorials:

  • Xampp installeren om van uw computer een webserver te maken
  • Easyphp draagbare webserver

Nu na het downloaden van het zip-bestand van Damn Vulnerabilty Web Application (DVWA), unzip het en kopieer het naar de map van onze webserver, in dat geval gebruiken we Xampp onder Linux.

Vervolgens moeten we de database configureren, hiervoor gaan we van phpmyadmin.

Als we het vanuit een terminalvenster willen doen, gebruiken we het volgende commando, we hebben toegang via ssh:

 ssh-gebruiker @ miip
Eerst gaan we inloggen op de MySQL-server vanaf de opdrachtregel met het volgende commando:
 mysql -u root -p
In dit geval wordt de rootgebruiker opgegeven met de vlag -u en vervolgens wordt de vlag -p gebruikt om aan te geven dat MySQL een wachtwoord moet aanvragen. We voeren de toegangssleutel in om in te kunnen loggen op MYSQL.

Vervolgens kunnen we de database maken vanaf de opdrachtregel:

 database-dvwa maken;
Vervolgens gaan we naar de configuratiemap en bewerken we het bestand config.inc.php, hier wijzigen we de gegevens om de naam van de database, de gebruiker en het toegangswachtwoord aan te geven:
 
We slaan de configuratie op en we moeten naar de browser gaan waar we internet hebben en klikken op Database maken / resetten om door te gaan met de installatie.

Vervolgens zullen we de gegevens maken van de database die we configureren en we kunnen enkele tools zien die het web met zich meebrengt.

Na de installatie, wanneer we teruggaan naar het web http: // localhost / dvwa, krijgen we een inlogscherm:

Om toegang te krijgen tot de website gebruiken we de volgende gegevens:

Gebruiker: beheerder
Sleutel: wachtwoord

In de linkerkolom van het web hebben we een menu aan het einde kunnen we de optie zien DVWA-BEVEILIGINGVanaf hier kunnen we de moeilijkheidsgraad voor kwetsbaarheden configureren, de beveiligingsniveaus zijn laag, gemiddeld, hoog of onmogelijk.

Het beveiligingsniveau verandert het kwetsbaarheidsniveau van DVWA:

Laag beveiligingsniveauDit beveiligingsniveau is volledig kwetsbaar en heeft geen beveiligingsmaatregelen, dus het zal ons in staat stellen om hacktechnieken gemakkelijker te testen. Het wordt gebruikt als een voorbeeld van hoe kwetsbaarheden in webapplicaties zich manifesteren door slechte coderingspraktijken en om te dienen als een platform om basistechnieken voor exploitatie, kraken en hacken aan te leren of te leren.

Gemiddeld beveiligingsniveauDit niveau dient om kwetsbaarheden te tonen, waarbij de ontwikkelaar er niet in is geslaagd ervoor te zorgen dat de code en de ontwikkeling geen kwetsbaarheden hebben.

Hoog beveiligingsniveauDit niveau is bedoeld voor de meest geavanceerde gebruikers met een gemiddelde moeilijkheidsgraad, met een mengeling van slechte programmeerpraktijken in de webcode. Hier kunnen we geavanceerde technieken uitproberen.

Beveiligingsniveau OnmogelijkDit niveau is het veiligst tegen alle kwetsbaarheden. Het wordt gebruikt om kwetsbare broncode te vergelijken met beveiligde broncode. Dit niveau is bedoeld om aan te tonen hoe een website correct moet worden ontwikkeld en hoe deze moet reageren voor mogelijke aanvallen.

We hebben het laagste niveau ingesteld om verschillende hacktechnieken en kwetsbaarheidsdetectie te kunnen testen.

Brute kracht testen om een ​​login te kraken met je eigen script
We openen de Brute Force-link en we zien dat er een inlogformulier is, we voeren eventuele gegevens in de gebruikersnaam en het wachtwoord in om het te laten mislukken en kijken of er een fout optreedt.

Wanneer het inloggen mislukt, zien we een url met de ingevoerde gegevens, met de URL die ons laat zien:
http: // localhost / dvw… zie & Login = Login #,

Daarom kunnen we een script maken dat verschillende combinaties voor gebruiker en wachtwoord test of een programma gebruiken zoals xHydra, een grafische interface voor Hydra, of rechtstreeks vanaf de opdrachtregel als dat de enige toegang is die we via SSH tot de server hebben.

Om Hydra te installeren gebruiken we de volgende commando's:

 sudo add-apt-repository ppa: pi-rho / securitysudo apt-get updatesudo apt-get install hydra hydra-gtk
Na de installatie moeten we de gebruikerslijsten en mogelijke sleutels in txt-indeling zoeken of maken of zoeken naar een woordenboek om te gebruiken zoals we in de zelfstudie hebben gedaan.

Ook een tekstbestand met namen van mogelijke gebruikers, we kunnen ook een aantal reeds functionele databases gebruiken, zoals deze skullsecurity.org-woordenboeken die worden gebruikt in veel tools, antivirus, enz., Die het kraken of hacken van wachtwoorden mogelijk maken. Alle databronnen zijn gratis te gebruiken.

Vervolgens zullen we hydra gebruiken met de lijsten die we hebben met behulp van de volgende commando's:

 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 : Inloggen mislukt "-w 10 -V 

We kunnen zien dat sommige resultaten positief waren, waarbij in het groen de gebruikers en het wachtwoord worden weergegeven die de geaccepteerde login hebben bereikt. Als we het proberen met de admin-gebruiker en het wachtwoord, gaan we naar binnen om het gebruikerspaneel te zien

SQL-injectie-kwetsbaarheid
Op het laagste beveiligingsniveau is het web kwetsbaar voor SQL-injectie, voordat we code in het tekstveld beginnen te injecteren, kunnen we de code observeren die de tabel in PHP raadpleegt die kwetsbaar is.

 
De fout is dat de gegevens niet door GET moeten worden verzonden, maar door POST te gebruiken en ten tweede moet worden gecontroleerd of de gegevens die binnenkomen geen kwaadaardige code bevatten.

De SQL-instructie voert direct uit wat binnenkomt zonder enige controle of verificatie. Dit maakt de code dus kwetsbaar voor SQL-injecties, we kunnen bijvoorbeeld de volledige lijst met gebruikers verkrijgen als we op de SQL-injectiepagina in plaats van een id de volgende code toevoegen:

 1 'OF 1 = 1 UNION SELECT null, versie () #
Het resultaat is de lijst met gebruikers.

We kunnen ook de volledige lijst met tabellen verkrijgen als we de volgende code in het tekstveld toepassen.

 1 'OF 1 = 1 UNION SELECT null, table_name FROM INFORMATION_SCHEMA.tables

We kunnen andere combinaties toepassen om de lijst met gebruikers te verkrijgen en de gegevens van elke tabel te bekijken.

Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave