Wapiti

From ICO wiki

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