Pentester’lar için Sunucusuz Araç Seti – ropnop blogu


Sunucusuz olmak harika bir şey ve bu şeyin ücretsiz olduğuna inanamıyorum. Sızma testine yardımcı olmak için son birkaç hafta içinde geliştirdiğim bazı sunucusuz işlevleri yayınlıyorum. Tüm örnekler ve belgeler burada: https://github.com/ropnop/serverless_toolkit

Son zamanlarda “sunucusuz” dağıtımlarla çok fazla uğraşıyorum. Bu terim bana her zaman biraz yanlış isim gibi görünse de faydalarını inkar etmek mümkün değil. @secvalve’nin buradaki benzetmesini seviyorum:

Evet, hala bir yerlerde bir sunucu/mutfak var, ama geliştirirken/yemek yerken bunu gerçekten düşünmek istemiyorum.

Birçok geliştiricinin sunucusuz sistemi benimsediğini görsem de güvenlik topluluğunun buna daha az ilgi gösterdiğini gördüm. MDSec’in Sunucusuz Kırmızı Takım Altyapısı, pentester’lar tarafından kullanılan sunucusuz altyapıyı gördüğüm ilk altyapıydı ve potansiyelini keşfetme konusunda ilgimi çeken şey de bu oldu.

Sızma testleri veya hata ödülleri gerçekleştirirken, kendimi sürekli olarak basit bir görevi gerçekleştirmek için Digital Ocean’da hızlı bir VPS başlatırken bulduğumu hissediyorum. İster bir yük taşımak, ister gelen bir isteği dinlemek veya sadece farklı bir IP’den bir şeyi test etmek olsun, tek ve sıradan bir görevi gerçekleştirmek için bulutta özel bir Ubuntu Sunucusu çalıştırmak her zaman aşırıya kaçmış gibi görünüyordu. Yavaş olduğundan bahsetmiyorum bile. Bölgedeyken ve bir şeyin hızlı bir şekilde başlatılmasına ihtiyacım olduğunda, yapmak istediğim son şey bir sunucuyu sıfırdan yönetmektir.

Geçtiğimiz birkaç hafta boyunca farklı sunucusuz sağlayıcıları araştırırken, VPS’leri kullandığım birçok basit görevin sunucusuz ortama taşınabileceğini fark ettim; burada altyapı konusunda hiçbir zaman endişelenmeme gerek kalmadı ve (en iyi yanı) ÜCRETSİZDİR. Pentester’lar için son derece yararlı olduğunu düşündüğüm bazı sunucusuz işlevleri bir araya getirdim ve bu yazının, güvenlik testleri söz konusu olduğunda “sunucusuz” altyapının tüm avantajlarından yararlanma konusunda daha fazla kişiye ilham vereceğini umuyorum.

Not: Sahip olmadığınız altyapıları kullanırken, özellikle de hassas verilerle çalışırken her zaman dikkatli olmalısınız. Sunucusuz ile altyapıyı, günlük kaydını vb. kontrol edemediğiniz için, istemci verilerini bilinmeyen sunuculara atmadan önce riski değerlendirdiğinizden emin olun.

Sunucusuz Sağlayıcılar

Sunucusuz alanda birkaç ana oyuncu var (AWS, Google, Microsoft, Cloudflare, vb.), ancak bulduğum en kolayı, en ucuzu (okuma: ücretsiz) ve en anlaşılır olanı Zeit’in now.sh’si. Ücretsiz katmanları birinci sınıftır ve komut satırı aracı now tam dağıtımları doğrudan terminalimden başlatmama izin veriyor. Diğer bir temel avantaj ise tam Docker derlemelerinin Now.sh için birinci sınıf dağıtım birimleri olmasıdır; bu, AWS Lambda veya Google Cloud Functions’ın sağladığından çok daha az soyutlama olduğu anlamına gelir.

Yakın zamanda Zeit, yerel Docker konuşlandırmalarından uzaklaşan Now 2.0’ı tanıttı. Örneklerimin tümü eski Now 1.0 sürümünü gerektiriyor. Neyse ki Now 1.0’ın yakın zamanda kullanımdan kaldırılmasına yönelik bir plan yok, bu nedenle bozulmamaları gerekiyor.

Şimdi başlamak için NPM modülünü yükleyin ve kimlik bilgilerini bir e-postayla ayarlayın:

1
2
3
4
$ npm install -g now
$ now
No existing credentials found. Please log in:
> Enter your email:

E-postadaki talimatları izleyin ve sallanmaya hazırsınız.

Burada yayınlayacağım örneklerin her birine gireceğim. Umarız bu görevlerin birçoğu için VPS’ler yerine sunucusuz kullanmanın faydasını hızlı bir şekilde görebilirsiniz.

Statik Dosya Barındırma

https://github.com/ropnop/serverless_toolkit/tree/master/static_example

Sıklıkla CSRF veya XSS için yükleri barındırıyorum veya bir tür PoC’yi herkesin erişebileceği bir yere koymam gerekiyor. Bu nedenle geçerli SSL sertifikalarına sahip birkaç VPS’ye sahibim, ancak sunucusuz statik dağıtımlarda artık gerçekten gerekli değiller. Tek bir komutla, hızlı bir CDN’nin arkasında ve tam HTTP/2 desteğiyle, küresel olarak güvenilir bir TLS sertifikası (Let’sEncrypt) ile herhangi bir rastgele dosyayı (payload) sunabilirim.

Çevrimiçi olarak bulunmasını istediğiniz dosyaları içeren herhangi bir klasörde, now --public dosyalarınızı sunan genel bir URL’yi dağıtacak ve döndürecektir:

Statik Dosyalar

Bu dosyalar daha sonra İnternet erişimi olan herhangi bir yerden indirilebilir veya aşağıdaki gibi XSS yüklerinin içine yerleştirilebilir:




Source link