Py4H Link Crawler
🕊 Bu döküman @KekikAkademi için oluşturulmuştur. ✌🏼
Hedef web uygulamadaki/sitedeki bağlantı adreslerini (linklerini) toplayan bir araç kodlayacağız.
Saldırı Senaryosu:
Hedef siteye ait kaynak koddaki tüm bağlantı adreslerini listeleyip o linklerde (inject points) Sql Injection, XSS gibi ataklar denenecektir.
Algoritma:
- Başla
- Hedef siteye git
- Kaynak koddaki bağlantıları topla
- Bağlantıları düzelt
- Ekrana yaz
- Bitti
Kod Paylaşımı:
Aşağıdaki kodlarda bilgi fonksiyonu ile kullanıcının aracı nasıl kullanacağı hakkında bilgilendirdik. Gerekli kütüphaneleri aktardık ve tarayıcımızın ayarını yaptık.
#!/usr/bin/env python #! -*- coding: utf-8 -*- # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır. import mechanize,sys,re br = mechanize.Browser() # br adında tarayıcı(Browser) nesnesi oluşturduk. br.set_handle_robots(False) # tarayıcımızın robot engeline takılmaması için ufak bir ayar br.addheaders = [('user-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3')] #Tarayıcımıza üstteki kodda başlık ekledik. def bilgi(): # kullanıcıya bilgi veren fonksiyonumuz. print("[-] Example Usage:") print("[+] python crawler.py www.google.com")
Aşağıdaki kodlar asıl işi yapan kodlarımızdır. Argümanımızı alıp bağlantımızı açıp sitedeki tüm bağlantıları toplayıp ekrana yazabilirdik fakat bazen bağlantılar /index.php formatında olabiliyor. Bu yüzden bu formatta ise başına gittiğimiz adresi getir dedik.
try: # olası hatalar için try yapımız dosya = open("sonuc.txt","w") # dosyamızı açtık link = sys.argv[1] # bağlantımızı argüman ile aldık denetle = link.split(".") # denetlemek için . (nokta) ile bağlantımızı ayrıştırdık. if re.findall(":",denetle[0]): # eğer bağlantıda : var ise bilgi() # bilgi metodumuz başlıyacak sys.exit() # program sonlancak d_link = "http://"+link # bağlantımızı istediğimiz hale çevirdik print("Start scanning... >> "+link) #bağlantı taranıyor br.open(d_link) # bağlantımızı açtık for links in br.links(): # tüm bağlantıları topladık ve for döngüsü ile boşaltıcaz içini if re.findall(denetle[1],links.url): # www.site.com site kelimesi topladığımız bağlantıda var mı ? dosya.write(links.url+"\n") # varsa dosyaya yaz else: # yoksa dosya.write(d_link+links.url+"\n") # dosyaya bu şekilde yaz. /wiev.php gibi kaynak koddaki bağlantılar için. print("[+] Done. Read file >> sonuc.txt") # BİTTİ except: # Hata varsa bilgi() #bilgi metodunu çağır
Kodların Tamamına Burdan Ulaşabilirsiniz!
Notlar:
- Python 3x sürümü ile yazdığımız bu araçta third party modül olarak sadece mechanize kullanılmıştır. Eğer bu modül sisteminizde kurulu değilse kurmanız gerekmektedir. Diğer modüller standart modüller olup sizde kurulu gelmektedir.
- Yazdığımız aracın kullanımı python
crawler.py www.hedefsite.com
şeklindedir.
Bir sonraki yazımızda görüşmek üzere.
__________________________
📃 Yandex.Disk Bünyemizdeki veriler 900GB'ı geçmiştir..
Paylaşılan Kursların Tümünü @KekikKahve Grubu notlarından Çağırabilirsiniz..
🕊️ Bize oy verip paylaşarak destek olmaya ne dersin? ✌🏼