Siber Güvenlik

RIPSTech Ile PHP Bug Hunting Serüveni

RIPS bilhassa güvenlik araştırmacıları tarafınca malum popüler bir araç. Month of PHP Security altında 2010 yılından ilk sefer gösterilen RIPS, uzun bir süre açık kaynak kod olarak devam etti. Son olarak version 0.55 olarak açık kaynak kodlu versiyonu gösterildi. Şu anda ise https://www.ripstech.com/ adresinden, ücretli bir ürün olarak, “bir fazlaca” yeni bilhassa harekete geçti.

Uzun süredir geliştirilmesine devam edilen bu araç, aslen temel bir ihtiyaçtan birazda hobi olarak başlamış olan bir serüvenden geçerek bu noktaya vardı. Temelde 15 değişik tipte zafiyeti kaynak kod üstünde Token-based adında olan bir yaklaşım ile tespit etmekteydi. En temel problemlerinden birisi OOP desteği olmayan bu versiyon, temel anlamda fonksiyon bazlı kontrollerden öteye geçmemekteydi. Bu haliyle bilde oldukça iş gördüğüne inandığım bu araç RIPS Technology ile yeni versiyona kavuştu. Yeni versiyonun özelliklerini yakından çözümleme edelim.

30+ Zafiyet Tipi Desteği

Bilhassa Object Oriented Programming şu demek oluyor ki derslik bazlı php kodlarınında üstünde zafiyet analizi gerçekleştirme özelliği olan bu araç neredeyse tüm “teknik zafiyetleri” tespit etme özelliğinde.

Cross-Site Scripting File System Manipulation Path Traversal
Code Execution File Write PHP Object Injection/Instantiation
Command Execution HTTP Response Splitting Reflection/Autoload Injection
CVE Information Leakage Resource Injection
Denial of Service Library Injection Server-Side JavaScript Injection
Directory Listing LDAP Injection Server-Side Request Forgery
Environment Manipulation Log Forgery Session Fixation
Execution After Redirect Mass Assignment SQL Injection
File Create Memcached Injection Variable Manipulation
File Delete MongoDB Injection Weak Cryptography
File Inclusion NoSQL Injection XML/XXE Injection
File Upload Open Redirect Xpath, Xquery Injection

900’den fazla Built-in Özellike Simülasyonu

PHP dünyasında aslen kullanımı direkt zararı dokunan olan bir fonksiyon/yapı yoktur. Zafiyetin oluşması için daima belirli şartların gelişmesi gerekir. Aşağıdaki örneklere baktığımızda bu durum fazlaca daha net bir halde anlaşılabilir.

ripscontext

Mesela; urldecode() fonksiyonuna parametre olarak kullanıcısı girdisi gelmektedir. Fonksiyonun sonucu ise echo ile ekrana yazdırılmaktadır. Temel anlamda bir XSS zafiyetinin oluşması adına gerek fakat kafi olmayan şartlar bulunmaktadır. Zira (int)$_GET[‘id’] işlemi ile meydana getirilen type-casting tüm string kıymeti integer’a dönüştürmeye zorlar. Bundan dolayı aslen XSS zafiyeti yoktur. Bu tür PHP’nin built-in özelliklerine haiz bir kaynak kod analizi aracı son aşama önemlidir.

40+ HTML Context Analizi

Bilhassa XSS zafiyeti ile ilgili olan HTML Context, kullanıcı parametresinin kullanıldığı HTML yapısının analizi gerektirmektedir. Bu mevzuda değişik bir framework ve dili ele aldığım şu yazı detay informasyon isteyenler tarafınca okunabilir.

ripscontext
Control Flow Analizi

Kaynak kod analizi süreçlerinin insan için en basit, bilgisayarlar için ciddi aşama zorluk derecesi yüksek kısımlarından bir tanesidir. İş akışlarının analizi yapılmalıdır. Örnek vermek gerekirse;

ripsfeatures
Görüldüğü suretiyle if-elseif olarak devam eden denetim yapılarında, her kırılım değişik bir work-flow’u gerektirir. Mesela ilk denetim noktasında eğer kullanıcı parametresi 1 ise kıymet ekran yazılacaktır. Kullanıcıdan alınan değerin kontrolü yapıldığı için, daha sonrası bu kıymet üstünden yapılacak tüm işlemler zafiyet benzer biçimde gözüküyor olsada, aslen değildir. Aynı şekilde ikinci ve üçüncü if kurallarına bakmış olduğunuzda son istasyonda zafiyetin olduğu görülmektedir.

Second-Order Zafiyetleri

Tespiti son aşama zahmetli olabilen bir zafiyet oluşum yoludur. Temelde vaka akışı şu şekilde işler, kullanıcı uyguluma tarafınca sunulan özeller aracılığı ile veri tabanı/session/file vb. sistemlerden bir kıymet kayıt eder. Bu kıymet hemen sonra değişik bir modül yada tamamiyle değişik bir uygulama tarafında kullanılır.

ripssecondorder
Yukarıda kuramsal olarak bahsettiğim duruma en güzel örnek olarak Stored-XSS zafiyeti verilebilir.

Mevcut Başarılar

Geçtiğimiz günlerde phpMyAdmin uygulamasına NCCGroup tarafınca kaynak kod analizi emek vermesi gerçekleştirilmişti. NCC Group tarafınca herhangi bir eleştiri zafiyetin tespitinin olmayışı, güvenlik araştırmacılarının dikkatini çekmiş olsak gerek. phpMyAdmin tarafınca gösterilen blog yazısından sonrasında Cure53 adlı güvenlik şirketi -ki kendisini yakından tanırız 🙂 – RIPS aracını kullanarak bir tane Remote Code Execution zafiyeti tespit etti ( https://www.phpmyadmin.net/security/PMASA-2016-27/ )

Zafiyetin tespiti ve RIPS’in code flow takip edeni arayüzünü görmek için aşağıdaki linki ziyaret edebilirsiniz.

https://demo.ripstech.com/project/5/14/22/

Devam…

RIPS şu anda ciddi bir gelişim süreci göstermekte. Bir sonraki yazıda RIPS’in yeni versiyonu ile yaptığım kaynak kod analizi çalışmalarını, performans ölçeklerini ve umuyorum ki bulacağım 0day zafiyetler ile ilgili olacak.


Merhaba, beni Instagram'da takip etmeyi unutmayın : @tahamumcu
Taha Mumcu
Ben Taha Mumcu, Bilişim sektöründe uzun süreden beri tecrübe edinerek bir yerlere gelmek için çalışmalarına devam eden ve sektörü yakından takip ederek hiç bir veriden geri kalmayan, girişimci ruhu ile tüm işlere elinden geldiğinde çalışma yapan bir girişimciyim. Henüz genç yaşta birçok tecrübeye ulaşan ve koyulan engelleri aşarak bir yerlere gelmek için çaba göstermekten çekinmiyorum.

Leave a reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

You may also like

Next Article:

0 %