OverTheWire Bandit: Seviye 15 → Seviye 16
Bağlam
Bir önceki seviyede nc kullanarak 30000. porta düz metin (cleartext) olarak bağlanmıştık. Ancak modern internette (HTTPS) veriler şifreli olarak taşınır. Bu seviyede 30001. port bize “Ben sadece şifreli konuşurum (SSL/TLS)” diyor. Eğer buraya nc ile bağlanmaya çalışırsanız, sunucu sizi anlamaz ve bağlantı kopar.
Bunun için bir SSL “el sıkışması” (handshake) yapabilen bir araca ihtiyacımız var: OpenSSL.
Hedef
bandit15 şifresini localhost 30001 portuna SSL kullanarak göndermek.
Çözüm
openssl aracının s_client (SSL Client) modülünü kullanacağız. Bu modül, bir web tarayıcısı veya terminal tabanlı bir SSL istemcisi gibi davranır.
Komutumuz:
openssl s_client -connect localhost:30001
Bu komutu çalıştırdığınızda ekrana bir sürü sertifika bilgisi dökülecektir.
Önemli Not: verify error:num=18:self-signed certificate veya CN = SnakeOil gibi hatalar görebilirsiniz. Bu normaldir. Bandit sunucusu, tarayıcıların tanıdığı resmi bir sertifika yerine kendi imzaladığı (self-signed) bir sertifika kullanıyor. OpenSSL bizi “Bu sertifikaya güvenemem” diye uyarıyor ama bağlantıyı kuruyor.
Komut satırı beklemeye geçtiğinde, Bandit 15 kullanıcısının şifresini (yani bu seviyeye giriş yaparken kullandığınız şifreyi) yapıştırın ve Enter’a basın. Sunucu bunu doğrulayıp size bir sonraki seviyenin şifresini verecektir.
Daha Temiz Bir Çıktı İçin:
Sertifika detaylarını görmezden gelmek (-quiet) için:
openssl s_client -quiet -connect localhost:30001
# (Enter'a basın, bağlantı kurulunca şifreyi yapıştırın)
BfMYroe26WYalil77FoDi9qh59eK5xNr
Çıktı:
Correct!
cluFn7wTiGryunymYOu4RcffSxQluehd
Yeni şifre: cluFn7wTiGryunymYOu4RcffSxQluehd
Öğrendiklerimiz
- SSL/TLS: Verilerin ağ üzerinde şifreli taşınmasını sağlayan protokollerdir.
openssl s_client: SSL/TLS destekleyen sunucuları test etmek, hata ayıklamak veya manuel veri göndermek için kullanılan güçlü bir araçtır.