- 21 Eki 2015
- 477
- 1
Uygulama Güvenliği - Nasıl İş Uygulaması Oluşturulmaz
Bir kaç gün önce, Twitter üzerinden bir özel mesaj aldım.
Bir mobil uygulamayı analiz etmeyeli uzun zaman olmuştu, bu yüzden uygulamaya bir göz atmaya karar verdim. Şu anda, problem düzeltilmemişti bende detayları düzelttim.
1) Keşif
Kod kısmına geçmeden önce, uygulamayı her zaman normal bir kullanıcıymış gibi kullanın. Bu durumda, uygulama hesap oluşturmanızı isteyecek, İşe alacak birini ya da hizmetini sunacak birini arayabilirsiniz. Ayrıca mekanik, ev vb. gibi farklı kategorilere göz gezdirebilirsiniz.
Resmi web sitelerine gittim ve Google Play üzerinden indir dedim ve uygulamayı test telefonuma indirdim. Sonrasında uygulamayı analiz etmek için telefonumdan bilgisayarıma çıkarttım.
Sonraki adım uygulamanın AndroidManifest.xml kaynağına bakmak. Apktool sayesinde uygulamanın kaynağını kolayca çıkartabiliyorsunuz.
Şimdi AndroidManifest.xmli okuyabiliriz. Dikkatimi ilk çeken şey React Native referansları.
Şüphelendiğim gibi assets klasöründe index.android.bundle dosyası bulunuyor. Böylece evet, bu bir React Native uygulaması.
Bu tarz bir uygulamada kaynak kodları çıkartmak kolaydır. Jsbeautifier yardımı ile okunabilir devasa bir javascript dosyası elde edebilirsiniz.
Dürüst olmak gerekirse, React Native uygulamalarını sevmiyorum, genel olarak çok sıkıcılar. Bu yüzden, js dosyası yerine APIsine bakmaya karar verdim.
2) API Analizi
Burp Site açıp, uygulamanın dışarıya ne göndereceğini görme zamanı. Bu kısımda, uygulamanın bütün özelliklerini kullanın, bütün durumları deneyin, aklınıza ne geliyorsa her şeyi deneyin. Sonra Burp Sitea geri dönün ve ne olduğu analiz edin.
Uygulamanın yaptığı ağ isteğine göre, Projelerini depolamak için FireStore kullanıyor ve kullanıcıların bilgilerini depolamak için api.target.app de bulunan özel bir API kullanıyorlar. Eğer bir hata olursa, büyük ihtimalle özel API tarafında gerçekleşecektir. Bu yüzden oraya odaklanalım.
2.1) Kullanıcının konumunu ve telefon numarasını ortaya çıkarmak
Uygulamada, bir kategori seçtiğinizde bir uzman listesine ulaşacaksınız. Uygulama aşağıdaki isteği yerine getirir.
Bu istek, tüm uzmanların özel bilgilerini içeren bir JSON nesnesi döndürür: isim, meslek, telefon numarası, lokasyon ... Belli ki bu bilgiler kullanıcı arayüzünden ulaşılmıyor. Bitiş noktasında ise aynı bilgilere ulaşabilirsiniz. /prod/user/taskers/<user_id>
2.2) Aygıt simgesini göster
Aynı bitiş noktasında kullanıcının aygıt simgesi de sızıyor. prod/user/get-services/taskers/filter/<category>
2.3) idCognito yu değiştirme
Gizli kalmamız için UUID formatında bir idCognito bütün kullanıcılara atanır. Kötü fikir değil, dimi?
Ancak bir daha ki sefere, insert-id bitiş noktasını silmeyi unutma. Bu bitiş noktası ile herkes idCognitoyu değiştirebilir. Sadece kurbanın ismini ve kullanıcı adını bilmen yeterlidir.
Saldırgan kurbanın idCognitosunu değiştirdikten sonra kolaylıkla istek yaparak bilgilerine ulaşabilir. /prod/user/<idCognito>
2.4) Bütün veritabanını kazıyın
Aldığım ilk özel mesajı hatırladınız mı? Bu uygulama büyük ihtimalle bir çok belgesiz işçi tarafından kullanılmıştır. ICE or US devleti bütün veritabanını inceleyebilir mi? EVET.
1. İlk olarak bütün mevcut servislere ulaşın. Bütün kategorileri döndürür.
2. Önceki JSON dosyasını ve her kategori için talep edilen uzman listesini ayrıştırın.
3. Bingo, bütün uzmanların isimlerini, lokasyonlarını, telefon numaralarını vb. sahipsiniz.
3) Sonuç
Rastgele bir uygulamaya özel bilgilerinizi koymadan önce 2 kez düşünün. Bu uygulama gerçekten güvenli mi? Bu uygulamayı kim yaptı? Yasal bir şirket mi? Kendi durumunuza göre riski değerlendirin. Tehlike modeliniz nedir?
Kendinize iyi bakın.
Bir kaç gün önce, Twitter üzerinden bir özel mesaj aldım.
Bir mobil uygulamayı analiz etmeyeli uzun zaman olmuştu, bu yüzden uygulamaya bir göz atmaya karar verdim. Şu anda, problem düzeltilmemişti bende detayları düzelttim.
1) Keşif
Kod kısmına geçmeden önce, uygulamayı her zaman normal bir kullanıcıymış gibi kullanın. Bu durumda, uygulama hesap oluşturmanızı isteyecek, İşe alacak birini ya da hizmetini sunacak birini arayabilirsiniz. Ayrıca mekanik, ev vb. gibi farklı kategorilere göz gezdirebilirsiniz.
Resmi web sitelerine gittim ve Google Play üzerinden indir dedim ve uygulamayı test telefonuma indirdim. Sonrasında uygulamayı analiz etmek için telefonumdan bilgisayarıma çıkarttım.
Sonraki adım uygulamanın AndroidManifest.xml kaynağına bakmak. Apktool sayesinde uygulamanın kaynağını kolayca çıkartabiliyorsunuz.
Şimdi AndroidManifest.xmli okuyabiliriz. Dikkatimi ilk çeken şey React Native referansları.
Şüphelendiğim gibi assets klasöründe index.android.bundle dosyası bulunuyor. Böylece evet, bu bir React Native uygulaması.
Bu tarz bir uygulamada kaynak kodları çıkartmak kolaydır. Jsbeautifier yardımı ile okunabilir devasa bir javascript dosyası elde edebilirsiniz.
Dürüst olmak gerekirse, React Native uygulamalarını sevmiyorum, genel olarak çok sıkıcılar. Bu yüzden, js dosyası yerine APIsine bakmaya karar verdim.
2) API Analizi
Burp Site açıp, uygulamanın dışarıya ne göndereceğini görme zamanı. Bu kısımda, uygulamanın bütün özelliklerini kullanın, bütün durumları deneyin, aklınıza ne geliyorsa her şeyi deneyin. Sonra Burp Sitea geri dönün ve ne olduğu analiz edin.
Uygulamanın yaptığı ağ isteğine göre, Projelerini depolamak için FireStore kullanıyor ve kullanıcıların bilgilerini depolamak için api.target.app de bulunan özel bir API kullanıyorlar. Eğer bir hata olursa, büyük ihtimalle özel API tarafında gerçekleşecektir. Bu yüzden oraya odaklanalım.
2.1) Kullanıcının konumunu ve telefon numarasını ortaya çıkarmak
Uygulamada, bir kategori seçtiğinizde bir uzman listesine ulaşacaksınız. Uygulama aşağıdaki isteği yerine getirir.
Bu istek, tüm uzmanların özel bilgilerini içeren bir JSON nesnesi döndürür: isim, meslek, telefon numarası, lokasyon ... Belli ki bu bilgiler kullanıcı arayüzünden ulaşılmıyor. Bitiş noktasında ise aynı bilgilere ulaşabilirsiniz. /prod/user/taskers/<user_id>
2.2) Aygıt simgesini göster
Aynı bitiş noktasında kullanıcının aygıt simgesi de sızıyor. prod/user/get-services/taskers/filter/<category>
2.3) idCognito yu değiştirme
Gizli kalmamız için UUID formatında bir idCognito bütün kullanıcılara atanır. Kötü fikir değil, dimi?
Ancak bir daha ki sefere, insert-id bitiş noktasını silmeyi unutma. Bu bitiş noktası ile herkes idCognitoyu değiştirebilir. Sadece kurbanın ismini ve kullanıcı adını bilmen yeterlidir.
Saldırgan kurbanın idCognitosunu değiştirdikten sonra kolaylıkla istek yaparak bilgilerine ulaşabilir. /prod/user/<idCognito>
2.4) Bütün veritabanını kazıyın
Aldığım ilk özel mesajı hatırladınız mı? Bu uygulama büyük ihtimalle bir çok belgesiz işçi tarafından kullanılmıştır. ICE or US devleti bütün veritabanını inceleyebilir mi? EVET.
1. İlk olarak bütün mevcut servislere ulaşın. Bütün kategorileri döndürür.
2. Önceki JSON dosyasını ve her kategori için talep edilen uzman listesini ayrıştırın.
3. Bingo, bütün uzmanların isimlerini, lokasyonlarını, telefon numaralarını vb. sahipsiniz.
3) Sonuç
Rastgele bir uygulamaya özel bilgilerinizi koymadan önce 2 kez düşünün. Bu uygulama gerçekten güvenli mi? Bu uygulamayı kim yaptı? Yasal bir şirket mi? Kendi durumunuza göre riski değerlendirin. Tehlike modeliniz nedir?
Kendinize iyi bakın.