Hoşgeldin Misafir

Bug Hunting - WEB APP 101

3W0NX

3 Eyl 2024
36 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Merhaba konuya ufak bir konuşma yaparak gireceğim, ben ülkemizin gençlerinin bilgi ve birikimini dolandırıcılık ve diğer illegal işler için kullanmasına karışı olarak siber güvenliğin legal olan kısmının ülkemiz de daha çok yaygınlaşmasından yanayım. Çoğu gencin hevesi var ama bilgisi kendisi fark etmese bile çok eksik. Çoğu genç ya illegalite amaçlı siber güvenlikle ilgileniyor ya da gövde gösterisi (Zone kasma) amaçlı bu sektörde. Eğer bu işi meslek edinmek istiyorsanız gövde gösterisi merakınız belli bir yerden sonra durmalı ve bu sektörden para kazanmayı öğrenmelisiniz. Sabahtan akşama kadar zone biriktirmenin sana da bana da ne de ülkemize bir faydası yok.

Oldukça yalım ve düzgün bir anlatım ile WEB APP üzerinde bug hunting // bilgi toplama nasıl yapılır, nedir, ne değildir onu anlatacağım. Bazı sıkıcı bilgilendirmeleri yapay zekaya yazdıracağım. Önemli olan kısımlarda benim kalemimi göreceksiniz.




YesWeHack Nedir ?

YesWeHack, bir bug bounty (hata ödülü) platformudur. Güvenlik araştırmacıları ve etik hacker'lar, platform üzerinden çeşitli şirketlerin ve organizasyonların dijital varlıklarında (web siteleri, uygulamalar, API'ler vb.) güvenlik açıkları bularak ödüller kazanabilirler.

YesWeHack, dünya çapında birçok kurumsal müşteriye sahip olup, bu müşterilere güvenlik açıklarını tespit etmeleri için bir ortam sağlar. Platform, katılımcılara aşağıdaki imkanları sunar:

Temel Özellikler:​

  1. Bug Bounty Programları: YesWeHack, kullanıcıların ve organizasyonların güvenlik açıklarını keşfetmesini sağlamak amacıyla açtığı "bug bounty" (hata ödülü) programlarını sunar. Katılımcılar, belirli bir yazılım veya sistemde güvenlik açığı tespit ettiklerinde ödüller kazanır.
  2. Ödüller ve Takım Çalışması: Bu platformda, güvenlik açıkları tespit edildiğinde araştırmacılar ödüller kazanır. Ödüller, güvenlik açığının ciddiyetine göre değişir ve platformda ayrıca hacker'lar arasında rekabetçi bir ortam yaratır.
  3. Global Topluluk: YesWeHack, dünyadaki binlerce güvenlik araştırmacısını ve hacker'ı bir araya getirir. Bu, platformu kullanarak sistemleri test etmek isteyen organizasyonlar için büyük bir avantajdır.
  4. Hedeflenmiş Testler: Güvenlik açıklarının tespit edilmesi için YesWeHack, organizasyonlara hedefli testler yapılmasını sağlar. Hacker'lar, sistemlerin güvenlik seviyelerini değerlendirirken, organizasyonlar da tespit edilen açıkları kapatarak güvenliklerini artırır.
  5. Geniş Müşteri Yelpazesi: YesWeHack, bankacılık, finans, sağlık, enerji ve e-ticaret gibi birçok sektörden müşterilere hizmet verir.

Nasıl Çalışır?​

  • Güvenlik Araştırmacıları: Hacker'lar, YesWeHack platformuna katılır ve çeşitli bug bounty programlarına katılmak için başvururlar.
  • Kuruluşlar: Şirketler ve organizasyonlar, platform aracılığıyla kendi sistemlerine yönelik bug bounty programları başlatır. Bu programlar, belirli web siteleri, uygulamalar veya ağlar üzerinde güvenlik testleri yapmayı amaçlar.
  • Ödüller: Hacker'lar, tespit ettikleri güvenlik açıkları için ödüller alır. Bu ödüller, açığın türüne ve ciddiyetine göre değişebilir.

Avantajlar:​

  • Güvenlik Araştırmacıları için: Etik hacker'lar için fırsatlar sunar ve yeteneklerini geliştirirken para kazanma imkanı sağlar.
  • Organizasyonlar için: Sistemlerini daha güvenli hale getirmek için geniş bir topluluktan yararlanabilirler.
YesWeHack, etik hacker'lar ve organizasyonlar arasında güvenli ve verimli bir işbirliği ortamı sağlar, bu da dijital sistemlerin güvenliğini artırmaya yardımcı olur.




HackerOne Nedir ?

HackerOne, bir bug bounty (hata ödülü) platformudur ve dünya çapında birçok şirketin güvenlik açıklarını keşfetmelerine yardımcı olmak amacıyla güvenlik araştırmacılarını (etik hacker'lar) bir araya getirir. HackerOne, organizasyonların ve şirketlerin dijital varlıklarında (web siteleri, uygulamalar, API'ler vb.) güvenlik açıklarını tespit etmeleri için güvenli bir ortam sağlar ve bu açıkları bulan araştırmacılara ödüller sunar.

Temel Özellikler:​

  1. Bug Bounty Programları: HackerOne, şirketlerin güvenlik açıklarını bulmak için özel bug bounty programları başlatmalarına olanak tanır. Katılımcı güvenlik araştırmacıları, bu programlar üzerinden belirtilen sistemleri test ederek güvenlik açıkları tespit eder ve karşılığında ödüller kazanır.
  2. Sürekli Güvenlik Testi: HackerOne, şirketlerin sürekli olarak güvenlik açıklarını keşfetmelerine ve düzeltmelerine yardımcı olur. Bu, şirketlerin dijital varlıklarını koruma altına almalarına olanak tanır.
  3. Ödüller ve Teşvikler: HackerOne, hacker'lar ve araştırmacılar için ödüller ve ödüller sunar. Bu ödüller, tespit edilen güvenlik açıklarının ciddiyetine ve etkisine bağlı olarak değişir. Araştırmacılar, başarılı bir şekilde raporladıkları her güvenlik açığı için maddi ödüller kazanabilirler.
  4. Hacker Topluluğu ve Rekabet: HackerOne, geniş bir hacker topluluğu oluşturur. Bu topluluk, her seviyeden güvenlik araştırmacısına (başlangıç seviyesinden deneyimli profesyonellere kadar) katılma fırsatı verir. Araştırmacılar, tespit ettikleri açıklar için ödüller kazanırken aynı zamanda güvenlik becerilerini de geliştirme fırsatı bulurlar.
  5. Şirketlere Çeşitli Hizmetler: HackerOne, sadece bug bounty programları sunmakla kalmaz, aynı zamanda şirketlere güvenlik testleri, pentesting (penetrasyon testi) ve diğer siber güvenlik hizmetleri de sağlar.
  6. Raporlama ve İzleme: HackerOne, araştırmacıların buldukları açıkları detaylı bir şekilde raporlamalarını sağlar. Ayrıca, şirketler bu raporları takip ederek açıkların ne zaman düzeltildiğini izleyebilirler.

Nasıl Çalışır?​

  • Hacker'lar için: HackerOne'a katılan güvenlik araştırmacıları, platformda listelenen programlara başvurabilir ve belirtilen web siteleri, uygulamalar veya sistemlerde güvenlik açıkları arayabilirler.
  • Şirketler için: HackerOne üzerinden şirketler kendi güvenlik açıklarını bulmak için programlar başlatabilir. Bu programlar, araştırmacılara belirli hedeflere odaklanarak güvenlik testleri yapma fırsatı sunar.
  • Ödüller ve Başarı: Hacker'lar, keşfettikleri güvenlik açıkları doğrulandığında ödüller kazanır. Bu ödüller, açığın önemine ve etki düzeyine göre değişir.

Avantajlar:​

  • Güvenlik Araştırmacıları için: HackerOne, güvenlik araştırmacılarına para kazanma, becerilerini geliştirme ve global bir topluluğun parçası olma fırsatı sunar.
  • Şirketler için: Şirketler, geniş bir yetenekli hacker topluluğundan faydalanarak daha hızlı ve etkili bir şekilde güvenlik açıklarını tespit edebilirler. Bu, daha güvenli bir dijital ortam yaratmalarına yardımcı olur.

HackerOne'ın Katkıları:​

  • Büyük Kurumsal Müşteriler: HackerOne, dünyanın önde gelen şirketlerinden bazılarıyla çalışmaktadır, örneğin Google, Twitter, Uber, GitHub ve daha birçok büyük teknoloji firması bu platformu kullanmaktadır.
  • HackerOne ile Eğitim ve Sertifikalar: HackerOne, araştırmacıların becerilerini geliştirebileceği eğitim materyalleri ve sertifikalar sunar.

HackerOne ve Bug Bounty:​

HackerOne, bug bounty programlarının öncülerinden biridir ve dünyanın en büyük platformlarından biridir. Bu platform, yalnızca güvenlik açıklarını bulmakla kalmaz, aynı zamanda organizasyonların güvenlik kültürünü iyileştirmelerine de yardımcı olur.



Scope Nedir ?

Scope (kapsam), özellikle güvenlik araştırmaları ve bug bounty (hata ödülü) programlarında, araştırmacıların hedef alabileceği veya test edebileceği sistem, uygulama veya ağ bileşenlerinin sınırlarını tanımlayan bir terimdir. Kapsam, bir programın neyi içerdiğini ve hangi alanların test edilmesi gerektiğini belirler. Bu, hem araştırmacıların doğru alanlarda çalışmasını sağlar, hem de organizasyonların sadece belirli bölümlerini test etmelerine olanak tanır.

Scope'ın Kullanım Alanları:​

  1. Bug Bounty Programlarında:
    • İçerik Kapsamı: Organizasyonlar, bug bounty programlarında hangi sistemlerin, uygulamaların veya ağların test edilebileceğini belirtir. Örneğin, bir web uygulamasının ön yüzü (frontend) veya arka uç (backend) sistemleri hedef olabilir. Kapsam dışı bırakılan alanlar da açıkça belirtilir.
    • İçerik Dışında Kalan Alanlar: Kapsam dışı olan alanlar, genellikle test edilmemesi gereken bölgelerdir. Örneğin, bazı şirketler yalnızca belirli bir uygulamanın güvenliğini test etmek isteyebilir ve diğer sistemleri kapsam dışı bırakabilirler. Bu, yanlış anlaşılmaları önler ve araştırmacıların yalnızca onaylanan alanlarda çalışmasını sağlar.
  2. Penetrasyon Testlerinde (Pentest):
    • Test Edilecek Bileşenler: Penetrasyon testlerinde de kapsam belirlenir. Hangi sunucular, ağ segmentleri, uygulama katmanları ve servislerin test edileceği belirlenir. Kapsam dışı bırakılan bileşenlere saldırılmaması gerektiği açıkça belirtilir.
    • Test Edilmesi Gereken Güvenlik Açıkları: Belirli türdeki güvenlik açıklarının (XSS, SQL enjeksiyonu, CSRF, vb.) test edilmesi de kapsamda yer alabilir. Bu testler, sistemin korunmaya çalışılan zayıf noktalarına odaklanır.
  3. Geliştirme Süreçlerinde:
    • Proje Kapsamı: Yazılım geliştirme süreçlerinde de "scope" terimi kullanılır. Proje kapsamı, ne tür özelliklerin geliştirileceğini, hangi işlevlerin ekleneceğini ve hangi özelliklerin dışarıda bırakılacağını tanımlar. Bu, projenin sınırlarını ve hedeflerini belirler.

Bug Bounty Scope Örneği:​

Bir bug bounty programının kapsamı şu şekilde belirtilebilir:

  • İçerik Kapsamı:
    • Web sitesi: example.com
    • Web uygulaması: app.example.com
    • API'ler: api.example.com
  • Dış Kapsam:
    • İç sistemler (örneğin, intranet)
    • Çalışan e-posta hesapları
    • Test ortamları

Kapsamın Önemi:​

  • Düzen ve Odaklanma: Kapsam belirlemek, testlerin ve araştırmaların belirli alanlara odaklanmasına yardımcı olur, böylece zaman ve kaynak kaybı önlenmiş olur.
  • Yasal Sınırlar: Kapsam dışındaki alanlara yapılan testler, etik olmayan ve yasal olmayan faaliyetler olabilir. Örneğin, organizasyonlar, araştırmacıların yalnızca onaylı alanlarda test yapmasını istedikleri için kapsam dışı alanları belirler.
  • Etik ve Güvenlik: Kapsam, hem araştırmacılar hem de organizasyonlar için güvenliği artıran bir çerçeve sunar. Her iki taraf da anlaşmazlık yaşamadan güvenlik testlerini yapabilir.


BUG BOUNTY GİRİŞ 101
Bug Bounty de ilerlemek istiyorsanız planlamanız, not tutma özelliğiniz olmalı. Bir hedef belirlediğiniz de o hedef üzerinden ilerlemelisiniz, ben bunda açık bulamadım diğerine geçeyim diyerek sürekli hedeflerinizden şaşmamalısınız. Bu programa katılanlar genellikle büyük şirketler çok olağandışı bir durum olmadıkça 1 saat içinde 500 dolarlık açık bulmayı beklemeyin. Sabırlı olmalı bilmeli ve karşınızdaki sistemi en ince detaylarına kadar bilmelisiniz. Konuyu anlatabilmek için Hackerone dan bir hedef belirledim amacım güvenlik açığı tespit etmek değil temel mantığı size anlatmak, 101 seviyesinde olacağı için çok derinlemesine bir bilgi toplama veya güvenlik açığını test etme olmayacak. Burada bilgi toplama aşamalarından bahsedeceğim, güvenlik açıklarını nasıl sömürüleceğini bilmiyorsanız DVWA kullanarak öğrenin.

  1. Hedefinizi inceleyin.
Öncelikle hedefimizin example.com olduğunu varsayalım. Bunun için hedefimizi iyice bir incelememiz gerek, bir siteye giriş yapalım bakalım neler varmış. Ben genellikle ilk girdiğimce "F12" den AĞ seçeneğine gelerek gelen-giden trafiği inceliyorum. Input alanı var mı bakıyorum.

2. Javascript Dosyalarına bakın.

Arkadaşlar javascript dosyalarını incelemeniz sizin için en mühim elzemdir. DOM Based XSS'lerde özellikle JS dosyasını iyi analiz etmeniz gerekir.

3. Subdomain Tarayın.

Hedefimizin subdomainlerini bilmemiz ve o subdomainler üzerinde güvenlik açığı aramamız gerekiyor. Scope kapsamında olup olmadığına bakmakta fayda var.

4. Endpoint ve HTTP İsteği Tespiti.

Hedefimizin API Endpointlerini vs. tespit etmemiz bizim token - auth bypass, open red gibi güvenlik açıklarını bulmamıza katkı sağlayacaktır.

5. Dizin ve Dosyaları Tarayın.

Dizinleri ve dosyaları taramak bize yol gösterici bir harita olacaktır. Bu sayede XSS, RFI, LFI, SQL vb. güvenlik açıklarını tespit etmemiz gereken input alanları var mı yok mu bakabilir ve kritik önem içeren ama 403 döndürmeyen dosyaları da bulabiliriz.

5. Wayback Machine

Eskiden sitede bulunan ama daha sonrasında güvenlik amacıyla kaldırılmış dosyaları bulmamızı sağlayabilir.




ayoml1u.PNG


Burayı kontrol etmemin amacı her zaman javascriptte yanlış bir yapılandırma var mı, filtre var mı vs. gibi sorulardan dolayı olmuştur. Gönderdiğiniz girdi bir javascriptin içinde hangi satırda nereye yerleşiyor hangi değişken tutuyor bu bilgileri bilmek ve buna göre bir payload hazırlamak çok önemlidir.

aysevvm.PNG


Öncelikle bizden girilen inputlar hangi filtrelemelerden geçiyor bunu bilmeliyiz. Eğer aşamayacağımız türden bir filtreleme var ise farklı yollardan ilerlemeliyiz. <,> Karakterleri her şartta engelleniyorsa <,> kullanmamıza gerek yok demektir. Kısacası <,> engellendiği bir ortamda sürekli <,> göndermenizin bir anlamı yok. (<script>, <img>, <h1> vs.)

HTML:
   <p class="page-header-description">3 results for "test"</p>

başına < koyuyorum ve filtreleyip filtrelemediğini inceliyorum.

HTML:
   <p class="page-header-description">3 results for "&lt;test"</p>

HTML entity encoding ve Base64 denedim. Sonuç vermedi, burada takılı kalmayı şu anlık mantıklı bulmuyorum. Aynı hedef üzerinde daha kapsamlı bir tarama yapmam gerektiğinin bilincindeyim. Web Crawler için Katana kullanıyorum. Sizde biraz daha uğraşıp sonuç alamadığınız takdirde farklı senaryolara bakmalısınız.

Kod:
CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest

Subdomainleri tarayıp katananın içine atacağım.

Kod:
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

Sadece 200 döndüren, 302 vb. durum kodları döndürmeyen subdomainleri kaydettim.

7146w5m.PNG


Bunlarda olabildiğince linkleri toplamam gerekiyor ki güvenlik açıklarını taramam kolaylaşsın.

cf2eh53.PNG


Artık bu noktadan sonra benim özellikle kontrol etmek istediğim bazı parametreler var. Bunlar search, query ve id.

jeq8mk2.PNG


Bunlar bir köşede dursun istiyorum. Wayback arşivinden sitede önceden bulunmuş dosyaları çekmek ve kaydetmek istediğimden bir tool yazdım.

Python:
import requests
import urllib.parse
import time
import argparse

def get_wayback_urls(url):
    base_url = "https://web.archive.org/cdx/search/cdx"
    params = {
        'url': f'*.{url}/*',
        'collapse': 'urlkey',
        'output': 'text',
        'fl': 'original'
    }
    
    try:
        response = requests.get(base_url, params=params)
        return response.text
    except Exception as e:
        print(f"Hata oluştu ({url}): {str(e)}")
        return ""

def main():
  
    parser = argparse.ArgumentParser(description='Wayback Machine URL Scraper')
    parser.add_argument('-scan', required=True, help='Taranacak domain listesini içeren dosya')
    parser.add_argument('-o', required=True, help='Sonuçların kaydedileceği dosya')
    args = parser.parse_args()

    input_file = args.scan
    output_file = args.o

  
    try:
        with open(input_file, 'r', encoding='utf-8') as f:
            urls = [line.strip() for line in f if line.strip()]
    except FileNotFoundError:
        print(f"{input_file} dosyası bulunamadı!")
        return

 
    for url in urls:
        print(f"İşleniyor: {url}")
        results = get_wayback_urls(url)
        
        if results:
            with open(output_file, 'a', encoding='utf-8') as f:
                f.write(results)
        
      
        time.sleep(1)

if __name__ == "__main__":
    main()

nbts6z7.PNG


Eğer tool kullanmak istemiyorsanız:

Kod:
curl -G "https://web.archive.org/cdx/search/cdx" --data-urlencode "url=*.example.com/*" --data-urlencode "collapse=urlkey" --data-urlencode "output=text" --data-urlencode "fl=original" > out

Aynı görevi görecektir.

Şimdi, bir ton kalabalık oluştu önemli önemsiz bir sürü link var ben önemli olanları ayırmak istiyorum.

l3il59n.PNG


Tamam, her şey daha güzel oldu. Şimdi google dorkları kullanarakta bilgi toplayabiliriz ama ben şu an gerek duymuyorum. Dirb ile de daha fazla dosya/dizin tarayabiliriz. Dirsearch de kullanabilirsiniz.

Kod:
dirsearch -u https://example.com -w /path/to/wordlist.txt -e php,html,js

Şimdi FUZZ zamanı, GET methodu kullanarak input girişi olan bağlantıları bulmamız gerek. Bundan önce arkadaşlar o kadar robots.txt ve xml dosyaları bulduk bunları tek tek incelemeniz gerekmektedir. Konu anlatımı olmasın diye orayı geçtim ama olay örgüsünü kafanızda kurmanız gerekiyor. Adeta bir matematik problemi çözer gibi yaklaşın.

Bunun için SpyHunt kullanacağım.

Kod:
git clone https://github.com/gotr00t0day/spyhunt.git
pip3 install -r requirements.txt
sudo python3 install.py

ewq32ub.PNG


XSS Tespiti için Fuzz.txt den linkleri çekiyorum.

20i5f2c.PNG


Ek olarak toplu çektiğim linklerde de xss tespiti için dalfox kullanacağım. İki alternatifi de göstermek istedim.

bbav0eu.PNG


Web Teknolojisi hakkında bilgi almak istiyorum.

6suygwc.PNG




Ne Yapabilirsiniz ?

Arkadaşlar hemen hemen sizlere bilgi toplama hakkında gerekli olan detayları verdim bundan sonrası size bağlı. Çünkü bug bounty teknolojiye göre değişir eğer bu bir WordPress olsaydı farklı, Joomla olsaydı farklı ya da daha farklı bir teknoloji içerseydi örneğin asp.net gibi farklı işlemler yapacaktık. Ben yine de size bir kaç fikir vermek istiyorum.

  1. Port tarayın. Sunucunun kullandığı servisleri ve portları inceleyin.
  2. IDOR için sitede kayıt olabiliyorsanız 2 hesap açın ve diğer açtığınız hesabın bilgilerini BURP üzerinden ID değiştirerek çekmeye çalışın.
  3. Üye olmaya ve üye olurken E-Mail'i onaylamamanıza rağmen onaylamış gibi atlatmaya çalışın bunun için daha önce başarılı bir e-mail doğrulamasının tokenini deniyebilirsiniz.
  4. Başka bir hesabınızın şifre sıfırlamasını kendi istediğiniz E-Maile yönlendirmeye çalışın.
  5. DOM XSS için bizim tıklayabildiğimiz yani siteye bir girdi gönderdiğimiz butonları vs. inceleyin.
  6. ID parametresi vb. parametrelerle sorgu çekiliyor mu ona bakın.
  7. Login kısmının formuna CSRF deneyin.
  8. Arama kısımlarında XSS deneyin.
  9. Kayıt olurken hesap adı ve soyadınıza XSS parametreleri ekleyin.
  10. Siteye rastgele istekler gönderin ve BURP üzerinden herhangi bir URL Redirect parametresi ile yönlendirme var mı bakın, Open Red çoğu bug bounty programında kabul edilir ve ödüllendirilir.
Arkadaşlar bu liste uzar gider. WordPress ise pluginleri kontrol edin, Subdomainlerinde alt domainlerini tarayın vs. gördüğünüz gibi sonu yok ve web teknolojisine göre sürekli yeni çözümler üretiyoruz. Bu yüzden benden tam detaylı bir bug bounty konusu beklemeyin eğer yaparsam siz sonunu getiremezsiniz zaten... Sanırım bende getiremem.



Örnek bir Video:


Bu konuda bir site üzerinde nasıl bize gereken bilgileri toplarız, fuzz yaparız, eskiden sitede bulunan ama şu an bulunmayan dosyaları buluruz onları gösterdim. Çoğu kişi güvenlik açığını biliyor ama gerçekten bilgi toplama konusunda eksik kalıyor o yüzden bulabileceği bir açığı görmüyor. Konuyu okuduğunuz için teşekkür ederim.