Fuzzing (Fuzz Testing) Nedir ?

  • Kullanıcı Xander
  • Başlangıç tarihi Başlangıç tarihi
  • - Güvenlik ve Güvenlik Açıkları
Konu sahibi son olarak 952 gün önce görüldü
Fuzzing

Fuzzing veya Fuzz Testing, hedef yazılım, sistemin veya ağların iç yapısındaki zafiyetleri tespit edebilmek adına kullanılan bir kalite kontrol testidir. Test edilen uygulamanın çökmesi için ise bir çok rastgele veri içermesi gerekmektedir. Bu işlemi gerçekleştirmek için geliştirilen programlara ise Fuzzer denilmektedir.

Fuzzers, arabellek taşması, DOS, siteler arası komut dosyası çalıştırma ve SQL Enkejsiyonu yoluyla kullanılabilecek güvenlik açıklarını bulmada yarar sağlamaktadır. Fuzz testi; casus yazılım, virüsler, solucanlar, truva atları ve keylogger gibi program çökmelerine neden olmayan güvenlik tehditleriyle başa çıkmak için daha az etkilidir.

Fuzz testi basit gibi görünmesine rağmen, maliyete faydalıdır. Yazılım yazılırken ve hata ayıklanırken göz ardı edilen ciddi hataları genellikle ortaya çıkartan Fuzz testi bir programın genel güvenliği, kalitesi hakkında tam bir bilgi veremez.

Fuzz Kategorileri

Recursive Fuzzing: Değiştirmeli, yerine değiştirmek gibi bir Türkçe'leştirme yapabiliriz. Bu tekniğin ise bir isteğin parçalı kısmının ayarlanmış bir değerle değiştirilmesi yoluyla bir araya getirme işlemi olarak tanımlanabilir. Bu değer bir Fuzz vektörü olarak bilinmektedir.

örnek,

http://www.<orneksiteadi>.com/901935fc

http://www.<orneksiteadi>.com/901935fc

http://www.<orneksiteadi>.com/>"><script>alert("XSS")</script>&
http://www.<orneksiteadi>.com/'';!-- "<XSS> = & {()}

Bu kategoride, toplam istek sayısı belirtilen Fuzz vektörlerinin sayısına bağlıdır.

Buffer Overflows and Format String Errors
Buffer Overflows (BFO)


Arabellek Taşması veya Bellek Bozulması Saldırısı, geçerli verilerin bellekteki önceden belirlenmiş depolama sınırını aşmasına izin veren bir programlama koşuludur.

örnek,

Kod:
A x 129
A x 257
A x 513 
A x 1024 
A x 2049
A x 4097
A x 8193
A x 12288

Format String Errors (FSE)

ize Hatalarını Biçimlendirme, rastgele kodları yürütmek veya bir programın çökmesini sağlamak adına dile özgü biçim belirteçlerini içeren bir güvenlik açığı sınıfıdır. Bu tür hatalar için uğraşmak, filtrelenmemiş kullanıcı girdisini kontrol etmeyi amaçlamaktadır.

örnek,

Kod:
%x%x%x%x%x
%s%s%s%s%s
%p%p%p%p%p
%d%d%d%d%d
%s x 513
%s%p%d%s%p%d%s%p%d%s%p%d%s%p%d

Integer Overflows (INT)

Tamsayı Taşmaları, bir program bir aritmetik işlemin bir veri türünün max değerinden daha büyük veya min değerinden daha küçük bir miktarla sonuçlanabileceğini hesaba katmadığından meydana gelir. Mantık tarzından Bellek Taşması ile aynı mantıkta ilerlemektedir.

örnek,

Kod:
0
-1
0x100
0x7fffffff
0xffffffff

SQL Injection

SQL Enjeksiyon, bir web uygulamasında kullanılarak ekranda hata mesajlarını görmek adına kullanılır bu durumda kullanıcı girişi SQL ifadeleri için filtrelenmediğinde ortaya çıkar. Oluşan hata mesajları sayesinde bilgi toplama işlemini gerçekleştirmiş oluruz.

örnek,

Kod:
OR 1=1
Admin' OR '
'%20SELECT%20*%FROM%20INFORMATION_SCHEMA.TABLES--
SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = tablename')--

Wfuzz ile Fuzzing

Bir Fuzzer aracı olan Wfuzz ile Fuzzing örneğini inceleyebiliriz. Bir adet POST Requests örneğini gerçekleştirecek olursak;

Wfuzz adlı aracımızının dizininde iken terminale wfuzz -z file,wordlist/others/common_pass.txt -d "uname=FUZZ&pass=FUZZ" --hc 302 http://testphp.vlunweb.com/userinfo.php komutunu girdiğimiz zaman bazı form kodlu verilerin toplama işlemini gerçekleştirebilirsiniz.
 
Geri