Wapiti — zelf een website op kwetsbaarheden controleren

Wapiti — zelf een website op kwetsbaarheden controleren
In het verleden artikel we hebben gesproken over Nemesida WAF Free — een gratis tool voor de bescherming van websites en API's tegen hackeraanvallen, en in dit artikel willen we een populaire kwetsbaarheidsscanner bespreken Wapiti.

Het scannen van een website op kwetsbaarheden is een noodzakelijke maatregel die, in combinatie met de analyse van de broncode, de beveiligingsniveaus tegen bedreigingen van compromittering kan evalueren. Het uitvoeren van een scan van de webresource kan gedaan worden met behulp van gespecialiseerde tools.

Nikto, W3af (geschreven in Python 2.7, waarvan de ondersteuning is beëindigd) of Arachni (sinds februari wordt het niet langer ondersteund) zijn de meest populaire oplossingen die beschikbaar zijn in het gratis segment. Uiteraard zijn er ook andere, bijvoorbeeld Wapiti, waarop we ons willen richten.

Wapiti werkt met de volgende typen kwetsbaarheden:

  • bestandssurveillance (lokaal en op afstand, fopen, readfile);
  • injecties (PHP / JSP / ASP / SQL-injecties en XPath-injecties);
  • XSS (cross-site scripting) (reflecterend en persistent);
  • het detecteren en uitvoeren van commando's (eval(), system(), passthru());
  • CRLF-injecties (HTTP-responses splitsen, sessiefixatie);
  • XXE (XML externe entiteit) injectie;
  • SSRF (server-side request forgery);
  • het gebruik van bekende potentieel gevaarlijke bestanden (via de Nikto-database);
  • zwakke .htaccess-configuraties die kunnen worden omzeild;
  • aanwezigheid van back-upbestanden die gevoelige informatie onthullen (broncode-onthulling);
  • Shellshock;
  • open redirects;
  • niet-standaard HTTP-methoden die zijn toegestaan (PUT).

Mogelijkheden:

  • ondersteuning voor HTTP, HTTPS en SOCKS5 proxies;
  • authenticatie via meerdere methoden: Basic, Digest, Kerberos of NTLM;
  • de mogelijkheid om het scangebied te beperken (domein, map, pagina, URL);
  • automatische verwijdering van een van de parameters in de URL;
  • meerdere voorzorgsmaatregelen tegen oneindige scanlussen (bijvoorbeeld: ifor, beperking van waarden voor de parameter);
  • de mogelijkheid om prioriteit in te stellen voor het onderzoeken van URL's (zelfs als ze zich niet in het scangebied bevinden);
  • de mogelijkheid om bepaalde URL's uit de scan en aanvallen uit te sluiten (bijvoorbeeld: URL logout);
  • importeren van cookies (deze verkrijgen met behulp van de wapiti-getcookie tool);
  • de mogelijkheid om SSL-certificaatverificatie in of uit te schakelen;
  • de mogelijkheid om URL's uit JavaScript te extraheren (zeer eenvoudige JS-interpreter);
  • interactie met HTML5;
  • verschillende opties voor het beheren van het gedrag en de beperkingen van de crawler;
  • instellen van de maximale tijd voor het scanproces;
  • toevoegen van enkele aanpasbare HTTP-headers of het instellen van een aangepaste User-Agent.

Extra mogelijkheden:

  • genereren van kwetsbaarheidsrapporten in verschillende formaten (HTML, XML, JSON, TXT);
  • pauzeren en hervatten van scans of aanvallen (sessiemechanisme met behulp van SQLite3-databases);
  • highlights in de terminal om kwetsbaarheden te markeren;
  • verschillende loggingsniveaus;
  • snelle en gemakkelijke manier om aanvalsmiddelen in of uit te schakelen.

Installatie

De meest recente versie van Wapiti kan op twee manieren worden geïnstalleerd:

  • de broncode downloaden van de officiële website en het installatie-script uitvoeren, nadat Python3 is geïnstalleerd;
  • met het commando pip3 install wapiti3.

Daarna is Wapiti klaar voor gebruik.

Werken met de tool

Om de werking van Wapiti te demonstreren, zullen we een speciaal voorbereide testomgeving gebruiken sites.vulns.pentestit.ru (interne resource), die verschillende kwetsbaarheden bevat (Injection, XSS, LFI/RFI) en andere tekortkomingen van webapplicaties.

De informatie wordt uitsluitend verstrekt voor informatieve doeleinden. Overtreed de wet niet!

De basisopdracht om de scanner te starten:

# wapiti -u <target> <options>

Hierbij is er behoorlijk gedetailleerde hulp met een enorme hoeveelheid opstartopties, zoals:

—scope — toepassingsgebied
Als samen met de URL voor scanning de parameter scope wordt opgegeven, kan het scanbereik van de site worden gereguleerd, door zowel een afzonderlijke pagina als alle pagina's die op de site kunnen worden gevonden op te geven.

-s en -x —parameters voor het toevoegen of verwijderen van specifieke URL-adressen. Deze parameters zijn nuttig wanneer het nodig is om een specifieke URL toe te voegen of te verwijderen tijdens het scanproces.

—skip — de opgegeven parameter met deze sleutel zal worden gescand, maar niet worden aangevallen. Nuttig als er gevaarlijke parameters zijn die beter kunnen worden uitgesloten van de scan.

—verify-ssl — inschakelen of uitschakelen van de certificaatcontrole.
De Wapiti-scanner is modulair. Om echter specifieke modules uit de modules die automatisch tijdens het werk van de scanner worden geladen, uit te voeren, moet je de sleutel -m gebruiken en de benodigde modules gescheiden door komma's opgeven. Als de sleutel niet wordt gebruikt, worden standaard alle modules ingeschakeld. In de eenvoudigste vorm zou dit er als volgt uitzien:

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

Dit gebruiksvoorbeeld betekent dat we alleen de SQL, XSS en XXE-modules zullen gebruiken bij het scannen van het doel. Daarnaast is het mogelijk om de werking van de modules te filteren op basis van de vereiste methode. Bijvoorbeeld -m "xss: get, blindsql: post, xxe: post". In dat geval zal de module xss toegepast worden op aanvragen die met de GET-methode worden verzonden, terwijl de module blibdsql wordt gebruikt voor POST-aanvragen, enzovoorts. Overigens, als er een module is die op de lijst staat en niet nodig was tijdens het scannen of heel lang werkt, kan deze worden overgeslagen door de combinatie Ctrl+C te gebruiken en de juiste optie in het interactieve menu te kiezen.

Wapiti ondersteunt het verzenden van aanvragen via een proxyserver met de sleutel -p en authenticatie op de doelwebsite via de parameter -a. Er kan ook een type authenticatie worden opgegeven: Basiс, Digest, Kerberos en NTLM. Voor de laatste twee kan het nodig zijn extra modules te installeren. Bovendien is het mogelijk om in aanvragen willekeurige headers (waaronder willekeurige User-Agent) in te voegen en nog veel meer.

Voor het gebruik van authenticatie kan de tool wapiti-getcookieworden gebruikt. Hiermee genereren we cookie, die Wapiti zal gebruiken tijdens het scannen. De generering cookie wordt uitgevoerd met het commando:

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

Tijdens het werken in de interactieve modus beantwoorden we vragen en geven we benodigde informatie op, zoals: inlognaam, wachtwoord en andere:

Wapiti — zelf een website op kwetsbaarheden controleren

Als resultaat ontvangen we een bestand in JSON-formaat. Een andere optie is om alle benodigde informatie door te geven via de parameter -d:

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

Het resultaat zal vergelijkbaar zijn:

Wapiti — zelf een website op kwetsbaarheden controleren

Bij het bekijken van de belangrijkste functionaliteit van de scanner werd de uiteindelijke aanvraag voor het testen van de webtoepassing in ons geval:

# 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

waarbij onder andere parameters:

-f en -o — het formaat en pad voor het opslaan van het rapport;

-m — het inschakelen van alle modules — niet aan te raden, aangezien dit de testtijd en de grootte van het rapport beïnvloedt;

—color — om gevonden kwetsbaarheden te markeren op basis van hun ernst volgens de versie van Wapiti zelf;

-c — gebruik van een bestand met cookie, gegenereerd met behulp van wapiti-getcookie;

—scope — selecteer het doel voor de aanval. Door de optie te kiezen map wordt elke URL gescand en aangevallen, te beginnen met de basis. De basis-URL moet een schuine streep hebben (zonder bestandsnaam);

—flush-session — maakt herhaald scannen mogelijk waarbij eerdere resultaten niet worden meegenomen;

-A — eigen User-Agent;

-p — proxyserveradres, indien nodig.

Even over het rapport

Het resultaat van de scan wordt gepresenteerd in de vorm van een gedetailleerd rapport over alle gevonden kwetsbaarheden in de vorm van een HTML-pagina, op een begrijpelijke en overzichtelijke manier. In het rapport worden de categorieën en het aantal gevonden kwetsbaarheden, hun beschrijving, verzoeken, commando's voor curl en tips voor het sluiten ervan aangegeven. Voor het gemak van navigatie wordt er een link toegevoegd aan de titels van de categorieën, zodat je erop kunt klikken om naar die categorie te gaan:

Wapiti — zelf een website op kwetsbaarheden controleren

Een aanzienlijk nadeel van het rapport is het ontbreken van een kaart van de webapplicatie, zonder welke niet duidelijk is of alle adressen en parameters zijn geanalyseerd. Er is ook een kans op valse positieven. In ons geval worden er "back-up bestanden" en "potentieel gevaarlijke bestanden" genoemd. Hun aantal komt niet overeen met de werkelijkheid, aangezien er dergelijke bestanden op de server niet waren:

Wapiti — zelf een website op kwetsbaarheden controleren

Het is mogelijk dat niet goed functionerende modules in de loop van de tijd worden gecorrigeerd. Een ander nadeel van het rapport is het ontbreken van kleurcodering voor de gevonden kwetsbaarheden (afhankelijk van hun ernst), of ten minste hun onderverdeling in categorieën. De enige manier waarop we indirect kunnen begrijpen hoe ernstig een gevonden kwetsbaarheid is, is door de parameter —color toe te passen bij de scan, waardoor de gevonden kwetsbaarheden in verschillende kleuren gekleurd worden:

Wapiti — zelf een website op kwetsbaarheden controleren

Maar in het rapport zelf is een dergelijke kleurcodering niet voorzien.

Kwetsbaarheden

SQLi

De scanner heeft gedeeltelijk succesvol gezocht naar SQLi. Bij het zoeken naar SQL-kwetsbaarheden op pagina's waar geen authenticatie vereist is, ontstaan er geen problemen:

Wapiti — zelf een website op kwetsbaarheden controleren

Het is niet gelukt om een kwetsbaarheid te vinden op pagina's die alleen toegankelijk zijn na authenticatie, zelfs niet met geldige cookie, omdat waarschijnlijk na succesvolle authenticatie de "uitloggen van hun sessie" zal plaatsvinden en cookie ze ongeldig worden. Als de de-authenticatiefunctie in de vorm van een apart script zou worden uitgevoerd, dat verantwoordelijk is voor het verwerken van deze procedure, zou het volledig kunnen worden uitgesloten via de parameter -x, en zou het dus worden voorkomen dat het wordt geactiveerd. Anders kan de verwerking ervan niet worden uitgesloten. Dit is een probleem van de tool in zijn geheel, niet van een specifieke module, maar door deze nuance kon er geen enkele injectie in het afgesloten gebied van de hulpbron worden ontdekt.

XSS

De scanner heeft de taak uitstekend uitgevoerd en heeft alle voorbereid kwetsbaarheden gevonden:

Wapiti — zelf een website op kwetsbaarheden controleren

LFI/RFI

De scanner heeft alle ingebouwde kwetsbaarheden gevonden:

Wapiti — zelf een website op kwetsbaarheden controleren

Over het geheel genomen, ondanks de valse positieven en gemiste kwetsbaarheden, levert Wapiti, als een gratis tool, redelijk goede resultaten. In ieder geval moet worden erkend dat de scanner behoorlijk krachtig, flexibel en multifunctioneel is, en vooral — gratis, wat het gebruik ervan rechtvaardigt, ter ondersteuning van beheerders en ontwikkelaars in het verkrijgen van basisinformatie over de beveiligingsstatus van webapplicaties.

Blijf gezond en veilig!

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster