loading...

Ocak 25, 2018

Subdomain Takeover

Daha önce yazdığım subdomain takeover konusu gerek İngilizce gerekse karmaşık olmasından dolayı çok anlaşılamamıştı. Bugün Türkçe ve detaylı olarak anlatmaya çalışacağım.

Subdomain Takeover

Genellikle çok fazla subdomainin olduğu büyük sitelerde denk geldiğim subdomain takeover, Amazon S3, Github, Cloudfront ve WordPress gibi servislerden hizmet alındığında ilgili servislerin panelindeki yapılandırma hatalarından dolayı subdomaini ele geçirmenize olanak sağlayan bir zafiyettir. Amazon S3 panelinde bucket oluşturulmaması ya da Cloudfront panelinde subdomain kaydının yapılmaması bunlara örnektir.

Zafiyeti net olarak anlamak için öncelikle DNS sorgularından olan CNAME’i incelememiz gerek.

subdomain takeover

CNAME alt alan adının hangi adreste bulunacağını belirleyen bir DNS kaydıdır. Alt alan adlarına eklediğiniz CNAME değeri ile o alt alan adının nereye işaret ettiğini belirlemiş olursunuz. Örneğin www.berkimran.com.tr alt alan adına CNAME kaydı olarak berkimran.com.tr girerek bu alan adına yönlendirme yapabilir, ya da farklı bir uygulama çalıştırabiliriz. Bu noktada zafiyeti tespit etmek için varolan tüm alt alan adlarını tespit etmeli ve testi gerçekleştirmeliyiz.

Genellikle oluşturduğumuz alt alan adları varolan ana alan adına işaret eder.

1337.berkimran.com.tr. 60 IN cname berkimran.com.tr

Yukarıda da bahsettiğim gibi hazır servisler kullanıldığında cname kısmı s3.amazonaws.com, 4c7f42-69dqbeaxx66cd.cloudapp.net gibi hazır servisleri işaret edebilir.

s3.edim.co. 299 IN cname s3.amazonaws.com

Günümüzde sistem biraz daha değiştiği için senaryolar da farklılaştı. Son zamanlarda takip ettiğim bug bounty raporlarında CNAME kaydının işaret ettiği sitenin CNAME kaydı da kontrol ediliyor ve dolaylı yoldan alt alan adı ele geçirilebiliyor.

svcgatewayus.starbucks.com. 600 IN CNAME s00197tmp0crdfulprod0.trafficmanager.net s00197tmp0crdfulprod0.trafficmanager.net > 1fd05821-7501-40de-9e44-17235e7ab48b.cloudapp.net.

Bu gibi durumlarda tüm alt alan adları kontrol edilmeli ve servislere kaydı yapılmalıdır.

İlgili sitelerin CNAME kaydı kontrol edildikten sonra siteye giriş yapılarak içerik kontrol edilmelidir. Eğer site çeşitli şekillerde hata veriyorsa ve bu hatalar bahsettiğimiz yapılandırmalardan kaynaklı ise subdomain takeover mümkündür diyebiliriz. İlgili servisler ve hataları için tablo 1’i inceleyelim.

ServisZafiyetHataİlgiliDökümantasyon
AkamaiNot vulnerableIssue #13
AWS/S3VulnerableThe specified bucket does not existIssue #36
BitbucketVulnerableRepository not found
Campaign MonitorVulnerableSupport Page
Cargo CollectiveVulnerable404 Not FoundCargo Support Page
CloudfrontEdge caseBad Request: ERROR: The request could not be satisfiedIssue #29
DeskNot vulnerablePlease try again or try Desk.com free for 14 days.Issue #9
FastlyEdge caseFastly error: unknown domain:Issue #22
FeedpressVulnerableThe feed has not been found.HackerOne #195350
FreshdeskNot vulnerableFreshdesk Support Page
GhostVulnerableThe thing you were looking for is no longer here, or never was
GithubVulnerableThere isn't a Github Pages site here.Issue #37
GitlabNot vulnerableHackerOne #312118
Google Cloud StorageNot vulnerable
Help JuiceVulnerableWe could not find what you're looking for.Help Juice Support Page
Help ScoutVulnerableNo settings were found for this company:HelpScout Docs
HerokuEdge caseNo such appIssue #38
JetBrainsVulnerableis not a registered InCloud YouTrack
KinstaVulnerableNo Site For DomainIssue #48kinsta-add-domain
MasheryNot vulnerableUnrecognized domainHackerOne #275714, Issue #14
Microsoft AzureVulnerableIssue #35
NetlifyEdge CaseIssue #40
Readme.ioVulnerableProject doesnt exist... yet!Issue #41
SendgridNot vulnerable
ShopifyEdge CaseSorry, this shop is currently unavailable.Issue #32, Issue #46Medium Article
SquarespaceNot vulnerable
StatuspageNot vulnerablePR #65
Surge.shVulnerableproject not foundSurge Documentation
TumblrVulnerableWhatever you were looking for doesn't currently exist at this address
TildaEdge CasePlease renew your subscriptionPR #20
UnbounceNot vulnerableThe requested URL was not found on this server.Issue #11
UserVoiceVulnerableThis UserVoice subdomain is currently available!
WebflowVulnerable404 Page Not FoundIssue #44forum webflow
WordPressVulnerableDo you want to register *.wordpress.com?
WP EngineNot vulnerable
ZendeskNot VulnerableHelp Center ClosedIssue #23Zendesk Support

Tablo incelendiğinde örnek olarak UserVoice servisini kullanan bir alt alan adına girildiğinde “This UserVoice subdomain is currently available!” hatası alınıyorsa ya da Github servisinin kullanan bir alt alan adına girildiğinde “There isn’t a Github Pages site here.” hatası alınıyorsa subdomain takeover mümkün olabilir. Bu noktadan sonra zafiyeti denemek gerek. Subdomainin nasıl alınacağını servislere göre görmek için Subdomain Takeover Örnekleri yazımı okuyabilirsiniz.

Shodan ile Subdomain Takeover

Shodan ile isp:amazon taraması yaptığımda yaklaşık 1 milyon index almış IP adresi tespit ettim. Aramamı isp:amazon “no such bucket”  şeklinde zafiyet tabanlı yaptığımda ise 272 site ile karşılaştım. Bing ile ip:x şeklinde arama yapıldığında bu siteler ele geçirilebilir. Hatta makinada root haklarında işlemler yapılabilir.

subdomain takeover
subdomain takeover

Sonuç & Risk

Hatalı yapılandırma nedeniyle subdomaini ele geçirmemiz mümkün oldu. Bu durumda siteye sahte bir arayüz yaparak kullanıcı bilgilerini toplanabilir, mining sitelerinin zararlı kodları ile zombi makinalar oluşturulabilir, bilgisayarınıza zararlı yazılımlar yükletilebilir. Www-data hakları elde edilmiş bir makinada root yetkisine erişilebilir dolayısıyla tüm sunucu istismar edilmiş olabilir. Aynı zamanda zafiyet sadece CNAME için değil diğer DNS kayıtları olan NS, MX ve A için de geçerli olabilmektedir.


Referanslar

Subdomain Takeover: Basics
Can i takeover XYZ?

Posted in Bug Bounty, Web GüvenliğiTaggs:
3 Comments
  • […] Alıntıdır : Berkİmran […]

    8:20 am Ocak 24, 2019 Cevapla
  • Cyberthereaper

    Eline sağlık. Faydalı bir yazı. Türk kaynaklarında bu tür bilgiler çok az var. Bu tür konuların devamını bekliyoruz..

    11:47 am Nisan 5, 2019 Cevapla
    • Berk İmran

      Teşekkürler 🙂

      6:36 pm Nisan 5, 2019 Cevapla
Write a comment