Samanlıktaki İğneyi Bulmak

Henüz sahaya yeni çıktığım dönemler. Müşterimiz yerli ama uluslararası ürün geliştiren bir yazılım firması. Daha önceden bir pentest yaptırmışlar ancak içlerine sinmemiş. Bir defa daha yaptırmak istiyorlar.

Gündüz devam eden eğitimlerim var. O yüzden akşam gece yarılarına kadar bakıyorum. Uygulamaya yüzeyi çok geniş, portal üzerinde onlarca form sayfası mevcut. İki hafta boyunca her yeri didik didik inceliyorum. En son bir uygulamanın profil sayfası dikkatimi çekiyor. Profil resmimi değiştirirken .txt uzantılı bir dosya gönderiyorum. Gittiği yeri PATH değerini okuyarak tespit ediyorum ve gerçekten de o dosya metnine ulaşabildiğimi görüyorum.

Klasik bir “file upload” zafiyetinden başkası değil. DVWA gibi bir PHP sayfası üstelik. Ekip arkadaşım hazır bir webshell atıyor. Ancak çalışmıyor. Ben çok kısa bir “one-liner” shell hazırlayıp yüklüyorum. Bingo, shell alıyorum. Ardından “arp -a” komutunu çalıştırarak iç ağ keşfine başlıyorum.

Buradaki zafiyet bir pentestçi için bir anlamda oldukça kolay, ancak asıl zorlu taraf, bu kadar büyük bir alanda zafiyetin varlığını yakalayabilmek.

Yazılım firması uzaktan shell alınabildiğini görünce çok etkileniyor. Ben ise Güvenli Yazılı Geliştirme’nin bizzat yazılımcılar tarafından anlaşılmasının ne kadar önemli olduğunu bizzat yaşıyorum.