Wapiti - Zelf een site controleren op kwetsbaarheden

Wapiti - Zelf een site controleren op kwetsbaarheden
In het verleden статье we spraken over Nemesida WAF-vrij - een gratis tool voor het beschermen van websites en API's tegen hackeraanvallen, en in deze hebben we besloten een populaire kwetsbaarheidsscanner te beoordelen cervus canadensis.

Het scannen van een website op kwetsbaarheden is een noodzakelijke maatregel, die u, in combinatie met analyse van de broncode, in staat stelt het beveiligingsniveau tegen bedreigingen of compromissen te beoordelen. U kunt een webbron scannen met behulp van gespecialiseerde hulpmiddelen.

Nikto, W3af (geschreven in Python 2.7, dat niet langer wordt ondersteund) of Arachni (niet langer ondersteund sinds februari) zijn de populairste oplossingen die in het gratis segment worden gepresenteerd. Natuurlijk zijn er nog anderen, bijvoorbeeld Wapiti, waarop we besloten hebben ons te concentreren.

Wapiti werkt met de volgende soorten kwetsbaarheden:

  • bestandsuitbreiding (lokaal en op afstand, fopen, leesbestand);
  • injecties (PHP/JSP/ASP/SQL-injectie en XPath-injectie);
  • XSS (Cross Site Scripting) (reflectief en persistent);
  • detectie en uitvoering van opdrachten (eval(), system(), passtru());
  • CRLF-injecties (HTTP-responssplitsing, sessiefixatie);
  • XXE (XML externe entiteit) insluiting;
  • SSRF (Server Side Request Forgery);
  • gebruik van bekende potentieel gevaarlijke bestanden (dankzij de Nikto-database);
  • zwakke .htaccess-configuraties die kunnen worden omzeild;
  • de aanwezigheid van back-upbestanden die vertrouwelijke informatie onthullen (openbaarmaking van de broncode);
  • Shellshock;
  • open omleidingen;
  • niet-standaard HTTP-methoden die kunnen worden opgelost (PUT).

kenmerken:

  • HTTP-, HTTPS- en SOCKS5-proxyondersteuning;
  • authenticatie met behulp van verschillende 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 eindeloze scanlussen (bijvoorbeeld: ifor, grenswaarden voor een parameter);
  • de mogelijkheid om een ​​prioriteit in te stellen voor het onderzoeken van URL's (zelfs als deze zich niet in het scangebied bevinden);
  • mogelijkheid om bepaalde URL's uit te sluiten van scannen en aanvallen (bijvoorbeeld: URL-uitloggen);
  • cookies importeren (verkrijg ze met de wapiti-getcookie-tool);
  • mogelijkheid om SSL-certificaatverificatie te activeren/deactiveren;
  • de mogelijkheid om URL's uit JavaScript te extraheren (een zeer eenvoudige JS-interpreter);
  • interactie met HTML5;
  • verschillende opties voor het beheren van crawlergedrag en beperkingen;
  • het instellen van de maximale tijd voor het scanproces;
  • het toevoegen van enkele aangepaste HTTP-headers of het instellen van een aangepaste User-Agent.

Extra functies:

  • het maken van kwetsbaarheidsrapporten in verschillende formaten (HTML, XML, JSON, TXT);
  • een scan of aanval pauzeren en hervatten (sessiemechanisme met behulp van SQLite3-databases);
  • achtergrondverlichting in de terminal om kwetsbaarheden te benadrukken;
  • verschillende niveaus van loggen;
  • Een snelle en gemakkelijke manier om aanvalsmodules te activeren/deactiveren.

installatie

De huidige versie van Wapiti kan op 2 manieren worden geïnstalleerd:

  • download de bron van de ambtenaar сайта en voer het installatiescript uit, nadat u Python3 eerder hebt geïnstalleerd;
  • met behulp van de opdracht pip3 install wapiti3.

Hierna is Wapiti klaar voor vertrek.

Werken met het gereedschap

Om het werk van Wapiti te demonstreren, zullen we een speciaal voorbereide stand sites.vulns.pentestit.ru (interne bron) gebruiken, met daarin verschillende kwetsbaarheden (Injection, XSS, LFI/RFI) en andere tekortkomingen van webapplicaties.

De informatie wordt uitsluitend ter informatie verstrekt. Overtreed de wet niet!

Basisopdracht om de scanner te starten:

# wapiti -u <target> <options>

Tegelijkertijd is er vrij gedetailleerde hulp bij een groot aantal startopties, bijvoorbeeld:

--domein - toepassingsgebied
Als u de scopeparameter samen met de crawl-URL opgeeft, kunt u het crawlgebied van de site aanpassen door zowel één enkele pagina als alle pagina's op te geven die op de site kunnen worden gevonden.

-s и -x — opties om specifieke URL's toe te voegen of te verwijderen. Deze opties zijn handig wanneer u tijdens het crawlproces een specifieke URL moet toevoegen of verwijderen.

--overslaan — de opgegeven parameter met deze sleutel wordt gescand, maar niet aangevallen. Handig als er gevaarlijke parameters zijn die het beste tijdens het scannen kunnen worden uitgesloten.

--verifieer-ssl — certificaatverificatie in- of uitschakelen.
De Wapiti-scanner is modulair. Om echter specifieke modules te starten, inclusief de modules die automatisch worden verbonden terwijl de scanner actief is, moet u de schakelaar -m gebruiken en de modules vermelden die u nodig hebt, gescheiden door komma's. Als de sleutel niet wordt gebruikt, werken alle modules standaard. In de eenvoudigste versie ziet het er als volgt uit:

# 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 kunt u de werking van modules filteren afhankelijk van de gewenste werkwijze. Bijvoorbeeld -m “xss: ophalen, blindsql: post, xxe: post”. In dit geval de module xss is van toepassing op verzoeken verzonden via de GET-methode en op de module blibdsql - voor POST-verzoeken, enz. Trouwens, als een module die in de lijst was opgenomen niet nodig was tijdens het scannen of erg lang duurt, dan kun je door op de combinatie Ctrl+C te drukken het gebruik van de huidige module overslaan door het overeenkomstige item in het interactieve menu te selecteren.

Wapiti ondersteunt het doorgeven van verzoeken via een proxy met behulp van een sleutel -p en authenticatie op de doelsite via de parameter -a. U kunt ook het authenticatietype opgeven: Basis, Verteren, Kerberos и NTLM. Voor de laatste twee is mogelijk de installatie van extra modules vereist. Bovendien kunt u headers in verzoeken invoegen (inclusief willekeurige User-Agent) en nog veel meer.

Om authenticatie te gebruiken, kunt u de tool gebruiken wapiti-getcookie. Met zijn hulp vormen we koekje, die Wapiti zal gebruiken bij het scannen. Vorming koekje gedaan met het commando:

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

Terwijl we interactief werken, beantwoorden we vragen en geven we de nodige informatie aan zoals login, wachtwoord, enz.:

Wapiti - Zelf een site controleren op kwetsbaarheden

De uitvoer is een bestand in JSON-indeling. Een andere optie is om alle benodigde informatie via de parameter toe te voegen -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 site controleren op kwetsbaarheden

Bij het overwegen van de belangrijkste functionaliteit van de scanner was het laatste verzoek voor het testen van de webapplicatie 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 и -o — formaat en pad voor het opslaan van het rapport;

-m — het aansluiten van alle modules wordt niet aanbevolen, omdat zal de testtijd en rapportgrootte beïnvloeden;

--kleur — de gevonden kwetsbaarheden benadrukken, afhankelijk van hun kritiekheid volgens Wapiti zelf;

-c - een bestand gebruiken met koekje, gegenereerd met wapiti-getcookie;

--domein - het kiezen van een aanvalsdoel. Een optie selecteren map Elke URL wordt gecrawld en aangevallen, te beginnen met de basis. De basis-URL moet een schuine streep naar voren hebben (geen bestandsnaam);

--flush-sessie — maakt herhaaldelijk scannen mogelijk, waarbij eerdere resultaten niet in aanmerking worden genomen;

-A - eigen User-Agent;

-p — proxyserveradres, indien nodig.

Nog even over het rapport

Het scanresultaat wordt gepresenteerd in de vorm van een gedetailleerd rapport over alle gevonden kwetsbaarheden in HTML-paginaformaat, in een duidelijke en gemakkelijk leesbare vorm. Het rapport geeft de categorieën en het aantal gevonden kwetsbaarheden aan, evenals hun beschrijvingen, verzoeken en opdrachten krullen en tips om ze te sluiten. Voor het gemak van navigatie wordt er een link toegevoegd aan de categorienamen, waarop u kunt klikken om ernaartoe te gaan:

Wapiti - Zelf een site controleren op kwetsbaarheden

Een belangrijk nadeel van het rapport is het ontbreken van een webapplicatiekaart als zodanig, zonder welke het niet duidelijk zal zijn of alle adressen en parameters zijn geanalyseerd. Er is ook een mogelijkheid van valse positieven. In ons geval bevat het rapport ‘back-upbestanden’ en ‘potentieel gevaarlijke bestanden’. Hun aantal komt niet overeen met de werkelijkheid, aangezien dergelijke bestanden niet op de server stonden:

Wapiti - Zelf een site controleren op kwetsbaarheden

Mogelijk worden verkeerd werkende modules in de loop van de tijd opgelost. Een ander nadeel van het rapport is het gebrek aan kleuring van de gevonden kwetsbaarheden (afhankelijk van hun kritiekheid), of op zijn minst de indeling ervan in categorieën. De enige manier waarop we indirect de kriticiteit van de gevonden kwetsbaarheid kunnen begrijpen, is door de parameter te gebruiken --kleur tijdens het scannen, waarna de gevonden kwetsbaarheden in verschillende kleuren worden gekleurd:

Wapiti - Zelf een site controleren op kwetsbaarheden

Maar het rapport zelf biedt dergelijke kleurstellingen niet.

Kwetsbaarheden

SQLi

De scanner kon de SQLi-zoekopdracht gedeeltelijk aan. Bij het zoeken naar SQL-kwetsbaarheden op pagina's waar authenticatie niet vereist is, ontstaan ​​er geen problemen:

Wapiti - Zelf een site controleren op kwetsbaarheden

Het was niet mogelijk om een ​​kwetsbaarheid te vinden op pagina's die alleen toegankelijk waren na authenticatie, zelfs niet met valid koekje, aangezien hun sessie hoogstwaarschijnlijk na een succesvolle authenticatie wordt “uitgelogd” en koekje zal ongeldig worden. Als de functie voor het intrekken van de autorisatie zou worden geïmplementeerd als een afzonderlijk script dat verantwoordelijk is voor de verwerking van deze procedure, dan zou het mogelijk zijn om deze volledig uit te sluiten via de parameter -x, en daardoor te voorkomen dat deze wordt geactiveerd. Anders is het niet mogelijk om de verwerking ervan uit te sluiten. Dit is geen probleem met een specifieke module, maar met de tool als geheel, maar vanwege deze nuance was het niet mogelijk om meerdere injecties in een gesloten hulpbronnengebied te detecteren.

XSS

De scanner kon de gegeven taak perfect aan en vond alle voorbereide kwetsbaarheden:

Wapiti - Zelf een site controleren op kwetsbaarheden

LFI/RFI

De scanner heeft alle onderliggende kwetsbaarheden gevonden:

Wapiti - Zelf een site controleren op kwetsbaarheden

Over het algemeen laat Wapiti, als gratis tool, ondanks valse positieven en ontbrekende kwetsbaarheden, redelijk goede prestatieresultaten zien. In ieder geval is het de moeite waard om te erkennen dat de scanner behoorlijk krachtig, flexibel en multifunctioneel is, en het allerbelangrijkste: hij is gratis, dus hij heeft het recht om te worden gebruikt om beheerders en ontwikkelaars te helpen basisinformatie te verkrijgen over de beveiligingsstatus van een web sollicitatie.

Blijf gezond en beschermd!

Bron: www.habr.com

Voeg een reactie