Wapiti - kontrollerer et websted for sårbarheder på egen hånd

Wapiti - kontrollerer et websted for sårbarheder på egen hånd
I fortiden artiklen vi talte om Nemesida WAF gratis - et gratis værktøj til at beskytte websteder og API'er mod hackerangreb, og i denne besluttede vi at gennemgå en populær sårbarhedsscanner Elg.

Scanning af et websted for sårbarheder er en nødvendig foranstaltning, som sammen med analyse af kildekoden giver dig mulighed for at vurdere niveauet af dets sikkerhed mod trusler om kompromis. Du kan scanne en webressource ved hjælp af specialiserede værktøjer.

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

Wapiti arbejder med følgende typer sårbarheder:

  • filudvidelse (lokal og ekstern, fopen, readfile);
  • injektioner (PHP / JSP / ASP / SQL-injektion og XPath-injektion);
  • XSS (Cross Site Scripting) (reflekterende og vedvarende);
  • detektion og udførelse af kommandoer (eval(), system(), passtru());
  • CRLF-injektioner (HTTP-responsopdeling, sessionsfiksering);
  • XXE (XML ekstern enhed) indlejring;
  • SSRF (Server Side Request Forgery);
  • brug af kendte potentielt farlige filer (takket være Nikto-databasen);
  • svage .htaccess-konfigurationer, der kan omgås;
  • tilstedeværelsen af ​​backup-filer, der afslører fortrolige oplysninger (afsløring af kildekode);
  • Shellshock;
  • åbne omdirigeringer;
  • ikke-standard HTTP-metoder, der kan løses (PUT).

features:

  • HTTP, HTTPS og SOCKS5 proxy support;
  • autentificering ved hjælp af flere metoder: Basic, Digest, Kerberos eller NTLM;
  • evnen til at begrænse scanningsområdet (domæne, mappe, side, URL);
  • automatisk fjernelse af en af ​​parametrene i URL'en;
  • flere forholdsregler mod endeløse scanningsløkker (eksempel: ifor, grænseværdier for en parameter);
  • evnen til at angive en prioritet for undersøgelse af URL'er (selvom de ikke er i scanningsområdet);
  • mulighed for at udelukke nogle URL'er fra scanning og angreb (for eksempel: URL-logout);
  • importere cookies (hent dem ved hjælp af wapiti-getcookie-værktøjet);
  • mulighed for at aktivere/deaktivere SSL-certifikatbekræftelse;
  • evnen til at udtrække URL'er fra JavaScript (en meget simpel JS-fortolker);
  • interaktion med HTML5;
  • flere muligheder for at administrere webcrawlers adfærd og begrænsninger;
  • indstilling af den maksimale tid for scanningsprocessen;
  • tilføje nogle brugerdefinerede HTTP-headere eller opsætte en brugerdefineret brugeragent.

Yderligere funktioner:

  • oprettelse af sårbarhedsrapporter i forskellige formater (HTML, XML, JSON, TXT);
  • pause og genoptagelse af en scanning eller et angreb (sessionsmekanisme ved hjælp af SQLite3-databaser);
  • baggrundsbelysning i terminalen for at fremhæve sårbarheder;
  • forskellige niveauer af logning;
  • En hurtig og nem måde at aktivere/deaktivere angrebsmoduler.

Installation

Den nuværende version af Wapiti kan installeres på 2 måder:

  • download kilden fra den officielle сайта og kør installationsscriptet efter tidligere at have installeret Python3;
  • ved at bruge kommandoen pip3 install wapiti3.

Efter dette vil Wapiti være klar til at gå.

Arbejde med værktøjet

For at demonstrere Wapiti's arbejde vil vi bruge en specielt forberedt stand sites.vulns.pentestit.ru (intern ressource), der indeholder forskellige sårbarheder (Injection, XSS, LFI/RFI) og andre mangler ved webapplikationer.

Oplysningerne gives kun til informationsformål. Bryd ikke loven!

Grundlæggende kommando til at starte scanneren:

# wapiti -u <target> <options>

Samtidig er der ret detaljeret hjælp til et stort antal lanceringsmuligheder, for eksempel:

--omfang - anvendelsesområde
Hvis du angiver omfangsparameteren sammen med crawl-URL'en, kan du justere webstedets crawlingsområde ved at angive både en enkelt side og alle sider, der kan findes på webstedet.

-s и -x — muligheder for at tilføje eller fjerne specifikke URL'er. Disse muligheder er nyttige, når du skal tilføje eller fjerne en specifik webadresse under gennemgangsprocessen.

--springe — den angivne parameter med denne nøgle vil blive scannet, men vil ikke blive angrebet. Nyttigt, hvis der er nogle farlige parametre, der bedst udelukkes under scanning.

--verify-ssl — aktivere eller deaktivere certifikatbekræftelse.
Wapiti-scanneren er modulopbygget. Men for at starte specifikke moduler, inklusive dem, der automatisk tilsluttes, mens scanneren kører, skal du bruge -m-kontakten og angive dem, du har brug for, adskilt af kommaer. Hvis nøglen ikke bruges, vil alle moduler fungere som standard. I den enkleste version vil det se sådan 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 ved scanning af målet. Derudover kan du filtrere driften af ​​moduler afhængigt af den ønskede metode. For eksempel -m "xss: get, blindsql: post, xxe: post". I dette tilfælde modulet XSS vil gælde for anmodninger sendt med GET-metoden og modulet blibdsql - til POST-anmodninger mv. Forresten, hvis et modul, der var inkluderet på listen, ikke var nødvendigt under scanning eller tager meget lang tid, så kan du ved at trykke på Ctrl+C-kombinationen springe over at bruge det aktuelle modul ved at vælge det tilsvarende element i den interaktive menu.

Wapiti understøtter at sende anmodninger gennem en proxy ved hjælp af en nøgle -p og godkendelse på målstedet gennem parameteren -a. Du kan også angive godkendelsestypen: Grundlæggende, Fordøje, Kerberos и NTLM. De sidste to kan kræve installation af yderligere moduler. Derudover kan du indsætte alle overskrifter i anmodninger (inklusive vilkårlige User-Agent) og meget mere.

For at bruge godkendelse kan du bruge værktøjet wapiti-getcookie. Med dens hjælp danner vi cookie, som Wapiti vil bruge ved scanning. Dannelse cookie gjort med kommandoen:

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

Mens vi arbejder interaktivt, besvarer vi spørgsmål og angiver de nødvendige oplysninger såsom login, adgangskode osv.:

Wapiti - kontrollerer et websted for sårbarheder på egen hånd

Outputtet er en fil i JSON-format. En anden mulighed er at tilføje al den nødvendige information gennem 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 - kontrollerer et websted for sårbarheder på egen hånd

Når vi overvejede scannerens hovedfunktionalitet, var den endelige anmodning om at teste 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 и -o — format og sti til at gemme rapporten;

-m — tilslutning af alle moduler anbefales ikke, fordi vil påvirke testtid og rapportstørrelse;

-farve — fremhæve fundne sårbarheder afhængigt af deres kritikalitet ifølge Wapiti selv;

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

--omfang — at vælge et mål til angreb. Valg af en mulighed mappe Hver URL vil blive crawlet og angrebet, begyndende med den grundlæggende. Basis-URL'en skal have en skråstreg (intet filnavn);

--flush-session — giver mulighed for gentagen scanning, hvor tidligere resultater ikke vil blive taget i betragtning;

-A - egen User-Agent;

-p — proxyserveradresse, hvis det er nødvendigt.

Lidt om rapporten

Scanningsresultatet præsenteres i form af en detaljeret rapport om alle fundne sårbarheder i HTML-sideformat, i en overskuelig og letlæselig form. Rapporten vil angive kategorierne og antallet af fundne sårbarheder, deres beskrivelser, anmodninger, kommandoer for krølle og tips til, hvordan du lukker dem. For at lette navigationen vil der blive tilføjet et link til kategorinavnene, ved at klikke på, hvor du kan gå til det:

Wapiti - kontrollerer et websted for sårbarheder på egen hånd

En væsentlig ulempe ved rapporten er fraværet af et webapplikationskort som sådan, uden hvilket det ikke vil være klart, om alle adresser og parametre er blevet analyseret. Der er også mulighed for falske positiver. I vores tilfælde inkluderer rapporten "backup-filer" og "potentielt farlige filer." Deres antal svarer ikke til virkeligheden, da der ikke var sådanne filer på serveren:

Wapiti - kontrollerer et websted for sårbarheder på egen hånd

Måske vil forkert fungerende moduler blive rettet over tid. En anden ulempe ved rapporten er manglen på farvelægning af de fundne sårbarheder (afhængigt af deres kritikalitet), eller i det mindste opdeling af dem i kategorier. Den eneste måde, vi indirekte kan forstå kritiskheden af ​​den fundne sårbarhed, er at bruge parameteren -farve under scanning, og så vil de fundne sårbarheder være farvet i forskellige farver:

Wapiti - kontrollerer et websted for sårbarheder på egen hånd

Men selve rapporten giver ikke en sådan farve.

Sårbarheder

SQLi

Scanneren klarede delvist SQLi-søgningen. Når du søger efter SQL-sårbarheder på sider, hvor godkendelse ikke er påkrævet, opstår der ingen problemer:

Wapiti - kontrollerer et websted for sårbarheder på egen hånd

Det var ikke muligt at finde en sårbarhed på sider, der kun var tilgængelige efter godkendelse, selv ved brug af valid cookie, da deres session højst sandsynligt efter vellykket godkendelse bliver "logget ud" og cookie bliver ugyldig. Hvis afautoriseringsfunktionen blev implementeret som et separat script, der er ansvarlig for at behandle denne procedure, ville det være muligt helt at udelukke det gennem parameteren -x og derved forhindre det i at udløse. Ellers vil det ikke være muligt at udelukke dens behandling. Dette er ikke et problem med et specifikt modul, men med værktøjet som helhed, men på grund af denne nuance var det ikke muligt at opdage flere injektioner i et lukket ressourceområde.

XSS

Scanneren klarede den givne opgave perfekt og fandt alle de forberedte sårbarheder:

Wapiti - kontrollerer et websted for sårbarheder på egen hånd

LFI/RFI

Scanneren fandt alle de underliggende sårbarheder:

Wapiti - kontrollerer et websted for sårbarheder på egen hånd

Generelt, på trods af falske positiver og manglende sårbarheder, viser Wapiti, som et gratis værktøj, ret gode resultater. Under alle omstændigheder er det værd at erkende, at scanneren er ret kraftfuld, fleksibel og multifunktionel, og vigtigst af alt er den gratis, så den har ret til at blive brugt til at hjælpe administratorer og udviklere med at få grundlæggende oplysninger om sikkerhedsstatus for et web Ansøgning.

Hold dig sund og beskyttet!

Kilde: www.habr.com

Tilføj en kommentar