Skaner aplikacji webowych
W ostatnim czasie firma Google wypuściła w świat aplikację o nazwie [URL=http://code.google.com/p/skipfish/]Skipfish[/URL]. Miło jest również wspomnieć, że autorem programu jest [URL=http://lcamtuf.coredump.cx/]Michał Zalewski[/URL] znany jako lcamtuf – polski haker. Jest to automatyczny skaner bezpieczeństwa aplikacji webowych. Aplikacja pomaga w wyszukiwaniu potencjalnych luk na stronach internetowych. Skipfish potrafi współpracować z wieloma istniejącymi frameworkami aplikacji webowych.
Do swojego działania wykorzystuje [URL=http://pl.wikipedia.org/wiki/Heurystyka_%28informatyka%29]heurystykę[/URL]. Automatycznie generuje różnego rodzaju słowniki, uzupełnia formularze na stronach internetowych oraz wykorzystuje różne metody ataków do sprawdzenia potencjalnych luk na stronie.
Aplikacja została napisana w C i bardzo dobrze zoptymalizowana. Działa bardzo szybko. Nie obciąża naszego systemu operacyjnego. Potrafi nawet osiągnąć wydajność rzędu 2000 requestów na sekundę. Wielu uważa, że w ten sposób aplikacja może wykonać atak [URL=http://pl.wikipedia.org/wiki/DoS]DoS[/URL] na serwer.
Skipfish dostępny jest na takie środowiska jak Linux, FreeBSD 7.0+, MacOS X, oraz Windows ([URL=http://cygwin.com/]Cygwin[/URL]). Pobieramy źródła aplikacji i rozpoczynamy ich kompilację. Jeżeli posiadamy w systemie odpowiednie biblioteki wraz z plikami nagłówkowymi to kompilacja powinna przebiegać bez problemu.
[root@amentine src]# tar -xzf skipfish-1.25b.tgz [root@amentine src]# cd skipfish [root@amentine skipfish]# make cc -L/usr/local/lib/ -L/opt/local/lib skipfish.c -o skipfish -O3 -Wno-format -Wall -funsigned-char -g -ggdb -D_FORTIFY_SOURCE=0 -I/usr/local/include/ -I/opt/local/include/ \ http_client.c database.c crawler.c analysis.c report.c -lcrypto -lssl -lidn -lz analysis.c: In function ‘get_date’: analysis.c:1355: warning: format ‘%02llu’ expects type ‘long long unsigned int *’, but argument 3 has type ‘s64 *’ analysis.c:1355: warning: format ‘%02llu’ expects type ‘long long unsigned int *’, but argument 4 has type ‘s64 *’ analysis.c:1355: warning: format ‘%02llu’ expects type ‘long long unsigned int *’, but argument 5 has type ‘s64 *’ See dictionaries/README-FIRST to pick a dictionary for the tool. Having problems with your scans? Be sure to visit: http://code.google.com/p/skipfish/wiki/KnownIssues [root@amentine skipfish]#
Jeżeli wszystko poszło poprawnie, wystarczy teraz uruchomić aplikację i poczekać aż wygeneruje raport. Po uruchomieniu aplikacji poleceniem:
[root@amentine skipfish]# ./skipfish -o raport -W dictionaries/minimal.wl http://127.0.0.1/
Jeżeli wszystko wykonaliśmy prawidłowo, naszym oczom powinien pokazać się ekran, na którym widać będzie jak działa aplikacja. Jeżeli testujemy nasz lokalny serwer, możemy zajrzeć do logów i zobaczyć jakie adresy URL są wywoływane przez Shipfisha.
skipfish version 1.25b by Scan statistics --------------- Scan time : 0:00:03.0355 HTTP requests : 4754 sent (1481.01/s), 6769.71 kB in, 1090.14 kB out (2342.03 kB/s) Compression : 0.00 kB in, 0.00 kB out (0.00% gain) HTTP exceptions : 0 net errors, 0 proto errors, 0 retried, 0 drops TCP connections : 53 total (120.98 req/conn) TCP exceptions : 0 failures, 0 timeouts, 2 purged External links : 67 skipped Reqs pending : 1658 Database statistics ------------------- Pivots : 325 total, 25 done (7.69%) In progress : 59 pending, 215 init, 8 attacks, 18 dict Missing nodes : 0 spotted Node types : 1 serv, 16 dir, 32 file, 2 pinfo, 172 unkn, 102 par, 0 val Issues found : 45 info, 0 warn, 3 low, 7 medium, 0 high impact Dict size : 2115 words (116 new), 34 extensions, 256 candidates
Po skończonej pracy, zostanie wygenerowany raport HTML, który możecie zobaczyć na obrazku poniżej.