Python’la Bug Bounty Uygulamaları

  • Konbuyu başlatan PwnLab.Me
  • Başlangıç tarihi
P

PwnLab.Me

Admin
Katılım
21 Ocak 2024
Mesajlar
202
Tepkime puanı
9
Puanları
18
Yusuf Efil tarafından yazılmıştır.

Python’la Bug Bounty Uygulamaları​


Merhabalar ben Yusuf Efil, sizlere bug bounty’i python’la nasıl daha pratik ve etkili şekilde yapabileceğinizden bahsedeceğim.

Bug Bounty Yaparken Neden Otomasyona İhtiyacımız Var?​


Tekrarlanan işler, gerçekten zaman ayırmanız gereken konulardan sizi alıkoyabilir. Otomasyon, bir teoriyi hızlı bir şekilde test etmeye yardımcı olabilir. Bu nedenle, diğer alanlara odaklanmak için zaman ve enerjiden tasarruf etmek üzere bu tekrar eden görevleri otomatikleştirmemiz gerekir. Bug bounty’le uğraşan insanlar asla sıkılmamalı veya tekrarlayan işlerle uğraşmak zorunda kalmamalı, çünkü bu olduğunda, bu onların asıl sorunları çözmedikleri anlamına gelir. Zamanı iyi kullanmak için bazı angarya işleri otomatize etmek gerekir.

Python​


Python yeni başlayanlar için öğrenmesi çok kolay bir programlama dilidir. Basitleştirilmiş sözdizimine sahiptir, yani makine dilinden çok insan diline daha yakındır bu herkesin kodu kolayca okuyup anlamasını sağlar. Ayrıca Python, linux tabanlı işletim sistemlerine de dahil edilmiştir. Kali’de kolayca kullanabilirsiniz.

Subdomain Listeleme​


Pythonla kolayca bir subdomain listeleme aracı yazabiliriz. Ancak uzayı yeniden keşfetmeye gerek yok.

Kali’de git clone https://github.com/aboul3la/Sublist3r.git komutuyla sublister aracını yükleyebilirsiniz. Kurulum tamamlandıktan sonra, etki alanı dosyalarının liste dosyalarının bulunduğu dizine geri dönebilirsiniz. Sublister kullanım örneğini aşağıda ki görselde görebilirsiniz:

Screenshot_2020-07-06_01-47-21-272x300.png




Domain Kontrolü İçin Fuzzing​


Fuzzing, her şeyden önce otomatik hata algılama sanatıdır. Alt alan adlarının( subdomain ) dizinlerini karıştırırken bir yönetici paneli , back-up dosyaları veya hassas herhangi bir şey bulmuş olabilirsiniz. Örneğin; bir .git dizini buldunuz uygulamanın kaynak kodunu yine pythonla yazılmış bir araç olan gitdumper’la indirebilirsiniz. Ayrıca fuzz testi yaparak dizinin canlı olup olmadığını da kontrol edebilirsiniz. Çünkü ölü domaine yapılan çok sayıda istek zaman kaybıdır.

Yine yukarda verdiğim komutla bu şekilde; git clone https://github.com/arthaud/git-dumper gitdumper’ı indirebilirsiniz.

Git Dumper Kullanımı​


gitdumper aracını bu şekilde basitçe kullanabilirsiniz:



gitdump1-300x157.png




Domain Kullanılabilir Kontrolü​






Bu kodu domaincontrols.py şeklinde kaydedin. Burada yapılan, alan adının canlılığını kontrol etmek için önce hem 80 hem de 443 numaralı bağlantı noktasına bir istek göndermek. robots.txt uç noktasıyla ilgileniyoruz çünkü bunun dışındaki uç noktaların boyutu büyük. Try pass kısmının çok fazla bir işlevi yok sadece blok dışındaki alanları doldurmak için kullanılır. Bu şekilde kolayca ve otomatik şekilde domainin kullanılabilir olup olmadığını test edebilirsiniz.

Shodan Kullanarak OSINT Otomasyonu Yapmak​


“pip install shodan” komutunu kullanarak shodan modülünü yükleyelim. Şimdi otomatikleştirerelim:

1_QtLvM6dK90A7ns-5qWxjSw-300x235.png


Burda yapılan işlem Django’da hata ayıklama işlemi için shodan otomasyonu. Şimdi de manuel olarak IP adresini kontrol edelim ya da bunu da otomatize edebiliriz. Hadi otomatize edelim;

3-1-300x202.png


Burada verify = False parametresi yazmamızın sebebi, programa SSL sertifikasını doğrulamamasını söylemek.



Shodan Kullanarak Spring Boot Sunucusu Bulma​


Öncelikle Spring Boot’dan bahsedeyim:

Spring boot, Java programlama dilinde geliştirilen bir frameworktür. Java dilinde microservice yazılmasına olanak sağlar. Şimdi otomatize edilmiş programımızı yazalım:

5-1-300x228.png


Oturum Açma Parametrelerini Bulmayı Otomatikleştirme​


Giriş parametrelerini bulmak için url’yi tarayıcıda açın kullanıcı adı ve şifreyi doldurun giriş düğmesine tıkladıktan sonra burp suite ile isteği durdurun. İstek başlığı ve istek gövdesini aşağıdaki gibi görebilirsiniz:

1_nLg2aJMGCThu0zkqOKYlGg-300x105.webp


Burada gönderi isteklerinin gövdesinin json olduğunu görebilirsiniz, bu yüzden kodda json=data kullandık.

BONUS: Python Socket Kütüphanesi​


Bu modül, BSD soket arayüzüne erişim sağlar. Tüm modern Unix sistemlerinde, Windows’ta, MacOS’ta ve ek platformlarda mevcuttur.

İçinde kullandığı parametler şunlardır:

  • AF_UNIX: UNIX domain protokolleri
  • AF_INET: TCP ve UDP için IPv4 protokolleri
  • AF_INET6: TCP ve UDP için IPv6 protokolleri
  • SOCK_STREAM: TCP bağlantı tipi
  • SOCK_DGRAM: UDP bağlantı tipi
  • SOCK_RAW: Henüz olgunlaşmamış soketler
  • SOCK_RDM: Güvenilir datagramlar için
  • SOCK_SEQPACKET: Bağlantı üzerinden kayıtlar için bir dizi transfer.

Socket Kütüphanesi Kullanımı​


Önce aşağıdaki şekilde sunucu ve istemci kodlaması yapılır:

Server Kodlanması​


Kod:
import socket

host = "localhost"
port = 12345

try:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print("socket oluşturuldu")

    s.bind((host, port))
    print("socket {} nolu porta bağlandı".format(port))

    s.listen(5)     
    print("socket dinleniyor")
except socket.error as msg:
    print("Hata:",msg)

while True:

   # Client ile bağlantı kurulursa
   c, addr = s.accept()     
   print('Gelen bağlantı:', addr)

   # Bağlanan client tarafına hoşgeldin mesajı gönderelim. 
   mesaj = 'Bağlantı için teşekkürler'
   c.send(mesaj.encode('utf-8'))

   # Bağlantıyı sonlandıralım
   c.close()

Sunucu Kodlanması

Kod:
import socket               

# Socket oluşturulması
s = socket.socket()         

# Bağlanılacak adres ve port
host = "localhost"
port = 12345               

try:
    # Bağlantıyı yap
    s.connect((host, port))

    # serverden yanıtı al
    yanit = s.recv(1024)
    print(yanit.decode("utf-8"))

    # bağlantıyı kapat
    s.close()
except socket.error as msg:
    print("[Server aktif değil.] Mesaj:", msg)

Sonuç olarak:

python-socket-server-client-300x76.png


Görüldüğü gibi her zaman açık olan server soketimiz gelen bağlantıları kabul edip bir merhaba mesajı gönderiyor ve ardından bağlantıyı kapatıyor. Bu örnekleri referans alarak kendi soket programlamanızı oluşturabilir, cihazlarınız arasında ağ üzerinden haberleşerek istediğiniz verileri aktarabilirsiniz.

https://github.com/topics/bugbounty-tool bu linkten birçok otomatize bug bounty aracı bulabilirsiniz ama öncelikle şu şekil başlayın. Örneğin; sql injection üzerine çalışma yapıyorsunuz sql injection için gerekli olan toolları indirmekle başlayın adım adım gidin birinde tamamen ustalaşmadan başka owasp top 10 konularına girmemeniz daha iyi olur. Buraya kadar okuduğunuz için çok teşekkür ederim.
 
Moderatör tarafında düzenlendi:
Geri
Üst