Hoşgeldin Misafir

😈CVE-2022–42889 (Text4Shell/ACT4Shell) Nedir ? Konu Anlatımı 😈

SurHan

28 Kas 2017
4,186 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
turkhacks-logo-2024.png



😈CVE-2022–42889 (Text4Shell/ACT4Shell) Nedir ? Konu Anlatımı 😈
Bu makalede, Apache Commons içindeki Text4Shell açığının sömürülmesine dair bir ilerleme kılavuzu sunacağım. Bu açık, Alvaro Muñoz tarafından keşfedilmiş olup, Java kütüphanesi Apache Commons Text (ACT) sürümleri 1.5 ile 1.9'u etkilemektedir ve CVSS puanı 9.8'dir. Doğru koşullar sağlandığında, bu kritik bir güvenlik açığıdır ve bir kanıt-of-kavramı (proof-of-concept) kurmak oldukça kolaydır.

Sömürü Genel Bakış
Bu belirli Uzaktan Kod Yürütme (RCE) açığının etkisi, Apache Commons Text'teki amaçlanan işlevsellik farklılıkları nedeniyle Log4Shell'a denk gelmeyebilir. ACT, değişken interpolasyonu kullanarak özelliklerin dinamik olarak değerlendirilmesine ve genişletilmesine izin verir. ACT'nin bir interpolasyon için belirli bir formatı vardır.
Format "${prefix:adı}" şeklindedir, burada "prefix", interpolasyonu gerçekleştiren org.apache.commons.text.lookup.StringLookup örneğini bulmak için kullanılır. Bu varsayılan Arama örneklerinin bir kümesi, uzaktan keyfi kod yürütümüne neden olabilecek interpolatörleri içeriyordu.

Kavram Kanıtı Laboratuvarı Bilgisi
Bu açığı/sömürüyü anlamak için bir kanıt-of-kavram (proof-of-concept) laboratuvarı kurmak, açık kaynak topluluğu sayesinde hızlı ve kolaydır. Bu kılavuz için, Github'da yakın zamanda U J Karthik tarafından oluşturulan güvenlik açıklı Docker örneğini kullandım. Saldıran makine, 64 bit Parrot OS çalıştıran bir sanal makinedir. Docker içindeki savunmasız ACT sürümünü barındırmak için kullanılan makine, 64 bit Ubuntu 22.10 çalıştıran bir sanal makinadır.

Kurulum: Java, Docker ve Apache Maven
Savunmasız örneği dağıtmak ve çalıştırmak için gereken ortam, aşağıdaki adımları izleyerek kurulabilir:
Adım 1. Kurban makinede (Ubuntu), paketlerin güncellendiğinden ve Java ve Docker'ın yüklendiğinden emin olun. Bunun için aşağıdaki komutu kopyalayarak bir seferde yapılabilir:


Kod:
sudo apt update && sudo apt install openjdk-11-jdk docker.io containerd runc -y

1-1.png


Burada neler oluyor?

Linux kabuğunda && kullanmak, önceki komutun çalıştırıldıktan sonra bir sonraki komutu gerçekleştirir.

Apache Maven ve test uygulamasını kurma

Adım 2. Kurban makinede geçici dizine (/tmp) geçmemiz gerekecek. Daha sonra /opt dizininde Maven'ı indirip kurmamız gerekecek.



Kod:
cd /tmp && wget https://mirrors.estointernet.in/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz && tar -xvf apache-maven-3.6.3-bin.tar.gz && sudo mv apache-maven-3.6.3 /opt/


1666317487752-1.png


Yine aynı şeyler oldu, peki şimdi ne olduğunu açıklayayım. wget komutu Apache Maven 3.6.3 .tar dosyasını alıp, ardından tar -xvf komutu onu sıkıştırdı ve sıkıştırılmamış kopyayı /opt dizinine taşıdık.

Adım 3. İndirilen Apache Maven paketi için çevresel değişkenleri ayarlamayı unutmayın ve Github'dan bu tek satırlık komutu kullanarak zafiyetli örneği kurun.
Kod:
M2_HOME='/opt/apache-maven-3.6.3' && PATH="$M2_HOME/bin:$PATH" && export PATH

Aşağıdaki iki komut, Maven'ın indirilmesini ve Docker PoC dizinine geçişi gerçekleştirir.


Kod:
git clone https://github.com/karthikuj/cve-2022-42889-text4shell-docker.git

cd /tmp/cve-2022-42889-text4shell-docker/


Bu adımdaki üç komutun başarıyla çalıştırılması şu şekilde görünmelidir:

ev-1.png


Depo yerel olarak klonlandıktan sonra, Apache Maven'ı kurmak için yeni dizinde çalışmak için cd komutunu kullanmamız gerekecek.
Adım 5. Apache Maven kurun, docker örneğini derleyin ve etiketleyin.


evvv-1.png


Kod:
mvn clean install && sudo docker build --tag=text4shell .

Çevre kurulduktan sonra, kurulumun ve derlemenin tamamlandığını kontrol etmek için çıktıyı gözden geçirin:

er-1.png



Adım 6. Maven ve Docker ortamının başarılı bir şekilde kurulmasının ardından, Docker örneğini başlatın.

Kod:
docker run -p 80:8080 text4shell


ty-1.png


Doğru banner'ın görüntülendiğini doğrulayın, bu, Docker'ın zafiyetli uygulama için önyükleme sırasını başlattığını onaylar.

Adım 7. Kurban makinedeki Docker örneği çalışıyor olmalı ve kurban makinedeki zafiyetli URL'yi ziyaret etmek hemen zafiyeti göstermelidir.

Burada dikkat edin, bu kaynak mevcut değil ancak URL kesinlikle herhangi bir hata döndürmüyor!!


yu-1.png


Bağlantıyı Doğrulama

Adım 8. Saldırı makinesinin (parrot) IP adresini not alın ve ICMP trafiği dinlemeye başlayın.

ui-1.png



Yukarıdaki komutlarda, saldırı makinesi IP'sini/ara yüz adını alıp, docker örneğine giriş-çıkış bağlantısını test etmek için bir dinleyici başlattım. Bu, saldırgan ile zafiyetli ACT çalıştıran sunucu arasındaki uzaktan etkileşimi taklit eder.

Adım 9. Kurban makinesinde (Ubuntu), bağlantıyı doğrulayın ve kurbanın IP adresini not alın.



gh-1.png


Her iki IP adresi de şimdi onaylandı ve saldırı vektörlerini göndermek/doğrulamak için kullanılacaktır. Zafiyetli Apache'nin IP adresi 192.168.108.131 ve saldırı makinesinin IP adresi 192.168.108.129'dur.

Not: Ortamınızdaki IP adresinin aynı olmayacağını bekleyin.


SALDIRI İŞLEMLERİ


DEVAMI İÇİN Beğeni Ve Yorum