Pentesten aanvallen en verdedigen van webapplicaties met bWAPP

bWAPP is een website die is ontwikkeld met kwetsbaarheden, zodat zowel beginners als experts pentesten en ethische hackingpraktijken kunnen uitvoeren. Het kan worden gehost op Linux of Windows op Apache of IIS en MySQL. Het wordt ondersteund in WAMP of XAMPP. Een andere mogelijkheid is om een ​​virtuele machine te gebruiken die werkt voor VMware of voor VirtualBox.

bWAPP is gratis en open, het kan in twee versies worden gedownload, één om lokaal te gebruiken en de andere om op een virtuele machine te installeren. De website is ontwikkeld in PHP en MySQL en is dus platformonafhankelijk. We downloaden installeer bWAPP lokaal, als we op een virtuele machine willen installeren, is het project Bee-Box.

Bee-box is een virtuele Linux-machine met alles vooraf geïnstalleerd. Op deze manier hoeven we alleen alle bWAPP-kwetsbaarheden te onderzoeken zonder het risico te lopen de bWAPP-website te beschadigen. Ook met de virtuele machine kunnen we proberen root-toegang te krijgen.

bWAPP heeft meer dan 100 bugs Om te onderzoeken en te ontdekken, dekt het alle belangrijke bekende webkwetsbaarheden, inclusief alle beveiligingsrisico's. Het project maakt het niet alleen mogelijk om kwetsbaarheden te ontdekken, maar maakt het ook mogelijk om de oplossing te vinden.

In deze zelfstudie we zullen de Bee-Box-versie van bWAPP installerenOm dit te doen, unzippen we het bestand dat we hebben gedownload en maken we een map met veel vmdk-bestanden op onze lokale server. Vervolgens zullen we de virtuele machine maken die een 32-bits Linux Ubuntu-versie toewijst.

Vervolgens moeten we het gedownloade bestand met de naam selecteren bee-box.vdmk

Onthoud voordat u de virtuele machine start dat we het netwerk moeten configureren, dit doen we vanaf Instelling om een ​​IP-adres te hebben en toegang te krijgen tot de virtuele machine vanaf een andere computer.

We klikken op maken en vervolgens op Start, zodat de virtuele machine begint te werken, eenmaal geladen zien we het bureaublad.

Vervolgens openen we de terminal om te zien wat het IP-adres de opdracht gebruikt ifconfig.

We kunnen zien dat het IP-adres in dit geval 192.168.0.14 is, als we dat IP-adres op de computer buiten de virtuele machine testen, zouden we toegang moeten hebben tot internet:

 http://192.168.0.14/bWAPP
En het resultaat zal het volgende zijn:

Dan kunnen we beginnen met de inlogpagina, standaard is de gebruiker bij en het wachtwoord is een bug om toegang te krijgen tot het configuratiescherm. Binnen het menu Bugs zullen we verschillende voorbeelden hebben om enkele kwetsbaarheden te gebruiken en te testen, van de eenvoudigste tot de meest complexe. Laten we eens kijken kwetsbaarheden volgens het type aanval.

De kwetsbaarheden zijn onderverdeeld in categorieën of hoofdstukken welke zijn de volgende:

A1 injectiesHier zijn de kwetsbaarheden van gegroepeerd: HTML-injectie, SQL, XSS, XPATH en alles wat te maken heeft met het verzenden van parameters via browsers.

A2 Break-authenticatie en sessiesHier lijkt het op captcha's en inlogformulieren schenden met behulp van URL-vervangingstechnieken, het vastleggen van parameters en het gebruik van sessie-ID's.

A3 Cross-Site Scripting (XSS)Hier zijn de XSS-gerelateerde kwetsbaarheden die niet erg gevaarlijk zijn, maar eerder vervelend.

A4 Onveilige objecten en mappenHier gaat het over verander parameters in links van code voordat u het formulier verzendt.

A5 Beveiliging en configuratieHier zullen we zien sommige aanvallen zoals DDOS en middenaanval, die van invloed zijn op services zoals post en services die werken.

A6 Blootstelling van gevoelige gegevensHier zullen we een reeks kwetsbaarheden zien die het mogelijk maken: servergegevens zijn zichtbaar in de browser.

Dit zijn enkele van de kwetsbaarheden, in deze tutorial zullen we ons concentreren op de meest bekende aanvallen en de mogelijkheid om controle over de server te krijgen.

1. HTML-injectie


Met HTML Reflected Injection kunt u HTML-code in een tekstveld invoegen en deze vervolgens op internet weergeven. We selecteren de eerste Injection by GET-methode, we hebben twee tekstvakken, als we bijvoorbeeld een link in elk invoeren:
 Dringend bericht | Uw verkopen
Bij het verzenden van het formulier zullen we hieronder zien dat beide links worden getoond en laten we het wachten tot iemand erop klikt. We kunnen ook de POST-methode proberen.

VERGROTEN

Een ander probleem van het niet controleren van de invoer van HTML-gegevens is dat we een formulier kunnen verzenden waardoor de gebruiker denkt dat hij moet inloggen of bepaalde gegevens moet invoeren, en die gegevens naar een andere pagina kunnen sturen.

 Je bent niet meer verbonden. 
Voer uw gebruikersnaam en wachtwoord in om door te gaan met gebruiker:
sleutel:

VERGROTEN

2. SQL injectie


Laten we een andere aanval bekijken, zoals SQL Injection, als we BUG zoeken naar de SQL Injection-optie (GET / Search), in deze sectie kunnen we zoeken naar films, bijvoorbeeld Iron Man, wat resulteert in de filmgegevens.

VERGROTEN

Vervolgens kunnen we proberen SQL-code te injecteren om te testen of de database kwetsbaar is, hiervoor gebruiken we de volgende code die de lijst met databases retourneert als:

 iron man 'union select 1, table_name, 3,4,5,6,7 from INFORMATION_SCHEMA.TABLES waar table_schema = database () -'
Het resultaat is de lijst met tabellen, daarom is de database kwetsbaar:

VERGROTEN

Wetende dat de database kwetsbaar is, kunnen we enkele technieken gebruiken die we hebben gezien in de tutorial SQLMAP, SQL Injection tool en Ethical database hacking, waarbij we het root-niveau bereiken op zoek naar de beheerderssleutels.

Vanuit het terminalvenster schrijven we de volgende opdracht, we gebruiken de pagina die we zoeken naar de film omdat deze een parameter heeft die kwetsbaar kan zijn.

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" --dbs

Het toont ons de databases, een daarvan is bWAPP, daarom zullen we proberen de lijst met tabellen te verkrijgen, wetende dat de database-engine MySQL 5 is. Om de lijst met tabellen te verkrijgen, zullen we de volgende opdracht gebruiken.

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" -tables

We kunnen zien dat het alle tabellen weergeeft, niet alleen van het web, maar ook van het systeem, zodat we de gegevens van de Linux-beheerder kunnen krijgen. We kunnen de PHP-sessie ook exploiteren met Firebug, we kunnen het sessienummer zien, omdat bij het maken van een gebruiker of het inloggen of het genereren van dynamische inhoud zoals een zoekopdracht, de reactie van de server een PHPSession zal creëren.

VERGROTEN

Commando gebruiken --gebruikers en de sessie of met het commando zonder sessie zullen we de systeemgebruikers kunnen zien.

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" --users
Nog een optieopdracht met sessie-ID:
 sqlmap -u “http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" --cookie = ”PHPSESSID = e6f734f935bca3bf86013add7ea2e3f9; security_level = 0” --users

Vervolgens gaan we op zoek naar de systeemgebruikers met behulp van de volgende opdracht:

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" dba --is-dba --privileges --dbs -dump 
Als resultaat zullen we tabellen verkrijgen met een wachtwoord, een daarvan zijn gebruikers die de beheerdersgegevens hebben en een andere zijn de tafelhelden en gebruikers (gebruikers) die we zullen gebruiken om in te loggen als gebruikers.

De gebruikerstabel bevat de gegevens van de websitebeheerder:

Vervolgens gaan we het root-wachtwoord verkrijgen van de gebruikers die we hierboven vinden, hiervoor gebruiken we het volgende commando:

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" -f -b --current-user --is-dba --is-dba --privileges --dbs - dumpen
Aan het einde van de opdrachten door middel van een brute force-aanval, vinden we dat het wachtwoord van de systeembeheerder een bug is en de gebruiker root.

We gaan proberen vanaf de terminal via ssh verbinding te maken met de virtuele machine om de computer op afstand te besturen met behulp van de volgende opdracht:

 ssh [email protected]
Het resultaat met behulp van de rootgebruiker en het bugwachtwoord is de verbinding met beheerdersrechten voor de virtuele machine.

Vervolgens testen we of we met de eerder verkregen gegevens, bijvoorbeeld de neo-gebruiker en het trinity-wachtwoord, kunnen inloggen op het heroes and users-gedeelte.

We zijn erin geslaagd om zonder problemen toegang te krijgen tot deze gebruikersgegevens. Als we de gebruikerstabel gebruiken, kunnen we ook inloggen.

3. HTML / XPATH-injectie


Een van de minst bedachte aanvallen is via die browsers die het bewerken van code toestaan. Als we een link naar een kwaadaardige site wijzigen, merkt de gebruiker het niet en gaat de wijziging verloren wanneer het web wordt vernieuwd.

We gaan bijvoorbeeld het wachtwoord wijzigen en met de rechtermuisknop klikken om een ​​Inspector of code-editor te openen en de url change_password.php wijzigen in http://google.com en de editor sluiten

VERGROTEN

Dus wanneer de gebruiker op die link klikt, wordt hij doorgestuurd naar een andere pagina, het is zeer ineffectief omdat bij het vernieuwen of wijzigen van de pagina de link terugkeert naar de originele. Dit is voor ons om te kijken voordat we op een link klikken die ons naar een beveiligde website of binnen hetzelfde domein brengt.

4. Server-side injectie


Injectie aan de serverzijde is wanneer een website kwetsbaar is en het mogelijk maakt om opdrachten uit een taal of het besturingssysteem in te voeren om acties op de server uit te voeren.

Een aanvaller stuurt kwaadaardige code of een commando via een tekstveld van een webapplicatie die wordt uitgevoerd door de webserver. Laten we een voorbeeld bekijken waarmee je mappen kunt weergeven met de opdracht Linux ls, die we als volgt zullen schrijven:

 

VERGROTEN

Het resultaat is de lijst met alle mappen op de server, dus we moeten controleren of er geen opdrachten kunnen worden ingevoerd.

VERGROTEN

Een van de tools die het bWAPP-project ons voorstelt is ZAP (Zed Attack Proxy), we zagen deze tool in de tutorial Scan een websitekwetsbaarheid met ZAP, het wordt veel gebruikt om kwetsbaarheden te scannen en penetratietests op websites uit te voeren. We kunnen de meest recente versie downloaden via de volgende link:

DOWNLOAD ZAP

Kies de versie volgens het besturingssysteem dat we hebben of een multiplatformversie ontwikkeld in Java. Eenmaal geïnstalleerd, zullen we proberen het bWAPP-web te scannen met ZAP en op zoek gaan naar enkele kwetsbaarheden.

VERGROTEN

Wanneer we ZAP starten en een scan uitvoeren, zullen we zien dat het de meeste kwetsbaarheden detecteert, om scanregels te definiëren kunnen we naar het menu gaan Analyseren> Scanregels en dan dubbelklikken we op Standaardbeleid.

Laten we eens kijken op een van de inlogpagina's dat het gebruikersniveau als parameter wordt verzonden, in dit geval de beheerder.

VERGROTEN

We kunnen ook de filters gebruiken zoals we zagen in de ZAP-zelfstudie om SQL-injectie en andere aanvallen uit te voeren.

Beveiliging van webapplicaties is een zeer belangrijk aspect, afgezien van goed ontwerp en inhoud. bWAPP is een platform dat ons in staat stelt om veel kwetsbaarheden te kennen en te testen, en die kennis vervolgens toe te passen op onze website en dient ook zodat specialisten, ontwikkelaars en studenten webkwetsbaarheden kunnen ontdekken en voorkomen.

bWAPP wordt veel gebruikt voor het testen van penetratie van webapplicaties en ethische hackingprojecten. bWAPP dekt alle belangrijke bekende webkwetsbaarheden, inclusief alle risico's van het OWASP Top 10-project, dat van jaar tot jaar kwetsbaarheden verzamelt in 10 categorieën.

Tot slot raden we dit artikel aan met een uitleg van de soorten cyberaanvallen.

wave wave wave wave wave