Yavuz Kuk
  • Ben kimim?
  • Linux Privilege Escalation (Linux Yetki Yükseltme)
  • 🚩Zafiyetler
    • API Testing
    • Authentication Vulnerabilities
    • Command Injection
    • File Upload
    • HTTP Host Header Attack
    • XSS (Cross Site Scripting)
    • LFI (Local File Inclusion)
    • Race Condition
    • JWT Bypass
    • Web Cache Poisoning
    • SOP ve CORS
  • 🚩Araçlar
    • Beef
    • FFUF
    • Gobuster
    • Hashcat
    • Hydra
    • John the Ripper
    • Nmap
    • Zphisher
    • Wpscan
  • 🚩Network
    • İnternet nedir?
    • IPv 4/6 nedir?
    • DHCP nedir?
    • Firewall nedir?
    • DNS nedir?
    • OSI modeli nedir?
    • TCP/IP modeli nedir?
    • NAT nedir?
    • Web Cache nedir?
  • 🚩Protokoller
    • SMB (Server Message Block)
    • Telnet
  • 🚩Diğer
    • CVSS nedir?
Powered by GitBook
On this page
  1. Zafiyetler

Command Injection

PreviousAuthentication VulnerabilitiesNextFile Upload

Last updated 9 months ago

Command Injection, bir uygulamayı çalıştıran sunucuda işletim sisteminde (OS) yetkisiz komutlar çalıştırmasına olanak tanıyan bir saldırı türüdür. Genellikle uygulamanın ve verilerinin tamamen tehlikeye atılmasına olanak tanır.

Bu saldırı türü, genellikle bir uygulamanın kullanıcı girdisini doğru şekilde doğrulamadığı veya sınırlamadığı durumlarda ortaya çıkar. Saldırgan, bu eksik doğrulama veya sınırlamadan yararlanarak zararlı komutları uygulamaya sızdırabilir ve bu komutlar hedef sistemde çalıştırılabilir.

İşletim sistemi üzerinde kod çalıştırabileceğimiz için sistem hakkında bilgi toplayabiliriz.

Command Injection zafiyetinin ortaya çıkma sebepleri:

  • Kullanıcı Girdisinin Doğrulanmaması: Kullanıcıdan alınan girdinin doğrulanmadan veya sınırlanmadan işletim sistemi komutlarına dahil edilmesi.

  • Kötü Tasarım: Yazılımın, kullanıcı girdisini doğrudan işletim sistemi komutlarına dahil edecek şekilde tasarlanması.

  • Eksik Girdi Temizleme: Kullanıcı girdisinin zararlı içeriği temizlenmeden komutlara dahil edilmesi.

Injection çeşitleri

  1. Blind Injection : Bu tür saldırı tipinde, payloadları test ederken uygulamadan doğrudan çıktı almadığımız senaryolardır. Payloadların başarılı olup olmadığını belirlemek için uygulamanın davranışlarını araştırmanız gerekecektir. Göndereceğimiz payloadın çıktısını göremeyeceğimiz için işlemin bitiş zamanı ile ilgili manipülasyonlarda bulunabiliriz. Ne demek oluyor bitiş zamanı manipülasyonu. sleep ve ping komutlarıyla işlemlerin bitişlerinin ertelenmesi sağlanır.

  2. Verbose Command Injection : Bu tür saldırı tipinde ise girdiğimiz komutun çıktısını ekranda görebilir durumdayız. Bu tür saldırılarda genel olarak ls ve whoami gibi komutlar sıklıkla kullanılır.

Command Injection zafiyetini simüle etmek için üzerinden anlatım yapacağım.

Fotoğrafta da gördüğünüz gibi verdiğiniz bir IP adresine ping atıyor. Bu yapılan işlem için arkada bir ping komutu çalışıyor. Bizden aldığı IP değerini de ping komutunun sonuna ekliyor ve o adrese ping atıyor.

ping <IP adresi>

Bize sorulan soruda ise /home/tryhackme/flag.txt içindeki yazı isteniyor. Dosyayı okumak için cat komutu kullanacağız.

Temel olarak neleri kullanacağımızı gördükten sonra bunları nasıl kullanacağız onu konuşmamız lazım. Bizim öncelikle ping komutuna bir IP adresi vermemiz gerekiyor sonrasında cat komutuyla bizden istenen dosyayı okumamız gerekiyor.

Aynı anda birden fazla komut çalıştırmak için bazı ara karakterlere ihtiyacımız var. Komut satırında bu özellik için && karakteri kullanılır.Input alanına şöyle bir payload yazmamız lazım 127.0.0.1 || cat /home/tryhackme/flag.txt, bu payload sonucunda oluşan komut satırı şu şekildedir:

ping 127.0.0.1 || cat /home/tryhackme/flag.txt

Payloadı girdikten sonra istediğimiz dosyanın içeriğini okuyabiliyoruz.

Çeşitli senaryolarda çeşitli karakterler ve komutlar engellenir. Farklı komutlar kullanılarak engeller aşılabilir.

Bu yazı tarafından hazırlanmıştır.

Yavuz Kuk
🚩
Try Hack Me Command Injection labı
Page cover image