Penetrationstest er handlingen med at teste et netværk for sikkerhedsrisici, før det udnyttes af en ondsindet angriber eller hackere. DE-ICE er en virtuel maskine, der indeholder en installation Linux Slax og det tjener til at øve både for begyndere hele vejen igennem til øvede øvere.
Slax er en Live CD af GNU / Linux -operativsystemet baseret på Slackware -distributionen. Slax er et bærbart Linux -operativsystem, det fylder ikke meget og giver hurtig ydeevne.
Slax leverer et lager af forudinstalleret software og bruges i vid udstrækning af administratorer til at oprette testplatforme, specifikke distributioner og nyttigt til at oprette genoprettelsesværktøjer, penetrationstest, sikkerhed og netværkssimuleringer med virtuelle maskiner til systemadministratorer og udviklere af software eller sikkerhedseksperter, systemet fylder omkring 190 MB. En grafisk grænseflade er muligvis installeret, men det ville tage meget plads og gøre systemet langsomt.
De-ICE kan installeres i VirtualBox eller brændes til CD til brug som LiveCD. Der er flere versioner, der præsenterer forskellige sværhedsgrader, versionen for begyndere er DE-ICE1.100 og den mest komplekse i øjeblikket er DE-ICE1.140. Til denne vejledning bruger vi DE-ICE 1.120-versionen, der er tilgængelig på https: //www.vulnhub… .e-ice-s1120,10 /.
Denne virtuelle maskine er specielt forberedt til at teste vores viden og anvende eventuelle penetrationstestteknikker eller -værktøjer.
Pentesting af De-ICE PenTest Lab 1.120
For penetrationstestprocedurer installeres DE-ICE.1.120-versionen, og jeg bruger Linux Mint og VirtualBox til at installere DE-ICE. Det kan bruges fra ethvert operativsystem, der giver dig mulighed for at oprette en virtuel maskine.
Jeg begynder at lede efter min nuværende ip fra en terminal ved hjælp af ifconfig -kommandoen, og resultatet er følgende:
IP: 192.168.0.11
Dernæst bruger jeg anden software efter eget valg, men de kan prøve andre, der passer til brugeren.
A) jeg bruger Zenmap for at scanne alle værter mellem 1-254
I selvstudierne:
- Zenmap visuelt værktøj til havnesikkerhedstest
- Sådan bruges Nmap til at scanne åbne porte på din VPS og Metasploit -ramme til at teste serversikkerhed
Vi så nogle værktøjer til portscanning og hvordan man bruger dem.
Vi åbner Zenmap, jeg tildeler IP'en og parametrene, så den scanner hele netværket og viser mig det tilsluttede udstyr og IP'erne.
IP 192.168.0.1 svarer til routerens gateway -IP med port 80 åben og routerens IP 192.168.0.10 med alle porte lukkede.
Når jeg ser på topologien og egenskaberne ved hver vært, bestemmer jeg, at ip 192.168.0.38 er den virtuelle maskines WiFi ip, og ip 192.168.0.40 er ethernetforbindelsen den virtuelle maskine.
Jeg får adgang til IP'en på den virtuelle maskine eller VPS og finder et websted til registrering af produkter.
I princippet [color = # b22222] ville en alvorlig fejl [/ farve] være, at dette websted ikke har nogen form for brugeradgangskontrol, på denne måde ville det have adgang til alle brugere af netværket, uanset hvor meget det er i et intranet.
Fra Zenmap observerer jeg også de scannede porte til denne vært.
Jeg finder flere porte åbne for at prøve brute force -angreb for at få adgang ved at tvinge bruger og adgangskode med værktøjer som Hydra eller John the Ripper, blandt andre.
Vi kan også se topologien til at analysere hver vært og med hvem den er forbundet.
På denne måde kan vi således se udstyrets egenskaber, hvordan netværket er konfigureret, og hvilke værter vi kan angribe.
B) Sårbarhedsscanning
Jeg bruger OSWAP ZAP til at lave en sårbarhedsscanning. Vi så dette værktøj i selvstudiet:
- Scan et websites sårbarhed med ZAP
Det giver os mulighed for at scanne sårbarheder på et websted ved at præsentere rapporter om de fundet sårbarheder.
Ved hjælp af filter og aktive og passive scanningsregler kan vi finde internettets sårbarheder. Det viser os også alle de sider, som internettet indeholder, det angiver endda, hvilke der er dem, der modtager en eller anden parameter af url.
Efter scanningen kan jeg se webens struktur med siderne programmeret i PHP og sårbarhederne i henhold til de anvendte filtre.
I tilfælde af produktindsættelsessiden ser vi, at den modtager parametre via POST -metoden, og vi kan også se felterne eller variablerne, den modtager.
C) XSS -kodeindsprøjtning
Derefter går vi til siden for at tilføje et produkt (Tilføj produkt) og anvende XSS injektionsteknikker hvor jeg injicerer html og Javascript -kode for at se, om det er sårbart over for denne type angreb.
Som en første test tilføjer jeg html -koden til et eksternt billede i produktbeskrivelsen, du kan vælge enhver ved at søge i Google.
Hvis billedet er sårbart, gemmes det i databasen, og det vises på listen over produkter, som vi skal søge i kombinationsboksen efter den kode, vi tildeler, resultatet er følgende:
[color = # b22222] Det er sårbart over for XSS [/ color], da vi kunne indtaste enhver html- eller javascript -kode inklusive links.
Vi indsætter en iframe i beskrivelsesfeltet og gemmer:
Derefter leder vi efter produktet med kode 003, og vi kan se resultatet
Ved hjælp af denne teknik kan vi indtaste en formular med simulering af et login, og at dataene faktisk gemmes i en ekstern database. Vi kan deaktivere listen over produkter, der forårsager en omdirigering til et andet websted, hvis vi i et produktregistreringsfelt tilføjer følgende html -kode:
Når nogen forsøger at se listen over produkter, bliver de automatisk videresendt til det websted, der er angivet i dette tilfælde Google.
D) SQL -indsprøjtning Adgang til database
Sqlmap er et meget nyttigt værktøj til at teste databaseservers sikkerhed i selvstudierne:
- SQLMAP SQL Injection værktøj og etisk database hacking
- BadStore: Web til pentestingstest.
Jeg bruger sqlmap til at afgøre, om der er tilgængelige databaser ved hjælp af følgende kommandoer.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --dbs
Vi kan se, at serveren er Apache 2.2.11, som bruger php 5.2.9, og at databaseserveren er MySQL 5.0.12, vi ser også alle tilgængelige databaser, inklusive dem, der er konfiguration af baseserverens MySQL -data.
Dernæst bruger jeg kommandoen til at kontrollere, om der er tabeller i merch -databasen, som jeg formoder har den produkttabel, som vi indtaster på internettet.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" -tabeller -D merch
Vi fandt tabellen, som webstedet bruger. Nedenfor kan jeg se på produkttabellen med følgende kommando
python sqlmap.py -u "http://192.168.0.50/products.php?id=1" --kolonner -D merch -T produkter
Jeg leder efter at finde ud af de brugere, der har en Mysql-konto, der forsøger at finde en administrator, som standard bruger jeg sqlmap-dataordbogen i mappen sqlmap-dev / txt / wordlist.zip
I denne mappe finder vi flere ordbøger, sqlmap vil stå for udpakning og brug af filen, for at søge efter brugere og adgangskoder til at teste, om jeg kan opdage og få brugernavne konfigureret på MySQL -serveren, til dette bruger jeg følgende kommando:
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" -brugere -adgangskoder
Dernæst leder jeg efter typen af brugere for at se, hvilke adgangsrettigheder der er for hver bruger for at afgøre, hvem der er administratorer, og hvad er deres adgangskoder.
python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b -current -user --is -dba --is -dba --privilegier --dbs -dump
Som et resultat af udførelsen afsløres adgangskoder for hver bruger for at få adgang til databaserne, og hvilke privilegier de har.
Når scanningen er færdig, kan vi i slutningen af listen se privilegierne for hver bruger og bestemme, hvilke brugere der er administratorer.
Jeg finder ud af, at der er flere administratorbrugere, derfor tager jeg brugeren jdavenport hvem er administrator og hans adgangskode er babyl0n, for at prøve at få adgang til systemet
Dernæst forsøger jeg at krænke SSH -port 22 med de opnåede data:
Det kan ses, at jeg fik adgangen som administrator, og jeg har fuld kontrol over serveren. Ved hjælp af cd / kommandoen går vi til rodmappen, og derfra kan vi få adgang til enhver sektor, f.eks. At se de andre brugeres mapper og konti
Ved at have adgang via SSH med den kombination af brugernavn og adgangskode, som vi har fået. Vores næste mål vil være privilegium -eskalering, selvom vi allerede har en root- eller administratorbruger.
For at manipulere tilladelserne skal vi konsultere de filer, der indeholder tilladelser, brugere, grupper og adgangskoder, disse filer er i / etc -biblioteket
- Bruger og grupper med deres nøgler i biblioteket: / etc / passwd
- Grupper og tilladelser i biblioteket: / etc / sudores
Vi kan få adgang til filen med brugere og systemnøgler via følgende kommando:
nano / etc / password
Vi kan gå gennem bibliotekerne mellem dem, vi kan se de filer på nettet, som vi analyserede, og downloade dem senere via ftp eller fra ssh -konsollen, vi kan kopiere dem til vores lokale bibliotek, hvis vi vil redigere dem eller gennemgå kode for at gøre den mere sikker og teste igen.
Nu hvor vi kender adgangsdata for en administrator, kan vi logge ind på den virtuelle maskine.
Sådan undgår du SQL -injektionsangreb
Websikkerheden er meget vigtig her på grund af et SQL -injektionsproblem, vi tager hele serveren.
Du skal kontrollere, hvad der sendes som en parameter i webadresserne, f.eks .:
http://192.168.0.40/products.php?id=1Når vi foretager sql -forespørgslen, skal vi sikre, at tegn eller parametre, der ikke svarer, kan indtastes, for eksempel:
$ sql = SELECT * FRA brugere HVOR bruger = 'jose' og password = '12345' ELLER '1' = '1';Sætningen ligner meget et brugerlogin, hvor vi søger, hvis brugeren og adgangskoden findes, i tabellen Brugere, hvis der er nogen registreret med et brugernavn, som vi sender som parameter, og hvis deres adgangskode er '12345, eller hvis 1 er samme til 1 '.
Dette udtryk bestemmer, at hvis nøglen ikke er korrekt, er udtrykket 1 lig med 1 sandt, og vi ville kunne komme ind i systemet uden at kende adgangskoden.
En metode er at undslippe variablerne for eksempel i PHP:
mysql_real_escape_string ($ _ POST ['bruger']);Hvis vi skal sende parametre via url, skal vi kryptere dem ved hjælp af md5, sha1 eller base64, og vi kan sende forskellige krypterede data, så parameterens endelige format ikke er direkte relateret til data eller felter i databasen.
Derudover bør der være et system, der undgår portscanning og flere forbindelser fra den samme IP, en firewall i dette tilfælde med iptables ville være tilstrækkelig og en indtrængningsdetektor.
Et værktøj, vi kan bruge, er PortSentry eller Fail2Ban Det er installeret fra et linux -depot, og vi skal kun konfigurere, hvilke porte der skal beskyttes, hvis en af disse porte scannes, blokerer det automatisk den IP, der angriber os.
Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt