Az Static Web Apps
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Static Web Apps Temel Bilgiler
Azure Static Web Apps, GitHub gibi depolardan otomatik CI/CD ile statik web uygulamalarını barındırmak için bir bulut hizmetidir. Küresel içerik dağıtımı, sunucusuz arka uçlar ve yerleşik HTTPS sunarak güvenli ve ölçeklenebilir hale getirir. Ancak, hizmet “statik” olarak adlandırılsa da, tamamen güvenli olduğu anlamına gelmez. Yanlış yapılandırılmış CORS, yetersiz kimlik doğrulama ve içerik değiştirme gibi riskler, uygun şekilde yönetilmezse uygulamaları XSS ve veri sızıntısı gibi saldırılara maruz bırakabilir.
Dağıtım Kimlik Doğrulaması
Tip
Bir Statik Uygulama oluşturulduğunda, Dağıtım yetkilendirme politikası olarak Dağıtım token’ı ve GitHub Actions iş akışı arasında seçim yapabilirsiniz.
- Dağıtım token’ı: Bir token oluşturulur ve dağıtım sürecini kimlik doğrulamak için kullanılır. Bu token’a sahip olan herkes yeni bir uygulama sürümünü dağıtmak için yeterlidir. Her seferinde depo güncellendiğinde uygulamanın yeni bir sürümünü dağıtmak için token’ın gizli olduğu bir Github Action otomatik olarak depoya dağıtılır.
- GitHub Actions iş akışı: Bu durumda, depoda çok benzer bir Github Action da dağıtılır ve token da gizli bir şekilde saklanır. Ancak, bu Github Action’ın bir farkı vardır;
actions/github-script@v6eylemini kullanarak depo IDToken’ını alır ve uygulamayı dağıtmak için kullanır. - Her iki durumda da
Azure/static-web-apps-deploy@v1eylemiazure_static_web_apps_api_tokenparametresinde bir token ile kullanılsa da, bu ikinci durumdagithub_id_tokenparametresinde IDToken ile yetkilendirme yapıldığı için,12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345gibi geçerli bir formatta rastgele bir token uygulamayı dağıtmak için yeterlidir.
Web Uygulaması Temel Kimlik Doğrulaması
Web Uygulamasına erişmek için bir şifre yapılandırmak mümkündür. Web konsolu, yalnızca sahneleme ortamlarını veya hem sahneleme hem de üretim ortamını korumak için yapılandırılmasına izin verir.
Yazma anında şifre korumalı bir web uygulamasının görünümü şöyle:

Herhangi bir şifrenin kullanılıp kullanılmadığını ve hangi ortamların korunduğunu görmek mümkündür:
az rest --method GET \
--url "/subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2024-04-01"
Ancak bu, şifreyi düz metin olarak göstermeyecek, sadece şöyle bir şey gösterecek: "password": "**********************".
### Yollar ve Rolleri
Yollar, bir statik web uygulaması içinde gelen HTTP isteklerinin nasıl işleneceğini tanımlar. staticwebapp.config.json dosyasında yapılandırılan bu yollar, URL yeniden yazma, yönlendirmeler, erişim kısıtlamaları ve rol tabanlı yetkilendirme gibi işlemleri kontrol ederek, kaynakların doğru bir şekilde işlenmesini ve güvenliğini sağlar.
Bazı örnekler:
{
"routes": [
{
"route": "/",
"rewrite": "/index.html"
},
{
"route": "/about",
"rewrite": "/about.html"
},
{
"route": "/api/*",
"allowedRoles": ["authenticated"]
},
{
"route": "/admin",
"redirect": "/login",
"statusCode": 302
},
{
"route": "/google",
"redirect": "https://google.com",
"statusCode": 307
}
],
"navigationFallback": {
"rewrite": "/index.html",
"exclude": ["/api/*", "/assets/*"]
}
}
Not edin ki bir rol ile bir yolu korumak mümkündür, bu durumda kullanıcıların uygulamaya kimlik doğrulaması yapması ve bu role sahip olmaları gerekecektir. Ayrıca, belirli kullanıcıların EntraID, Facebook, GitHub, Google, Twitter üzerinden giriş yaparak belirli rolleri almasını sağlayan davetiye oluşturmak da mümkündür; bu, uygulama içinde ayrıcalıkları artırmak için faydalı olabilir.
Tip
Uygulamayı,
staticwebapp.config.jsondosyasındaki değişikliklerin kabul edilmediği şekilde yapılandırmanın mümkün olduğunu unutmayın. Bu durumda, sadece dosyayı Github’dan değiştirmek yeterli olmayabilir, aynı zamanda uygulamadaki ayarı değiştirmek de gereklidir.
Aşama URL’si şu formatta: https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain> örneğin: https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net
Snippet’ler
Bir statik web uygulaması içinde yüklenecek HTML snippet’lerini depolamak mümkündür. Bu, uygulamaya kötü niyetli kod enjekte etmek için kullanılabilir, örneğin kimlik bilgilerini çalmak için bir JS kodu, bir keylogger… Ayrıcalık artırma bölümünde daha fazla bilgi bulunmaktadır.
Yönetilen Kimlikler
Azure Static Web Apps, yönetilen kimlikler kullanacak şekilde yapılandırılabilir, ancak bu SSS’de belirtildiği gibi, yalnızca kimlik doğrulama amaçları için Azure Key Vault’tan gizli bilgileri çıkarmak için desteklenmektedir, diğer Azure kaynaklarına erişim için değil.
Daha fazla bilgi için, bir statik uygulamada bir vault gizli anahtarı kullanma ile ilgili Azure kılavuzunu https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets adresinde bulabilirsiniz.
Sayım
# List Static Webapps
az staticwebapp list --output table
# Get Static Webapp details
az staticwebapp show --name <name> --resource-group <res-group> --output table
# Get appsettings
az staticwebapp appsettings list --name <name>
# Get env information
az staticwebapp environment list --name <name>
az staticwebapp environment functions --name <name>
# Get API key
az staticwebapp secrets list --name <name>
# Get invited users
az staticwebapp users list --name <name>
# Get current snippets
az rest --method GET \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/trainingdemo/snippets?api-version=2022-03-01"
# Get database connections
az rest --method GET \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/databaseConnections?api-version=2021-03-01"
## Once you have the database connection name ("default" by default) you can get the connection string with the credentials
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/databaseConnections/default/show?api-version=2021-03-01"
# Check connected backends
az staticwebapp backends show --name <name> --resource-group <res-group>
Web Uygulamaları Oluşturma Örnekleri
Aşağıdaki bağlantıda bir web uygulaması oluşturmak için güzel bir örnek bulabilirsiniz: https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github
- Depoyu https://github.com/staticwebdev/react-basic/generate GitHub hesabınıza fork edin ve adını
my-first-static-web-appolarak belirleyin. - Azure portalında, Github erişimini yapılandırarak ve daha önce fork edilen yeni depoyu seçerek bir Statik Web Uygulaması oluşturun.
- Oluşturun, birkaç dakika bekleyin ve yeni sayfanızı kontrol edin!
Yetki Yükseltme ve Sonrası
Azure Statik Web Uygulamaları’nda yetki yükseltme ve sonrası hakkında tüm bilgilere aşağıdaki bağlantıdan ulaşabilirsiniz:
Referanslar
- https://learn.microsoft.com/en-in/azure/app-service/overview
- https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

