Daha fazla güvenlik açığı bulmak için gözden kaçan 7 keşif tekniği


Keşif, hata ayıklamada ve genel olarak sızma testinde önemli bir aşamadır. Her hedef benzersiz olduğundan ve genellikle kod tabanına erişimimiz olmadığından, güvenlik açıklarını bulmamıza yardımcı olacak hedefimiz hakkında yararlı ve doğru veriler toplamak için benzersiz yöntemler bulmamız gerekir.

Bu makalede, daha faydalı veriler toplamak ve daha fazla güvenlik açığı bulmak için hata ödülü hedefinize uygulayabileceğiniz, gözden kaçan 7 keşif tekniğini ele alacağız!

Hadi dalalım!

Keşif (keşif kelimesinin kısaltması), daha sonra güvenlik testlerinizde tespit ve yararlanma aşamalarına yardımcı olacak (faydalı) bilgilerin toplanması eylemidir. Keşif veya bilgi toplama aynı zamanda herhangi bir sızma testinin ilk (ve en önemli aşamasını) oluşturur.

Keşif yapmak için zaman harcayan hata ödülü avcıları, çoğunlukla unutulmuş varlıklarla veya ana uygulamayla aynı güvenlik dikkatini almamış ana bilgisayarlarla karşılaştıklarından, çabaları nedeniyle neredeyse her zaman iyi bir şekilde ödüllendirilirler ve bu da onları güvenlik açıklarına daha yatkın hale getirir.

Her hedef benzersiz olduğundan, daha fazla güvenlik açığı bulmamıza yardımcı olmak amacıyla hedefimiz hakkında mümkün olduğunca fazla yararlı veriyi doğru bir şekilde toplamak için birkaç farklı yöntem denememiz gerekecek.

Aşağıda, sıklıkla gözden kaçırılan ancak yeni API uç noktaları, uygulama rotaları ve giriş parametreleri bulmada hâlâ etkili olan 7 farklı tekniğin ana hatlarını çiziyoruz. Her birine ayrıntılı olarak bakalım.

Hedeflenen kelime listeleri

Bruteforcing (veya bulanıklaştırma), referans verilmeyen ve gizli ana bilgisayarları, API uç noktalarını, uygulama rotalarını veya giriş parametrelerini keşfetmenin ayrılmaz bir parçasıdır. Ancak genel kelime listeleri her zaman doğru değildir ve kritik uç noktaları bulmayı kaçırabilir.

Daha çok önerilen bir yaklaşım, hedefinize göre hazırlanmış hedefli kelime listelerini kullanmaktır. CeWL gibi araçlar, ürün ve API belgelerine veya yardım kaynaklarına dayalı özel kelime listeleri oluşturmanıza yardımcı olabilir.

Daha sonra bu özel kelime listesini, güvenlik açıklarını test edebileceğiniz daha fazla belgelenmemiş ve referans verilmeyen API uç noktaları bulmak için kullanabilirsiniz.

Sanal ana bilgisayar (VHost) numaralandırması

Günümüzde konuşlandırılan çoğu ana bilgisayar ve sunucu, birden fazla uygulamaya hizmet vermektedir. Örneğin, birden çok (alt) alan adı, tek bir IP adresine veya çalışan bir ters proxy sunucusuna (Nginx gibi) sahip ana bilgisayara işaret edebilir. Bu proxy sunucusu, ana bilgisayar başlığına göre hangi uygulamanın sunulacağını belirleyecektir.

Aşağıdaki örnek yapılandırma dosyasına bir göz atın:

# Nginx reverse-proxy configuration
server {
    server_name app.example.com api.example.com;
    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
    }

    # ...
}

server {
    server_name app-stg.example.com api-stg.example.com;
    location / {
        proxy_pass http://localhost:8081;
        proxy_set_header Host $host;
    }

    # ...
}

Ana bilgisayar başlığını kaba kuvvet uygulayarak hedefimiz üzerindeki olası sanal konakları arayabiliriz. Bunu örneğin Ffuf ile yapabiliriz:

$ ffuf -u https://example.com -H "Host: FUZZ.example.com" -w /path/to/wordlist

Daha sonra tüm sanal konakları sıraladıktan sonra bu uygulamaların her birini ayrı ayrı kolayca test edebiliriz.

Ffuf kullanarak sanal ana bilgisayar taraması örneği

Farklı HTTP yöntemleri kullanarak zorla tarama

Aşağıdaki kod parçacığına bir göz atın:

import express, { Request } from 'express';

const app = express();
const port = 8080;

...

app.post('/api/render-report', async (req: Request, res: any) => {
  const { data } = req.body;

  const res: string = await renderReport(data);

  res.send(res);
});

app.listen(port, () => {
  console.log(`Server is running at port ${port}`);
});	

8. satırda görebiliriz Yalnızca POST HTTP yöntemini kabul eden bir API uç noktasının tanımlandığını. Çoğu bulanıklaştırma ve içerik keşif aracı için varsayılan istek yöntemi olan GET HTTP yöntemini kullanarak yalnızca kaba kuvvet uygulamış olsaydık, söz konusu belirli API uç noktasını asla bulamazdık.

Bu nedenle her zaman birden fazla HTTP yöntemini test etmeniz önerilir; Ffuf ile bunu HTTP yöntemi seçeneğini belirterek kolayca yapabilirsiniz:

$ ffuf -u https://api.example.com/PATH -X METHOD -w /path/to/wordlist:PATH -w /path/to/http_methods:METHOD

“/path/to/http_methods”, yeni satır besleme karakteriyle ayrılmış tüm HTTP yöntemlerinizi içeren bir kelime listesi dosyasının yoludur.

Bu bulanıklaştırma yaklaşımını kullanmak, belirli API uç noktaları veya uygulama rotaları yalnızca belirli bir HTTP yöntemi kullanıldığında yanıt verdiğinde bu potansiyel uç durumları da hesaba katabilmenizi sağlayacaktır.

JavaScript dosyası izleme

JavaScript dosya izleme, hedef uygulamanız güncellendiğinde ve yeni API uç noktalarına, uygulama rotalarına ve giriş parametrelerine referans verildiğinde bildirim almanıza yardımcı olabileceğinden, avantajlarla birlikte gelir.

Bu aynı zamanda yeni bir bileşeni, özelliği veya API uç noktasını ilk test edenlerden biri olmanızı sağladığından da etkili bir yaklaşımdır.

Ancak, JavaScript dosyalarını düzenli aralıklarla izlemek için kullanabileceğiniz bir sunucu kurmanızı gerektirir. Şanslıyız ki, kullanabileceğiniz birkaç açık kaynak araç var (JSMON gibi), hatta bazıları bildirimler için destek bile sağlıyor.

Farklı kullanıcı aracısı başlıklarıyla tarama

Bazı sunucular, kullanıcı aracısına bağlı olarak uygulamanın farklı sürümlerini sunar. Bu yaklaşım en yaygın olarak mobil cihazlar gibi daha küçük ekranlara kapsamlı destek sağlamak için kullanılır.

Bu nedenle, istekleri tararken veya yakalarken, mobil cihazlara özel bir kullanıcı aracısı ayarlamanın yanı sıra, sunucu yanıtlarındaki ve mobil cihazlara özel uygulama rotaları ve API uç noktaları gibi gizli işlevlerdeki farklılıkları keşfetmeye çalışmak da her zaman önerilir.

Mobil cihazlar için tasarlanan uygulama versiyonları da farklı özellikler içerebilmektedir. Bir dahaki sefere hedefinizi test ederken, kullanıcı aracınızı bir iOS veya Android cihazını taklit edecek şekilde değiştirmeyi deneyin ve daha önce masaüstü sürümünde karşılaşmadığınız değişiklikleri veya uygulama rotalarını ve API uç noktalarını arayın.

Proxy önleyicinizi bir mobil cihazı taklit edecek şekilde yapılandırın

Favicon hash’leriyle ilgili varlıkları bulma

Bazı ana bilgisayarlar yalnızca geliştirme veya yönetim amacıyla kurulmuştur ve onlara işaret eden (alt) alan adı yoktur. Bunların izini sürmemize yardımcı olabilecek birkaç benzerliği vardır ve bu genellikle içinde bulundukları genel IP veya IP/CIDR aralığıdır.

Bazı durumlarda, özellikle hedefiniz daha küçük bir şirketse, ayrılmış bir IP alanı olmayabilir veya şirket, AWS veya Azure gibi üçüncü taraf bulut hizmetlerini kullanarak düzenli olarak dünyanın çeşitli bölgelerine ana bilgisayarlar dağıtabilir. Bu özel bağlamda, favicon karmasını kullanarak hedefinize ait ana bilgisayarları hâlâ belirleyebiliriz.

Favicons, web tarayıcısının sekmesinde sayfa başlığınızın yanında görünen küçük simgelerdir. Ve aynı simgeler sıklıkla yeni ana makinelerde favicon olarak da kullanılıyor. Karmayı alıyoruz ve eşleşen favicon karmasına sahip tüm ana bilgisayarları listelemek için Shodan ve Censys gibi araçları kullanıyoruz.

Daha derine inmek istiyorsanız aşağıdaki ayrıntılı kılavuzu okumanızı öneririz:

UÇ! Hedefinizle ilgili daha fazla varlık mı bulmak istiyorsunuz? İnternet arama motorlarından yararlanın Daha el değmemiş saldırı yüzeylerini keşfetmek için Shodan ve Censys gibi!

JavaScript dosyalarının eski sürümlerini arama

Genel kod depoları ve internet arşivleri, JavaScript dosyalarının çeşitli sürümlerini saklayabilir. JavaScript dosyaları, API uç noktalarını ve uygulama rotalarını keşfetmek için her zaman başvurulacak kaynaklar olduğundan, eski koddaki API uç noktalarını bulmak için GitHub ve Internet Arşivi gibi bu hizmetlerden yararlanabiliriz.

Bu API uç noktaları istemci tarafı kodundan kaldırılmış olabilir ancak yine de erişilebilir durumda olabilir.

Eski JavaScript dosyalarının aranması, hiçbir zaman iptal edilmemiş veya döndürülmemiş sabit kodlu sırlar gibi mevcut sürümlerde hala yararlanılabilecek hassas bilgileri ve güvenlik açıklarını da ortaya çıkarabilir.

Bunu göz önünde bulundurarak, ilginç bir JavaScript dosyasını analiz ettiğinizde, her zaman bu dosyanın önceden arşivlenmiş sürümlerine baktığınızdan emin olun. Tüm bu süreci otomatikleştirmenize yardımcı olabilecek otomatik araçlar da vardır.

JavaScript dosyasının eski sürümüne örnek

Hepimiz hata ödülünde keşif yapmanın önemini anlıyoruz. Her hedef aynı olmasa da bizi daha fazla güvenlik açığına götürebilecek yararlı bilgiler toplamak için yaratıcı teknikler uygulayabiliriz. Üstelik bu keşif teknikleri, daha kapsamlı bir kapsam için diğer web uygulaması test teknikleriyle birleştirildiğinde özellikle etkili olabilir.

Az önce birkaç yeni keşif tekniği öğrendiniz… Şu anda becerilerinizi test etme zamanı! Intigriti’deki 70’ten fazla genel hata ödül programımıza göz atın ve kim bilir, belki bir sonraki ödülünüz bizimle kazanılır!

INTIGRITI’DE HACKLEMEYE BUGÜN BAŞLAYIN



Source link