80,443 - Pentesting Web Methodology
Eğer hacking kariyerine ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - işe alıyoruz! (akıcı Lehçe yazılı ve konuşma gereklidir).
Temel Bilgiler
Web servisi en yaygın ve kapsamlı hizmettir ve birçok farklı türde zayıflık bulunmaktadır.
Varsayılan port: 80 (HTTP), 443(HTTPS)
Web API Rehberi
pageWeb API PentestingMetodoloji özeti
Bu metodolojide, bir alan adını (veya alt alan adını) hedef alacağınızı varsayacağız. Bu nedenle, bu metodolojiyi belirlenen her alan, alt alan veya kapsam içinde belirlenemeyen bir web sunucusuna uygulamanız gerekmektedir.
Sunucu Sürümü (Zafiyetli mi?)
Tanımlama
Çalışan sunucu sürümü için bilinen zafiyetlerin olup olmadığını kontrol edin. Yanıtın HTTP başlıkları ve çerezleri, kullanılan teknolojileri ve/veya sürümü tanımlamak için oldukça yararlı olabilir. Nmap taraması sunucu sürümünü tanımlayabilir, ancak ayrıca whatweb, webtech veya https://builtwith.com/: gibi araçlar da faydalı olabilir.
Web uygulamasının sürümü için web uygulamasının zayıf noktalarını arayın
Herhangi bir WAF olup olmadığını kontrol edin
Web teknik hileler
Farklı tanınmış teknolojilerdeki zayıf noktaları bulmak için bazı hileler:
Aynı alan adının farklı portlarda, klasörlerde ve alt alan adlarında farklı teknolojiler kullanabileceğini unutmayın. Eğer web uygulaması herhangi bir önce listelenen tanınmış teknoloji/platformu veya başka birini kullanıyorsa, İnternet'te yeni hileler aramayı unutmayın (ve bana bildirin!).
Kaynak Kod İncelemesi
Uygulamanın kaynak kodu github'da mevcutsa, uygulamanın kendi White box testini gerçekleştirmenin yanı sıra, mevcut Black-Box testi için yararlı olabilecek bazı bilgiler bulunmaktadır:
Web üzerinden erişilebilen Değişiklik günlüğü veya Readme veya Sürüm dosyası veya herhangi bir sürüm bilgisi var mı?
Kimlik bilgileri nerede ve nasıl saklanıyor? Kimlik bilgilerini içeren (erişilebilir?) dosya var mı?
Şifreler düz metin mi, şifrelenmiş mi yoksa hangi hashleme algoritması kullanılıyor?
Bir şeyi şifrelemek için herhangi bir anahtar kullanıyor mu? Hangi algoritma kullanılıyor?
Bu dosyalardan herhangi birine bir zayıflık kullanarak erişebilir misiniz?
Github'da (çözülmüş ve çözülmemiş) sorunlarda veya commit geçmişinde (belki eski bir commit içinde girilen bir şifre) ilginç bilgiler var mı?
Otomatik tarayıcılar
Genel amaçlı otomatik tarayıcılar
CMS tarama araçları
Eğer bir CMS kullanılıyorsa, bir tarama aracı çalıştırmayı unutmayın, belki ilginç şeyler bulunabilir:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin web siteleri için güvenlik sorunlarını tarar. (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 zaten sahip olmalısınız (veri verilmişse) ve test sırasında akılda tutulması gereken bazı püf noktaları olmalıdır. Şanslıysanız bir CMS bulmuş olabilir ve bazı tarayıcıları çalıştırmış olabilirsiniz.
Adım adım Web Uygulaması Keşfi
Bu noktadan itibaren web uygulamasıyla etkileşime geçmeye başlayacağız.
İlk kontroller
İ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ı zorlama
Web sunucuları, tuhaf veriler gönderildiğinde beklenmedik şekilde davranabilir. Bu, zafiyetleri veya duyarlı bilgilerin sızdırılmasını açabilir.
/whatever_fake.php (.aspx,.html,.vb gibi) gibi sahte sayfalara erişin
"[]", "]]" ve "[[" gibi çerez değerlerine ve parametre değerlerine hatalar oluşturmak için ekleyin
Hata oluşturmak için URL'nin sonuna
/~randomthing/%s
olarak giriş yaparak hata oluşturunPATCH, DEBUG gibi farklı HTTP Fiillerini veya yanlış olan FAKE gibi deneyin
Dosya yükleme yapabilir misiniz? (PUT fiili, WebDav)
Eğer WebDav'in etkin olduğunu fakat kök klasöre dosya yükleme için yeterli izninizin olmadığını bulursanız şunları deneyin:
Kimlik bilgilerini Brute Force ile deneyin
WebDav aracılığıyla dosya yükleme deneyin ve web sayfasının içindeki bulunan diğer klasörlere. Diğer klasörlere dosya yükleme izniniz olabilir.
SSL/TLS zafiyetleri
Uygulama herhangi bir yerde HTTPS kullanımını zorlamıyorsa, o zaman MitM'ye karşı savunmasızdır
Uygulama HTTP kullanarak hassas verileri (şifreler) gönderiyorsa. Bu yüksek bir zafiyettir.
testssl.sh kullanarak zafiyetleri kontrol edin (Hata Ödülü programlarında muhtemelen bu tür zafiyetler kabul edilmeyecektir) ve zafiyetleri tekrar kontrol etmek için a2sv kullanın:
SSL/TLS Zafiyetleri Hakkında Bilgi:
Ağ Taraması
Web içinde bir tür örümcek başlatın. Örümceğin amacı, test edilen uygulamadan mümkün olan en fazla yol u bulmaktır. Bu nedenle, mümkün olduğunca çok geçerli yol bulmak için web taraması ve harici kaynaklar kullanılmalıdır.
gospider (go): HTML örümcek, JS dosyalarında LinkFinder ve harici kaynaklar (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
hakrawler (go): HTML örümcek, JS dosyalarında LinkFinder ve harici kaynak olarak Archive.org.
dirhunt (python): HTML örümcek, ayrıca "önemli dosyaları" belirtir.
evine (go): Etkileşimli CLI HTML örümcek. Ayrıca Archive.org'da arama yapar.
meg (go): Bu araç bir örümcek değil ama yararlı olabilir. Sadece her bir ana bilgisayarda bir dosya ve bir yol dosyası belirtin ve meg her yolu her ana bilgisayarda alacak ve yanıtı kaydedecek.
urlgrab (go): JS işleme yetenekleri olan HTML örümcek. Ancak, bakımsız gibi görünüyor, derlenmiş sürüm eski ve mevcut kod derlenmiyor.
gau (go): Harici sağlayıcıları kullanan HTML örümcek (wayback, otx, commoncrawl).
ParamSpider: Bu betik parametre içeren URL'leri bulacak ve listeleyecektir.
galer (go): JS işleme yetenekleri olan HTML örümcek.
LinkFinder (python): JS dosyalarında yeni yollar arayabilen JS güzelleştirme yeteneklerine sahip HTML örümcek. Ayrıca JSScanner 'a da bakmak faydalı olabilir, bu, LinkFinder'ın bir sarmalayıcısıdır.
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ımlar, bilgi güvenliği ninjaları için kullanışlıdır.
JSParser (python2.7): AJAX isteklerini kolayca keşfetmek için Tornado ve JSBeautifier kullanan bir python 2.7 betiği. Bakımsız gibi görünüyor.
relative-url-extractor (ruby): Bir dosya (HTML) verildiğinde, çirkin (minify) dosyalardan göreceli URL'leri bulmak ve çıkarmak için nifty düzenli ifade kullanır.
JSFScan (bash, birkaç araç): Birkaç aracı kullanarak JS dosyalarından ilginç bilgiler toplar.
subjs (go): JS dosyalarını bulur.
page-fetch (go): Bir sayfayı başsız bir tarayıcıda yükler ve sayfayı yüklemek için yüklenen tüm URL'leri yazdırır.
Feroxbuster (rust): Önceki araçların birkaç seçeneğini karıştıran içerik keşif aracı.
Javascript Parsing: JS dosyalarında yol ve parametreleri bulmak için bir Burp uzantısı.
Sourcemapper: .js.map URL'si verildiğinde güzel JS kodunu alacak bir araç
xnLinkFinder: Belirli bir hedef için uç noktaları keşfetmek için kullanılan bir araç.
waymore: Wayback machine'den bağlantıları keşfedin (ayrıca wayback'ten yanıtları indirin ve daha fazla bağlantı arayın
HTTPLoot (go): (Formları doldurarak bile) tarama yapın ve özel regex'leri kullanarak hassas bilgileri bulun.
SpiderSuite: Spider Suite, siber güvenlik uzmanları için tasarlanmış gelişmiş çok özellikli GUI web güvenliği Tarama/Örümcek aracıdır.
jsluice (go): JavaScript kaynak kodundan URL'ler, yollar, sırlar ve diğer ilginç verileri çıkarmak için Go paketi ve komut satırı aracı.
ParaForge: Parametreleri ve uç noktaları çıkarmak için bir Burp Suite uzantısı olan basit bir Burp Suite uzantısı.
katana (go): Bu için harika bir araç.
Dizinler ve Dosyaları Kaba Kuvvet ile Deneme
Kök klasöründen kaba kuvvet uygulamaya başlayın ve bu yöntemle bulunan tüm dizinleri ve Örümcek tarafından keşfedilen tüm dizinleri kaba kuvvet uygulayarak (bu kaba kuvveti tekrarlayarak ve bulunan dizinlerin adlarını kullanılan kelime listesinin başına ekleyerek yapabilirsiniz). Araçlar:
Dirb / Dirbuster - Kali'de bulunur, eski (ve yavaş) ama işlevsel. Otomatik imzalı sertifikalara ve tekrarlayan aramaya izin verir. Diğer seçeneklerle karşılaştırıldığında çok yavaş.
Dirsearch (python): Otomatik imzalı sertifikalara izin vermez ama tekrarlayan aramaya izin verir.
Gobuster (go): Otomatik imzalı sertifikalara izin verir, tekrarlayan arama yapmaz.
Feroxbuster - Hızlı, tekrarlayan 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 örümcek değil, bulunan URL'lerin listesini "tekrarlanan" URL'leri silmek için kullanacak bir araçtır.
Scavenger: Farklı sayfaların burp geçmişinden dizin listesi oluşturmak için bir Burp Uzantısı
TrashCompactor: (js içe aktarmalara dayalı) yinelenen işlevselliklere sahip URL'leri kaldırır.
Chamaleon: Kullanılan teknolojileri tespit etmek ve kullanılacak kelime listelerini seçmek için wapalyzer'ı kullanan bir araç.
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
Not: Herhangi bir brute-force veya spidering sırasında yeni bir dizin keşfedildiğinde, Brute-Force edilmelidir.
Her bulunan dosyada ne kontrol edilmelidir
Bozuk bağlantı kontrolcüsü: Ele geçirilebilecek HTML içindeki bozuk bağlantıları bulun
Dosya Yedekleri: Tüm dosyaları bulduktan sonra, tüm yürütülebilir dosyaların yedeklerini arayın (".php", ".aspx"...). Bir yedek dosyanın adlandırılması için yaygın 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'i kullanabilirsiniz.
Yeni parametreler keşfedin: Gizli parametreleri keşfetmek için Arjun, parameth, x8 ve Param Miner **gibi araçları kullanabilirsiniz. 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.
CTF oynuyorsanız, bir "ortak" hile, bilgileri sayfanın sağ tarafındaki yorumların içine gizlemektir (tarayıcıda kaynak kodunu açtığınızda verileri görmemeniz için yüzlerce boşluk kullanarak). Diğer bir olasılık da birkaç yeni satır kullanarak ve web sayfasının altındaki bir yorumda bilgileri gizlemektir.
API anahtarları: Eğer herhangi bir API anahtarı bulursanız, farklı platformların API anahtarlarını nasıl kullanılacağını gösteren bir rehber vardır: keyhacks, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird
Google API anahtarları: Eğer AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik gibi bir API anahtarı bulursanız, anahtarın hangi API'lere erişebileceğini kontrol etmek için gmapapiscanner projesini kullanabilirsiniz.
S3 Buckets: Spidering yaparken, herhangi bir alt alan adının veya herhangi bir bağlantının bir S3 bucket ile ilişkili olup olmadığına bakın. Bu durumda, bucket'ın izinlerini kontrol edin.
Özel bulgular
Spidering ve brute-force yaparken dikkat etmeniz gereken ilginç şeyler bulabilirsiniz.
İlginç dosyalar
CSS dosyaları içindeki diğer dosyalara bağlantıları arayın.
Eğer bir .git dosyası bulursanız, bazı bilgiler çıkarılabilir.
Eğer bir .env dosyası bulursanız, api anahtarları, veritabanı şifreleri ve diğer bilgiler bulunabilir.
Eğer API uç noktaları bulursanız, onları da test etmelisiniz. Bunlar dosyalar değil, ancak muhtemelen onlara "benzer" olacaklar.
JS dosyaları: Spidering bölümünde JS dosyalarından yol çıkarabilen birkaç araç belirtilmiştir. Ayrıca, bulunan her JS dosyasını izlemek ilginç olabilir, çünkü bazı durumlarda, bir değişiklik potansiyel bir güvenlik açığına neden olmuş olabilir. Ö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 deobfuscation (karakterlerle birlikte javascript:"[]!+" https://ooze.ninja/javascript/poisonjs/)
TrainFuck:
+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
Birkaç durumda kullanılan düzenli ifadeleri anlamanız gerekecek, bu yararlı olacaktır: https://regex101.com/
Ayrıca, formların tespit edildiği dosyaları izlemelisiniz, çünkü parametrelerde bir değişiklik veya yeni bir formun görünmesi potansiyel olarak yeni bir zayıf işlevsellik belirtisi olabilir.
403 Forbidden/Basic Authentication/401 Unauthorized (atlatma)
page403 & 401 Bypasses502 Proxy Hatası
Eğer herhangi bir sayfa bu kodla yanıt verirse, muhtemelen kötü yapılandırılmış bir proxydir. Eğer 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'a erişmeye çalışacak ve bir SSRF bulmuş olacaksınız.
NTLM Kimlik Doğrulama - Bilgi sızdırma
Kimlik doğrulaması isteyen çalışan sunucu Windows ise veya kimlik bilgilerinizi isteyen bir giriş bulursanız (ve alan adı isteniyorsa), bir bilgi sızdırma provoke edebilirsiniz.
“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
başlığını gönderin ve NTLM kimlik doğrulamanın nasıl çalıştığından dolayı sunucu, "WWW-Authenticate" başlığı içinde iç bilgilerle (IIS sürümü, Windows sürümü...) yanıt verecektir.
Bunu "http-ntlm-info.nse" nmap eklentisi kullanarak otomatikleştirebilirsiniz.
HTTP Yönlendirmesi (CTF)
Bir Yönlendirme içine içerik yerleştirmek mümkündür. Bu içerik kullanıcıya gösterilmeyecek (tarayıcı yönlendirmeyi gerçekleştireceği için), ancak içinde bir şey gizlenebilir.
Web Güvenlik Açıklıklarının Kontrol Edilmesi
Web uygulamasının kapsamlı bir numaralandırılmasının yapıldığı şimdi birçok olası güvenlik açığı için kontrol zamanı. Kontrol listesini burada bulabilirsiniz:
pageWeb Vulnerabilities MethodologyWeb açıklıkları hakkında daha fazla bilgi bulun:
Sayfaları Değişiklikler İçin İzleme
Sayfalarda olası güvenlik açıklıkları ekleyebilecek değişiklikleri izlemek için https://github.com/dgtlmoon/changedetection.io gibi araçları kullanabilirsiniz.
Eğer hacking kariyerine ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - işe alıyoruz! (akıcı şekilde Lehçe yazılı ve konuşma gereklidir).
HackTricks Otomatik Komutları
Last updated