Penetratietesten is het testen van een netwerk op beveiligingsproblemen voordat het wordt uitgebuit door een kwaadwillende aanvaller of hackers. DE-ICE is een virtuele machine die een installatie bevat Linux Slax en het dient om zowel voor beginners tot gevorderden te oefenen.
Slax is een Live CD van het GNU/Linux besturingssysteem gebaseerd op de Slackware-distributie. Slax is een draagbaar Linux-besturingssysteem, het neemt niet veel ruimte in beslag en biedt snelle prestaties.
Slax biedt een opslagplaats van vooraf geïnstalleerde software en wordt veel gebruikt door beheerders om testplatforms, specifieke distributies te creëren en nuttig om hersteltools, penetratietesten, beveiliging en netwerksimulaties met virtuele machines te maken voor systeembeheerders en ontwikkelaars van software of beveiligingsexperts, het systeem neemt ongeveer 190 MB in beslag. Een grafische interface kan al dan niet worden geïnstalleerd, maar dit zou veel ruimte in beslag nemen en het systeem traag maken.
De-ICE kan in VirtualBox worden geïnstalleerd of op cd worden gebrand om als LiveCD te gebruiken. Er zijn verschillende versies met verschillende moeilijkheidsgraden, de versie voor beginners is DE-ICE1.100 en de meest complexe is momenteel DE-ICE1.140. Voor deze tutorial gebruiken we de DE-ICE 1.120-versie die beschikbaar is op https: //www.vulnhub… .e-ice-s1120,10 /.
Deze virtuele machine is speciaal voorbereid om onze kennis te testen en eventuele penetratietesttechnieken of -tools toe te passen.
Pentesten van De-ICE PenTest Lab 1.120
Voor penetratietestprocedures installeert u DE-ICE.1.120-versie en ik gebruik Linux Mint en VirtualBox om DE-ICE te installeren. Het kan worden gebruikt vanuit elk besturingssysteem waarmee u een virtuele machine kunt maken.
Ik ga op zoek naar mijn huidige ip vanaf een terminal met behulp van de opdracht ifconfig en het resultaat is het volgende:
IP-adres: 192.168.0.11
Vervolgens gebruik ik verschillende software van mijn keuze, maar ze kunnen andere proberen om de gebruiker aan te passen.
A) Ik gebruik Zenmap om alle hosts te scannen tussen 1-254
In de bijlessen:
- Zenmap visuele tool voor het testen van poortbeveiliging
- Nmap gebruiken om open poorten op uw VPS en Metasploit-framework te scannen om de serverbeveiliging te testen
We hebben enkele hulpmiddelen gezien voor het scannen van poorten en hoe deze te gebruiken.
We openen Zenmap, ik wijs het IP en de parameters toe zodat het het hele netwerk scant en me de aangesloten apparatuur en de IP's laat zien.
Het IP 192.168.0.1 komt overeen met het Gateway IP van de router met poort 80 open en het IP van de router 192.168.0.10 met alle poorten gesloten.
Kijkend naar de topologie en de kenmerken van elke host, stel ik vast dat het ip 192.168.0.38 het WiFi-ip van de virtuele machine is en dat het ip 192.168.0.40 de ethernetverbinding de virtuele machine is.
Ik ga naar het IP-adres van de virtuele machine of VPS en zoek een website om producten te registreren.
In principe [kleur = # b22222] een ernstige fout [/ kleur] zou zijn dat deze website geen enkele vorm van gebruikerstoegangscontrole heeft, op deze manier zou deze toegang hebben tot alle gebruikers van het netwerk, ongeacht hoeveel het is op een intranet.
Vanuit Zenmap observeer ik ook de gescande poorten voor deze host.
Ik vind verschillende poorten open om brute force-aanvallen uit te proberen door gebruiker en wachtwoord te forceren met tools zoals Hydra of John the Ripper, onder andere.
We kunnen ook de topologie zien om elke host te analyseren en met wie deze is verbonden.
Op deze manier kunnen we dus de kenmerken van de apparatuur zien, hoe het netwerk is geconfigureerd en welke hosts we kunnen aanvallen.
B) Scannen op kwetsbaarheden
Ik gebruik OSWAP ZAP om een kwetsbaarheidsscan uit te voeren. We zagen deze tool in de tutorial:
- Scan een websitekwetsbaarheid met ZAP
Hiermee kunnen we kwetsbaarheden van een website scannen door rapporten over de gevonden kwetsbaarheden te presenteren.
Met behulp van filter en actieve en passieve scanregels kunnen we de kwetsbaarheden van het web vinden. Het toont ons ook alle pagina's die het web bevat, het geeft zelfs aan welke pagina's een bepaald type parameter per url ontvangen.
Na de scan kan ik de structuur van het web zien met de in PHP geprogrammeerde pagina's en de kwetsbaarheden volgens de toegepaste filters.
In het geval van de productinvoegpagina zien we dat het parameters ontvangt via de POST-methode en we kunnen ook de velden of variabelen zien die het ontvangt.
C) XSS-code-injectie
Dan gaan we naar de pagina om een product toe te voegen (Product toevoegen) en solliciteren XSS-injectietechnieken waar ik html- en Javascript-code injecteer om te zien of deze kwetsbaar is voor dit type aanval.
Als eerste test voeg ik de html-code van een externe afbeelding toe aan de productbeschrijving, deze kunt u selecteren door te zoeken in Google.
Als de afbeelding kwetsbaar is, wordt deze opgeslagen in de database en wordt deze weergegeven in de lijst met producten die we in de combo moeten zoeken naar de code die we toewijzen, het resultaat is het volgende:
[color = # b22222] Het is kwetsbaar voor XSS [/ color] omdat we elke html- of javascript-code inclusief links kunnen invoeren.
We voegen een iframe in het beschrijvingsveld in en slaan op:
Dan zoeken we het product met code 003 en we kunnen het resultaat zien
Met behulp van deze techniek kunnen we een formulier invoeren met een login simuleren en dat de gegevens daadwerkelijk worden opgeslagen in een externe database. We kunnen de lijst met producten die een omleiding naar een andere website veroorzaken, uitschakelen als we in een productregistratieveld de volgende html-code toevoegen:
Wanneer iemand de lijst met producten probeert te zien, wordt deze automatisch doorgestuurd naar de website die in dit geval Google is aangegeven.
NS) SQL injectie Databasetoegang
Sqlmap is een zeer nuttige tool om de beveiliging van databaseservers te testen in de tutorials:
- SQLMAP SQL-injectietool en hacken van ethische databases
- BadStore: Web voor pentesten.
Ik gebruik sqlmap om te bepalen of er databases beschikbaar zijn met behulp van de volgende opdrachten.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --dbs
We kunnen zien dat de server Apache 2.2.11 is, die php 5.2.9 gebruikt en dat de databaseserver MySQL 5.0.12 is, we bekijken ook alle beschikbare databases, inclusief de configuratie van de MySQL-gegevens van de basisserver.
Vervolgens gebruik ik de opdracht om te controleren of er tabellen in de merch-database zijn, waarvan ik veronderstel dat deze de producttabel heeft die we op internet invoeren.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --tables -D merch
We hebben de tabel gevonden die de website gebruikt. Hieronder kan ik de productentabel bekijken met het volgende commando:
python sqlmap.py -u "http://192.168.0.50/products.php?id=1" --columns -D merch -T producten
Ik ben op zoek naar de gebruikers die een Mysql-account hebben en proberen een beheerder te vinden, standaard gebruik ik het sqlmap-datawoordenboek in de map sqlmap-dev / txt / wordlist.zip
In deze map zullen we verschillende woordenboeken vinden, sqlmap zal verantwoordelijk zijn voor het uitpakken en gebruiken van het bestand, om te zoeken naar gebruikers en wachtwoorden om te gaan testen of ik de gebruikersnamen kan ontdekken en configureren op de MySQL-server, hiervoor gebruik ik de volgende opdracht:
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --users --passwords
Vervolgens zoek ik naar het type gebruiker om te zien wat de toegangsrechten van elke gebruiker zijn om te bepalen wie beheerders zijn en wat hun toegangscodes zijn.
python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --current-user --is-dba --is-dba --privileges --dbs - dump
Als resultaat van de uitvoering worden de wachtwoorden van elke gebruiker voor toegang tot de databases en welke privileges ze hebben onthuld.
Wanneer de scan is voltooid, kunnen we aan het einde van de lijst de privileges van elke gebruiker zien en bepalen welke gebruikers beheerders zijn.
Ik vind dat er verschillende beheerders zijn, daarom neem ik de gebruiker jdavenport wie is een beheerder en zijn wachtwoord is babyl0n, om te proberen toegang te krijgen tot het systeem
Vervolgens probeer ik SSH-poort 22 te schenden met de verkregen gegevens:
Het kan worden gezien dat ik de toegang als beheerder heb gekregen en ik heb volledige controle over de server. Met behulp van de cd / opdracht gaan we naar de hoofdmap en van daaruit hebben we toegang tot elke sector, zoals het zien van de mappen en accounts van de andere gebruikers
Door toegang te hebben via SSH met de door ons verkregen combinatie van gebruikersnaam en wachtwoord. Ons volgende doel zal escalatie van bevoegdheden zijn, hoewel we al een root- of beheerdergebruiker hebben.
Om de machtigingen te manipuleren, moeten we de bestanden raadplegen die de machtigingen, gebruikers, groepen en toegangscodes bevatten. Deze bestanden staan in de map / etc
- Gebruiker en groepen met hun sleutels in de map: / etc / passwd
- Groepen en permissies in de directory: / etc / sudores
We hebben toegang tot het bestand met gebruikers en systeemsleutels via de volgende opdracht:
nano / etc / wachtwoord
We kunnen de mappen ertussen doorlopen, we kunnen de bestanden op het web zien die we aan het analyseren waren en ze later downloaden via ftp of van de ssh-console, we kunnen ze naar onze lokale map kopiëren als we ze willen bewerken of de code om het veiliger te maken en test opnieuw.
Nu we de toegangsgegevens van een beheerder kennen, kunnen we inloggen op de virtuele machine.
Hoe SQL-injectie-aanvallen te voorkomen
De veiligheid van het web is hier erg belangrijk vanwege een SQL-injectieprobleem nemen we de hele server in beslag.
U moet bepalen wat als parameter in de url's wordt verzonden, zoals:
http://192.168.0.40/products.php?id=1Bij het uitvoeren van de sql-query moeten we ervoor zorgen dat tekens of parameters die niet overeenkomen, kunnen worden ingevoerd, bijvoorbeeld:
$ sql = SELECT * FROM gebruikers WHERE gebruiker = 'jose' en wachtwoord = '12345' OF '1' = '1';De zin lijkt erg op een gebruikerslogin waarbij we zoeken of de gebruiker en het wachtwoord bestaan, in de gebruikerstabel, of er iemand is geregistreerd met een gebruikersnaam die we als parameter verzenden en of hun wachtwoord '12345 is of als 1 de gelijk aan 1'.
Deze uitdrukking bepaalt dat als de sleutel niet correct is, de uitdrukking 1 gelijk aan 1 waar is en dat we het systeem zouden kunnen betreden zonder het wachtwoord te kennen.
Een methode is om te ontsnappen aan de variabelen, bijvoorbeeld in PHP:
mysql_real_escape_string ($ _ POST ['gebruiker']);Als we parameters per url moeten verzenden, moeten we ze versleutelen met md5, sha1 of base64 en we kunnen verschillende gecodeerde gegevens verzenden, zodat het uiteindelijke formaat van de parameter niet direct gerelateerd is aan gegevens of velden in de database.
Daarnaast zou er een systeem moeten zijn dat poortscanning en meerdere verbindingen vanaf hetzelfde IP vermijdt, een firewall in dit geval met iptables zou volstaan en een inbraakdetector.
Een hulpmiddel dat we kunnen gebruiken is: HavenSentry of Fail2Ban Het wordt geïnstalleerd vanuit een linux-repository en we hoeven alleen te configureren welke poorten moeten worden beschermd, als een van die poorten wordt gescand, blokkeert het automatisch het IP-adres dat ons aanvalt.
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