Hackning och säkerhet Pentesting med DE-ICE

Penetrationstestning är att testa ett nätverk för säkerhetsproblem innan det utnyttjas av en skadlig angripare eller hackare. DE-ICE är en virtuell dator som innehåller en installation Linux Slax och det tjänar till att öva både för nybörjare hela vägen till avancerade utövare.

Slax är en Live -CD för operativsystemet GNU / Linux baserat på Slackware -distributionen. Slax är ett bärbart Linux -operativsystem, det tar inte mycket plats och ger snabb prestanda.

Slax tillhandahåller ett förråd med förinstallerad programvara och används i stor utsträckning av administratörer för att skapa testplattformar, specifika distributioner och användbart för att skapa återställningsverktyg, penetrationstest, säkerhet och nätverkssimuleringar med virtuella maskiner för systemadministratörer och utvecklare av programvara eller säkerhetsexperter, systemet upptar cirka 190 MB. Ett grafiskt gränssnitt kan installeras eller inte, men det skulle ta mycket plats och göra systemet långsamt.

De-ICE kan installeras i VirtualBox eller brännas till CD för att användas som LiveCD. Det finns flera versioner som har olika svårighetsgrader, versionen för nybörjare är DE-ICE1.100 och den mest komplexa för närvarande är DE-ICE1.140. För denna handledning kommer vi att använda DE-ICE 1.120-versionen som är tillgänglig på https: //www.vulnhub… .e-ice-s1120,10 /.

Denna virtuella maskin är speciellt förberedd för att testa våra kunskaper och tillämpa eventuella penetrationstesttekniker eller verktyg.

Pentesting av De-ICE PenTest Lab 1.120
För penetrationstestprocedurer installerar du DE-ICE.1.120-versionen och jag använder Linux Mint och VirtualBox för att installera DE-ICE. Den kan användas från alla operativsystem som låter dig skapa en virtuell maskin.

Jag börjar leta efter min nuvarande ip från en terminal med hjälp av ifconfig -kommandot och resultatet är följande:

 IP: 192.168.0.11

Därefter använder jag olika programvaror efter eget val, men de kan prova andra som passar användaren.

A) jag använder Zenmap för att skanna alla värdar mellan 1-254


I självstudierna:
  • Zenmap visuellt verktyg för portsäkerhetstestning
  • Så här använder du Nmap för att skanna öppna portar på ditt VPS- och Metasploit -ramverk för att testa serversäkerhet

Vi såg några verktyg för portskanning och hur vi använder dem.

Vi öppnar Zenmap, jag tilldelar IP: n och parametrarna så att den skannar hela nätverket och visar mig den anslutna utrustningen och IP: erna.

IP 192.168.0.1 motsvarar routerns gateway -IP med port 80 öppen och routerns IP 192.168.0.10 med alla portar stängda.

När jag tittar på topologin och egenskaperna för varje värd, bestämmer jag att ip 192.168.0.38 är WiFi ip för den virtuella maskinen och ip 192.168.0.40 är ethernet -anslutningen är den virtuella maskinen.

Jag får åtkomst till den virtuella maskinens eller VPS: ns IP -adress och hittar en webbplats för att registrera produkter.

I princip [color = # b22222] skulle ett allvarligt fel [/ color] vara att denna webbplats inte har någon typ av användarkontroll, på så sätt skulle den ha tillgång till alla användare av nätverket, oavsett hur mycket det är i ett intranät.

Från Zenmap observerar jag också de skannade portarna för denna värd.

Jag hittar flera portar öppna för att prova brutal kraftattacker för att komma åt genom att tvinga användare och lösenord med verktyg som Hydra eller John the Ripper, bland andra.

Vi kan också se topologin för att analysera varje värd och med vilken den är ansluten.

På så sätt kan vi se utrustningens egenskaper, hur nätverket är konfigurerat och vilka värdar som vi kan attackera.

B) Sårbarhetsskanning


Jag använder OSWAP ZAP för att göra en sårbarhetsgenomsökning. Vi såg det här verktyget i självstudien:
  • Skanna en webbplats sårbarhet med ZAP

Det gör att vi kan skanna sårbarheter på en webbplats genom att presentera rapporter om de hittade sårbarheterna.
Genom att använda filter och aktiva och passiva skanningsregler kan vi hitta webbs sårbarheter. Det visar oss också alla sidor som webben innehåller, det anger till och med vilka som är de som får någon typ av parameter via url.

Efter skanningen kan jag se strukturen på webben med sidorna programmerade i PHP och sårbarheterna enligt de filter som tillämpas.

När det gäller produktinföringssidan ser vi att den tar emot parametrar via POST -metoden och vi kan också se fälten eller variablerna som den tar emot.

C) XSS -kodinjektion


Sedan går vi till sidan för att lägga till en produkt (Lägg till produkt) och ansöka XSS -injektionsteknik där jag injicerar html och Javascript -kod för att se om det är sårbart för denna typ av attack.

Som ett första test lägger jag till html -koden för en extern bild i produktbeskrivningen, du kan välja vilken som helst genom att söka i Google.

 
Om bilden är sårbar kommer den att sparas i databasen och den kommer att visas i listan över produkter som vi kommer att behöva söka i kombinationen efter koden som vi tilldelar, resultatet är följande:

[color = # b22222] Det är sårbart för XSS [/ color] eftersom vi kan ange vilken html- eller javascript -kod som helst inklusive länkar.

Vi sätter in en iframe i beskrivningsfältet och sparar:


Sedan letar vi efter produkten med kod 003 och vi kan se resultatet

Med denna teknik kan vi ange ett formulär med simulera en inloggning och att data faktiskt sparas i en extern databas. Vi kan inaktivera listan över produkter som orsakar en omdirigering till en annan webbplats om vi i något produktregistreringsfält lägger till följande html -kod:

 
När någon försöker se listan över produkter vidarebefordras de automatiskt till den webbplats som anges i detta fall Google.

D) SQL -injektion Databasåtkomst


Sqlmap är ett mycket användbart verktyg för att testa säkerheten för databasservrar i självstudierna:
  • SQLMAP SQL -injektionsverktyg och etisk databashackning
  • BadStore: Webb för pentester.

Jag använder sqlmap för att avgöra om några databaser är tillgängliga med följande kommandon.

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --dbs

Vi kan se att servern är Apache 2.2.11, som använder php 5.2.9 och att databasservern är MySQL 5.0.12, vi ser också alla tillgängliga databaser, inklusive de som är konfiguration av basservern MySQL -data.

Därefter använder jag kommandot för att verifiera om det finns tabeller i merch -databasen, vilket är det som jag antar har produkttabellen som vi anger på webben.

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" -tabeller -D merch

Vi hittade tabellen som webbplatsen använder. Nedan kan jag titta på produkttabellen med följande kommando

 python sqlmap.py -u "http://192.168.0.50/products.php?id=1" --kolumner -D merch -T -produkter

Jag letar efter användare som har ett Mysql-konto som försöker hitta en administratör, som standard använder jag sqlmap-dataordlistan i mappen sqlmap-dev / txt / wordlist.zip

I den här katalogen hittar vi flera ordböcker, sqlmap kommer att ansvara för att packa upp och använda filen, för att söka efter användare och lösenord för att testa om jag kan upptäcka och få användarnamnen konfigurerade på MySQL -servern, för detta använder jag följande kommando:

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" -användare -lösenord

Därefter letar jag efter typen av användare för att se vilka åtkomstprivilegier för varje användare för att avgöra vilka som är administratörer och vilka deras åtkomstkoder.

 python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --current -user --is -dba --is -dba --privileges --dbs -dump

Som ett resultat av körningen avslöjas varje användares lösenord för att komma åt databaserna och vilka privilegier de har.

När genomsökningen är klar kan vi i slutet av listan se varje användares privilegier och avgöra vilka användare som är administratörer.

Jag tycker att det finns flera administratörsanvändare, därför tar jag användaren jdavenport som är administratör och hans lösenord är babyl0n, för att försöka komma åt systemet

Därefter försöker jag bryta SSH -port 22 med data som erhållits:

Det kan ses att jag fick åtkomst som administratör och jag har full kontroll över servern. Med hjälp av cd / kommandot går vi till rotkatalogen och därifrån kan vi komma åt vilken sektor som helst, till exempel se mappar och konton för de andra användarna

Genom att ha åtkomst via SSH med kombinationen av användarnamn och lösenord som vi har fått. Vårt nästa mål är att eskalera privilegier, även om vi redan har en root- eller administratörsanvändare.
För att manipulera behörigheterna måste vi konsultera filerna som innehåller behörigheter, användare, grupper och åtkomstkoder som dessa filer finns i / etc -katalogen

  • Användare och grupper med sina nycklar i katalogen: / etc / passwd
  • Grupper och behörigheter i katalogen: / etc / sudores

Vi kan komma åt filen med användare och systemnycklar genom följande kommando:

 nano / etc / password

Vi kan gå igenom katalogerna mellan dem, vi kan se filerna på webben som vi analyserade och ladda ner dem senare via ftp eller från ssh -konsolen, vi kan kopiera dem till vår lokala katalog om vi vill redigera dem eller granska kod för att göra det säkrare och testa igen.

Nu när vi känner till administratörens åtkomstdata kan vi logga in på den virtuella datorn.

Hur man undviker SQL -injektionsattacker
Webbsäkerheten är mycket viktig här på grund av ett SQL -injektionsproblem vi tar hela servern.

Du måste kontrollera vad som skickas som en parameter i webbadresserna, till exempel:

 http://192.168.0.40/products.php?id=1
När vi utför SQL -frågan måste vi se till att tecken eller parametrar som inte motsvarar kan anges, till exempel:
 $ sql = SELECT * FRÅN användare VAR användare = 'jose' och lösenord = '12345' ELLER '1' = '1';
Meningen liknar mycket en användarinloggning där vi söker om användaren och lösenordet finns, i användartabellen, om det finns någon registrerad med ett användarnamn som vi skickar som en parameter och om deras lösenord är '12345 eller om 1 är samma till 1 '.

Detta uttryck avgör att om nyckeln inte är korrekt är uttrycket 1 lika med 1 sant och vi skulle kunna komma in i systemet utan att veta lösenordet.

En metod är att undvika variablerna till exempel i PHP:

 mysql_real_escape_string ($ _ POST [‘användare’]);
Om vi ​​behöver skicka parametrar via url bör vi kryptera dem med md5, sha1 eller base64 och vi kan skicka olika krypterade data så att det slutliga formatet för parametern inte är direkt relaterat till data eller fält i databasen.

Dessutom bör det finnas ett system som undviker portskanning och flera anslutningar från samma IP, en brandvägg i detta fall med iptables skulle räcka och en intrångsdetektor.

Ett verktyg som vi kan använda är PortSentry eller Fail2Ban Den installeras från ett linux -arkiv och vi behöver bara konfigurera vilka portar som ska skyddas, om en av dessa portar skannas blockerar den automatiskt den IP som attackerar oss.

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