80,443 - Pentesting Web Methodology
Last updated
Last updated
Učite i vežbajte AWS Hacking:HackTricks Obuka AWS Red Team Ekspert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Obuka GCP Red Team Ekspert (GRTE)
Dobijte perspektivu hakera o vašim veb aplikacijama, mreži i oblaku
Pronađite i prijavite kritične, eksploatabilne ranjivosti sa stvarnim poslovnim uticajem. Koristite naših 20+ prilagođenih alata za mapiranje napadačke površine, pronalaženje sigurnosnih problema koji vam omogućavaju da eskalirate privilegije, i koristite automatizovane eksploate za prikupljanje suštinskih dokaza, pretvarajući vaš trud u uverljive izveštaje.
Veb servis je najviše uobičajen i opsežan servis i postoji mnogo različitih tipova ranjivosti.
Podrazumevani port: 80 (HTTP), 443(HTTPS)
U ovoj metodologiji pretpostavljamo da ćete napasti domen (ili poddomen) i samo to. Dakle, trebali biste primeniti ovu metodologiju na svaki otkriveni domen, poddomen ili IP sa neodređenim web serverom unutar opsega.
Proverite da li postoje poznate ranjivosti za verziju servera koja se koristi. HTTP zaglavlja i kolačići odgovora mogu biti veoma korisni za identifikaciju tehnologija i/ili verzije koja se koristi. Nmap sken može identifikovati verziju servera, ali takođe mogu biti korisni alati whatweb, webtech ili https://builtwith.com/:
Search for ranjivosti web aplikacije verzije
Neki trikovi za pronalazak ranjivosti u različitim poznatim tehnologijama koje se koriste:
Uzmite u obzir da isti domen može koristiti različite tehnologije na različitim portovima, folderima i poddomenama. Ako web aplikacija koristi neku poznatu tehnologiju/platformu navedenu ranije ili bilo koju drugu, ne zaboravite da pretražite Internet za nove trikove (i javite mi!).
Ako je izvorni kod aplikacije dostupan na github, pored izvođenja sopstvenog White box testa aplikacije, postoji neka informacija koja bi mogla biti korisna za trenutni Black-Box testiranje:
Da li postoji Change-log ili Readme ili Verzija fajl ili bilo šta sa informacijama o verziji dostupnim putem veba?
Kako i gde su sačuvane akreditivi? Da li postoji neka (dostupna?) datoteka sa akreditivima (korisničkim imenima ili lozinkama)?
Da li su lozinke u običnom tekstu, kriptovane ili koji hash algoritam se koristi?
Da li se koristi neki glavni ključ za kriptovanje nečega? Koji algoritam se koristi?
Možete li pristupiti bilo kojoj od ovih datoteka iskorišćavajući neku ranjivost?
Da li postoji neka zanimljiva informacija na github-u (rešeni i nerešeni) problemi? Ili u istoriji commit-a (možda neka lozinka unesena unutar starog commita)?
Ako se koristi CMS, ne zaboravite da pokrenete skener, možda će se pronaći nešto sočno:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin veb sajtovi za bezbednosne probleme. (GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal ili (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
U ovom trenutku već biste trebali imati neke informacije o web serveru koji koristi klijent (ako su dostupni podaci) i neke trikove koje treba imati na umu tokom testa. Ako imate sreće, možda ste čak pronašli CMS i pokrenuli neki skener.
Od ovog trenutka počinjemo da komuniciramo sa web aplikacijom.
Podrazumevane stranice sa zanimljivim informacijama:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
Takođe proverite komentare na glavnim i sekundarnim stranicama.
Prisiljavanje grešaka
Web serveri mogu nepredvidivo reagovati kada im se šalju čudni podaci. Ovo može otvoriti ranjivosti ili otkriti osetljive informacije.
Pristupite lažnim stranicama kao što su /whatever_fake.php (.aspx,.html,.etc)
Dodajte "[]", "]]", i "[[" u vrednosti kolačića i vrednosti parametara da biste izazvali greške
Generišite grešku tako što ćete uneti /~randomthing/%s
na kraj URL-a
Pokušajte sa različitim HTTP metodama kao što su PATCH, DEBUG ili pogrešnim kao FAKE
Ako otkrijete da je WebDav omogućen ali nemate dovoljno dozvola za otpremanje fajlova u root folder, pokušajte da:
Brute Force kredencijale
Otpremite fajlove putem WebDav u ostale pronađene foldere unutar web stranice. Možda imate dozvole za otpremanje fajlova u drugim folderima.
Ako aplikacija ne prisiljava korisnika na HTTPS u bilo kojem delu, onda je ranjiva na MitM
Ako aplikacija šalje osetljive podatke (lozinke) koristeći HTTP. Tada je to visoka ranjivost.
Koristite testssl.sh za proveru ranjivosti (u Bug Bounty programima verovatno ove vrste ranjivosti neće biti prihvaćene) i koristite a2sv za ponovnu proveru ranjivosti:
Information about SSL/TLS vulnerabilities:
Pokrenite neku vrstu spider unutar veba. Cilj spider-a je da pronađe što više puteva iz testirane aplikacije. Stoga, web crawling i spoljašnji izvori treba da se koriste za pronalaženje što više validnih puteva.
gospider (go): HTML spider, LinkFinder u JS datotekama i spoljašnji izvori (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
hakrawler (go): HML spider, sa LinkFinder-om za JS datoteke i Archive.org kao spoljašnjim izvorom.
dirhunt (python): HTML spider, takođe označava "sočne datoteke".
evine (go): Interaktivni CLI HTML spider. Takođe pretražuje u Archive.org.
meg (go): Ovaj alat nije spider, ali može biti koristan. Možete jednostavno naznačiti datoteku sa hostovima i datoteku sa putevima, a meg će preuzeti svaki put na svakom hostu i sačuvati odgovor.
urlgrab (go): HTML spider sa mogućnostima renderovanja JS-a. Međutim, izgleda da nije održavan, prekompajlirana verzija je stara i trenutni kod se ne kompajlira.
gau (go): HTML spider koji koristi spoljne provajdere (wayback, otx, commoncrawl).
ParamSpider: Ovaj skript će pronaći URL-ove sa parametrima i navesti ih.
galer (go): HTML spider sa mogućnostima renderovanja JS-a.
LinkFinder (python): HTML spider, sa JS beautify mogućnostima sposobnim za pretraživanje novih puteva u JS datotekama. Takođe bi bilo korisno pogledati JSScanner, koji je omotač LinkFinder-a.
goLinkFinder (go): Za ekstrakciju krajnjih tačaka u HTML izvoru i ugrađenim javascript datotekama. Korisno za lovce na greške, red timere, infosec ninje.
JSParser (python2.7): Python 2.7 skript koji koristi Tornado i JSBeautifier za parsiranje relativnih URL-ova iz JavaScript datoteka. Korisno za lako otkrivanje AJAX zahteva. Izgleda da nije održavan.
relative-url-extractor (ruby): Dajući datoteku (HTML) iz nje će izvući URL-ove koristeći pametnu regularnu ekspresiju za pronalaženje i ekstrakciju relativnih URL-ova iz ružnih (minify) datoteka.
JSFScan (bash, nekoliko alata): Prikupi zanimljive informacije iz JS datoteka koristeći nekoliko alata.
subjs (go): Pronađi JS datoteke.
page-fetch (go): Učitaj stranicu u headless pretraživaču i ispiši sve URL-ove učitane za učitavanje stranice.
Feroxbuster (rust): Alat za otkrivanje sadržaja koji kombinuje nekoliko opcija prethodnih alata.
Javascript Parsing: Burp ekstenzija za pronalaženje puteva i parametara u JS datotekama.
Sourcemapper: Alat koji, dajući .js.map URL, dobijate beautified JS kod.
xnLinkFinder: Ovaj alat se koristi za otkrivanje krajnjih tačaka za dati cilj.
waymore: Otkrijte linkove iz wayback mašine (takođe preuzimajući odgovore u wayback i tražeći više linkova).
HTTPLoot (go): Crawlujte (čak i popunjavanjem obrazaca) i takođe pronađite osetljive informacije koristeći specifične regex-e.
SpiderSuite: Spider Suite je napredni GUI web sigurnosni crawler/spider dizajniran za profesionalce u sajber bezbednosti.
jsluice (go): To je Go paket i alat komandne linije za ekstrakciju URL-ova, puteva, tajni i drugih zanimljivih podataka iz JavaScript izvornog koda.
ParaForge: ParaForge je jednostavna Burp Suite ekstenzija za ekstrakciju parametara i krajnjih tačaka iz zahteva za kreiranje prilagođene rečnika za fuzzing i enumeraciju.
katana (go): Sjajan alat za ovo.
Crawley (go): Ispiši svaki link koji može pronaći.
Započnite brute-forcing iz root foldera i budite sigurni da brute-forcujete sve direktorijume pronađene koristeći ovu metodu i sve direktorijume otkrivene od strane Spidering-a (možete ovo brute-forcing rekurzivno i dodati na početak korišćenog rečnika imena pronađenih direktorijuma). Alati:
Dirb / Dirbuster - Uključeno u Kali, staro (i sporo) ali funkcionalno. Dozvoljava automatski potpisane sertifikate i rekurzivno pretraživanje. Previše sporo u poređenju sa drugim opcijama.
Dirsearch (python): Ne dozvoljava automatski potpisane sertifikate, ali dozvoljava rekurzivno pretraživanje.
Gobuster (go): Dozvoljava automatski potpisane sertifikate, nema rekurzivno pretraživanje.
Feroxbuster - Brz, podržava rekurzivno pretraživanje.
wfuzz wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
ffuf - Brz: ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
uro (python): Ovo nije spider, već alat koji, dajući listu pronađenih URL-ova, briše "duplikate" URL-ova.
Scavenger: Burp ekstenzija za kreiranje liste direktorijuma iz burp istorije različitih stranica.
TrashCompactor: Uklanja URL-ove sa duplim funkcionalnostima (na osnovu js uvoza).
Chamaleon: Koristi wapalyzer za otkrivanje korišćenih tehnologija i odabir rečnika za korišćenje.
Preporučeni rečnici:
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
Napomena da svaki put kada se otkrije novi direktorijum tokom brute-forcing-a ili spidering-a, treba ga Brute-Forcovati.
Broken link checker: Pronađite pokvarene linkove unutar HTML-a koji mogu biti podložni preuzimanju.
Backup datoteke: Kada pronađete sve datoteke, potražite backup svih izvršnih datoteka (".php", ".aspx"...). Uobičajene varijacije za imenovanje backup-a su: file.ext~, #file.ext#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp i file.old. Takođe možete koristiti alat bfac ili backup-gen.
Otkrivanje novih parametara: Možete koristiti alate kao što su Arjun, parameth, x8 i Param Miner za otkrivanje skrivenih parametara. Ako možete, mogli biste pokušati da pretražujete skrivene parametre u svakoj izvršnoj web datoteci.
Arjun svi podrazumevani rečnici: 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
Komentari: Proverite komentare svih datoteka, možete pronaći akreditive ili skrivenu funkcionalnost.
Ako se igrate CTF, "uobičajen" trik je da sakrijete informacije unutar komentara na desnoj strani stranice (koristeći stotine razmaka tako da ne vidite podatke ako otvorite izvorni kod u pretraživaču). Druga mogućnost je da koristite nekoliko novih redova i sakrijete informacije u komentaru na dnu web stranice.
API ključevi: Ako pronađete bilo koji API ključ postoji vodič koji ukazuje kako koristiti API ključeve različitih platformi: keyhacks, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird.
Google API ključevi: Ako pronađete bilo koji API ključ koji izgleda kao AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik možete koristiti projekat gmapapiscanner da proverite koje API-jeve ključ može pristupiti.
S3 Buckets: Tokom spidering-a proverite da li je neki subdomen ili neki link povezan sa nekim S3 bucket-om. U tom slučaju, proverite dozvole bucket-a.
Dok obavljate spidering i brute-forcing mogli biste pronaći zanimljive stvari koje treba da primetite.
Zanimljive datoteke
Potražite linkove ka drugim datotekama unutar CSS datoteka.
Ako pronađete .env informacije kao što su API ključevi, lozinke baza podataka i druge informacije mogu se pronaći.
Ako pronađete API krajnje tačke trebalo bi ih takođe testirati. Ove nisu datoteke, ali će verovatno "izgledati kao" njih.
JS datoteke: U sekciji spidering pomenuti su nekoliko alata koji mogu ekstraktovati puteve iz JS datoteka. Takođe, bilo bi zanimljivo pratiti svaku pronađenu JS datoteku, jer u nekim slučajevima, promena može ukazivati na to da je potencijalna ranjivost uvedena u kod. Možete koristiti, na primer, JSMon.
Javascript Deobfuscator i Unpacker: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator.
Javascript Beautifier: http://jsbeautifier.org/, http://jsnice.org/.
JsFuck deobfuscation (javascript sa karakterima:"[]!+" https://ooze.ninja/javascript/poisonjs/).
TrainFuck: +72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
U nekoliko slučajeva biće potrebno da razumete regularne izraze koji se koriste, ovo će biti korisno: https://regex101.com/.
Takođe možete pratiti datoteke u kojima su obrasci otkriveni, jer promena u parametru ili pojava novog obrasca može ukazivati na potencijalnu novu ranjivu funkcionalnost.
403 Forbidden/Basic Authentication/401 Unauthorized (bypass)
403 & 401 Bypasses502 Proxy Error
Ako neka stranica odgovara sa tim kodom, verovatno je to loše konfigurisani proxy. Ako pošaljete HTTP zahtev kao: GET https://google.com HTTP/1.1
(sa host header-om i drugim uobičajenim header-ima), proxy će pokušati da pristupi google.com i pronašli ste SSRF.
NTLM Authentication - Info disclosure
Ako server koji radi traži autentifikaciju je Windows ili pronađete prijavu koja traži vaše akreditive (i traži ime domena), možete izazvati otkrivanje informacija.
Pošaljite header: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
i zbog načina na koji NTLM autentifikacija funkcioniše, server će odgovoriti sa internim informacijama (verzija IIS-a, verzija Windows-a...) unutar header-a "WWW-Authenticate".
Možete automatizovati ovo koristeći nmap plugin "http-ntlm-info.nse".
HTTP Redirect (CTF)
Moguće je staviti sadržaj unutar Redirekcije. Ovaj sadržaj neće biti prikazan korisniku (jer će pretraživač izvršiti redirekciju), ali nešto bi moglo biti sakriveno unutra.
Sada kada je izvršena sveobuhvatna enumeracija web aplikacije, vreme je da proverite mnogo mogućih ranjivosti. Možete pronaći kontrolnu listu ovde:
Web Vulnerabilities MethodologyPronađite više informacija o web ranjivostima na:
Možete koristiti alate kao što su https://github.com/dgtlmoon/changedetection.io za praćenje stranica zbog modifikacija koje bi mogle uvesti ranjivosti.
Dobijte perspektivu hakera na vaše web aplikacije, mrežu i cloud
Pronađite i prijavite kritične, eksploatabilne ranjivosti sa stvarnim poslovnim uticajem. Koristite naših 20+ prilagođenih alata za mapiranje napadačke površine, pronalaženje sigurnosnih problema koji vam omogućavaju da eskalirate privilegije, i koristite automatizovane eksploate za prikupljanje suštinskih dokaza, pretvarajući vaš trud u uverljive izveštaje.
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)