Web Uygulama Güvenlik Testlerinde Arachni Kullanımı

Arachni, açık kaynak kodlu olarak geliştirilen oldukça başarılı bir web güvenliği zaafiyet tarama yazılımıdır. Bu blog girdisinde genel hatlarıyla Arachni yazılımının kurulumu ve güvenlik testlerinde kullanımına değinilecektir.

Arachni Kurulumu

root@bt:~# wget http://downloads.arachni-scanner.com/arachni-0.4.1.2-linux-i386.tar.gz
–2012-11-17 18:08:43–  http://downloads.arachni-scanner.com/arachni-0.4.1.2-linux-i386.tar.gz
Resolving downloads.arachni-scanner.com… 74.220.200.193
Connecting to downloads.arachni-scanner.com|74.220.200.193|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 30816506 (29M) [application/x-gzip]
Saving to: `arachni-0.4.1.2-linux-i386.tar.gz’

100%[======================================>] 30,816,506   246K/s   in 5m 8s 

2012-11-17 18:13:54 (97.7 KB/s) – `arachni-0.4.1.2-linux-i386.tar.gz’ saved [30816506/30816506]

Sıkıştırılmış dosyayı açıyoruz:

root@bt:~# tar -zxvf arachni-0.4.1.2-linux-i386.tar.gz
…….
…….
arachni-0.4.1.2/usr/lib/libsqlite3.so.0.8.6
arachni-0.4.1.2/usr/lib/libxml2.so.2.8.0
arachni-0.4.1.2/usr/lib/xml2Conf.sh
arachni-0.4.1.2/usr/info/
arachni-0.4.1.2/usr/man/

Arachni dizinine girip mevcut çalıştrabileceğimiz başlangıç scripler;

root@bt:~/arachni-0.4.1.2/bin# ls -l
total 44
-rwxrwxr-x 1 postgres postgres  346 2012-11-04 17:28 arachni
-rwxrwxr-x 1 postgres postgres  354 2012-11-04 17:28 arachni_console
-rwxrwxr-x 1 postgres postgres  350 2012-11-04 17:28 arachni_rpc
-rwxrwxr-x 1 postgres postgres  351 2012-11-04 17:28 arachni_rpcd
-rwxrwxr-x 1 postgres postgres  359 2012-11-04 17:28 arachni_rpcd_monitor
-rwxrwxr-x 1 postgres postgres  353 2012-11-04 17:28 arachni_script
-rwxrwxr-x 1 postgres postgres  401 2012-11-04 17:28 arachni_shell
-rwxrwxr-x 1 postgres postgres  371 2012-11-04 17:28 arachni_test
-rwxrwxr-x 1 postgres postgres  350 2012-11-04 17:28 arachni_web
-rwxrwxr-x 1 postgres postgres  360 2012-11-04 17:28 arachni_web_autostart
-rw-rw-r– 1 postgres postgres 1370 2012-11-04 17:28 readlink_f.sh

Şimdi Arachni aracının komut satırından basit kullanımına değinelim:

root@bt:~/arachni-0.4.1.2/bin# ./arachni http://testasp.vulnweb.com/ –only-positives
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.6
Arachni – Web Application Security Scanner Framework v0.4.1.2
   Author: Tasos “Zapotek” Laskos <tasos.laskos@gmail.com>

           (With the support of the community and the Arachni Team.)

   Website:       http://arachni-scanner.com
   Documentation: http://arachni-scanner.com/wiki

 [~] No modules were specified.
 [~]  -> Will run all mods.

 [~] No audit options were specified.
 [~]  -> Will audit links, forms and cookies.
[+] Insecure cookies: In cookie var ‘ASPSESSIONIDCQBSSTSR’ ( http://testasp.vulnweb.com/ )
 [+] HttpOnly cookies: In cookie var ‘ASPSESSIONIDCQBSSTSR’ ( http://testasp.vulnweb.com/ )
 [+]  Interesting responses: In server ( http://testasp.vulnweb.com/Templatize.asp?item=html%2Fabout.html6affdae3b3c1aa6aa7689e9b6a7b3225a636aa1ac0025f490cca1285ceaf1487 )
 [+]  Interesting responses: Found an interesting response — Code: 500.
 [+]  Interesting responses: In server ( http://testasp.vulnweb.com/showforum.asp?id=06affdae3b3c1aa6aa7689e9b6a7b3225a636aa1ac0025f490cca1285ceaf1487 )
 [+] Interesting responses: Found an interesting response — Code: 500.

 [+]  Interesting responses: Found an interesting response — Code: 500.
 [+] SQLInjection: In link var ‘id’ ( http://testasp.vulnweb.com/showforum.asp?id=0 )
 [+]  SQLInjection: In link var ‘id’ ( http://testasp.vulnweb.com/showforum.asp?id=0 )
 [+] Allowed methods: In server ( http://testasp.vulnweb.com/ )
 [+] Allowed methods: OPTIONS, TRACE, GET, HEAD
 [+] Interesting responses: In server ( http://testasp.vulnweb.com/cgi-bin/ )
 [+] Interesting responses: Found an interesting response — Code: 403.
 [+] CommonFiles: Found robots.txt at http://testasp.vulnweb.com/robots.txt

Görüldüğü gibi sistem üzerinde mevcut açıklıkları bulmaya başladı.–only-positives parametresini kullanmamızın sebebi yalnızca bulguları ekrana yansıtmasını sağlamak içindir. Bu şekilde basit kullanımda arachni ön tanımlı  tüm eklenti ve modülleri hedef sistem üzerinde çalıştıracaktır.
Arachni ile yalnız istediğiniz açıklıkları da taratmanız mümkün. Bunun için öncelikle arachni aracının desdeklediği modülleri görelim.

root@bt:~/arachni-0.4.1.2/bin# ./arachni –lsmod

komutu verildikten sonra (space + enter) tuş kombinasyonu ile bir sonraki modüller görülebilir.

Arachni’nin tarayabildiği açıklık modüllerine örnek olarak;

  • code_injection_timing
  • xss_tag (html tag’lerdeki xss’ler)
  • xss_event(html event nesnelerindeki xss’ler)
  • os_cmd_injection_timing
  • session_fixation
  • rfi (remote file inclusion)
  • xss_path (dizin enjeksiyonu için xss)
  • sqli_blind_rdiff (kör(blind) sql enjeksiyonu)
  • os_cmd_injection (os komut enjeksiyonu)
  • sqli_blind_timing (Blind(timing) sql injection)
  • xss(cross site scripting)
  • code_injection
  • sqli
  • csrf
  • backdoors
  • backup_files
  • common_files
  • directory_listing
  • unencrypted_password_forms
  • insecure_cookies

Ve daha bir çok tarama modülüne sahiptir.Yalnızca sql injection ve xss açıklarını bulmak istediğimizi varsayalım;

root@bt:~/arachni-0.4.1.2/bin# ./arachni http://testasp.vulnweb.com/ –only-positives –mods=sqli*,xss*

  [+] SQLInjection: In link var ‘id’ ( http://testasp.vulnweb.com/showforum.asp?id=0 )
  [+]SQLInjection: In form var ‘tfSearch’ ( http://testasp.vulnweb.com/Search.asp )
  [+] XSS: In form var ‘tfSearch’ ( http://testasp.vulnweb.com/Search.asp )
  [+] SQLInjection: In link var ‘tfSearch’ ( http://testasp.vulnweb.com/Search.asp?tfSearch= )
  [+]XSS: In link var ‘tfSearch’ ( http://testasp.vulnweb.com/Search.asp?tfSearch= )
  [+]SQLInjection: In link var ‘id’ ( http://testasp.vulnweb.com/showthread.asp?id=0 )

Burada sqli* ve xss* olarak kullanmamızın sebebi sqli ve xss ile başlayan tüm modülleri çalıtırmasını istememiz.

Bulguların çıktısının rapor olarak yazılması istenirsa arachni bu durumda çeşitli formatları(html,xml,txt,afr,json,yaml,stdout vs.) desteklemektedir.Afr uzantısı arachni aracının kendi uzantı formatıdır.

Bu uzantıda kaydedilen sonuclar daha sonra istenilen bir uzantıya dönüştürülebilir, örnek olarak .afr uzantısından .html uzantısında rapor alalım;

root@bt:~/arachni-0.4.1.2/bin# ./arachni –repload=sonuc.afr –report=html:output=sonuc.html

Sonuçları html olarak kaydetmek için;

root@bt:~/arachni-0.4.1.2/bin# ./arachni http://testasp.vulnweb.com/ –only-positives –mods=sqli*,xss* –report=html:output=sonuc.html

şeklinde bir komut kullanılabilir.

Gerçek IP adresinizin görünmemesi için hedef sunucu proxy üzerinden taranmak istenirse;
root@bt:~/arachni-0.4.1.2/bin# ./arachni –proxy=85.238.102.248:8080 –proxy-type=http http://testasp.vulnweb.com/

Arachni ile kullanıcı adı parola korumalı uygulamalarda test edilebilir.Bunun için cookie dosyası arachni’ye verilmelidir.

Öncelikle curl ile hedef sunucuya mevcut kullanıcı adı ve şifresi ile bağlanıp bir cookie alıyoruz.

root@bt:~# curl -c cookies.txt -d “user_name=admin&user_pass=123abc” http://www.testpage.com/login.php

Ardından oluşturduğumuz cookie.txt dosyasını arachniye veriyoruz;

root@bt:~/arachni-0.4.1.2/bin# ./arachni http://www.testpage.com/login.php –cookie-jar=’cookie.txt’
Bu şekilde parola korumalı web uygulamalarıda test edilebilir.

Arachni çalışırken gönderilen isteklere dönen cevapları yorumlayarak kendi kendini eğitme özelliğine de sahiptir.

Arachni web arayüzünden kullanımı için öncelikle ;

root@bt:~/arachni-0.4.1.2/bin# ./arachni_rpcd &
[1] 22016

[2012-11-17T19:43:03.562514 #22042]  INFO — System: RPC Server started.
[2012-11-17T19:43:03.562674 #22038]  INFO — System: Listening on localhost:24055
[2012-11-17T19:43:03.563047 #22042]  INFO — System: Listening on localhost:18158
[2012-11-17T19:43:03.575103 #22016]  INFO — System: RPC Server started.
[2012-11-17T19:43:03.578151 #22016]  INFO — System: Listening on localhost:7331

komutu ve ardından;

root@bt:~/arachni-0.4.1.2/bin# ./arachni_web
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.6
== Sinatra/1.3.3 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop

komutu verilir.Artık arachni web arayüzüne 4567 portu üzerinden erişebiliriz.


Bir önceki komutumuzda 7331 portunda bir dispatcher dinleme konumundaydı.Add diyerek dispatcher ekleyip start a new scan ile taramaya geçebiliriz.


İlgili arabirimde Modules/Plugins menüleri altından çalıştırılması istenen modül ve eklentiler seçilebilir. Ayrıca tarama esnasında kullanılacak tüm ayarlar settings menüsü altından girilebilir.(Eş zamanlı http istek limiti,Proxy adresi user ve parolası,cookie jar dosyası,cookie ve header’ların denetlenip denetlenmeyecegi vs.)

Web arayüzünün daha kolay başlatılması için istenirse;

root@bt:~/arachni-0.4.1.2/bin# ./arachni_web_autostart

komutuda kullanılabilir.Bu komut ile web browser otomatik olarak web arayüzü açacaktır.

Internete açık bir sunucu üzerinden arachni aracını çalıştıracaksak web arayüzüne erişimin şifreli olmasını isteyebiliriz. Aksi durumda bu port üzerinden tüm internet kullanıcıları arachni uygulamasına erişebiliyor olacaktır. Bunun için basic web authenticate metodu ile web arayüzüne şifre konulması için şu komut verilmesi yeterli olacaktır;

root@bt:~/arachni-0.4.1.2/bin# ./arachni_web –username bga –password bgaP35!
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.6
== Sinatra/1.3.3 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop

Artık web arayüzünden http://192.168.1.102:4567 adresine bağlanmak istediğimizde bir parola koruması ile karşılaşacağız;