Wayback URL Kullanımı (Detaylı Anlatım ve Uygulama Teknikleri)
Wayback URL Kullanımı, Internet Archive'ın Wayback Machine servisinden ve diğer arşiv kaynaklarından, bir hedef domain'e ait tarihsel URL'leri toplama sürecidir. Bug bounty ve pentest'lerde en kritik keşif aşamalarından biridir. Çünkü geçmişte var olan ancak artık aktif olmayan veya unutulmuş endpoint'ler, parametreler ve dosyalar, güvenlik zafiyetleri içerebilir.
Wayback Machine Nedir?
Wayback Machine, Internet Archive'ın 1996'dan beri interneti arşivleyen servisidir. Web sayfalarının anlık görüntülerini (snapshot) saklar. Bu arşivler, bir hedef domain'in zaman içindeki değişimini, eski endpoint'lerini, unutulmuş parametrelerini ve hassas dosyalarını keşfetmek için kullanılır.
Wayback URL Toplama Yöntemleri:
1. Web Arayüzü (Manual)
Adres: https://web.archive.org
Kullanım:
https://web.archive.org/web/*/https://hedef.com/* adresine git
Tarihsel snapshot'ları görüntüle
URL'leri manuel olarak topla
Örnek URL:
text
2. API ile Toplama
API Endpoint:
text
Kullanım (cURL):
bash
# JSON formatında
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=json" | jq -r '.[1:][][2]'
# Sadece URL'ler
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=text" | awk '{print $2}'
Wayback URL Araçları:
1. Waybackurls (Tom Nomnom)
Açıklama: Wayback Machine'den URL toplama aracı.
Kurulum:
bash
go install github.com/tomnomnom/waybackurls@latest
Kullanım:
bash
# Temel
waybackurls hedef.com
# Subdomain'ler ile
waybackurls hedef.com | grep "hedef.com"
# Çıktı
waybackurls hedef.com > urls.txt
# Sadece parametre içerenler
waybackurls hedef.com | grep '?'
# Sadece belirli uzantılar
waybackurls hedef.com | grep -E '\.(php|asp|aspx|jsp|do|action|api)'
2. Gau (GetAllUrls - Tom Nomnom)
Açıklama: Wayback Machine + CommonCrawl + AlienVault OTX + URLScan'dan URL toplama.
Kurulum:
bash
go install github.com/lc/gau/v2/cmd/gau@latest
Kullanım:
bash
# Temel
gau hedef.com
# Subdomain'ler ile
gau --subs hedef.com
# Thread sayısı
gau --threads 50 hedef.com
# Çıktı
gau hedef.com -o urls.txt
# Sadece belirli kaynaklar
gau --providers wayback,commoncrawl hedef.com
# Çıktı formatı
gau hedef.com --json
3. Katana (ProjectDiscovery)
Açıklama: Modern web crawler. Wayback + canlı crawling kombinasyonu.
Kurulum:
bash
go install github.com/projectdiscovery/katana/cmd/katana@latest
Kullanım:
bash
# Temel crawling
katana -u https://hedef.com
# Wayback ile kombinasyon
katana -u https://hedef.com -jc # JavaScript crawling
# Çıktı
katana -u https://hedef.com -o urls.txt
# Depth ayarı
katana -u https://hedef.com -d 3
# JSON çıktı
katana -u https://hedef.com -json
4. Wayback (Python)
Açıklama: Python ile Wayback Machine'den URL toplama.
Kurulum:
bash
pip install wayback
Kullanım (Python):
python
from wayback import WaybackClient
import json
client = WaybackClient()
def get_wayback_urls(domain):
# URL'leri topla
urls = []
for snapshot in client.search(domain):
urls.append(snapshot.url)
return urls
# Kullanım
urls = get_wayback_urls('hedef.com')
for url in urls:
print(url)
5. Wayback Machine CDX API (Manuel)
Kullanım (Python):
python
import requests
import json
def get_wayback_urls(domain):
url = f"https://web.archive.org/cdx/search/cdx?url={domain}/*&output=json"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
# İlk satır header, sonraki satırlar veri
urls = [row[2] for row in data[1:]]
return urls
return []
# Kullanım
urls = get_wayback_urls('hedef.com')
for url in urls:
print(url)
Kullanım (Bash):
bash
# CDX API ile URL toplama
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=text" | awk '{print $2}'
# Tarih filtreleme
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=text&from=2020" | awk '{print $2}'
# Sadece belirli uzantılar
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*.php&output=text" | awk '{print $2}'
Wayback URL Filtreleme Teknikleri:
1. Parametre Filtreleme
bash
# Sadece parametre içeren URL'ler
waybackurls hedef.com | grep '?'
# Sadece parametre isimleri
waybackurls hedef.com | grep '?' | unfurl keys | sort -u
# Sadece değer içeren parametreler
waybackurls hedef.com | grep '=' | cut -d '=' -f1 | sort -u
2. Uzantı Filtreleme
bash
# Sadece PHP dosyaları
waybackurls hedef.com | grep '\.php'
# Sadece JavaScript dosyaları
waybackurls hedef.com | grep '\.js'
# Sadece konfigürasyon dosyaları
waybackurls hedef.com | grep -E '\.(env|ini|conf|config|xml|json|yaml|yml)'
# Sadece belirli uzantıları hariç tut
waybackurls hedef.com | grep -v -E '\.(jpg|png|gif|css|js|svg|ico)'
3. Path Filtreleme
bash
# Sadece API endpoint'leri
waybackurls hedef.com | grep -E '/(api|v1|v2|rest|graphql)/'
# Sadece admin endpoint'leri
waybackurls hedef.com | grep -E '/admin|/dashboard|/panel|/console'
# Sadece belirli path'ler
waybackurls hedef.com | grep -E '/user|/profile|/account|/login|/reset'
4. Status Code Filtreleme
bash
# Wayback + httpx ile canlı URL'leri kontrol et
waybackurls hedef.com | httpx -silent -status-code | grep -E '200|301|302'
# Sadece 404 olmayanlar
waybackurls hedef.com | httpx -silent -status-code | grep -v 404
Wayback URL Pipeline (Full Automation):
bash
#!/bin/bash
# Full Wayback URL pipeline
DOMAIN=$1
OUTPUT_DIR="wayback_$DOMAIN"
mkdir -p $OUTPUT_DIR
echo "[1] Wayback URL Collection"
# Waybackurls
waybackurls $DOMAIN > $OUTPUT_DIR/waybackurls.txt
# Gau
gau --subs $DOMAIN > $OUTPUT_DIR/gau.txt
# Katana
katana -u https://$DOMAIN -jc -c 50 -silent -o $OUTPUT_DIR/katana.txt
echo "[2] Combine and Sort"
cat $OUTPUT_DIR/*.txt | sort -u > $OUTPUT_DIR/all_urls.txt
echo "[3] URL Filtering"
# Parametre içeren URL'ler
grep '?' $OUTPUT_DIR/all_urls.txt > $OUTPUT_DIR/urls_with_params.txt
# JavaScript dosyaları
grep '\.js' $OUTPUT_DIR/all_urls.txt > $OUTPUT_DIR/js_urls.txt
# Konfigürasyon dosyaları
grep -E '\.(env|ini|conf|config|xml|json|yaml|yml)' $OUTPUT_DIR/all_urls.txt > $OUTPUT_DIR/config_urls.txt
# API endpoint'leri
grep -E '/(api|v1|v2|rest|graphql)/' $OUTPUT_DIR/all_urls.txt > $OUTPUT_DIR/api_urls.txt
# Admin endpoint'leri
grep -E '/admin|/dashboard|/panel|/console' $OUTPUT_DIR/all_urls.txt > $OUTPUT_DIR/admin_urls.txt
echo "[4] Parameter Extraction"
cat $OUTPUT_DIR/urls_with_params.txt | unfurl keys | sort -u > $OUTPUT_DIR/parameters.txt
echo "[5] Live URL Check"
httpx -l $OUTPUT_DIR/all_urls.txt -silent -o $OUTPUT_DIR/live_urls.txt -title -status-code -tech-detect
echo "[6] Result"
echo "Total URLs: $(cat $OUTPUT_DIR/all_urls.txt | wc -l)"
echo "URLs with params: $(cat $OUTPUT_DIR/urls_with_params.txt | wc -l)"
echo "Live URLs: $(cat $OUTPUT_DIR/live_urls.txt | wc -l)"
echo "Unique Parameters: $(cat $OUTPUT_DIR/parameters.txt | wc -l)"
Wayback URL Kullanımında Dikkat Edilecek Noktalar:
1. Rate Limiting
Wayback API'si rate limiting uygulayabilir. Çok hızlı istek göndermeyin.
Öneri: --threads 10 veya --delay 1 gibi parametreler kullanın.
2. Tarih Filtreleme
bash
# Sadece belirli tarihler arası
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=text&from=2020&to=2022" | awk '{print $2}'
# Son 1 yıl
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=text&from=$(date -d '1 year ago' +%Y%m%d)" | awk '{print $2}'
3. Subdomain Filtreleme
bash
# Sadece ana domain
grep "hedef.com" urls.txt
# Sadece subdomain'ler
grep -E "[a-zA-Z0-9-]+\.hedef\.com" urls.txt
Wayback URL'lerden Bulunabilecek Hassas Bilgiler:
Bilgi Türü Örnek
API Keys api_key=abc123, apikey=xyz
Secret Keys secret=abc, key=def
Tokens token=abc123, access_token=xyz
Credentials username=admin, password=pass
Konfigürasyon .env, config.php, settings.py
SQL Dump .sql, dump.sql
Log Dosyaları .log, access.log
Backup Dosyaları .backup, .bak, ~
Unutulmuş Endpoint'ler /admin, /api/v1, /test
Unutulmuş Parametreler debug=true, test=1
Wayback URL Keşfi Kontrol Listesi:
A. URL Toplama:
Waybackurls kullanıldı mı?
Gau kullanıldı mı?
Katana kullanıldı mı?
CDX API kullanıldı mı?
B. Filtreleme:
Parametre filtrelemesi yapıldı mı?
Uzantı filtrelemesi yapıldı mı?
Path filtrelemesi yapıldı mı?
Tarih filtrelemesi yapıldı mı?
C. Doğrulama:
Canlı URL'ler tespit edildi mi?
Hassas dosyalar tespit edildi mi?
Unutulmuş endpoint'ler tespit edildi mi?
Wayback URL Kullanımı, Internet Archive'ın Wayback Machine servisinden ve diğer arşiv kaynaklarından, bir hedef domain'e ait tarihsel URL'leri toplama sürecidir. Bug bounty ve pentest'lerde en kritik keşif aşamalarından biridir. Çünkü geçmişte var olan ancak artık aktif olmayan veya unutulmuş endpoint'ler, parametreler ve dosyalar, güvenlik zafiyetleri içerebilir.
Wayback Machine Nedir?
Wayback Machine, Internet Archive'ın 1996'dan beri interneti arşivleyen servisidir. Web sayfalarının anlık görüntülerini (snapshot) saklar. Bu arşivler, bir hedef domain'in zaman içindeki değişimini, eski endpoint'lerini, unutulmuş parametrelerini ve hassas dosyalarını keşfetmek için kullanılır.
Wayback URL Toplama Yöntemleri:
1. Web Arayüzü (Manual)
Adres: https://web.archive.org
Kullanım:
https://web.archive.org/web/*/https://hedef.com/* adresine git
Tarihsel snapshot'ları görüntüle
URL'leri manuel olarak topla
Örnek URL:
text
2. API ile Toplama
API Endpoint:
text
Kullanım (cURL):
bash
# JSON formatında
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=json" | jq -r '.[1:][][2]'
# Sadece URL'ler
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=text" | awk '{print $2}'
Wayback URL Araçları:
1. Waybackurls (Tom Nomnom)
Açıklama: Wayback Machine'den URL toplama aracı.
Kurulum:
bash
go install github.com/tomnomnom/waybackurls@latest
Kullanım:
bash
# Temel
waybackurls hedef.com
# Subdomain'ler ile
waybackurls hedef.com | grep "hedef.com"
# Çıktı
waybackurls hedef.com > urls.txt
# Sadece parametre içerenler
waybackurls hedef.com | grep '?'
# Sadece belirli uzantılar
waybackurls hedef.com | grep -E '\.(php|asp|aspx|jsp|do|action|api)'
2. Gau (GetAllUrls - Tom Nomnom)
Açıklama: Wayback Machine + CommonCrawl + AlienVault OTX + URLScan'dan URL toplama.
Kurulum:
bash
go install github.com/lc/gau/v2/cmd/gau@latest
Kullanım:
bash
# Temel
gau hedef.com
# Subdomain'ler ile
gau --subs hedef.com
# Thread sayısı
gau --threads 50 hedef.com
# Çıktı
gau hedef.com -o urls.txt
# Sadece belirli kaynaklar
gau --providers wayback,commoncrawl hedef.com
# Çıktı formatı
gau hedef.com --json
3. Katana (ProjectDiscovery)
Açıklama: Modern web crawler. Wayback + canlı crawling kombinasyonu.
Kurulum:
bash
go install github.com/projectdiscovery/katana/cmd/katana@latest
Kullanım:
bash
# Temel crawling
katana -u https://hedef.com
# Wayback ile kombinasyon
katana -u https://hedef.com -jc # JavaScript crawling
# Çıktı
katana -u https://hedef.com -o urls.txt
# Depth ayarı
katana -u https://hedef.com -d 3
# JSON çıktı
katana -u https://hedef.com -json
4. Wayback (Python)
Açıklama: Python ile Wayback Machine'den URL toplama.
Kurulum:
bash
pip install wayback
Kullanım (Python):
python
from wayback import WaybackClient
import json
client = WaybackClient()
def get_wayback_urls(domain):
# URL'leri topla
urls = []
for snapshot in client.search(domain):
urls.append(snapshot.url)
return urls
# Kullanım
urls = get_wayback_urls('hedef.com')
for url in urls:
print(url)
5. Wayback Machine CDX API (Manuel)
Kullanım (Python):
python
import requests
import json
def get_wayback_urls(domain):
url = f"https://web.archive.org/cdx/search/cdx?url={domain}/*&output=json"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
# İlk satır header, sonraki satırlar veri
urls = [row[2] for row in data[1:]]
return urls
return []
# Kullanım
urls = get_wayback_urls('hedef.com')
for url in urls:
print(url)
Kullanım (Bash):
bash
# CDX API ile URL toplama
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=text" | awk '{print $2}'
# Tarih filtreleme
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=text&from=2020" | awk '{print $2}'
# Sadece belirli uzantılar
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*.php&output=text" | awk '{print $2}'
Wayback URL Filtreleme Teknikleri:
1. Parametre Filtreleme
bash
# Sadece parametre içeren URL'ler
waybackurls hedef.com | grep '?'
# Sadece parametre isimleri
waybackurls hedef.com | grep '?' | unfurl keys | sort -u
# Sadece değer içeren parametreler
waybackurls hedef.com | grep '=' | cut -d '=' -f1 | sort -u
2. Uzantı Filtreleme
bash
# Sadece PHP dosyaları
waybackurls hedef.com | grep '\.php'
# Sadece JavaScript dosyaları
waybackurls hedef.com | grep '\.js'
# Sadece konfigürasyon dosyaları
waybackurls hedef.com | grep -E '\.(env|ini|conf|config|xml|json|yaml|yml)'
# Sadece belirli uzantıları hariç tut
waybackurls hedef.com | grep -v -E '\.(jpg|png|gif|css|js|svg|ico)'
3. Path Filtreleme
bash
# Sadece API endpoint'leri
waybackurls hedef.com | grep -E '/(api|v1|v2|rest|graphql)/'
# Sadece admin endpoint'leri
waybackurls hedef.com | grep -E '/admin|/dashboard|/panel|/console'
# Sadece belirli path'ler
waybackurls hedef.com | grep -E '/user|/profile|/account|/login|/reset'
4. Status Code Filtreleme
bash
# Wayback + httpx ile canlı URL'leri kontrol et
waybackurls hedef.com | httpx -silent -status-code | grep -E '200|301|302'
# Sadece 404 olmayanlar
waybackurls hedef.com | httpx -silent -status-code | grep -v 404
Wayback URL Pipeline (Full Automation):
bash
#!/bin/bash
# Full Wayback URL pipeline
DOMAIN=$1
OUTPUT_DIR="wayback_$DOMAIN"
mkdir -p $OUTPUT_DIR
echo "[1] Wayback URL Collection"
# Waybackurls
waybackurls $DOMAIN > $OUTPUT_DIR/waybackurls.txt
# Gau
gau --subs $DOMAIN > $OUTPUT_DIR/gau.txt
# Katana
katana -u https://$DOMAIN -jc -c 50 -silent -o $OUTPUT_DIR/katana.txt
echo "[2] Combine and Sort"
cat $OUTPUT_DIR/*.txt | sort -u > $OUTPUT_DIR/all_urls.txt
echo "[3] URL Filtering"
# Parametre içeren URL'ler
grep '?' $OUTPUT_DIR/all_urls.txt > $OUTPUT_DIR/urls_with_params.txt
# JavaScript dosyaları
grep '\.js' $OUTPUT_DIR/all_urls.txt > $OUTPUT_DIR/js_urls.txt
# Konfigürasyon dosyaları
grep -E '\.(env|ini|conf|config|xml|json|yaml|yml)' $OUTPUT_DIR/all_urls.txt > $OUTPUT_DIR/config_urls.txt
# API endpoint'leri
grep -E '/(api|v1|v2|rest|graphql)/' $OUTPUT_DIR/all_urls.txt > $OUTPUT_DIR/api_urls.txt
# Admin endpoint'leri
grep -E '/admin|/dashboard|/panel|/console' $OUTPUT_DIR/all_urls.txt > $OUTPUT_DIR/admin_urls.txt
echo "[4] Parameter Extraction"
cat $OUTPUT_DIR/urls_with_params.txt | unfurl keys | sort -u > $OUTPUT_DIR/parameters.txt
echo "[5] Live URL Check"
httpx -l $OUTPUT_DIR/all_urls.txt -silent -o $OUTPUT_DIR/live_urls.txt -title -status-code -tech-detect
echo "[6] Result"
echo "Total URLs: $(cat $OUTPUT_DIR/all_urls.txt | wc -l)"
echo "URLs with params: $(cat $OUTPUT_DIR/urls_with_params.txt | wc -l)"
echo "Live URLs: $(cat $OUTPUT_DIR/live_urls.txt | wc -l)"
echo "Unique Parameters: $(cat $OUTPUT_DIR/parameters.txt | wc -l)"
Wayback URL Kullanımında Dikkat Edilecek Noktalar:
1. Rate Limiting
Wayback API'si rate limiting uygulayabilir. Çok hızlı istek göndermeyin.
Öneri: --threads 10 veya --delay 1 gibi parametreler kullanın.
2. Tarih Filtreleme
bash
# Sadece belirli tarihler arası
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=text&from=2020&to=2022" | awk '{print $2}'
# Son 1 yıl
curl -s "https://web.archive.org/cdx/search/cdx?url=hedef.com/*&output=text&from=$(date -d '1 year ago' +%Y%m%d)" | awk '{print $2}'
3. Subdomain Filtreleme
bash
# Sadece ana domain
grep "hedef.com" urls.txt
# Sadece subdomain'ler
grep -E "[a-zA-Z0-9-]+\.hedef\.com" urls.txt
Wayback URL'lerden Bulunabilecek Hassas Bilgiler:
Bilgi Türü Örnek
API Keys api_key=abc123, apikey=xyz
Secret Keys secret=abc, key=def
Tokens token=abc123, access_token=xyz
Credentials username=admin, password=pass
Konfigürasyon .env, config.php, settings.py
SQL Dump .sql, dump.sql
Log Dosyaları .log, access.log
Backup Dosyaları .backup, .bak, ~
Unutulmuş Endpoint'ler /admin, /api/v1, /test
Unutulmuş Parametreler debug=true, test=1
Wayback URL Keşfi Kontrol Listesi:
A. URL Toplama:
Waybackurls kullanıldı mı?
Gau kullanıldı mı?
Katana kullanıldı mı?
CDX API kullanıldı mı?
B. Filtreleme:
Parametre filtrelemesi yapıldı mı?
Uzantı filtrelemesi yapıldı mı?
Path filtrelemesi yapıldı mı?
Tarih filtrelemesi yapıldı mı?
C. Doğrulama:
Canlı URL'ler tespit edildi mi?
Hassas dosyalar tespit edildi mi?
Unutulmuş endpoint'ler tespit edildi mi?
🔒 Bu içeriği görmek için giriş yapın