
I fortiden vi talte om Nemesida WAF Free — et gratis værktøj til at beskytte websteder og API'er mod hackerangreb, og i dette værktøj besluttede vi at anmelde en populær sårbarhedsscanner .
Scanning af et websted for sårbarheder er en nødvendig foranstaltning, der sammen med analyse af kildekoden giver dig mulighed for at vurdere niveauet af dets beskyttelse mod trusler om kompromittering. 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, der præsenteres i det gratis segment. Der er selvfølgelig andre, for eksempel Wapiti, som vi besluttede at fokusere på.
Wapiti arbejder med følgende typer sårbarheder:
- filåbning (lokal og fjern, fopen, readfile);
- injektioner (PHP/JSP/ASP/SQL-injektioner og XPath-injektioner);
- XSS (Cross-site scripting) (reflekteret og persistent);
- detektion og udførelse af kommandoer (eval(), system(), passtru());
- CRLF-injektioner (HTTP-responsopdeling, sessionsfiksering);
- XXE (XML ekstern entitet) 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 backupfiler, der afslører fortrolige oplysninger (offentliggørelse af kildekode);
- Granatchok;
- åbne omdirigeringer;
- ikke-standard HTTP-metoder, der muligvis er tilladt (PUT).
features:
- Understøttelse af HTTP-, HTTPS- og SOCKS5-proxyer;
- godkendelse ved hjælp af flere metoder: Basic, Digest, Kerberos eller NTLM;
- muligheden for at begrænse scanningsområdet (domæne, mappe, side, URL);
- automatisk fjernelse af en af parametrene i URL'en;
- flere forholdsregler mod uendelige scanningsløkker (eksempel: ifor, grænseværdier for en parameter);
- muligheden for at prioritere undersøgelsen af URL'er (selvom de ikke er i scanningsområdet);
- muligheden for at udelukke bestemte URL'er fra scanning og angreb (f.eks.: URL-logout);
- import af cookies (hentning af dem ved hjælp af wapiti-getcookie-værktøjet);
- mulighed for at aktivere/deaktivere SSL-certifikatverifikation;
- mulighed for at udtrække URL fra JavaScript (meget simpel JS-fortolker);
- interaktion med HTML5;
- flere muligheder for at kontrollere crawler-adfærd og -begrænsninger;
- indstilling af den maksimale tid for scanningsprocessen;
- tilføjelse af nogle brugerdefinerede HTTP-headere eller indstilling af en brugerdefineret brugeragent.
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ævning i terminalen for at fremhæve sårbarheden;
- forskellige logningsniveauer;
- hurtig og nem måde at aktivere/deaktivere angrebsmoduler på.
Installation
Den nuværende version af Wapiti kan installeres på 2 måder:
- Download kildekode fra den officielle hjemmeside og kør installationsscriptet, efter at have installeret Python3 tidligere;
- ved at bruge kommandoen pip3 installere wapiti3.
Derefter vil Wapiti være klar til at arbejde.
Arbejde med værktøjet
For at demonstrere Wapitis 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 orientering. Bryd ikke loven!
Den grundlæggende kommando til at køre scanneren er:
# wapiti -u <target> <options>Der er også en ret detaljeret hjælp med et stort antal opstartsmuligheder, for eksempel:
—omfang — anvendelsesområde
Hvis du angiver parameteren scope sammen med URL'en til scanningen, kan du justere webstedets scanningsområde ved at angive enten en enkelt side eller 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 har brug for at tilføje eller fjerne en bestemt URL i scanningsprocessen.
-springe - den angivne parameter med denne nøgle vil blive scannet, men vil ikke blive angrebet. Nyttigt, hvis der er farlige parametre, som det er bedre at udelukke under scanningen.
—verificer-ssl — aktivere eller deaktivere certifikatverifikation.
Wapiti-scanneren er modulær. For at køre specifikke moduler, blandt dem der automatisk tilsluttes under scannerens drift, skal du dog bruge -m-tasten og angive de nødvendige, adskilt af kommaer. Hvis nøglen ikke bruges, vil alle moduler fungere som standard. I sin enkleste form vil det se sådan ud:
# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxeDette brugseksempel betyder, at vi kun bruger SQL-, XSS- og XXE-modulerne, når vi scanner målet. Derudover kan du filtrere modulernes funktion afhængigt af den ønskede metode. For eksempel -m “xss: get, blindsql: post, xxe: post”. I dette tilfælde modulet XSS vil blive anvendt på anmodninger sendt via GET-metoden, og modulet blibdsql — til POST-anmodninger osv. Hvis et modul, der var inkluderet i listen, ikke var nødvendigt under scanningen eller har fungeret i meget lang tid, kan du ved at trykke på kombinationen Ctrl+C springe brugen af det aktuelle modul over ved at vælge det tilsvarende element i den interaktive menu.
Wapiti understøtter at sende anmodninger gennem en proxyserver ved hjælp af en nøgle -p og godkendelse på målwebstedet via parameteren -a. Du kan også angive godkendelsestypen: Basis, Fordøje, Kerberos и NTLM. De to sidste kan kræve installation af yderligere moduler. Derudover kan du indsætte alle slags headere i anmodninger (inklusive vilkårlige headere) 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 under scanning. Dannelse cookie udføres ved hjælp af kommandoen:
# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.jsonUnder arbejdet i interaktiv tilstand besvarer vi spørgsmål og angiver de nødvendige oplysninger såsom: login, adgangskode osv.:

Outputtet er en fil i JSON-format. En anden mulighed er at tilføje alle de nødvendige oplysninger 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 lignende:

Når vi overvejede scannerens primære funktionalitet, var 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:3128hvor blandt andre parametre:
-f и -o — format og sti til lagring af rapporten;
-m — det anbefales ikke at forbinde alle moduler, da det vil påvirke testtiden og rapportstørrelsen;
-farve — fremhæve de fundne sårbarheder afhængigt af deres kritiske karakter ifølge Wapiti selv;
-c - ved hjælp af en fil med cookie, genereret ved hjælp af wapiti-getcookie;
—omfang - valg af et mål for angreb. Efter at have valgt muligheden mappe Hver URL vil blive scannet og angrebet, startende fra den grundlæggende. Basis-URL'en skal have en skråstreg (intet filnavn);
—skylningssession - giver dig mulighed for at udføre en ny scanning uden at tage hensyn til tidligere resultater;
-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 klar og letlæselig form. Rapporten vil angive kategorierne og antallet af fundne sårbarheder, deres beskrivelse, forespørgsler, kommandoer til krølle og tips til, hvordan man lukker dem. For at lette navigationen vil der blive tilføjet et link til kategorinavnene, som du kan gå til ved at klikke på:

En væsentlig ulempe ved rapporten er manglen på 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 indeholder rapporten "backupfiler" og "potentielt farlige filer". Deres antal stemmer ikke overens med virkeligheden, da der ikke var sådanne filer på serveren:

Måske vil de forkert fungerende moduler blive rettet med tiden. En anden ulempe ved rapporten er manglen på en farvning af de fundne sårbarheder (afhængigt af deres kritiske karakter), eller i det mindste en opdeling i kategorier. Den eneste måde, hvorpå vi indirekte kan forstå kritiskheden af en funden sårbarhed, er ved at bruge parameteren -farve ved scanning, og så vil de fundne sårbarheder blive farvet i forskellige farver:

Men selve rapporten indeholder ikke bestemmelser om en sådan farvning.
Sårbarheder
SQLi
Scanneren klarede delvist SQLi-søgningen. Når man søger efter SQL-sårbarheder på sider, der ikke kræver godkendelse, er der ingen problemer:

Kunne ikke finde en sårbarhed på sider, der kun er godkendt, selv med gyldige legitimationsoplysninger. cookie, da der højst sandsynligt vil blive udført en "sessionslogout" efter vellykket godkendelse, og cookie vil blive ugyldig. Hvis deauthorization-funktionen blev implementeret som et separat script, der er ansvarlig for behandling af denne procedure, ville det være muligt at udelukke den fuldstændigt via parameteren -x og dermed forhindre den i at blive udløst. 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 detektere flere injektioner i et lukket område af ressourcen.
XSS
Scanneren klarede opgaven perfekt og fandt alle de forberedte sårbarheder:

LFI/RFI
Scanneren fandt alle sårbarhederne:

Samlet set viser Wapiti, som et gratis værktøj, ret gode resultater, på trods af falske positiver og oversete sårbarheder. 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, hvilket hjælper administratorer og udviklere med at få grundlæggende oplysninger om sikkerhedsstatus for en webapplikation.
Hold dig sund og beskyttet!
Kilde: www.habr.com
