
Tidigare har vi berĂ€ttat om Nemesida WAF Free â ett gratis verktyg för att skydda webbplatser och API:er frĂ„n hackaranfall, och i denna artikel har vi beslutat att ge en översikt över en populĂ€r sĂ„rbarhetsskanner .
Sökning av webbplatsens sÄrbarheter Àr en nödvÀndig ÄtgÀrd som, tillsammans med analys av kÀllkoden, gör det möjligt att bedöma dess skyddsnivÄ mot risker för kompromiss. Att genomföra en sökning av webbresursen kan göras med hjÀlp av specialiserade verktyg.
Nikto, W3af (skriven i Python 2.7, vars support har upphört) eller Arachni (som inte lĂ€ngre stöds sedan februari) â de mest populĂ€ra lösningarna som erbjuds i det fria segmentet. SjĂ€lvklart finns det ocksĂ„ andra, exempelvis Wapiti, som vi har valt att fokusera pĂ„.
Wapiti fungerar med följande typer av sÄrbarheter:
- filavslöjande (lokala och avlÀgsna, fopen, readfile);
- injektioner (PHP / JSP / ASP / SQL-injektioner och XPath-injektioner);
- XSS (cross-site scripting) (reflekterad och lagrad);
- upptÀck och utför kommandon (eval(), system(), passtru());
- CRLF-injektioner (HTTP-svarssplittring, sessionskapning);
- XXE (XML extern entitets) injektion;
- SSRF (server-side request forgery);
- anvÀndning av kÀnda potentiellt farliga filer (tack vare Nikto-databasen);
- svaga .htaccess-konfigurationer som kan kringgÄs;
- förekomst av sÀkerhetskopieringsfiler som avslöjar konfidentiell information (kÀllkodsexponering);
- Shellshock;
- öppna omdirigeringar;
- icke-standardiserade HTTP-metoder som kan tillÄtas (PUT).
Möjligheter:
- stöd för HTTP, HTTPS och SOCKS5 proxy;
- autentisering med flera metoder: Basic, Digest, Kerberos eller NTLM;
- möjlighet att begrÀnsa omrÄdet för inspektion (domÀn, mapp, sida, URL);
- automatiserad borttagning av en parameter i URL;
- flera försiktighetsÄtgÀrder mot oÀndliga skanningscykler (exempel: ifor, begrÀnsning av vÀrden för parametern);
- möjlighet att stÀlla in prioritet för att utforska URL:er (Àven om de inte ligger inom inspektionsomrÄdet);
- möjlighet att utesluta vissa URL:er frÄn inspektion och attacker (t.ex.: logga ut URL);
- import av cookies (hÀmta dem med verktyget wapiti-getcookie);
- möjlighet att aktivera/deaktivera kontroll av SSL-certifikat;
- möjlighet att extrahera URL:er frÄn JavaScript (mycket enkel JS-tolk);
- interaktion med HTML5;
- nÄgra alternativ för att hantera crawlerns beteende och begrÀnsningar;
- instÀllning av maximal tid för skanningsprocessen;
- tillÀgg av vissa anpassningsbara HTTP-huvuden eller instÀllning av en anpassad User-Agent.
Ytterligare funktioner:
- skapa sÄrbarhetsrapporter i olika format (HTML, XML, JSON, TXT);
- pausa och Äteruppta skanning eller attacker (sessionsmekanism med hjÀlp av SQLite3-databaser);
- markeringsfunktion i terminalen för att framhÀva sÄrbarheter;
- olika loggnivÄer;
- ett snabbt och enkelt sÀtt att aktivera/avaktivera attackmoduler.
Installation
Den aktuella versionen av Wapiti kan installeras pÄ tvÄ sÀtt:
- ladda ner kÀllkoden frÄn den officiella och köra installationsskriptet efter att ha installerat Python3;
- genom kommandot pip3 install wapiti3.
Efter detta kommer Wapiti att vara klart för anvÀndning.
Arbeta med verktyget
För att demonstrera hur Wapiti fungerar kommer vi att anvÀnda en sÀrskilt förberedd testmiljö sites.vulns.pentestit.ru (intern resurs) som innehÄller olika sÄrbarheter (Injection, XSS, LFI/RFI) och andra brister i webbapplikationer.
Informationen tillhandahÄlls endast för informationsÀndamÄl. Bryt inte mot lagarna!
Bas kommandot för att starta skannern:
# wapiti -u <target> <options>DÀr det finns ganska detaljerad hjÀlp med ett stort antal startalternativ, till exempel:
âscope â tillĂ€mpningsomrĂ„de
Om man anger parameter scope tillsammans med URL:en som ska skannas kan man justera skanningsomrÄdet för webbplatsen genom att ange antingen enskilda sidor eller alla sidor som gÄr att hitta pÄ webbplatsen.
-s och -x â parametrar för att lĂ€gga till eller ta bort specifika URL-adresser. Dessa parametrar Ă€r anvĂ€ndbara nĂ€r man behöver lĂ€gga till eller ta bort en specifik URL under skanningsprocessen.
âskip â den angivna parametern med denna nyckel kommer att skannas, men inte attackeras. AnvĂ€ndbart om det finns nĂ„gra farliga parametrar som det Ă€r bĂ€ttre att utesluta under skanningen.
âverify-ssl â aktivering eller deaktivering av certifikatkontroll.
Wapiti-skannern Àr modulÀr. För att starta specifika moduler, av de som automatiskt ansluts under arbetet med skannern, mÄste man anvÀnda nyckeln -m och lista dem som behövs med kommatecken. Om man inte anvÀnder nyckeln kommer alla moduler att aktiveras som standard. I det enklaste fallet kan det se ut sÄ hÀr:
# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxeDet hĂ€r exemplet innebĂ€r att vi endast kommer att anvĂ€nda SQL-, XSS- och XXE-modulerna vid skanning av mĂ„let. Utöver detta kan man filtrera modulernas funktion baserat pĂ„ den önskade metoden. Till exempel -m âxss: get, blindsql: post, xxe: postâ. I sĂ„ fall kommer modulen xss att tillĂ€mpas pĂ„ förfrĂ„gningar som skickas med GET-metoden, medan modulen blibdsql â kommer att gĂ€lla för POST-förfrĂ„gningar, etc. Förresten, om nĂ„gon modul som har inkluderats i listan inte behövdes under skanningen eller arbetar vĂ€ldigt lĂ€nge, kan man genom att trycka pĂ„ Ctrl+C hoppa över anvĂ€ndningen av den aktuella modulen och vĂ€lja motsvarande punkt i den interaktiva menyn.
Wapiti stödjer att skicka förfrĂ„gningar via en proxyserver med hjĂ€lp av nyckeln -p och autentisering pĂ„ den mĂ„lsidan via parametern -a. Man kan ocksĂ„ ange typ av autentisering: BasiŃ, Digest, Kerberos och NTLM. För de tvĂ„ senaste kan det krĂ€vas installation av ytterligare moduler. Dessutom kan man infoga valfria rubriker i förfrĂ„gningarna (inklusive godtycklig User-Agent) och mycket mer.
För att anvÀnda autentisering kan man anvÀnda verktyget wapiti-getcookie. Med det hÀr verktyget formar vi cookie, som Wapiti kommer att anvÀnda vid skanning. Formandet cookie genomförs med kommandot:
# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.jsonUnder arbete i det interaktiva lÀget svarar vi pÄ frÄgor och anger nödvÀndig information som: anvÀndarnamn, lösenord och sÄ vidare:

Vid utgÄngen fÄr vi en fil i JSON-format. Ett annat alternativ Àr att lÀgga till all nödvÀndig information via parametern -d:
# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"Resultatet blir liknande:

Vid granskning av skannerns grundlÀggande funktionalitet blev den slutgiltiga förfrÄgan för att genomföra tester av webbapplikationen i vÄrt fall:
# 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:3128dĂ€r bland andra parametrar:
-f och -o â format och vĂ€g för att spara rapporten;
-m â ansluta alla moduler â rekommenderas inte, eftersom det pĂ„verkar testtiden och storleken pĂ„ rapporten;
âcolor â markera funna sĂ„rbarheter baserat pĂ„ deras allvarlighetsgrad enligt Wapiti;
-c â anvĂ€ndning av en fil med cookie, genererad med hjĂ€lp av wapiti-getcookie;
âscope â val av mĂ„l för attack. Genom att vĂ€lja alternativet folder kommer varje URL som börjar med basen att skannas och attackeras. Bas-URL:en mĂ„ste ha ett snedstreck (utan filnamn);
âflush-session â tillĂ„ter omskanning utan att ta hĂ€nsyn till tidigare resultat;
-A â egen User-Agent;
-p â proxy-serveradress, om det behövs.
Lite om rapporten
Resultatet av skanningen presenteras i form av en detaljerad rapport om alla hittade sÄrbarheter i HTML-sidesformat, pÄ ett lÀttförstÄeligt och överskÄdligt sÀtt. Rapporten kommer att ange kategorier och antalet hittade sÄrbarheter, deras beskrivningar, förfrÄgningar, kommandon för curl och tips om hur man ÄtgÀrdar dem. För att underlÀtta navigeringen kommer en lÀnk att lÀggas till i rubrikerna för kategorier, sÄ att man kan klicka för att gÄ till dem:

En betydande nackdel med rapporten Àr avsaknaden av en karta över webbtjÀnsten, utan vilken det Àr oklart om alla adresser och parametrar har blivit analyserade. Det finns ocksÄ en risk för falska positiva resultat. I vÄrt fall nÀmns "backup-filer" och "potentiellt farliga filer" i rapporten. Deras antal motsvarar inte verkligheten, eftersom sÄdana filer inte fanns pÄ servern:

Det Ă€r möjligt att modulernas ofullstĂ€ndiga funktionalitet kommer att rĂ€ttas till med tiden. En annan nackdel med rapporten Ă€r bristen pĂ„ fĂ€rgmĂ€rkning av hittade sĂ„rbarheter (beroende pĂ„ deras kritikalitet), eller Ă„tminstone deras uppdelning i kategorier. Det enda sĂ€ttet vi kan förstĂ„ den hittade sĂ„rbarhetens kritikalitet pĂ„ ett indirekt sĂ€tt â Ă€r att anvĂ€nda parametern âcolor vid skanning och dĂ„ kommer de hittade sĂ„rbarheterna att fĂ€rgas i olika fĂ€rger:

Men i sjÀlva rapporten Àr sÄdan fÀrgmÀrkning inte förutsedd.
SÄrbarheter
SQLi
Skannern har delvis lyckats att hitta SQLi. Vid sökning av SQL-sÄrbarheter pÄ sidor dÀr autentisering inte krÀvs, uppstÄr inga problem:

Det var inte möjligt att hitta nÄgon sÄrbarhet pÄ sidor som bara Àr tillgÀngliga efter autentisering, Àven med anvÀndning av giltiga cookie, eftersom det troligen efter en lyckad autentisering kommer att ske en "utlogging frÄn sessionen" och cookie blir ogiltiga. Om deautentiseringsfunktionen hade utförts som ett separat skript, ansvarigt för att hantera denna procedur, skulle den helt kunna uteslutas genom parametern -x, och dÀrmed förhindra dess utlösning. Annars Àr det omöjligt att utesluta dess behandling. Detta Àr ett problem med hela verktyget, inte bara en specifik modul, men pÄ grund av denna nyans misslyckades det att upptÀcka flera injektioner i den stÀngda delen av resursen.
XSS
Med uppdraget att skanna klarade skannern sig utmÀrkt och hittade alla förberedda sÄrbarheter:

LFI/RFI
Skannern hittade alla inlagda sÄrbarheter:

Sammanfattningsvis, trots falska positiva resultat och missade sÄrbarheter, visar Wapiti som ett gratisverktyg ganska bra prestanda. I alla fall mÄste man erkÀnna att skannern Àr ganska kraftfull, flexibel och multifunktionell, och framför allt gratis, sÄ det Àr vÀrt att anvÀnda, vilket hjÀlper administratörer och utvecklare att fÄ grundlÀggande information om webbapplikationens sÀkerhetsstatus.
HÄll er friska och skyddade!
KĂ€lla: habr.com
