30 Mayıs 2010 Pazar

20: Web Services Security


  • SOA (Service Oriented Architecture) için en önemli yapıtaşlarının başında web servisleri gelir. Servis, tek başına, başka bir modüle bağımlı olmaksızın bir işi gerçekleştiren fonksiyondur. Servisler arası iletişim homojen olmak zorunda değildir, yani service consumer ile service provider aynı dilde yazılmış olmak zorunda değildir. Aralarındaki ortak dil de genellikle XML'dir ve iletişim de genelde HTTP üzerinden gerçekleşir.
  • 2 ana web service tipi vardır:
    • Klasik web servis: XML, SOAP, WSDL, HTTP
    • Web API: RESTful, HTTP, XML/JSON (Javascript Object Notation)
  • Klasik web servisleri çalışma senaryosu aşağıdaki gibidir. Bu en yaygın senaryodur, yoksa mesela protokolün SOAP olması zorunluluğu yoktur. 1 ve 2 tek seferlik işlemlerdir, sonra 3 ve 4 defalarca tekrar edebilir:
    1. İstemci WSDL URL'i çağırır (GET)
    2. WSDL dokümanı istemciye gönderilir
    3. İstemci bu dokümana göre SOAP isteğini oluşturur ve sunucuya POST eder
    4. Sunucu SOAP cevabını gönderir.
  • SOAP: Simple Object Access Protocol. Yapısal veri transferi için kullanılan XML tabanlı bir iletişim protokolü.
  • WSDL: Web Services Description Language. Dışarı hizmet olarak sunulan bir web servisinin interface'i. Hangi metotlar var, input ve output parametreleri neler vs.
  • SOAP UI aracı, web servis kullanımını kolaylaştıran bir araç. WSDL verilir, web servisin arayüzü görüntülenir. Bu arayüz üzerinde input parametreler üzerinde kolayca oynanarak web servisi çalıştırılıp sonucu görüntülenebilir.
  • Web API çalışma senaryosu:
    • İstemci, GET veya POST talebi ile URL çağırır.
    • Web servisi XML veya JSON cevabı gönderir.
  • REST: Representational State Transfer. Klasik yaklaşımda 53 numaralı faturayı şu şekilde görebiliriz: .....faturalar/goster.php?id=53. REST yaklaşımında ise GET talebi şu şekilde oluşur: GET /faturalar/53 HTTP/1.1 ....... Mesela faturayı silmek için de DELETE /faturalar/53 HTTP/1.1 ...... request'i yerine GET /faturalar/sil/53 HTTP/1.1 ...... request'i kullanılır. Otomatik açıklık tarayıcılar için kötü bir durum oluşturur bu. Parametre yok, request keyword sadece GET...
  • Google ile bilgi toplama. Bu faz aynı zamanda WSDL scanning olarak da bilinir.
    • inurl:wsdl yada inurl:.wsdl yada inurl:?wsdl yada filetype:wsdl
    • inurl:/axis/services "Hi there, this is an AXIS service!" Web servis yazmada kullanılan frameworklerin özelliklerini kullanarak açıklık aranabilir.
    • inurl:/axis2/services/listServices
  • XML Entity Expansion saldırısı... Merak edersen webde aratıp incele.
  • WSDL Scanning için back|track içindeki bir otomatize araç: WSFuzzer. Çok iyi değilmiş.
  • Başka bir otomatize araç: WSDigger by foundstone. Kurup incelemekte fayda var. WSDL URL'leri üzerinde şunları test eder:
    • SQL injection
    • Xpath injection
    • XSS

Hiç yorum yok:

Yorum Gönder

Web Uygulama Sızma Testleri İçin Kontrol Listeleri - V

Checklist for Web App Pentesting - V 6. Veri Denetimi (Data Validation) Testleri 6.1 Girdi Denetimi Bütün girdiler denetlenmelidir....