Viimeisessä статье me puhuimme Nemesida WAF ilmainen - ilmainen työkalu verkkosivustojen ja API:iden suojaamiseen hakkerihyökkäyksiltä, ja tässä päätimme tarkastella suosittua haavoittuvuusskanneria kanadanhirvi.
Verkkosivuston haavoittuvuuksien tarkistaminen on välttämätön toimenpide, jonka avulla voit yhdessä lähdekoodin analyysin kanssa arvioida sen suojaustasoa vaarantumisuhkia vastaan. Voit skannata verkkoresurssin erikoistyökaluilla.
Nikto, W3af (kirjoitettu Python 2.7:ssä, jota ei enää tueta) tai Arachni (ei enää tuettu helmikuusta lähtien) ovat suosituimpia ilmaisen segmentin ratkaisuja. Tietysti on muitakin, esimerkiksi Wapiti, johon päätimme keskittyä.
Wapiti toimii seuraavan tyyppisten haavoittuvuuksien kanssa:
tiedostonlaajennus (paikallinen ja kauko, fopen, readfile);
injektiot (PHP / JSP / ASP / SQL-injektio ja XPath-injektio);
XSS (Cross Site Scripting) (heijastava ja pysyvä);
komentojen havaitseminen ja suorittaminen (eval(), system(), passtru());
Nopea ja helppo tapa aktivoida/deaktivoida hyökkäysmoduuleja.
Asennus
Wapitin nykyinen versio voidaan asentaa kahdella tavalla:
lataa lähde viralliselta sivulta paikka ja suorita asennuskomentosarja, kun olet aiemmin asentanut Python3:n;
käyttämällä pip3 install wapiti3 -komentoa.
Tämän jälkeen Wapiti on valmis lähtöön.
Työskentely työkalun kanssa
Wapitin työn esittelyyn käytämme erityisesti valmistettua osastoa sites.vulns.pentestit.ru (sisäinen resurssi), joka sisältää erilaisia haavoittuvuuksia (Injection, XSS, LFI/RFI) ja muita verkkosovellusten puutteita.
Tiedot annetaan vain tiedoksi. Älä riko lakia!
Peruskomento skannerin käynnistämiseksi:
# wapiti -u <target> <options>
Samaan aikaan on melko yksityiskohtaista apua valtavalla määrällä käynnistysvaihtoehtoja, esimerkiksi:
--laajuus - sovellusalue
Jos määrität laajuusparametrin indeksoinnin URL-osoitteen kanssa, voit säätää sivuston indeksointialuetta määrittämällä sekä yhden sivun että kaikki sivustolta löytyvät sivut.
-s и -x — vaihtoehdot tiettyjen URL-osoitteiden lisäämiseen tai poistamiseen. Nämä vaihtoehdot ovat hyödyllisiä, kun sinun on lisättävä tai poistettava tietty URL-osoite indeksointiprosessin aikana.
-- Ohita — tällä avaimella määritetty parametri tarkistetaan, mutta siihen ei hyökätä. Hyödyllinen, jos on olemassa vaarallisia parametreja, jotka on parasta sulkea pois skannauksen aikana.
--verify-ssl — ota käyttöön tai poista käytöstä varmenteen tarkistus.
Wapiti-skanneri on modulaarinen. Kuitenkin, jos haluat käynnistää tiettyjä moduuleja, mukaan lukien ne, jotka yhdistetään automaattisesti skannerin ollessa käynnissä, sinun on käytettävä -m-kytkintä ja lueteltava tarvitsemasi moduulit pilkuilla erotettuina. Jos avainta ei käytetä, kaikki moduulit toimivat oletusarvoisesti. Yksinkertaisimmassa versiossa se näyttää tältä:
Tämä käyttöesimerkki tarkoittaa, että käytämme vain SQL-, XSS- ja XXE-moduuleja skannattaessa kohdetta. Lisäksi voit suodattaa moduulien toimintaa halutun menetelmän mukaan. Esimerkiksi -m “xss: get, blindsql: post, xxe: post”. Tässä tapauksessa moduuli XSS sovelletaan GET-menetelmällä lähetettyihin pyyntöihin ja moduuliin blibdsql - POST-pyyntöihin jne. Muuten, jos jotakin luettelossa olevaa moduulia ei tarvittu skannauksen aikana tai kestää hyvin kauan, Ctrl+C-yhdistelmää painamalla voit ohittaa nykyisen moduulin käytön valitsemalla vastaavan kohdan interaktiivisesta valikosta.
Wapiti tukee pyyntöjen välittämistä välityspalvelimen kautta avaimella -p ja todennus kohdesivustolla parametrin kautta -a. Voit myös määrittää todennustyypin: Perus, Sulattaa, Kerberos и NTLM. Kaksi viimeistä saattavat edellyttää lisämoduulien asentamista. Lisäksi voit lisätä pyyntöihin mitä tahansa otsikoita (mukaan lukien mielivaltaiset User-Agent) ja paljon enemmän.
Voit käyttää todennusta työkalun avulla wapati-getcookie. Sen avulla muodostamme pikkuleipä, jota Wapiti käyttää skannattaessa. Muodostus pikkuleipä tehty komennolla:
Tarkasteltaessa skannerin päätoimintoja, viimeinen pyyntö verkkosovelluksen testaamiseksi tapauksessamme oli:
# 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
missä muiden parametrien joukossa:
-f и -o — raportin tallennusmuoto ja polku;
-m — kaikkien moduulien kytkemistä ei suositella, koska vaikuttaa testausaikaan ja raportin kokoon;
--väri — Korosta löydetyt haavoittuvuudet niiden kriittisyyden mukaan Wapitin itsensä mukaan;
-c - käyttämällä tiedostoa pikkuleipä, luotu käyttämällä wapati-getcookie;
--laajuus - hyökkäyksen kohteen valinta. Vaihtoehtojen valitseminen kansio Jokainen URL-osoite indeksoidaan ja niihin hyökätään, alkaen perusosoitteesta. Perus-URL-osoitteessa on oltava vinoviiva (ei tiedostonimeä);
--huuhteluistunto — mahdollistaa toistuvan skannauksen, jossa aikaisempia tuloksia ei oteta huomioon;
-A - omaa User-Agent;
-p — välityspalvelimen osoite tarvittaessa.
Vähän raportista
Skannaustulos esitetään yksityiskohtaisen raportin muodossa kaikista löydetyistä haavoittuvuuksista HTML-sivumuodossa selkeässä ja helposti luettavassa muodossa. Raportissa ilmoitetaan löydettyjen haavoittuvuuksien luokat ja lukumäärä, niiden kuvaukset, pyynnöt ja komennot kiemura ja vinkkejä niiden sulkemiseen. Luokkien nimiin lisätään navigoinnin helpottamiseksi linkki, jota klikkaamalla pääset siihen:
Raportin merkittävä haittapuoli on sellaisen web-sovelluskartan puuttuminen, jota ilman ei ole selvää, onko kaikki osoitteet ja parametrit analysoitu. Myös väärien positiivisten tulosten mahdollisuus on olemassa. Meidän tapauksessamme raportti sisältää "varmuuskopiotiedostot" ja "mahdollisesti vaaralliset tiedostot". Niiden lukumäärä ei vastaa todellisuutta, koska palvelimella ei ollut tällaisia tiedostoja:
Ehkä väärin toimivat moduulit korjataan ajan myötä. Toinen raportin haittapuoli on löydettyjen haavoittuvuuksien värityksen puute (riippuen niiden kriittisyydestä) tai ainakin niiden jakaminen luokkiin. Ainoa tapa, jolla voimme epäsuorasti ymmärtää löydetyn haavoittuvuuden kriittisyyttä, on käyttää parametria --väri skannauksen aikana, ja sitten löydetyt haavoittuvuudet värjätään eri väreillä:
Mutta itse raportti ei tarjoa tällaista väritystä.
Haavoittuvuudet
SQLi
Skanneri selviytyi osittain SQLi-hausta. Kun etsit SQL-haavoittuvuuksia sivuilta, joilla todennusta ei vaadita, ongelmia ei ilmene:
Haavoittuvuutta ei voitu löytää sivuilta, joihin pääsee vain todennuksen jälkeen, edes validia käyttämällä pikkuleipä, koska todennäköisesti onnistuneen todennuksen jälkeen heidän istuntonsa "kirjataan ulos" ja pikkuleipä tulee mitättömäksi. Jos valtuutuksenpoistotoiminto toteutettaisiin erillisenä komentosarjana, joka vastaa tämän menettelyn käsittelystä, se olisi mahdollista sulkea kokonaan pois -x-parametrin kautta ja siten estää sen laukaisu. Muuten sen käsittelyä ei voida sulkea pois. Tämä ei ole ongelma tietyssä moduulissa, vaan koko työkalussa, mutta tämän vivahteen vuoksi ei ollut mahdollista havaita useita injektioita suljetulla resurssialueella.
XSS
Skanneri selviytyi annetusta tehtävästä täydellisesti ja löysi kaikki valmistetut haavoittuvuudet:
LFI/RFI
Skanneri löysi kaikki taustalla olevat haavoittuvuudet:
Yleisesti ottaen, vääristä positiivisista tuloksista ja puuttuvista haavoittuvuuksista huolimatta, Wapiti ilmaisena työkaluna näyttää melko hyviä suorituskykytuloksia. Joka tapauksessa on syytä huomata, että skanneri on varsin tehokas, joustava ja monikäyttöinen, ja mikä tärkeintä, se on ilmainen, joten sillä on oikeus käyttää apuna järjestelmänvalvojia ja kehittäjiä hankkimaan perustietoja verkon suojaustilasta. sovellus.