80,443 - Pentesting Web Methodology
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Web uygulamalarınız, ağınız ve bulutunuz hakkında bir hacker perspektifi edinin
Gerçek iş etkisi olan kritik, istismar edilebilir güvenlik açıklarını bulun ve raporlayın. Saldırı yüzeyini haritalamak, ayrıcalıkları artırmanıza izin veren güvenlik sorunlarını bulmak ve temel kanıtları toplamak için otomatik istismarları kullanmak için 20'den fazla özel aracımızı kullanın, böylece sıkı çalışmanızı ikna edici raporlara dönüştürün.
Web hizmeti en yaygın ve kapsamlı hizmettir ve birçok farklı türde güvenlik açığı bulunmaktadır.
Varsayılan port: 80 (HTTP), 443(HTTPS)
Bu metodolojide, bir alan adını (veya alt alan adını) hedef alacağınızı varsayıyoruz ve sadece bunu. Bu nedenle, keşfedilen her alan adı, alt alan adı veya belirsiz web sunucusu içeren IP için bu metodolojiyi uygulamalısınız.
Çalışan sunucu sürümü için bilinen zafiyetler olup olmadığını kontrol edin. HTTP başlıkları ve yanıtın çerezleri, kullanılan teknolojileri ve/veya sürümü belirlemek için çok yararlı olabilir. Nmap taraması sunucu sürümünü belirleyebilir, ancak whatweb, webtech veya https://builtwith.com/** gibi araçlar da faydalı olabilir:**
Search for web uygulamasının sürüm açıklarını
Farklı iyi bilinen teknolojilerde açıkları bulmak için bazı hileler:
Dikkate alın ki aynı alan farklı portlar, klasörler ve alt alanlar içinde farklı teknolojiler kullanıyor olabilir. Eğer web uygulaması daha önce listelenen herhangi bir iyi bilinen teknoloji/platform veya başka bir şey kullanıyorsa, İnternette yeni hileler aramayı unutmayın (ve bana bildirin!).
Eğer uygulamanın kaynak kodu github'da mevcutsa, uygulamanın kendi başınıza bir Beyaz kutu testi yapmanın yanı sıra, mevcut Siyah Kutu testi için bazı bilgiler yararlı olabilir:
Değişiklik günlüğü veya Readme veya Sürüm dosyası veya web üzerinden erişilebilen sürüm bilgisi içeren herhangi bir şey var mı?
Kimlik bilgileri nasıl ve nerede saklanıyor? Kimlik bilgileri (kullanıcı adları veya şifreler) ile ilgili herhangi bir (erişilebilir?) dosya var mı?
Şifreler düz metin, şifrelenmiş mi yoksa hangi hash algoritması kullanılıyor?
Bir şeyi şifrelemek için herhangi bir anahtar kullanıyor mu? Hangi algoritma kullanılıyor?
Herhangi bir açığı sömürücü olarak bu dosyalara erişebilir misiniz?
Github'da (çözülen ve çözülmeyen) sorularda herhangi bir ilginç bilgi var mı? Veya commit geçmişinde (belki eski bir commit içinde bazı şifreler girişi)?
Eğer bir CMS kullanılıyorsa bir tarayıcı çalıştırmayı unutmayın, belki ilginç bir şey bulunur:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin web siteleri için güvenlik sorunları. (GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal veya (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
Bu noktada, istemci tarafından kullanılan web sunucusu hakkında bazı bilgilere sahip olmalısınız (eğer herhangi bir veri verilmişse) ve test sırasında aklınızda bulundurmanız gereken bazı ipuçları. Şanslıysanız, bir CMS bulmuş ve bazı tarayıcılar çalıştırmış olabilirsiniz.
Bu noktadan itibaren web uygulamasıyla etkileşime geçmeye başlayacağız.
İlginç bilgiler içeren varsayılan sayfalar:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
Ana ve ikincil sayfalardaki yorumları da kontrol edin.
Hataları zorlamak
Web sunucuları, onlara garip veriler gönderildiğinde beklenmedik şekilde davranabilir. Bu, açıklara veya hassas bilgilerin ifşasına yol açabilir.
/whatever_fake.php gibi sahte sayfalara erişin (.aspx, .html, vb.)
Hata oluşturmak için cookie değerlerine ve parametre değerlerine "[]", "]]" ve "[[" ekleyin
URL'nin sonuna /~randomthing/%s
vererek hata oluşturun
PATCH, DEBUG veya FAKE gibi farklı HTTP Fiilleri deneyin
Eğer WebDav etkinse ancak kök klasörde dosya yüklemek için yeterli izinleriniz yoksa, şunları deneyin:
Kaba kuvvet ile kimlik bilgilerini denemek
WebDav aracılığıyla web sayfasındaki bulunan diğer klasörlere dosya yüklemek. Diğer klasörlerde dosya yüklemek için izinleriniz olabilir.
Uygulama, herhangi bir yerde HTTPS kullanıcısını zorlamıyorsa, o zaman MitM'ye karşı savunmasızdır
Uygulama, hassas verileri (şifreler) HTTP kullanarak gönderiyorsa. O zaman bu yüksek bir açıklıktır.
Açıkları kontrol etmek için testssl.sh kullanın (Bug Bounty programlarında muhtemelen bu tür açıklıklar kabul edilmeyecektir) ve açıklıkları yeniden kontrol etmek için a2sv kullanın:
Bilgi SSL/TLS zafiyetleri hakkında:
Web üzerinde bir tür tarayıcı başlatın. Tarayıcının amacı, test edilen uygulamadan mümkün olduğunca fazla yol bulmaktır. Bu nedenle, web taraması ve dış kaynaklar kullanılarak mümkün olduğunca fazla geçerli yol bulunmalıdır.
gospider (go): HTML tarayıcı, JS dosyalarındaki LinkFinder ve dış kaynaklar (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
hakrawler (go): HML tarayıcı, JS dosyaları için LinkFinder ve dış kaynak olarak Archive.org ile.
dirhunt (python): HTML tarayıcı, ayrıca "lezzetli dosyaları" gösterir.
evine (go): Etkileşimli CLI HTML tarayıcı. Ayrıca Archive.org'da arama yapar.
meg (go): Bu araç bir tarayıcı değildir ama faydalı olabilir. Sadece bir dosya ile ana bilgisayarları ve bir dosya ile yolları belirtebilirsiniz ve meg her ana bilgisayardaki her yolu alır ve yanıtı kaydeder.
urlgrab (go): JS işleme yeteneklerine sahip HTML tarayıcı. Ancak, bakımsız görünüyor, önceden derlenmiş versiyonu eski ve mevcut kod derlenmiyor.
gau (go): Dış sağlayıcıları (wayback, otx, commoncrawl) kullanan HTML tarayıcı.
ParamSpider: Bu betik, parametre içeren URL'leri bulacak ve listeleyecektir.
galer (go): JS işleme yeteneklerine sahip HTML tarayıcı.
LinkFinder (python): HTML tarayıcı, JS dosyalarında yeni yollar aramak için JS güzelleştirme yeteneklerine sahip. JSScanner adlı LinkFinder'ın bir sarmalayıcısına da göz atmak faydalı olabilir.
goLinkFinder (go): Hem HTML kaynağında hem de gömülü javascript dosyalarında uç noktaları çıkarmak için. Hata avcıları, kırmızı takım üyeleri, bilgi güvenliği ninja'ları için faydalıdır.
JSParser (python2.7): JavaScript dosyalarından göreli URL'leri ayrıştırmak için Tornado ve JSBeautifier kullanan bir python 2.7 betiği. AJAX isteklerini kolayca keşfetmek için faydalıdır. Bakımsız görünüyor.
relative-url-extractor (ruby): Bir dosya (HTML) verildiğinde, çirkin (minify) dosyalardan göreli URL'leri bulmak ve çıkarmak için şık bir düzenli ifade kullanır.
JSFScan (bash, çeşitli araçlar): JS dosyalarından ilginç bilgiler toplamak için çeşitli araçlar kullanır.
subjs (go): JS dosyalarını bulur.
page-fetch (go): Başsız bir tarayıcıda bir sayfa yükler ve sayfayı yüklemek için yüklenen tüm URL'leri yazdırır.
Feroxbuster (rust): Önceki araçların çeşitli seçeneklerini birleştiren içerik keşif aracı.
Javascript Parsing: JS dosyalarında yol ve parametre bulmak için bir Burp uzantısı.
Sourcemapper: .js.map URL'sini verildiğinde, güzelleştirilmiş JS kodunu alır.
xnLinkFinder: Belirli bir hedef için uç noktaları keşfetmek için kullanılan bir araçtır.
waymore: Wayback makinesinden bağlantıları keşfedin (aynı zamanda yanıtları indirin ve daha fazla bağlantı arayın).
HTTPLoot (go): Form doldurarak tarama yapın ve belirli regex'ler kullanarak hassas bilgileri bulun.
SpiderSuite: Spider Suite, siber güvenlik profesyonelleri için tasarlanmış gelişmiş çok özellikli GUI web güvenliği Tarayıcı/Taraycıdır.
jsluice (go): URL'leri, yolları, sırları ve JavaScript kaynak kodundan diğer ilginç verileri çıkarmak için bir Go paketi ve komut satırı aracı.
ParaForge: ParaForge, parametreleri ve uç noktaları çıkarmak için Burp Suite uzantısıdır ve özelleştirilmiş kelime listeleri oluşturmak için kullanılır.
katana (go): Bunun için harika bir araç.
Crawley (go): Bulabildiği her bağlantıyı yazdırır.
Kök klasörden kaba kuvvet işlemine başlayın ve bu yöntemle bulunan tüm dizinleri ve Tarama ile keşfedilen dizinleri kaba kuvvetle zorlayın (bu kaba kuvvet işlemini özyinelemeli olarak yapabilir ve kullanılan kelime listesinin başına bulunan dizinlerin adlarını ekleyebilirsiniz). Araçlar:
Dirb / Dirbuster - Kali'de dahil, eski (ve yavaş) ama işlevsel. Otomatik imzalı sertifikalara ve özyinelemeli aramaya izin verir. Diğer seçeneklerle karşılaştırıldığında çok yavaş.
Dirsearch (python): Otomatik imzalı sertifikalara izin vermez ama özyinelemeli aramaya izin verir.
Gobuster (go): Otomatik imzalı sertifikalara izin verir, özyinelemeli arama yoktur.
Feroxbuster - Hızlı, özyinelemeli aramayı destekler.
wfuzz wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
ffuf - Hızlı: ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
uro (python): Bu bir tarayıcı değildir ama bulunan URL'lerin listesini vererek "tekrarlanan" URL'leri siler.
Scavenger: Farklı sayfaların burp geçmişinden dizinler oluşturmak için Burp Uzantısı.
TrashCompactor: İşlevselliği tekrarlanan URL'leri kaldırır (js içe aktarımlarına dayanarak).
Chamaleon: Kullanılan teknolojileri tespit etmek için wapalyzer kullanır ve kullanılacak kelime listelerini seçer.
Tavsiye edilen sözlükler:
raft-large-directories-lowercase.txt
directory-list-2.3-medium.txt
RobotsDisallowed/top10000.txt
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
Kaba kuvvetleme veya tarama sırasında yeni bir dizin keşfedildiğinde, bu dizin de Kaba Kuvvet ile zorlanmalıdır.
Kırık bağlantı kontrolörü: Ele geçirilme riski taşıyan HTML'lerde kırık bağlantıları bulun.
Dosya Yedekleri: Tüm dosyaları bulduktan sonra, tüm yürütülebilir dosyaların yedeklerini arayın (".php", ".aspx"...). Yedekleme için yaygın adlandırma varyasyonları: file.ext~, #file.ext#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp ve file.old. Ayrıca bfac veya backup-gen** aracını kullanabilirsiniz.**
Yeni parametreler keşfedin: Arjun, parameth, x8 ve Param Miner gizli parametreleri keşfetmek için kullanılabilir. Mümkünse, her yürütülebilir web dosyasında gizli parametreleri aramayı deneyebilirsiniz.
Arjun tüm varsayılan kelime listeleri: https://github.com/s0md3v/Arjun/tree/master/arjun/db
Param-miner “params” : https://github.com/PortSwigger/param-miner/blob/master/resources/params
Assetnote “parameters_top_1m”: https://wordlists.assetnote.io/
nullenc0de “params.txt”: https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773
Yorumlar: Tüm dosyaların yorumlarını kontrol edin, kimlik bilgileri veya gizli işlevsellik bulabilirsiniz.
Eğer CTF oynuyorsanız, "yaygın" bir hile, bilgiyi sayfanın sağında (tarayıcı ile kaynak kodunu açtığınızda verileri göremeyecek şekilde yüzlerce boşluk kullanarak) gizlemektir. Diğer bir olasılık, birkaç yeni satır kullanmak ve bilgiyi web sayfasının altında bir yorumda gizlemektir.
API anahtarları: Eğer herhangi bir API anahtarı bulursanız, farklı platformların API anahtarlarını nasıl kullanacağınızı gösteren bir kılavuz vardır: keyhacks, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird
Google API anahtarları: Eğer AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik gibi görünen bir API anahtarı bulursanız, anahtarın erişebileceği API'leri kontrol etmek için gmapapiscanner projesini kullanabilirsiniz.
S3 Buckets: Tarama sırasında herhangi bir alt alan adı veya herhangi bir bağlantının bazı S3 bucket ile ilişkili olup olmadığını kontrol edin. Bu durumda, bucket'ın **izinlerini kontrol edin.**
Tarama ve kaba kuvvetleme sırasında ilginç şeyler bulabilirsiniz, bunları not etmelisiniz.
İlginç dosyalar
CSS dosyalarında diğer dosyalara bağlantılar arayın.
Eğer bir .env dosyası bulursanız, API anahtarları, veritabanı şifreleri ve diğer bilgiler bulunabilir.
Eğer API uç noktaları bulursanız, bunları da test etmelisiniz. Bunlar dosya değildir, ama muhtemelen "dosya gibi" görüneceklerdir.
JS dosyaları: Tarama bölümünde, JS dosyalarından yol çıkarabilen birkaç araçtan bahsedilmiştir. Ayrıca, bulunan her JS dosyasını izlemek de ilginç olacaktır, çünkü bazı durumlarda, bir değişiklik, kodda potansiyel bir zafiyetin tanıtıldığını gösterebilir. Örneğin JSMon'u kullanabilirsiniz.
Javascript Deobfuscator ve Unpacker: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator
Javascript Beautifier: http://jsbeautifier.org/, http://jsnice.org/
JsFuck deşifreleme (karakterlerle javascript: "[]!+" https://enkhee-osiris.github.io/Decoder-JSFuck/)
TrainFuck: +72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
Birçok durumda, kullanılan düzenli ifadeleri anlamanız gerekecek. Bu faydalı olacaktır: https://regex101.com/ veya https://pythonium.net/regex
Ayrıca, formların tespit edildiği dosyaları da izlemelisiniz, çünkü bir parametredeki değişiklik veya yeni bir formun görünmesi, potansiyel yeni bir zayıf işlevselliği gösterebilir.
403 Yasaklı/Temel Kimlik Doğrulama/401 Yetkisiz (bypass)
403 & 401 Bypasses502 Proxy Hatası
Eğer herhangi bir sayfa bu kodla yanıt veriyorsa, muhtemelen kötü yapılandırılmış bir proxy vardır. GET https://google.com HTTP/1.1
gibi bir HTTP isteği gönderirseniz (host başlığı ve diğer yaygın başlıklarla), proxy google.com erişmeye çalışacak ve bir** SSRF** bulmuş olacaksınız.
NTLM Kimlik Doğrulama - Bilgi ifşası
Eğer çalışan sunucu kimlik doğrulama istiyorsa Windows ise veya kimlik bilgilerinizi isteyen bir giriş bulursanız (ve alan adı istiyorsa), bir bilgi ifşası provoke edebilirsiniz.
Başlığı gönderin: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
ve NTLM kimlik doğrulamanın nasıl çalıştığı nedeniyle, sunucu "WWW-Authenticate" başlığında iç bilgi (IIS versiyonu, Windows versiyonu...) ile yanıt verecektir.
Bunu nmap eklentisi "http-ntlm-info.nse" kullanarak otomatikleştirebilirsiniz.
HTTP Yönlendirmesi (CTF)
Bir Yönlendirme içinde içerik yerleştirmek mümkündür. Bu içerik kullanıcıya gösterilmeyecek (çünkü tarayıcı yönlendirmeyi gerçekleştirecektir) ama burada gizli bir şey olabilir.
Artık web uygulamasının kapsamlı bir envanteri alındığına göre, birçok olası zafiyeti kontrol etme zamanı. Kontrol listesini burada bulabilirsiniz:
Web Vulnerabilities MethodologyWeb zafiyetleri hakkında daha fazla bilgi için:
Vulnerabiliteleri ekleyebilecek değişiklikler için sayfaları izlemek üzere https://github.com/dgtlmoon/changedetection.io gibi araçlar kullanabilirsiniz.
Web uygulamalarınız, ağınız ve bulutunuz hakkında bir hacker perspektifi edinin
Gerçek iş etkisi olan kritik, istismar edilebilir zafiyetleri bulun ve raporlayın. Saldırı yüzeyini haritalamak, ayrıcalıkları artırmanıza izin veren güvenlik sorunlarını bulmak ve temel kanıtları toplamak için otomatik istismarları kullanmak için 20'den fazla özel aracımızı kullanın, böylece sıkı çalışmanızı ikna edici raporlara dönüştürün.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)