Subdomain Takeover Zafiyeti Hakkında

Alt alan adını ele geçirmek anlamına gelen subdomain takeover az rastlanan ilginç zafiyetlerden birtanesidir ve alt domain’i ele geçirerek diğer saldırı vektörlerini çalıştırmak için kullanılır. Basitçe açıklayalım, hedefimizde alt.firma.com şeklinde bir alt domain olsun;

  1. alt.firma.com CNAME DNS kaydı ile alt.wordpress.com‘a yönlendirilmiştir.
    (wordpress.com herkesin dilediği subdomain ile hesap açabileceği biryer)
  2. alt.wordpress.com hesap silinmesi veya kullanımdan kalkması gibi bir nedenden dolayı devre dışı kalır.
  3. Artık saldırgan wordpress.com üzerinde alt adıyla kendine ait bir hesap açabilir ve dosyalarını yükleyebilir.
  4. alt.firma.com halen alt.wordpress.com‘a yönlendirilmiş olduğundan saldırganın eline geçmiş olur.

Bu dört madde subdomain takeover saldırısının en basit açıklamasıdır. WordPress.com gibi kullanıcı tanımlı subdomain’lere izin veren diğer altyapı sağlayıcı ve servislerin listesine buradan ve buradan bakabilirsiniz.

Peki bu atak vektörü neden gerçekleşiyor? Firma.com, CNAME (cannonical name) ile yönlendirme yapmak yerine HTTP 301/302 ile de yönlendirme de yapılabilirdi. Lakin CNAME yönlendirmesi teknik personel için çok daha kolay bir iştir, domain yönetim paneline girer ve basitçe yönlendirmenin yapılacağı yeni adresi tanımlar. Ardından işlem tamam. HTTP ile yönlendirmek istediğinde ise tarayıcıya gideceği yeni adresi belirmek için sunucuda (alt.firma.com) birkaç satır kod yazması gerekir, ayrıca yönlendirilen yeni adres tarayıcının adres çubuğunda gözüküyor olacaktır. Sanırım bu nedenlerden dolayı CNAME’in daha çok tercih edildiğini söyleyebiliriz.

Evet gelelim işin en ilginç yanlarına. Bu saldırı vektörü başarıyla işletildiğinde şunları yapmak mümkün olur:

  1. Kimlik doğrulaması atlatılabilir. firma.com üzerinde açılan oturumun cookie’si http://*.firma.com gibi bir kapsamla paylaşılıyorsa, saldırgan kendi kontrolünde olan altdomain.wordpress.com (dolayısıyla alt.firma.com) domain ile bu cookie’yi okuyabilir. Kullanıcı oturumu çalınarak firma.com ve diğer alt domain’ler üzerindeki web uygulamalarında yetki elde edilebilir. Oturum çerezinin “secure” değeri ayarlanmışsa tarayıcı yalnızca HTTPS üzerinden bu değeri gönderecektir. Bu durumda saldırganın altdomain.wordpress.com üzerinde alt.wordpress.com için geçerli bir SSL sertifikasına sahip olması gerekir. Bu sorun da Lets Encrypt ve GoDaddy gibi ücretsiz sertifika sağlayıcıların domain sahipliğini onaylamak için sitenin yayın dizinine bir yetki doğrulama HTML dosyasının yüklenmesi istemesi gibi imkanlar sağladığından kolayca aşılabilir.
  2. Ele geçirilen alt.firma.com ile phishing saldırısı yapılabilir. Yani oltalama saldırısı. Kullanıcılara mail ya da sosyal medya yoluyla ulaşılarak hesap bilgileri çalınabilir. Kurbana altdomain.wordpress.com sunucusunda host edilen 1x1px’lik bir resim içeren eposta gönderilerek tarayıcının alt.firma.com’a dolayısıyla altdomain.wordpress.com’daki betiğe cookie verisini otomatik olarak göndermesi sağlanabilir. Bu durumda kurbanın sadece eposta yı görüntülemesi yeterlidir, herhangi bir bağlantıya tıklamasına gerek yoktur.
  3. Firma’nın güvenilirliği kullanılarak alt.firma.com aracılığıyla zararlı yazılımlar yükletilebilir.

Bir alt domain’in CNAME kaydına sahip olup olmadığını ve yönlendirildiği domain’i görmek için google DNS’ine (8.8.8.8) aşağıdaki gibi bir sorgu geçilebilir:

$ nslookup alt.firma.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:alt.firma.com canonical name = altdomain.wordpress.com.

Bu zafiyetin keşfi için alt alan adlarının tespit edilerek herbirinde CNAME kaydı aramak gerekiyor. Bu işi nasıl otomatize edebileceğimizi düşündüğümüz de ise şu zorluklar önümüze çıkıyor. CNAME kayıtları yönlendirildiği hedefe bağlı olarak DNS hatası (not resolved) veya HTTP 404 verebileceği gibi AWS/S3, CloudFront ve Shopify gibi birçok hedefde HTTP 404 yerine custom bir hata sayfası döndürebilir. Bu nedenle CNAME üzerinden subdomain takeover zafiyeti aramak için biraz daha efora gerek var gibi duruyor. Ancak GitHub’da herzaman işleri kolaylaştırmak için birşeyler bulmak.

https://github.com/m4ll0k/takeover adresindeki araç bir subdomain listesini alarak yukarıda bahsettiğim custom response döndüren onlarca servisi de teşhis ederek zafiyeti raporlayabiliyor.

Aracın temel kullanımı şöyle:

$ python3 takeover.py -l firma-sub-domains.txt -o output.txt

firma-sub-domains.txt listesini elde etmek için ise burada bahsettiğim sub.sh aracını kullanabilirsiniz. Revize ettiğim yeni sub.sh betiğine şu adresten ulaşabilirsiniz: https://github.com/enseitankado/sub.sh

Son olarak

Subdomain takeover zafiyeti NS ve MX kayıtları üzerinde de gerçekleştirilebilir. firma.com load balancing veya yedekleme amaçlı NS kayıtları tanımlamış olabilir. Eğer saldırgan bu kayıtlara tanımlanan uç adresleri register edilebilirse istediği IP’yi çözebilir. MX kayıtlarında yapılan yönlendirme de ise sadece gelen

Referanslar

https://0xpatrik.com/subdomain-takeover-basics/
https://0xpatrik.com/subdomain-takeover-ns/
https://corneacristian.medium.com/top-25-subdomain-takeover-bug-bounty-reports-f6e386ba4413

Yazar: Özgür Koca

Yazar - Tankado.com

“Subdomain Takeover Zafiyeti Hakkında” için bir yorum

Desibona için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.