RabbitMQ Etkileşimi İle AMQP İstemcisi Kodlamak! ~ Exploit Geliştirme Kulübü

Bunjo

Uzman üye
14 Ara 2020
1,587
1,886
I Won

6449ti9.gif

pDHFoUY.png



Merhabalar ben Bunjo, bu konuda Ruby'de AMQP protokolüne bir istemci kodlamayı anlatacağım.

pDHFoUY.png


AMQP (Advanced Message Queuing Protocol) Nedir?

AMQP, Advanced Message Queuing Protocol'ün kısaltmasıdır. Bu protokol, uygulamalar arasında güvenilir mesajlaşma sağlamak için tasarlanmış bir ağ protokolüdür.
AMQP, mesajların değiş tokuş edilmesi, sıralanması, yönlendirilmesi ve güvenli bir şekilde iletilmesi için kullanılır.


amqp.png


Bu, farklı uygulamalar arasında veri alışverişi yaparken güvenilirlik, esneklik ve performans sağlar.
AMQP, birçok farklı mesajlaşma senaryosunda kullanılabilir, örneğin dağıtılmış sistemlerde, bulut bilişim ortamlarında ve finansal hizmetler gibi birçok endüstride.



pDHFoUY.png


Tarihçesi

AMQP, 2003 yılında Londra'daki JPMorgan Chase'ten John O'Hara tarafından oluşturuldu.[1][7] AMQP işbirlikçi bir açık çaba olarak tasarlandı. İlk tasarım, 2004 ortasından 2006 ortasına kadar JPMorgan Chase tarafından yapıldı ve bir C komisyoncusu ve protokol dokümantasyonu geliştirmek için iMatix Corporation ile sözleşme imzaladı. 2005 yılında JPMorgan Chase, Cisco Systems, IONA Technologies, iMatix, Red Hat ve Transaction Workflow Innovation Standards Team'i (TWIST) içeren bir çalışma grubu oluşturmak için diğer firmalara başvurdu. Aynı yıl JPMorgan Chase, başlangıçta Java'da ve kısa süre sonra C++'da Apache Qpid'i oluşturmak için Red Hat ile ortaklık kurdu. RabbitMQ bağımsız olarak Erlang'da Rabbit Technologies tarafından geliştirildi ve ardından Microsoft ve StormMQ uygulamaları geldi.

Çalışma grubu, aralarında Bank of America, Barclays, Cisco Systems, Credit Suisse, Deutsche Börse, Goldman Sachs, HCL Technologies Ltd, Progress Software, IIT Software, INETCO Systems Limited, Informatica (29 West dahil), JPMorgan Chase'in de bulunduğu 23 şirkete ulaştı. Microsoft Corporation, my-Channels, Novell, Red Hat, Software AG, Solace Systems, StormMQ, Tervela Inc., TWIST Process Innovations ltd, VMware (Rabit Technologies'i satın aldı) ve WSO2.

2008 yılında, iMatix'in CEO'su ve baş yazılım tasarımcısı Pieter Hintjens, "AMQP'de sorun nedir (ve nasıl düzeltilir)"[8] başlıklı bir makale yazdı ve bunu yakın bir arıza konusunda uyarıda bulunmak, sorunları belirlemek için çalışma grubuna dağıttı. iMatix tarafından görüldü ve AMQP spesifikasyonunu düzeltmenin yollarını önerdi. O zamana kadar iMatix zaten ZeroMQ üzerinde çalışmaya başlamıştı. 2010 yılında Hintjens, iMatix'in AMQP çalışma grubundan ayrılacağını ve önemli ölçüde daha basit ve daha hızlı ZeroMQ lehine AMQP/1.0'ı desteklemeyi planlamadığını duyurdu.[9]

Ağustos 2011'de AMQP çalışma grubu, OASIS üye bölümü olarak yeniden düzenlendiğini duyurdu.[10]


AMQP 1.0, AMQP çalışma grubu tarafından 30 Ekim 2011'de New York'ta bir konferansta yayınlandı. Etkinlikte Microsoft, Red Hat, VMware, Apache, INETCO ve IIT Software, birlikte çalışabilirlik gösteriminde protokolü çalıştıran yazılımı gösterdi. Ertesi gün, 1 Kasım 2011'de, AMQP'nin 1.0 versiyonunu uluslararası açık standartlar süreci yoluyla ilerletmek için bir OASIS Teknik Komitesinin kurulduğu duyuruldu[11]. OASIS'in ilk taslağı Şubat 2012'de yayınlandı;[12] Çalışma Grubu tarafından yayınlananlarla karşılaştırıldığında değişiklikler, daha fazla netlik sağlamak amacıyla yapılan düzenlemelerle sınırlıydı (işlevsel değişiklik yok). İkinci taslak, 20 Haziran'da (yine herhangi bir işlevsel değişiklik olmadan) kamu incelemesi için yayınlandı ve AMQP, 31 Ekim 2012'de OASIS standardı olarak onaylandı.[14]

...

Referans: Advanced Message Queuing Protocol - Wikipedia


pDHFoUY.png



Bunny İle Client Kodlamak

Kurulum:


Bash:
gem install bunny

İlk olarak, bunny kütüphanesi projeye dahil edilir. Bu kütüphane, RabbitMQ ile etkileşim kurmak için kullanılır.
Ruby:
require 'bunny'

Ardından, RabbitMQ sunucusuna bağlanmak için gerekli olan bağlantı seçenekleri belirtilir. Bu örnekte, hedef IP adresi ve bağlantı portu belirtilmiştir.
Ruby:
options = {
  host: 'hedef ip adresi',
  port: 5672
}

Bağlantı oluşturulur ve başlatılır.
Ruby:
connection = Bunny.new(options)
connection.start

Bağlantı üzerinden bir kanal oluşturulur. Kanal, RabbitMQ ile iletişim kurmak için kullanılır.
Ruby:
channel = connection.create_channel

Bir yayın değiş tokuşu (exchange) oluşturulur. Bu örnekte, "logs" adında bir fanout tipinde bir değiş tokuş oluşturulmuştur.
Fanout tipi, mesajları tüm bağlı kuyruklara (queues) gönderir.

Ruby:
exchange = channel.fanout('logs')

Bir mesaj oluşturulur. Eğer kullanıcı bir argüman girmezse, varsayılan olarak "Merhaba Dünya!" mesajı kullanılır.
Eğer argüman girilirse, girilen argümanlar birleştirilerek tek bir mesaj oluşturulur.

Ruby:
message = ARGV.empty? ? 'Merhaba Dünya!' : ARGV.join(' ')

Oluşturulan mesaj yayın değiş tokuşuna gönderilir.
Ruby:
exchange.publish(message)

Son olarak, gönderilen mesajın bilgisini konsola yazdırılır.
Ruby:
puts " [x] Sent #{message}"

Bağlantı kapatılır.
Ruby:
connection.close

Tüm Kod:
Ruby:
# tht bunjo

require 'bunny'

options = {
  host: 'hedef ip adresi',
  port: 5672
}
connection = Bunny.new(options)
connection.start

channel = connection.create_channel
exchange = channel.fanout('logs')

message = ARGV.empty? ? 'Merhaba Dünya!' : ARGV.join(' ')

exchange.publish(message)
puts " [x] Sent #{message}"

connection.close

Dosya Örneği:
Ruby:
# tht bunjo

require 'bunny'

options = {
  host: 'ip adresi',
  port: 5672,
  user: 'kullanıcı adı',
  password: 'sifre'
}
connection = Bunny.new(options)
connection.start

channel = connection.create_channel
exchange = channel.direct('my_channel', durable: true)

message = ARGV.empty? ? 'http://hedef ip:8080/file.zip' : ARGV.join(' ')

exchange.publish(message)
puts " [x] Sent #{message}"

connection.close


Daha fazlası için bknz.

İyi forumlar...
 

Butcherb3y

Uzman üye
1 Eyl 2022
1,547
1,148
Anıtkabir

6449ti9.gif

pDHFoUY.png



Merhabalar ben Bunjo, bu konuda Ruby'de AMQP protokolüne bir istemci kodlamayı anlatacağım.

pDHFoUY.png


AMQP (Advanced Message Queuing Protocol) Nedir?

AMQP, Advanced Message Queuing Protocol'ün kısaltmasıdır. Bu protokol, uygulamalar arasında güvenilir mesajlaşma sağlamak için tasarlanmış bir ağ protokolüdür.
AMQP, mesajların değiş tokuş edilmesi, sıralanması, yönlendirilmesi ve güvenli bir şekilde iletilmesi için kullanılır.


amqp.png


Bu, farklı uygulamalar arasında veri alışverişi yaparken güvenilirlik, esneklik ve performans sağlar.
AMQP, birçok farklı mesajlaşma senaryosunda kullanılabilir, örneğin dağıtılmış sistemlerde, bulut bilişim ortamlarında ve finansal hizmetler gibi birçok endüstride.



pDHFoUY.png


Tarihçesi

AMQP, 2003 yılında Londra'daki JPMorgan Chase'ten John O'Hara tarafından oluşturuldu.[1][7] AMQP işbirlikçi bir açık çaba olarak tasarlandı. İlk tasarım, 2004 ortasından 2006 ortasına kadar JPMorgan Chase tarafından yapıldı ve bir C komisyoncusu ve protokol dokümantasyonu geliştirmek için iMatix Corporation ile sözleşme imzaladı. 2005 yılında JPMorgan Chase, Cisco Systems, IONA Technologies, iMatix, Red Hat ve Transaction Workflow Innovation Standards Team'i (TWIST) içeren bir çalışma grubu oluşturmak için diğer firmalara başvurdu. Aynı yıl JPMorgan Chase, başlangıçta Java'da ve kısa süre sonra C++'da Apache Qpid'i oluşturmak için Red Hat ile ortaklık kurdu. RabbitMQ bağımsız olarak Erlang'da Rabbit Technologies tarafından geliştirildi ve ardından Microsoft ve StormMQ uygulamaları geldi.

Çalışma grubu, aralarında Bank of America, Barclays, Cisco Systems, Credit Suisse, Deutsche Börse, Goldman Sachs, HCL Technologies Ltd, Progress Software, IIT Software, INETCO Systems Limited, Informatica (29 West dahil), JPMorgan Chase'in de bulunduğu 23 şirkete ulaştı. Microsoft Corporation, my-Channels, Novell, Red Hat, Software AG, Solace Systems, StormMQ, Tervela Inc., TWIST Process Innovations ltd, VMware (Rabit Technologies'i satın aldı) ve WSO2.

2008 yılında, iMatix'in CEO'su ve baş yazılım tasarımcısı Pieter Hintjens, "AMQP'de sorun nedir (ve nasıl düzeltilir)"[8] başlıklı bir makale yazdı ve bunu yakın bir arıza konusunda uyarıda bulunmak, sorunları belirlemek için çalışma grubuna dağıttı. iMatix tarafından görüldü ve AMQP spesifikasyonunu düzeltmenin yollarını önerdi. O zamana kadar iMatix zaten ZeroMQ üzerinde çalışmaya başlamıştı. 2010 yılında Hintjens, iMatix'in AMQP çalışma grubundan ayrılacağını ve önemli ölçüde daha basit ve daha hızlı ZeroMQ lehine AMQP/1.0'ı desteklemeyi planlamadığını duyurdu.[9]

Ağustos 2011'de AMQP çalışma grubu, OASIS üye bölümü olarak yeniden düzenlendiğini duyurdu.[10]


AMQP 1.0, AMQP çalışma grubu tarafından 30 Ekim 2011'de New York'ta bir konferansta yayınlandı. Etkinlikte Microsoft, Red Hat, VMware, Apache, INETCO ve IIT Software, birlikte çalışabilirlik gösteriminde protokolü çalıştıran yazılımı gösterdi. Ertesi gün, 1 Kasım 2011'de, AMQP'nin 1.0 versiyonunu uluslararası açık standartlar süreci yoluyla ilerletmek için bir OASIS Teknik Komitesinin kurulduğu duyuruldu[11]. OASIS'in ilk taslağı Şubat 2012'de yayınlandı;[12] Çalışma Grubu tarafından yayınlananlarla karşılaştırıldığında değişiklikler, daha fazla netlik sağlamak amacıyla yapılan düzenlemelerle sınırlıydı (işlevsel değişiklik yok). İkinci taslak, 20 Haziran'da (yine herhangi bir işlevsel değişiklik olmadan) kamu incelemesi için yayınlandı ve AMQP, 31 Ekim 2012'de OASIS standardı olarak onaylandı.[14]

...

Referans: Advanced Message Queuing Protocol - Wikipedia


pDHFoUY.png



Bunny İle Client Kodlamak

Kurulum:


Bash:
gem install bunny

İlk olarak, bunny kütüphanesi projeye dahil edilir. Bu kütüphane, RabbitMQ ile etkileşim kurmak için kullanılır.
Ruby:
require 'bunny'

Ardından, RabbitMQ sunucusuna bağlanmak için gerekli olan bağlantı seçenekleri belirtilir. Bu örnekte, hedef IP adresi ve bağlantı portu belirtilmiştir.
Ruby:
options = {
  host: 'hedef ip adresi',
  port: 5672
}

Bağlantı oluşturulur ve başlatılır.
Ruby:
connection = Bunny.new(options)
connection.start

Bağlantı üzerinden bir kanal oluşturulur. Kanal, RabbitMQ ile iletişim kurmak için kullanılır.
Ruby:
channel = connection.create_channel

Bir yayın değiş tokuşu (exchange) oluşturulur. Bu örnekte, "logs" adında bir fanout tipinde bir değiş tokuş oluşturulmuştur.
Fanout tipi, mesajları tüm bağlı kuyruklara (queues) gönderir.

Ruby:
exchange = channel.fanout('logs')

Bir mesaj oluşturulur. Eğer kullanıcı bir argüman girmezse, varsayılan olarak "Merhaba Dünya!" mesajı kullanılır.
Eğer argüman girilirse, girilen argümanlar birleştirilerek tek bir mesaj oluşturulur.

Ruby:
message = ARGV.empty? ? 'Merhaba Dünya!' : ARGV.join(' ')

Oluşturulan mesaj yayın değiş tokuşuna gönderilir.
Ruby:
exchange.publish(message)

Son olarak, gönderilen mesajın bilgisini konsola yazdırılır.
Ruby:
puts " [x] Sent #{message}"

Bağlantı kapatılır.
Ruby:
connection.close

Tüm Kod:
Ruby:
# tht bunjo

require 'bunny'

options = {
  host: 'hedef ip adresi',
  port: 5672
}
connection = Bunny.new(options)
connection.start

channel = connection.create_channel
exchange = channel.fanout('logs')

message = ARGV.empty? ? 'Merhaba Dünya!' : ARGV.join(' ')

exchange.publish(message)
puts " [x] Sent #{message}"

connection.close

Dosya Örneği:
Ruby:
# tht bunjo

require 'bunny'

options = {
  host: 'ip adresi',
  port: 5672,
  user: 'kullanıcı adı',
  password: 'sifre'
}
connection = Bunny.new(options)
connection.start

channel = connection.create_channel
exchange = channel.direct('my_channel', durable: true)

message = ARGV.empty? ? 'http://hedef ip:8080/file.zip' : ARGV.join(' ')

exchange.publish(message)
puts " [x] Sent #{message}"

connection.close


Daha fazlası için bknz.

İyi forumlar...
Eline sağlık yine çok güzel bir konu
 

ACE Veen

Uzman üye
4 Şub 2023
1,100
554
Belirsiz

6449ti9.gif

pDHFoUY.png



Merhabalar ben Bunjo, bu konuda Ruby'de AMQP protokolüne bir istemci kodlamayı anlatacağım.

pDHFoUY.png


AMQP (Advanced Message Queuing Protocol) Nedir?

AMQP, Advanced Message Queuing Protocol'ün kısaltmasıdır. Bu protokol, uygulamalar arasında güvenilir mesajlaşma sağlamak için tasarlanmış bir ağ protokolüdür.
AMQP, mesajların değiş tokuş edilmesi, sıralanması, yönlendirilmesi ve güvenli bir şekilde iletilmesi için kullanılır.


amqp.png


Bu, farklı uygulamalar arasında veri alışverişi yaparken güvenilirlik, esneklik ve performans sağlar.
AMQP, birçok farklı mesajlaşma senaryosunda kullanılabilir, örneğin dağıtılmış sistemlerde, bulut bilişim ortamlarında ve finansal hizmetler gibi birçok endüstride.



pDHFoUY.png


Tarihçesi

AMQP, 2003 yılında Londra'daki JPMorgan Chase'ten John O'Hara tarafından oluşturuldu.[1][7] AMQP işbirlikçi bir açık çaba olarak tasarlandı. İlk tasarım, 2004 ortasından 2006 ortasına kadar JPMorgan Chase tarafından yapıldı ve bir C komisyoncusu ve protokol dokümantasyonu geliştirmek için iMatix Corporation ile sözleşme imzaladı. 2005 yılında JPMorgan Chase, Cisco Systems, IONA Technologies, iMatix, Red Hat ve Transaction Workflow Innovation Standards Team'i (TWIST) içeren bir çalışma grubu oluşturmak için diğer firmalara başvurdu. Aynı yıl JPMorgan Chase, başlangıçta Java'da ve kısa süre sonra C++'da Apache Qpid'i oluşturmak için Red Hat ile ortaklık kurdu. RabbitMQ bağımsız olarak Erlang'da Rabbit Technologies tarafından geliştirildi ve ardından Microsoft ve StormMQ uygulamaları geldi.

Çalışma grubu, aralarında Bank of America, Barclays, Cisco Systems, Credit Suisse, Deutsche Börse, Goldman Sachs, HCL Technologies Ltd, Progress Software, IIT Software, INETCO Systems Limited, Informatica (29 West dahil), JPMorgan Chase'in de bulunduğu 23 şirkete ulaştı. Microsoft Corporation, my-Channels, Novell, Red Hat, Software AG, Solace Systems, StormMQ, Tervela Inc., TWIST Process Innovations ltd, VMware (Rabit Technologies'i satın aldı) ve WSO2.

2008 yılında, iMatix'in CEO'su ve baş yazılım tasarımcısı Pieter Hintjens, "AMQP'de sorun nedir (ve nasıl düzeltilir)"[8] başlıklı bir makale yazdı ve bunu yakın bir arıza konusunda uyarıda bulunmak, sorunları belirlemek için çalışma grubuna dağıttı. iMatix tarafından görüldü ve AMQP spesifikasyonunu düzeltmenin yollarını önerdi. O zamana kadar iMatix zaten ZeroMQ üzerinde çalışmaya başlamıştı. 2010 yılında Hintjens, iMatix'in AMQP çalışma grubundan ayrılacağını ve önemli ölçüde daha basit ve daha hızlı ZeroMQ lehine AMQP/1.0'ı desteklemeyi planlamadığını duyurdu.[9]

Ağustos 2011'de AMQP çalışma grubu, OASIS üye bölümü olarak yeniden düzenlendiğini duyurdu.[10]


AMQP 1.0, AMQP çalışma grubu tarafından 30 Ekim 2011'de New York'ta bir konferansta yayınlandı. Etkinlikte Microsoft, Red Hat, VMware, Apache, INETCO ve IIT Software, birlikte çalışabilirlik gösteriminde protokolü çalıştıran yazılımı gösterdi. Ertesi gün, 1 Kasım 2011'de, AMQP'nin 1.0 versiyonunu uluslararası açık standartlar süreci yoluyla ilerletmek için bir OASIS Teknik Komitesinin kurulduğu duyuruldu[11]. OASIS'in ilk taslağı Şubat 2012'de yayınlandı;[12] Çalışma Grubu tarafından yayınlananlarla karşılaştırıldığında değişiklikler, daha fazla netlik sağlamak amacıyla yapılan düzenlemelerle sınırlıydı (işlevsel değişiklik yok). İkinci taslak, 20 Haziran'da (yine herhangi bir işlevsel değişiklik olmadan) kamu incelemesi için yayınlandı ve AMQP, 31 Ekim 2012'de OASIS standardı olarak onaylandı.[14]

...

Referans: Advanced Message Queuing Protocol - Wikipedia


pDHFoUY.png



Bunny İle Client Kodlamak

Kurulum:


Bash:
gem install bunny

İlk olarak, bunny kütüphanesi projeye dahil edilir. Bu kütüphane, RabbitMQ ile etkileşim kurmak için kullanılır.
Ruby:
require 'bunny'

Ardından, RabbitMQ sunucusuna bağlanmak için gerekli olan bağlantı seçenekleri belirtilir. Bu örnekte, hedef IP adresi ve bağlantı portu belirtilmiştir.
Ruby:
options = {
  host: 'hedef ip adresi',
  port: 5672
}

Bağlantı oluşturulur ve başlatılır.
Ruby:
connection = Bunny.new(options)
connection.start

Bağlantı üzerinden bir kanal oluşturulur. Kanal, RabbitMQ ile iletişim kurmak için kullanılır.
Ruby:
channel = connection.create_channel

Bir yayın değiş tokuşu (exchange) oluşturulur. Bu örnekte, "logs" adında bir fanout tipinde bir değiş tokuş oluşturulmuştur.
Fanout tipi, mesajları tüm bağlı kuyruklara (queues) gönderir.

Ruby:
exchange = channel.fanout('logs')

Bir mesaj oluşturulur. Eğer kullanıcı bir argüman girmezse, varsayılan olarak "Merhaba Dünya!" mesajı kullanılır.
Eğer argüman girilirse, girilen argümanlar birleştirilerek tek bir mesaj oluşturulur.

Ruby:
message = ARGV.empty? ? 'Merhaba Dünya!' : ARGV.join(' ')

Oluşturulan mesaj yayın değiş tokuşuna gönderilir.
Ruby:
exchange.publish(message)

Son olarak, gönderilen mesajın bilgisini konsola yazdırılır.
Ruby:
puts " [x] Sent #{message}"

Bağlantı kapatılır.
Ruby:
connection.close

Tüm Kod:
Ruby:
# tht bunjo

require 'bunny'

options = {
  host: 'hedef ip adresi',
  port: 5672
}
connection = Bunny.new(options)
connection.start

channel = connection.create_channel
exchange = channel.fanout('logs')

message = ARGV.empty? ? 'Merhaba Dünya!' : ARGV.join(' ')

exchange.publish(message)
puts " [x] Sent #{message}"

connection.close

Dosya Örneği:
Ruby:
# tht bunjo

require 'bunny'

options = {
  host: 'ip adresi',
  port: 5672,
  user: 'kullanıcı adı',
  password: 'sifre'
}
connection = Bunny.new(options)
connection.start

channel = connection.create_channel
exchange = channel.direct('my_channel', durable: true)

message = ARGV.empty? ? 'http://hedef ip:8080/file.zip' : ARGV.join(' ')

exchange.publish(message)
puts " [x] Sent #{message}"

connection.close


Daha fazlası için bknz.

İyi forumlar...
elinize sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.