80,443 - Pentesting Web Methodology
Ako ste zainteresovani za karijeru u hakovanju i hakovanje onoga što se ne može hakovati - zapošljavamo! (potrebno je tečno poznavanje poljskog jezika u pisanju i govoru).
Osnovne Informacije
Web servis je najčešći i najopsežniji servis i postoji mnogo različitih vrsta ranjivosti.
Podrazumevani port: 80 (HTTP), 443(HTTPS)
Vodič za Web API
Rezime metodologije
U ovoj metodologiji pretpostavljamo da ćete napasti domen (ili poddomen) i samo to. Stoga, trebalo bi primeniti ovu metodologiju na svaki otkriveni domen, poddomen ili IP sa nepoznatim web serverom unutar opsega.
Verzija servera (Ranjiva?)
Identifikacija
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 korišćenih tehnologija i/ili verzije. Nmap skeniranje može identifikovati verziju servera, ali mogu biti korisni i alati whatweb, webtech ili https://builtwith.com/:
Pretraga za ranjivosti veb aplikacije verzije
Provera da li postoji WAF
Trikovi za veb tehnologije
Neki trikovi za pronalaženje ranjivosti u različitim dobro poznatim tehnologijama koje se koriste:
Uzmite u obzir da isti domen može koristiti različite tehnologije na različitim portovima, folderima i poddomenima. Ako veb aplikacija koristi neku od dobro poznatih tehnologija/platformi navedenih ranije ili bilo koju drugu, ne zaboravite da pretražite Internet za nove trikove (i obavestite me!).
Pregled izvornog koda
Ako je izvorni kod aplikacije dostupan na githubu, osim što ćete izvršiti White box testiranje aplikacije, postoji neke informacije koje bi mogle biti korisne za trenutno Black-Box testiranje:
Da li postoji Change-log ili Readme ili fajl sa verzijom ili bilo šta sa informacijama o verziji dostupno putem veba?
Kako i gde su sačuvani kredencijali? Postoji li (dostupan?) fajl sa kredencijalima (korisnička imena ili lozinke)?
Da li su lozinke u čistom tekstu, šifrovane ili koji algoritam heširanja se koristi?
Da li se koristi neki master ključ za šifrovanje nečega? Koji algoritam se koristi?
Možete li pristupiti nekom od ovih fajlova iskorišćavanjem neke ranjivosti?
Da li postoji zanimljiva informacija na githubu (rešeni i nerešeni) problemi? Ili u istoriji commitova (možda neka lozinka uneta u starom commitu)?
Automatski skeneri
Automatski skeneri opšte namene
Skeneri CMS-a
Ako se koristi CMS, ne zaboravite pokrenuti skener, možda pronađete nešto zanimljivo:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin web sajtove zbog sigurnosnih problema. (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 na umu tokom testa. Ako imate sreće, možda ste čak pronašli CMS i pokrenuli neki skener.
Otkrivanje web aplikacija korak po korak
Od ovog trenutka počinjemo da interagujemo sa web aplikacijom.
Početne provere
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
Veb serveri se mogu neočekivano ponašati kada im se šalju čudni podaci. To može otvoriti ranjivosti ili otkriti osetljive informacije.
Pristupite lažnim stranicama poput /bilo_šta_lažno.php (.aspx,.html,.itd)
Dodajte "[]", "]]" i "[[" u vrednosti kolačića i vrednosti parametara da biste izazvali greške
Generišite grešku dajući unos kao
/~slučajnost/%s
na kraju URL-aPokušajte sa različitim HTTP glagolima poput PATCH, DEBUG ili pogrešnim poput FAKE
Proverite da li možete otpremiti fajlove (PUT glagol, WebDav)
Ako otkrijete da je WebDav omogućen ali nemate dovoljno dozvola za otpisivanje fajlova u osnovnom folderu, pokušajte:
Bruteforce pristupne podatke
Otpremite fajlove putem WebDav-a u ostale pronađene foldere unutar web stranice. Možda imate dozvole za otpremanje fajlova u drugim folderima.
Ranjivosti SSL/TLS
Ako aplikacija ne forsira korišćenje HTTPS u bilo kom delu, onda je ranjiva na MitM napade
Ako aplikacija šalje osetljive podatke (šifre) putem HTTP. Tada je to visoka ranjivost.
Koristite testssl.sh za provere ranjivosti (U programima za nalaženje grešaka verovatno ove vrste ranjivosti neće biti prihvaćene) i koristite a2sv za ponovnu proveru ranjivosti:
Informacije o ranjivostima SSL/TLS protokola:
Spidering
Pokrenite neku vrstu spajdera unutar veba. Cilj spajdera je pronaći što više putanja kao moguće iz testirane aplikacije. Stoga, veb pretraživanje i spoljni izvori treba da se koriste kako bi se pronašlo što više validnih putanja.
gospider (go): HTML spajder, LinkFinder u JS fajlovima i spoljni izvori (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
hakrawler (go): HTML spajder, sa LinkFinder-om za JS fajlove i Archive.org kao spoljni izvor.
dirhunt (python): HTML spajder, takođe pokazuje "sočne fajlove".
evine (go): Interaktivni CLI HTML spajder. Takođe pretražuje u Archive.org
meg (go): Ovaj alat nije spajder ali može biti koristan. Možete samo naznačiti fajl sa hostovima i fajl sa putanjama i meg će dohvatiti svaku putanju na svakom hostu i sačuvati odgovor.
urlgrab (go): HTML spajder sa mogućnostima JS renderovanja. Međutim, izgleda da nije održavan, prekompajlirana verzija je stara i trenutni kod se ne kompajlira.
gau (go): HTML spajder koji koristi spoljne provajdere (wayback, otx, commoncrawl)
ParamSpider: Ovaj skript će pronaći URL-ove sa parametrima i izlistati ih.
galer (go): HTML spajder sa mogućnostima JS renderovanja.
LinkFinder (python): HTML spajder, sa mogućnostima JS lepote sposoban da traži nove putanje u JS fajlovima. Takođe bi bilo vredno pogledati JSScanner, koji je omotač za LinkFinder.
goLinkFinder (go): Za izdvajanje krajnjih tačaka u HTML izvornom kodu i ugrađenim JS fajlovima. Korisno za lovce na greške, crvene timove, infosec ninje.
JSParser (python2.7): Python 2.7 skript koji koristi Tornado i JSBeautifier za parsiranje relativnih URL-ova iz JavaScript fajlova. Korisno za lako otkrivanje AJAX zahteva. Izgleda da nije održavan.
relative-url-extractor (ruby): Dajući fajl (HTML) izvući će URL-ove iz njega koristeći pametne regularne izraze za pronalaženje i izdvajanje relativnih URL-ova iz ružnih (minifikovanih) fajlova.
JSFScan (bash, nekoliko alata): Sakupljanje interesantnih informacija iz JS fajlova koristeći nekoliko alata.
subjs (go): Pronalaženje JS fajlova.
page-fetch (go): Učitajte stranicu u headless pretraživaču i ispišite sve učitane URL-ove za učitavanje stranice.
Feroxbuster (rust): Alat za otkrivanje sadržaja koji kombinuje nekoliko opcija prethodnih alata
Javascript Parsing: Burp ekstenzija za pronalaženje putanja i parametara u JS fajlovima.
Sourcemapper: Alat koji će vam dati beatificirani JS kod dajući .js.map URL
xnLinkFinder: Ovo je alat koji se koristi za otkrivanje krajnjih tačaka za dati cilj.
waymore: Otkrijte linkove sa wayback mašine (takođe preuzimajući odgovore u wayback i tražeći više linkova
HTTPLoot (go): Pretražujte (čak i popunjavanjem formi) i takođe pronađite osetljive informacije koristeći specifične regularne izraze.
SpiderSuite: Spider Suite je napredni višefunkcionalni GUI web sigurnosni Crawler/Spider dizajniran za profesionalce u oblasti kibernetičke sigurnosti.
jsluice (go): To je Go paket i komandno-linijski alat za izdvajanje URL-ova, putanja, tajni i drugih interesantnih podataka iz izvornog koda JavaScript-a.
ParaForge: ParaForge je jednostavna Burp Suite ekstenzija za izdvajanje parametara i krajnjih tačaka iz zahteva kako bi se kreirala prilagođena lista reči za fuzzing i enumeraciju.
katana (go): Odličan alat za ovo.
Brute Force direktorijuma i fajlova
Započnite brute-forcing od korenskog foldera i budite sigurni da brute-force-ujete sve pronađene direktorijume koristeći ovu metodu i sve direktorijume otkrivene pomoću Spidering-a (možete ovo brute-force-ovati rekurzivno i dodavati na početak korišćene liste reči imena pronađenih direktorijuma). Alati:
Dirb / Dirbuster - Uključen u Kali, star (i spor) ali funkcionalan. Dozvoljava automatski potpisane sertifikate i rekurzivnu pretragu. Previše spor u poređenju sa drugim opcijama.
Dirsearch (python): Ne dozvoljava automatski potpisane sertifikate ali dozvoljava rekurzivnu pretragu.
Gobuster (go): Dozvoljava automatski potpisane sertifikate, nema rekurzivnu pretragu.
Feroxbuster - Brz, podržava rekurzivnu pretragu.
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 spajder već alat koji će, dajući listu pronađenih URL-ova, obrisati "duplirane" URL-ove.
Scavenger: Burp ekstenzija za kreiranje liste direktorijuma iz burp istorije različitih stranica
TrashCompactor: Uklonite URL-ove sa dupliciranim funkcionalnostima (bazirano na js importima)
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 nova direktorijum tokom brute-forcinga ili spideringa, treba ga Brute-Forcovati.
Šta proveriti na svakom pronađenom fajlu
Provera pokvarenih linkova: Pronađite pokvarene linkove unutar HTML-ova koji mogu biti podložni preuzimanju
Rezervne kopije fajlova: Kada pronađete sve fajlove, potražite rezervne kopije svih izvršnih fajlova (".php", ".aspx"...). Uobičajene varijacije za nazivanje rezervne kopije su: file.ext~, #file.ext#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp i file.old. Možete takođe koristiti alat bfac ili backup-gen.
Otkrijte nove parametre: Možete koristiti alate poput Arjun, parameth, x8 i Param Miner za otkrivanje skrivenih parametara. Ako možete, možete pokušati da pronađete skrivene parametre na svakom izvršnom veb fajlu.
Svi podrazumevani wordlistovi Arjuna: 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 fajlova, možete pronaći kredencijale ili skrivenu funkcionalnost.
Ako igrate CTF, "obična" prevara je sakriti informacije unutar komentara na desnoj strani stranice (koristeći stotine razmaka kako ne biste videli podatke ako otvorite izvorni kod pretraživačem). Druga mogućnost je koristiti nekoliko novih linija i sakriti informacije u komentaru na dnu veb stranice.
API ključevi: Ako pronađete bilo koji API ključ postoji vodič koji pokazuje 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-je ključ može pristupiti.
S3 Bucketi: Dok spideringa, proverite da li je bilo koji poddomen ili bilo koji link povezan sa nekim S3 bucketom. U tom slučaju, proverite dozvole bucket-a.
Posebna otkrića
Dok vršite spidering i brute-forcing, možete pronaći interesantne stvari koje treba primetiti.
Interesantni fajlovi
Potražite linkove ka drugim fajlovima unutar CSS fajlova.
Ako pronađete .env informacije poput API ključeva, lozinki za baze podataka i druge informacije mogu biti pronađene.
Ako pronađete API endpointe trebalo bi ih testirati. Ovo nisu fajlovi, ali će verovatno "izgledati kao" fajlovi.
JS fajlovi: U delu o spideringu pomenuti su neki alati koji mogu izvući putanje iz JS fajlova. Takođe bi bilo interesantno pratiti svaki pronađeni JS fajl, jer u nekim situacijama, promena može ukazivati da je potencijalna ranjivost uneta u kod. Možete koristiti na primer JSMon.
Deobfuskator i dekoder JavaScript-a: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator
Ulepšivač JavaScript-a: http://jsbeautifier.org/, http://jsnice.org/
JsFuck deobfuskacija (javascript sa karakterima:"[]!+" https://ooze.ninja/javascript/poisonjs/)
TrainFuck:
+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
U nekoliko situacija će vam biti potrebno razumeti korišćene regularne izraze, ovo će biti korisno: https://regex101.com/
Takođe biste mogli pratiti fajlove gde su otkrivene forme, jer promena u parametru ili pojava nove forme može ukazivati na potencijalno novu ranjivu funkcionalnost.
403 Forbidden/Basic Authentication/401 Unauthorized (bypass)
502 Proxy Error
Ako bilo koja stranica odgovori sa tim kodom, verovatno je loše konfigurisan proxy. Ako pošaljete HTTP zahtev kao: GET https://google.com HTTP/1.1
(sa host zaglavljem i ostalim uobičajenim zaglavljima), proxy će pokušati da pristupi google.com **i otkrićete SSRF.
NTLM Autentikacija - Otkrivanje informacija
Ako pokrenuti server traži autentikaciju Windows-a ili pronađete prijavu koja traži vaše kredencijale (i traži ime domena), možete izazvati otkrivanje informacija.
Pošaljite zaglavlje: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
i zbog toga kako NTLM autentikacija funkcioniše, server će odgovoriti sa internim informacijama (verzija IIS-a, verzija Windows-a...) unutar zaglavlja "WWW-Authenticate".
Ovo možete automatizovati koristeći nmap plugin "http-ntlm-info.nse".
HTTP Preusmerenje (CTF)
Moguće je ubaciti sadržaj unutar Preusmerenja. Taj sadržaj neće biti prikazan korisniku (jer će pretraživač izvršiti preusmerenje), ali nešto bi moglo biti sakriveno unutra.
Provera ranjivosti veb stranica
Sada kada je obavljena sveobuhvatna enumeracija veb aplikacije, vreme je da se provere mnoge moguće ranjivosti. Možete pronaći listu za proveru ovde:
Pronađite više informacija o ranjivostima veb stranica na:
Pratite stranice za promene
Možete koristiti alate poput https://github.com/dgtlmoon/changedetection.io da biste pratili stranice za modifikacije koje bi mogle uneti ranjivosti.
Ako vas zanima hakerska karijera i hakovanje neuhvatljivog - zapošljavamo! (potrebno je tečno poznavanje poljskog jezika u pisanju i govoru).
Automatske komande HackTricks
Last updated