Wapiti
Heigo Punapart A21
Valmis: 23.11.2012
Muudetud: 3.01.2013
Sissejuhatus
Wapiti ehk Web application vulnerability scanner/security auditor (veebirakenduste haavatavuste skänner/turvalisuse audiitor) on Pythoni skript, mille abil saab testida veebirakenduste turvalisust. See teeb black-box skänneerimist, mis ei uuri rakenduse lähtekoodi vaid otsib veebilehelt skripte ja andmete sisestuskaste. Peale otsingutulemuse saamist käitub Wapiti nagu fuzzer(tarkvara testimise meetod, kus arvutiprogrammi sisestatab erandeid, vigaseid või juhuslike andmeid ning hiljem monitooritakse tulemusi erinevate vigade leidmiseks (näiteks programm lõpetab põhjuseta töö)), koormates skripte üle, et näha selle haavatavusi.
Wapiti omadused
Wapiti kontrollib järgmiseid haavatavusi:
- Faili käistlemise vead
- Andmebaasi ründed
- XSS-i ründed
- LDAP ründed
- Käsu sisestuse jälgimine
- CRLF ründed
- Otsib serverist võimaliku ohuga faile
- Otsib serverist skriptide koopiaid
- Nõrga htaccess konfiguratsiooni möödapääs
Wapiti on võimeline eristama punktuaalseid ja püsivaid XSS haavatavusi. Programm väljastab hoiatuse iga kord kui leiab skripti, mis lubab HTTP üleslaadimised. Hoiatus tehakse ka juhul kui väljastatakse HTTP 500 kood (kasulik ASP/IIS jaoks). Wapiti ei põhine haavatavuste andmebaasil, see integreerib oma andmebaasi kui ründena. Wapiti eesmärk on avastada veebirakendustes tundmatuid haavatavusi. Hetkel tuleb kasutada terminalis kuna ei toeta GUI-d. Wapiti on võimaline looma täieliku raporti, mis sisaldab kõiki leitud haavatatavusi ja sellega kaasnevat informatsiooni, et neid parandada.
Eeldused
Wapiti ei ole operatsioonisüsteemist sõltuv, kuna skript on kirjutatud Pythonis, siis see töötab kõikides operatsioonides, mida toetab Python(Windows, Linux, Mac Os jne). Enne kasutamist peaks veenduma, et Python oleks paigaldatud.
Paigaldamine
Järgnev õpetus on tehtud Ubuntu keskkonnas
1) Lae alla Wapiti
http://sourceforge.net/projects/wapiti/
2) Paki lahti /usr/local/ kausta
tar xjvf wapiti-2.2.1.tar.bz2 -C /usr/local/
3) Vaheta kausta omanik root kasutajaks
chown -R root:root /usr/local/wapiti-2.2.1/
4) Loo wapiti.py ja vulnerability.py failid
chmod 755 /usr/local/wapiti-2.2.1/src/wapiti.py
chmod 755 /usr/local/wapiti-2.2.1/src/vulnerability.py
5) Loo wapiti skript /usr/bin kausta ning ava fail
touch /usr/bin/wapiti
nano /usr/bin/wapiti
6) Kirjuta avatud faili järgnev skript
#!/bin/sh cd /usr/local/wapiti-2.2.1/src/ ./wapiti.py $*
7) Kontrolli faili kasutusvõimalusi ja omanikku
ls -ld /usr/bin/wapiti
Terminal peaks väljastama järgneva väljundi:
-rwxr-xr-x 1 root root 59 2012-04-10 10:42 /usr/bin/wapiti
Kasutamine
NB: Kantsulgudes oleva muutuja asemel tuleb panna oma väärtus!
python wapiti.py [url] [parameetrid]
Skriptiga on võimalik kasutada järgnevaid parameetreid:
Alustamise url-i määramine
-s [url] --start [url]
Url-i ära jätmine otsingust (näiteks väljalogimise skript)
-x [url] --exclude [url]
Proxy seadistamine
-p [url_proxy] --proxy [url_proxy]
Näiteks:
-p http://proxy:port/
Küpsiste kasutamine
-c [cookie_file} --cookie [cookie_file]
Et määrata aegumine (sekundites)
-t [timeout] --timeout [timeout]
Määrab mandaadid HTTP autentimiseks
Ei tööta koos Python 2.4-ga
-a [login%password] --auth [login%password]
URL-ilt parameetrite eemaldamine
-r [parameter_name] --remove [parametri_name]
Sama lugemiskujundiga URL-ile limiidi määramine
Saab kasutada lõpmatuse vältimiseks
Peab olema suurem kui 0
-n [limit] --nice [limit]
Mooduli ja HTTP meetodite ründe määramine
-m [module_options] --module [module_options]
Näiteks:
-m "-all,xss:get,exec:post"
Kasutab värve, et välja tuua haavatavuse parameetrid väljundis
-u --underline
Määrab sõnarohkuse taseme 0: vaikne(algseade), 1: väljasta iga url, 2: väljasta iga rünne
-v [level] --verbose [level]
Määrab skännimise ulatuse:
+"page": analüüsib ainult URL-iga määratud lehe
+"folder": analüüsib kõik lingid, mis on määratud URL-iga samaskaustas
+"domain": analüüsib kõik lingid, mis on määratud URL-iga samas domeenis
-b [scope] --scope [scope]
Raporti tüübi määramine
XML: Raport XML formaadis
HTML: Raport HTML formaadis
-f [file_type] --reportType [file_type]
Rapordifaili nime määramine
Kui valitud raport on "html" formaadis, siis see parameeter peab olema kaust
-o [output] --output [output_file]
See parameeter jätkab Wapiti viimast skänneerimist määratud failist, antud fail peab sisaldama andmeid eelnevast skännimiseest
Fail on valikuline, kui faili pole määratud, Wapiti võtab algse faili \"scans\" kaustast
-i [file] --continue [file]
Antud parameeter jätkab rünnete tegemist ilma uuesti skännimiseta ning andmete jälgimist failist
Fail on valikuline, kui faili pole määratud, Wapiti võtab algse faili \"scans\" kaustast
-k [file] --attack [file]
Väljastab antud teksti
-h --help
Kasutatud materjalid
http://wapiti.sourceforge.net/
http://www.ict-romulus.eu/web/wapiti
http://hacktivision.com/index.php/2007/12/18/how-to-use-wapiti-in-ubuntu-1?blog=2