Wapiti - kontrol af websteder for sårbarheder på egen hånd

Wapiti - kontrol af websteder for sårbarheder på egen hånd
I den forrige artikel Vi har fortalt om Nemesida WAF Free — et gratis værktøj til at beskytte websteder og API'er mod hackerangreb, og her har vi besluttet at lave en gennemgang af en populær sårbarhedsscanner Wapiti.

Scanning af webstedet for sårbarheder er en nødvendig foranstaltning, der sammen med kodenanalyse giver mulighed for at vurdere niveauet af beskyttelse mod kompromitteringstrusler. Du kan foretage scanning af webressourcen ved hjælp af specialiserede værktøjer.

Nikto, W3af (skrevet i Python 2.7, som ikke længere understøttes) eller Arachni (som ikke længere understøttes siden februar) er de mest populære løsninger tilgængelige i det gratis segment. Selvfølgelig findes der også andre, for eksempel Wapiti, som vi vil fokusere på.

Wapiti arbejder med følgende typer sårbarheder:

  • filudlevering (lokal og fjern, fopen, readfile);
  • injektioner (PHP / JSP / ASP / SQL-injektioner og XPath-injektioner);
  • XSS (Cross-Site Scripting) (reflekteret og vedvarende);
  • opdagelse og udførelse af kommandoer (eval(), system(), passtru());
  • CRLF-injektioner (HTTP-svardeling, session hijacking);
  • XXE (XML External Entity) injektion;
  • SSRF (Server-Side Request Forgery);
  • brug af kendte potentielt farlige filer (takket være Nikto-databasen);
  • svage .htaccess-konfigurationer, der kan omgås;
  • tilstedeværelse af sikkerhedskopifiler, der afslører følsomme oplysninger (kildekodeudlevering);
  • Shellshock;
  • åbne omdirigeringer;
  • usædvanlige HTTP-metoder, der kan være tilladt (PUT).

Muligheder:

  • understøttelse af HTTP, HTTPS og SOCKS5 proxy;
  • autentificering ved hjælp af flere metoder: Basic, Digest, Kerberos eller NTLM;
  • mulighed for at begrænse scanningsområdet (domæne, mappe, side, URL);
  • automatisk fjernelse af et af parametrene i URL'en;
  • flere sikkerhedsforanstaltninger mod uendelige scanningssløjfer (f.eks.: ifor, begrænsning af værdier for parameteren);
  • mulighed for at indstille prioritet for udforskning af URL'er (selv hvis de ikke er inden for scanningsområdet);
  • mulighed for at udelukke visse URL'er fra scanning og angreb (f.eks.: logout-URL);
  • import af cookies (indhent dem med værktøjet wapiti-getcookie);
  • mulighed for at aktivere/deaktivere SSL-certifikatkontrol;
  • mulighed for at udtrække URL'er fra JavaScript (meget simpel JS-fortolker);
  • interaktion med HTML5;
  • Flere muligheder for at styre adfærden og begrænsningerne af crawleren;
  • Indstilling af maksimal tid til scanningsprocessen;
  • Tilføjelse af nogle tilpassede HTTP-overskrifter eller konfiguration af en brugerdefineret User-Agent.

Yderligere funktioner:

  • Oprettelse af sårbarhedsrapporter i forskellige formater (HTML, XML, JSON, TXT);
  • Pause og genoptag scanning eller angreb (sessionsmekanisme ved hjælp af SQLite3-databaser);
  • Fremhævelse i terminalen for at markere sårbarheden;
  • Forskellige logningsniveauer;
  • En hurtig og nem måde at aktivere/deaktivere angrebsmoduler.

Installation

Den aktuelle version af Wapiti kan installeres på 2 måder:

  • downloade kilden fra den officielle webstedet og køre installationsscriptet efter at have installeret Python3;
  • ved hjælp af kommandoen pip3 install wapiti3.

Derefter vil Wapiti være klar til brug.

Brug af værktøjet

Til demonstrationen af Wapitis funktioner vil vi bruge en særlig forberedt teststand sites.vulns.pentestit.ru (intern ressource), der indeholder forskellige sårbarheder (Injection, XSS, LFI/RFI) og andre mangler i webapplikationer.

Informationen gives udelukkende til orienteringsformål. Overhold lovgivningen!

Grundlæggende kommando til at starte scanneren:

# wapiti -u <target> <options>

Der findes en ret detaljeret dokumentation med et stort antal opstartsmuligheder, f.eks.:

—scope — anvendelsesområde
Hvis parameteren scope angives sammen med URL'en til scanning, kan man regulere scanningens område ved at angive enten en enkelt side eller alle sider, man kan finde på webstedet.

-s og -x — parametre til at tilføje eller fjerne specifikke URL-adresser. Disse parametre er nyttige, når der er behov for at tilføje eller fjerne en specifik URL i scanningsprocessen.

—skip — den angivne parameter med denne nøgle vil blive scannet, men ikke angrebet. Nyttigt, hvis der er nogle farlige parametre, som det er bedst at udelade under scanningen.

—verify-ssl — aktivering eller deaktivering af certifikatverificering.
Wapiti-scanneren er modulær. For at starte specifikke moduler, blandt dem der automatisk tilsluttes under scannerens drift, skal man bruge nøgle -m og angive dem ønskede adskilt af komma. Hvis nøglen ikke bruges, vil alle moduler som standard være aktive. I den enkleste variant vil dette se således ud:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Dette brugseksempel betyder, at vi kun vil bruge SQL-, XSS- og XXE-modulerne til scanning af målet. Derudover er det muligt at filtrere modulernes arbejde afhængigt af den ønskede metode. For eksempel -m “xss: get, blindsql: post, xxe: post”. I så fald vil modulet xss blive anvendt på anmodninger sendt med GET-metoden, mens modulet blibdsql vil håndtere POST-anmodninger osv. Forresten, hvis et modul, der blev inkluderet i listen, ikke var nødvendigt under scanningen eller arbejder meget langsomt, kan du ved at trykke på Ctrl+C springe brugen af det aktuelle modul over og vælge den relevante mulighed i det interaktive menu.

Wapiti understøtter at sende anmodninger gennem en proxyserver ved hjælp af denne nøgle -p og autentificering på det målrettede websted gennem parameteren -a. Du kan også angive hvilken type autentificering: Basiс, Digest, Kerberos og NTLM. For de to sidste kan det være nødvendigt at installere yderligere moduler. Derudover kan du indsætte enhver overskrift i anmodninger (herunder vilkårlig User-Agent) og meget mere.

For at bruge autentificering kan du anvende værktøjet wapiti-getcookie. Med det er vi i stand til at danne cookie, som Wapiti vil bruge under scanningen. Dannelsen cookie foregår ved hjælp af kommandoen:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

Under arbejdet i interaktiv tilstand svarer vi på spørgsmål og angiver nødvendig information såsom: login, adgangskode osv.:

Wapiti - kontrol af websteder for sårbarheder på egen hånd

Outputtet er en fil i JSON-format. Et andet alternativ er at tilføje al nødvendig information via parameteren -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

Resultatet vil være det samme:

Wapiti - kontrol af websteder for sårbarheder på egen hånd

Når vi ser på scannerens grundlæggende funktionalitet, blev den endelige anmodning til test af webapplikationen i vores tilfælde:

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

hvor blandt andre parametre:

-f og -o — format og sti til opbevaring af rapporten;

-m — aktivering af alle moduler - ikke anbefalet, da det vil påvirke testtiden og størrelsen af rapporten;

—color — fremhæve fundne sårbarheder afhængigt af deres alvorlighed ifølge selve Wapiti;

-c — brug af en fil med cookie, genereret ved hjælp af wapiti-getcookie;

—scope — valg af mål for angreb. Ved at vælge muligheden folder vil hver URL blive scannet og angrebet, startende fra den grundlæggende. Den grundlæggende URL skal have en skråstreg (uden filnavn);

—flush-session — tillader gentagen scanning, hvor tidligere resultater ikke tages i betragtning;

-A — egen User-Agent;

-p — proxyserveradresse, hvis påkrævet.

Lidt om rapporten

Resultatet af scanningen præsenteres i form af en detaljeret rapport om alle fundne sårbarheder i HTML-sideformat, i en forståelig og brugervenlig opstilling. Rapporten vil angive kategorier og antal fundne sårbarheder, deres beskrivelse, forespørgsler, kommandoer for curl og råd om, hvordan man lukker dem. For nem navigation vil der blive tilføjet et link til kategorinavnene, som man kan klikke på for at gå til dem:

Wapiti - kontrol af websteder for sårbarheder på egen hånd

En væsentlig ulempe ved rapporten er manglen på et kort over webapplikationen, hvilket gør det uklart, om alle adresser og parametre er blevet analyseret. Der er også risiko for falske positiver. I vores tilfælde figurerer "backupfiler" og "potentielt farlige filer" i rapporten. Antallet svarer ikke til virkeligheden, da der ikke var sådanne filer på serveren:

Wapiti - kontrol af websteder for sårbarheder på egen hånd

Det er muligt, at fejlbehæftede moduler vil blive rettet over tid. En anden ulempe ved rapporten er manglen på farvekodning af fundne sårbarheder (afhængig af deres alvorlighed) eller i det mindste en opdeling i kategorier. Den eneste måde, vi kan forstå alvorligheden af den fundne sårbarhed indirekte, er ved at anvende parameter —color ved scanning, hvorefter de fundne sårbarheder vil blive farvekodede:

Wapiti - kontrol af websteder for sårbarheder på egen hånd

Men i selve rapporten er en sådan farvekodning ikke forudset.

Sårbarheder

SQLi

Scanneren klarede delvist at finde SQLi. Når der søges efter SQL-sårbarheder på sider, hvor godkendelse ikke er nødvendig, opstår der ikke problemer:

Wapiti - kontrol af websteder for sårbarheder på egen hånd

Det lykkedes ikke at finde sårbarheden på sider, der kun er tilgængelige efter godkendelse, selv med brug af gyldige cookie, da der sandsynligvis vil blive udført en "logud af sessionen" efter en vellykket godkendelse og cookie vil blive ugyldige. Hvis deautorisationsfunktionen var blevet udført som et separat script, der håndterer denne procedure, ville man kunne udelukke den helt via parameter -x og dermed forhindre dets aktivering. Ellers er det ikke muligt at udelukke dens behandling. Dette er ikke et problem med et konkret modul, men med værktøjet generelt, men på grund af denne nuance lykkedes det ikke at opdage flere injektioner i det lukkede område af ressourcen.

XSS

Scanneren klarede opgaven fremragende og fandt alle forberedte sårbarheder:

Wapiti - kontrol af websteder for sårbarheder på egen hånd

LFI/RFI

Scanneren har fundet alle de indbyggede sårbarheder:

Wapiti - kontrol af websteder for sårbarheder på egen hånd

Generelt, på trods af falske alarmer og forgængelser af sårbarheder, viser Wapiti, som et gratis værktøj, ret gode resultater. Uanset hvad er det værd at anerkende, at scanner er ret kraftfuld, fleksibel og multifunktionel, og vigtigst af alt — gratis, så den fortjener at blive brugt, idet den hjælper administratorer og udviklere med at få grundlæggende oplysninger om sikkerhedstilstanden for webapplikationen.

Forbliv sund og sikker!

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster