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
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/
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:
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.
Adım 5. Apache Maven kurun, docker örneğini derleyin ve etiketleyin.
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:
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
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!!
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.
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.
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
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.



