Yusuf Efil tarafından yazılmıştır.
Merhabalar ben Yusuf Efil, sizlere bug bounty’i python’la nasıl daha pratik ve etkili şekilde yapabileceğinizden bahsedeceğim.
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 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.
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:
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.
gitdumper aracını bu şekilde basitçe kullanabilirsiniz:
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.
“pip install shodan” komutunu kullanarak shodan modülünü yükleyelim. Şimdi otomatikleştirerelim:
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;
Burada verify = False parametresi yazmamızın sebebi, programa SSL sertifikasını doğrulamamasını söylemek.
Ö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:
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:
Burada gönderi isteklerinin gövdesinin json olduğunu görebilirsiniz, bu yüzden kodda json=data kullandık.
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:
Önce aşağıdaki şekilde sunucu ve istemci kodlaması yapılır:
Sunucu Kodlanması
Sonuç olarak:
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.
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:
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:
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:
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;
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:
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:
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:
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: