GraphQL API vulnerabilities | GraphQL API Açıkları

Gauloran

Moderasyon Ekibi Lideri
7 Tem 2013
8,199
674
GraphQL API açıkları

GraphQL açıkları genellikle uygulama hatalarından ve tasarım kusurlarından kaynaklanır. Örneğin introspection özelliği açık bırakılmış olabilir, bu da saldırganların API'yi şema hakkında bilgi edinmek için sorgulamasına olanak tanır.

GraphQL saldırıları, saldırganın veri elde etmesine veya yetkisiz eylemler gerçekleştirmesine olanak tanıyan kötü niyetli isteklerden oluşur. Bu saldırılar ciddi bir etki yaratabilir. Kullanıcı sorguları manipüle ederek veya CSRF açığı kullanarak yönetici ayrıcalıkları elde edebiliyorsa sıkıntı büyük demektir.

Bu bölümde GraphQL API'lerini test etmenin yollarını inceleyeceğiz. GraphQL'e aşina değilseniz dert etmeyin ayrıntılardan ilerledikçe bahsedeceğiz. Ayrıca, öğrendiklerinizi pratiğe dökebileceğiniz bazı lableri de konu sonunda yorum olarak verdik.

SJfTqh.png

GraphQL Endpoints(Uç noktaları) bulma

Bir GraphQL API'sini test etmeden önce, önce uç noktasını bulmanız gerekir. GraphQL API'leri tüm istekler için aynı uç noktayı kullandığından, bu değerli bir bilgidir.

Not: Bu bölüm, GraphQL uç noktalarını manuel olarak nasıl bulacağınızı açıklar. Ancak Burp Scanner, tarama sırasında otomatik olarak GraphQL uç noktalarını kontrol edebilir. "GraphQL endpoint found/GraphQL uç nokta bulundu" yazar ve böylece herhangi bir uç noktanın bulunduğunu anlamış olursunuz.

Evrensel sorgular

Herhangi bir GraphQL uç noktasına query{__typename} gönderirseniz, yanıtında bir yerlerde {"data": {"__typename": "query"}} dizesini içerecektir. Bu, evrensel sorgu olarak bilinir ve bir URL'nin bir GraphQL servisine karşılık gelip gelmediğini test etmek için kullanışlı bir tooldur.

Sorgu, her GraphQL uç noktasının __typename olarak adlandırılan ve sorgulanan nesnenin türünü bir String olarak döndüren ayrılmış bir alana sahip olması nedeniyle çalışır.

Ortak uç nokta adları

GraphQL hizmetleri genellikle benzer uç nokta eklerini kullanır. GraphQL uç noktalarını test ederken, aşağıdaki konumlara evrensel sorgular göndermeye çalışmalısınız:

Kod:
/graphql
/api
/api/graphql
/graphql/api
/graphql/graphql

Eğer bu uç noktalar bir GraphQL yanıtı döndürmüyorsa pathe /v1 eklemeyi de deneyebilirsiniz.

Not: GraphQL hizmetleri genellikle herhangi bir GraphQL dışı isteğe "query not present" veya benzer bir hata ile yanıt verir bu hatanın anlamı sorgu mevcut değil demektir. GraphQL uç noktalarını test ederken bunu aklınızda bulundurmalısınız.

Request Yöntemleri

GraphQL uç noktalarını bulmaya çalışmanın bir sonraki adımı, farklı (request)istek yöntemlerini test etmektir. Production GraphQL uç noktalarının yalnızca application(uygulama)/json içerik türüne sahip POST istekleri kabul etmesi en iyi uygulamadır, çünkü bu CSRF açıklarından da korunmaya yardımcı olur. Ancak, bazı uç noktalar alternatif yöntemler kabul edebilir. Buna örnek olarak GET istekleri veya x-www-form-urlencoded içerik türüne sahip POST istekleri verilebilir. Ortak uç noktalara POST istekleri göndererek GraphQL uç noktasını bulamazsanız, alternatif HTTP yöntemlerini kullanarak evrensel sorguyu yeniden göndermeyi deneyin.

Initial testing

Uç noktanın nasıl çalıştığını biraz daha anlamak için uç noktayı keşfettikten sonra bazı test istekleri gönderebilirsiniz. Uç nokta bir web sitesini çalıştırıyorsa, Burp'ın tarayıcısında web arayüzünü keşfetmeyi ve gönderilen sorguları incelemek için HTTP geçmişini kullanmayı deneyin.

Parametrelerden Faydalanmak

Bu noktada, güvenlik açıkları aramaya başlayabilirsiniz. Sorgu parametrelerini test etmek iyi bir başlangıç olur. API, nesnelere doğrudan erişmek için parametreler kullanıyorsa, (access control vulnerabilities) erişim kontrol açıklarına karşı savunmasız olabilir. Bir kullanıcı, yalnızca o bilgiye karşılık gelen bir argüman sağlayarak sahip olmaması gereken bilgiye potansiyel olarak erişebilir. Bu Insecure direct object reference yani Güvensiz doğrudan nesne referansı olarak da bilinir. (IDOR)

Örneğin aşağıdaki sorgu bir online shop için ürün listesi istiyor

Kod:
#Example product query


    query {
        products {
            id
            name
            listed
        }
    }

response a bakalım


Kod:
#Example product response


    {
        "data": {
            "products": [
                {
                    "id": 1,
                    "name": "Product 1",
                    "listed": true
                },
                {
                    "id": 2,
                    "name": "Product 2",
                    "listed": true
                },
                {
                    "id": 4,
                    "name": "Product 4",
                    "listed": true
                }
            ]
        }
    }

Bu bilgilerden şu sonuçlara ulaşabiliriz:

Ürünlere ardışık şekilde bir ID atanıyor
ID'si 3 olan ürün yok delist olmuş yüksek ihtimalle

Bu kayıp ürünün ID'sini Shop'ta listelenmemiş olsa bile sorgulayarak detaylarını öğrenebiliriz.


Kod:
#Query to get missing product


    query {
        product(id: 3) {
            id
            name
            listed
        }
    }

bize gelen response:


Kod:
#Missing product response


    {
        "data": {
            "product": {
            "id": 3,
            "name": "Product 3",
            "listed": no
            }
        }
    }


Şema Bilgilerini Keşfetme

API'yi test etmenin bir sonraki adımı, temel şema hakkında bilgileri bir araya getirmektir. Bunu yapmanın en iyi yolu, introspection sorguları kullanmaktır. Introspection bir serverdan şema hakkında bilgi sorgulayabileceğiniz bir GraphQL fonksiyonudur.

Introspection, bir GraphQL API'siyle nasıl etkileşime geçebileceğinizi anlamanıza yardımcı olur. Ayrıca potansiyel olarak hassas verileri de (açıklama alanları gibi) ortaya çıkartmanıza yardımcı olur.

Introspection Kullanma

Şema bilgilerini keşfetmek için __schema alanını sorgulayabilirsiniz. Bu alan, tüm sorguların root(kök) kısmında mevcuttur. Normal sorgular gibi, bir introspection sorgusu çalıştırırken döndürülmesini istediğiniz yanıtın alanlarını ve yapısını belirtebilirsiniz. Örneğin, yanıtın yalnızca mevcut türün adlarını içermesini isteyebilirsiniz.

Production ortamlarında introspection'un devre dışı bırakılması en doğrusudur. Ama herkes bu tavsiyeye uymaz.

Aşağıdaki basit sorguyu kullanarak inceleme yapabilirsiniz fakat introspection eğer devre dışı değilse response bütün mevcut sorguların adlarını döndürecektir.

Kod:
#Introspection probe request


    {
        "query": "{__schema{queryType{name}}}"
    }


Not:

Burp Scanner, taramaları sırasında otomatik olarak introspection için test yapabilir. Introspection etkinleştirilmişse, "GraphQL introspection enabled" diye bize bildirir.

Tam Introspection sorgusu çalıştırma

Bir sonraki adım, mümkün olduğunca fazla bilgi almak için uç noktaya karşı tam bir introspection sorgusu çalıştırmaktır.

Aşağıdaki örnek sorgu bir sürü detay döndürecektir:

Kod:
#Full introspection query


    query IntrospectionQuery {
        __schema {
            queryType {
                name
            }
            mutationType {
                name
            }
            subscriptionType {
                name
            }
            types {
             ...FullType
            }
            directives {
                name
                description
                args {
                    ...InputValue
            }
            onOperation  #Often needs to be deleted to run query
            onFragment   #Often needs to be deleted to run query
            onField      #Often needs to be deleted to run query
            }
        }
    }


    fragment FullType on __Type {
        kind
        name
        description
        fields(includeDeprecated: true) {
            name
            description
            args {
                ...InputValue
            }
            type {
                ...TypeRef
            }
            isDeprecated
            deprecationReason
        }
        inputFields {
            ...InputValue
        }
        interfaces {
            ...TypeRef
        }
        enumValues(includeDeprecated: true) {
            name
            description
            isDeprecated
            deprecationReason
        }
        possibleTypes {
            ...TypeRef
        }
    }


    fragment InputValue on __InputValue {
        name
        description
        type {
            ...TypeRef
        }
        defaultValue
    }


    fragment TypeRef on __Type {
        kind
        name
        ofType {
            kind
            name
            ofType {
                kind
                name
                ofType {
                    kind
                    name
                }
            }
        }
    }

Not: Eğer introspection etkinleştirilmişse ancak yukarıdaki sorgu çalışmıyorsa, sorgu yapısından onOperation, onFragment ve onField'ı kaldırmayı deneyin. Birçok uç nokta, introspection sorgusu içinde bunları kabul etmez ve bunları kaldırarak daha fazla başarı şansı elde etmiş olursunuz.

notlar:

*GraphQL: API'ler için açık kaynaklı bir veri sorgulama ve işleme dili ve bu sorguları yerine getirmek için yazılmış uygulamalardır. GraphQL, 2012'de Facebook tarafından dahili olarak geliştirildi ve 2015'te herkese açık olarak yayınlandı

Introspection: GraphQL, geliştiricilerin mevcut türler, alanlar ve işlemler hakkında ayrıntılar sağlayan API şemasını sorgulamasına olanak tanır. Bu iç gözlem özelliği, API'yi keşfetme ve anlama sürecini basitleştirir.

*Endpoint: Endpoint, api üzerinde belirli bir amaç için oluşturulan metodlara verilen isimdir. Http, günümüz teknolojisinde en yaygın kullanılan istemci ve sunucu arası haberleşme protokolüdür. Http Request ise api üzerinde oluşturulan çeşitli özelliklere sahip endpointlerin, Http protokolü kullanılarak talep iletmesidir.

çeviren: @Gauloran

_________________________________________________________________
..SHELDON
Introspection Sorgulamalarını Görselleştirme

introspection sorgularına verilen yanıtlar zengin miktarda bilgi sağlayabilir, ancak aynı zamanda oldukça uzun ve anlaması zor da olabilir.

Şema varlıkları arasındaki ilişkilerin daha iyi anlaşılmasını kolaylaştırmak için GraphQL görselleştiricisi kullanılmalıdır. Bu çevrimiçi araç, bir sorgunun sonuçlarını alır ve döndürülen verilerin görsel bir temsilini oluşturarak işlemler ve türler arasındaki bağlantıları vurgular.

InQL'i kullanma
Bir introspection sorgusu çalıştırma ve sonuçları görselleştirme sürecini kolaylaştırmak için Burp Suite'in InQL uzantısını kullanmanızı öneririm.

Burp Suite'in bir uzantısı olan InQL, GraphQL API'lerinin güvenli denetimlerini gerçekleştirmek için değerli bir araç olarak hizmet eder. InQL, bir URL girerek (canlı uç nokta bağlantısı aracılığıyla veya bir JSON dosyası yükleyerek), tüm sorguları ve mutasyonları talep eden bir introspection sorgusu başlatır. Daha sonra, sonuçların zahmetsizce araştırılmasını kolaylaştıran bir görünğm sunar.


Burp Suite'de daha fazla InQL kullanımı için: Tıkla bana 😎

Öneriler
İç gözlemin yokluğunda, kişi ara sıra önerilerden yararlanarak bir API'nin yapısına ilişkin içgörüler elde edebilir.

Apollo GraphQL platformunun dikkate değer bir özelliği olan öneriler, sunucunun hata mesajları aracılığıyla sorgu değişiklikleri önermesine olanak tanır. Bu işlevsellik, bir sorgu hala tanımlanabilecek küçük hatalar içerdiğinde özellikle yararlı olur.

(Örnepin , 'productInfo' için herhangi bir sonuç yok. Şunu mu kastettiniz? 'productInformation' ).

"Clairvoyance", iç gözlem devre dışı bırakıldığında bile GraphQL şema bilgilerini almak için kullanışlı bir araçtır. Yararlı öneriler sunarak zaman tasarrufu sağlar. Apollo'nun önerileri devre dışı bırakmanın doğrudan bir yolu yoktur, ancak buna GitHub başlığında bir geçici çözüm bulabilirsiniz.

Not:
Burp Scanner otomatik olarak kendi taramasının parçası olarak öneriler için test yapabilir. Aktif bir öneri bulunur ise Burp, "GraphQL suggestions enabled" (GraphQL önerileri aktif) diye uyarı verir.


GraphQL içgözlemini Bypass Etmek

Test ettiğiniz API için sorgulamaları çalıştırmada zorluk yaşıyorsanız, " __schema" 'dan sonra sonra özel bir karakter ekleyin.

İç gözlemi devre dışı bırakan geliştiriciler, sorgularda __schema anahtar sözcüğünü hariç tutmak için sıklıkla normal ifadeler (regex) kullanır. Boşluklar, yeni satırlar ve virgüller gibi karakterlerle denemeler yapmanız önerilir; çünkü bunlar GraphQL tarafından göz ardı edilir ancak flawed regex'ler tarafından göz ardı edilmez.

Geliştiricinin yalnızca __schema{'yı görmezden gelmesi durumunda aşağıda sağlanan iç gözlem sorgusunun da görmezden gelineceği bilinmelidir:

#Introspection query with newline { "query": "query{__schema {queryType{name}}}" }



Bu çalışmazsa alternatif bir request methodu deneyin (malum yalnızca POST üzerinden devre dışı bırakılabiliyor o yüzden GET requesti yapmaya çalışın veya
x-www-form-urlencoded içerikli bir POST request'i yapın

Aşağıdaki örnek bize URL ile kodlanmış parametreler aracılığıyla GET sorgusu gönderen bir iç gözlem probu yer almaktadır

# Introspection probe as GET request GET /graphql?query=query%7B__schema%0A%7BqueryType%7Bname%7D%7D%7D


Not:
GET yöntemi aracılığıyla yalnızca iç gözlem sorgularını kabul eden bir uç noktayla karşılaşırsanız ve sorgu sonuçlarını InQL Tarayıcıyı kullanarak analiz etmek istiyorsanız, sorgu sonuçlarını bir dosyaya kaydetmenizin zorunlu olduğunu lütfen unutmayın. Dosya kaydedildikten sonra onu standart ayrıştırma sürecinden geçeceği InQL'e yüklemeye devam edebilirsiniz.


Sahte İsimler Kullanarak Hız Limitini Bypass Etmek

GraphQL alanında nesnelerin aynı adı taşıyan birden fazla özelliği barındırmaktan kaçınması gerekir. Ancak korkmayın, çünkü sizi bu kısıtlamadan kurtaracak takma adlar mevcuttur. Takma adlar kullanarak API'nin sağlamasını istediğiniz özellikleri açıkça belirleme gücüne sahip olursunuz. Bu da size tek bir istekte aynı türden nesnenin birden çok örneğini temin etme olanağı sağlar.

Takma adlar, öncelikle API çağrılarının sıklığını azaltmak için tasarlanmış olsa da, GraphQL uç noktasından zorla yararlanmak için de kullanılabilir.

Pek çok uç noktanın, brute force saldırılarını engellemek için bir güvenlik önlemi olarak hız sınırlayıcıları içerdiğini belirtmekte fayda var. Bu hız sınırlayıcılar, uç noktada yürütülen işlem sayısına değil, aksine alınan HTTP isteklerinin sayısına göre çalışır. Ancak takma adlar, tek bir HTTP mesajı içinde birden fazla sorgunun iletilmesine izin vererek bu korumayı aşma yeteneğine sahiptir. Sonuç olarak bu, yukarıda belirtilen kısıtlamanın atlanmasına olanak sağlar.

Aşağıdaki basitleştirilmiş örnekte de göreceğiniz üzere mağaza indirim kodlarının geçerliliğini doğrulamak için kullanılan takma ad sorgularının bir dizisi kullanılıyor. Bu özel işlem, tek bir HTTP isteğinin çalışma prensibi nedeniyle hız sınırlayıcı önlemleri atlatma potansiyeline sahiptir. Bu yöntemin aynı anda birden fazla sayıda indirim kodunu kontrol edebileceğini de belirtmekte fayda var.

#Request with aliased queries query isValidDiscount($code: Int) { isvalidDiscount(code:$code){ valid } isValidDiscount2:isValidDiscount(code:$code){ valid } isValidDiscount3:isValidDiscount(code:$code){ valid } }


GraphQL CSRF

Bir uygulamada Siteler Arası İstek Sahteciliği (CSRF) güvenlik açıkları mevcutsa kullanıcılar tarafından istenmeyen eylemlerin gerçekleştirilmesine yol açabilir. Bu durum, bir saldırganın kötü amaçlı bir web sitesi oluşturarak güvenlik açığı bulunan uygulamaya hileli bir şekilde alanlar arası istek başlatması durumunda ortaya çıkar. Bu tür güvenlik açıkları, etkilenen sistemin güvenliği ve bütünlüğü açısından önemli bir risk oluşturabilir.

GraphQL, uygulanmasında Siteler Arası İstek Sahteciliği (CSRF) saldırıları için bir kanal görevi görme potansiyeline sahiptir. Bu özel saldırı türü, saldırganın, kurbanın web tarayıcısını farkında olmadan kurban kullanıcı adına kötü niyetli bir sorgu iletmesine yol açtığında meydana gelir. CSRF saldırılarının, mağdur kullanıcının bilgisi veya rızası olmadan yetkisiz eylemler gerçekleştirmesine yol açabileceğinden, bir uygulamanın güvenliği için önemli bir tehdit oluşturabileceğini unutmamak önemlidir.

GraphQL Üstünden CSRF Güvenlik Açıkları Nasıl Oluşur?

GraphQL uç noktasının aldığı isteklerin içerik türünü doğrulamada başarısız olduğu ve CSRF belirteçlerini uygulamayı ihmal ettiği durumlarda CSRF güvenlik açıkları potansiyel olarak ortaya çıkabilir.

Bir uygulama/json içerik türünü kullanan POST istekleri söz konusu olduğunda, içerik türünün uygun şekilde doğrulanması koşuluyla genellikle sahteciliğe karşı güvenli kabul edilir. Bu gibi durumlarda, kurban kötü amaçlı bir web sitesini ziyaret etse bile, saldırgan kurbanın tarayıcısını bu özel isteği gönderecek şekilde yönlendiremez.

Ancak, GET istekleri veya x-www-form-urlencoded içerik türünü kullanan herhangi bir istek gibi alternatif yöntemlerin aslında bir tarayıcı tarafından gönderilebileceğini belirtmekte fayda var. Sonuç olarak söz konusu uç noktanın bu tür istekleri kabul etmesi durumunda kullanıcılar kendilerini olası saldırılara karşı savunmasız bulabilir. Bu senaryolarda saldırganlar, API'ye gönderilecek kötü amaçlı istekleri ustalıkla hazırlayarak bu güvenlik açığından yararlanabilir.

GraphQL Saldırılarını Önleme

GraphQL saldırılarını önlemek için API'nizi dağıtırken şu adımları izleyin:

1. API'niz genel kullanım için değilse iç gözlemi devre dışı bırakın. Bu, saldırganların API hakkında bilgi sahibi olmasını zorlaştırır ve bilgilerin ifşa edilmesi riskini azaltır.

Apollo GraphQL'de iç gözlemi devre dışı bırakma talimatları için bu blog gönderisini okuyun.
Bana tıkla dostum 😎

2.API'nizin genel halk tarafından kullanılması amaçlanıyorsa, iç gözlemin etkin kalması zorunludur. Ancak istenmeyen alanların kamuya açıklanmamasını sağlamak için API şemasını kapsamlı bir şekilde incelemek çok önemlidir.

3.Önerileri tereddüt etmeden devre dışı bırakın. Bu, saldırganların temel şema hakkında bilgi çıkarmak amacıyla Durugörü veya benzer araçlardan yararlanma girişimlerini etkili bir şekilde engelleyecektir.

4.Önerileri doğrudan Apollo'da devre dışı bırakmak ne yazık ki mümkün değil. Ancak bir geçici çözüm mevcuttur. Daha fazla ayrıntı için lütfen bu GitHub konusuna bakın.

5.API şemanızın, e-posta adresleri veya kullanıcı kimlikleri gibi herhangi bir özel kullanıcı alanını yanlışlıkla açığa çıkarmadığından emin olmak için büyük özen gösterin.

GraphQL Brute Force Saldırılarını Engellemek

GraphQL API'lerini kullanırken bazen standart hız sınırlamasını aşmak gerçekten de mümkündür. Bunun bir örneğine tanık olmak için "Takma adlar kullanılarak hız sınırlamasının atlanması" başlıklı bölüme bakın.

Bunu akılda tutarak API'nizi Brute Force saldırılarına karşı korumak için almanız gereken bazı tasarımsal önlemler vardır. Bu öncelikle API'nin kabul ettiği sorguların karmaşıklığının sınırlandırılmasını ve saldırganların hizmet reddi (DoS) saldırıları gerçekleştirme şansını en aza indirmeyi gerektirir.

Brute force'a karşı koyabilmek için:

1-Lütfen API sorgularınızın sorgu derinliğini sınırladığınızdan emin olun. "Sorgu derinliği" kavramı, bir sorgu içindeki iç içe geçme düzeylerinin sayısıyla ilgilidir. Aşırı düzeyde iç içe geçme içeren sorguların performans üzerinde dikkate değer bir etkiye sahip olabileceğini unutmayın. Ayrıca, bu tür sorguların kısıtlama olmaksızın kabul edilmesi halinde Hizmet Reddi (DoS) saldırıları için bir fırsat sunabileceğinin kabul edilmesi çok önemlidir. API'nizin kabul ettiği sorgu derinliğine sınırlamalar getirerek bu sorunlarla karşılaşma olasılığını etkili bir şekilde azaltabilirsiniz.

2-Ayrıca API'niz için işlem sınırlarını yapılandırmanız önemle tavsiye edilir. Bu sınırlar, API'nizin kabul edebileceği maksimum benzersiz alan, takma ad ve root alan sayısını tanımlamanıza olanak tanır. Uygun çalışma limitlerini ayarlayarak API'nizin istenen parametrelerde çalışmasını sağlayabilir, böylece genel verimliliğini ve güvenliğini artırabilirsiniz.

3-Lütfen bir sorgunun içerebileceği maksimum bayt sayısını yapılandırmak için biraz zaman ayırın. Bu, API'nizin optimum performansını sağlamada önemli bir adımdır.

4-Ek olarak, API'nizde maliyet analizinin uygulanmasını düşünmenizi önermek isterim. Maliyet analizi, bir kitaplık uygulamasının, sorgular alındıkça çalıştırılmasıyla ilişkili kaynak maliyetini belirlemesine olanak tanıyan değerli bir süreçtir. Bu analizi gerçekleştirerek, bir sorgunun çalıştırılamayacak kadar hesaplama açısından karmaşık olup olmayacağını belirleyebilirsiniz. Bu gibi durumlarda API, sorguyu bırakarak sistemin performansı üzerinde herhangi bir olumsuz etki oluşmasını önler.

5-Bir sorgunun içerebileceği maksimum bayt miktarını yapılandırarak ve maliyet analizi uygulayarak API'nizin verimliliğini ve etkililiğini güvenle optimize edebilirsiniz.


GraphQL üstünden CSRF'yi Önlemek

Özellikle GraphQL CSRF güvenlik açıklarına önlem alırken API'nizi tasarımıyla ilgili aşağıdakilerden emin olun:

1-API'niz yalnızca JSON kodlu POST üzerinden yapılan sorguları kabul edeceğinden,

2-API, sağlanan içeriğin sağlanan içerik türüyle eşleştiğini doğrulamasından,

3-API'nin güvenli bir CSRF token mekanizması olup olmadığından EMİN OLUN.


 
Moderatör tarafında düzenlendi:

Gauloran

Moderasyon Ekibi Lideri
7 Tem 2013
8,199
674
Lab: Özel GraphQL postlarına erişme

Bu labdeki blog sayfası gizli bir post içeriyor ve şifreli. Bu labi çözmek için gizli blog postunu bulup şifresini girin. InQL eklentisini yüklemenizi tavsiye ediyoruz çünkü InQL ile GraphQL sorgularını Repeaterda modifiye etmek çok daha kolay. Aynı zamanda API şemasını da taramanızı sağlar.

InQL kullanımıyla ilgili daha fazla bilgi için bir bakın derim Working with GraphQL in Burp Suite

LABE GİT
 
Son düzenleme:

Gauloran

Moderasyon Ekibi Lideri
7 Tem 2013
8,199
674
Lab: Özel GraphQL alanlarının açığa çıkması

Bu lab, access control yani erişim kontrolü açığı içerir, bu sayede API'yi kullanıcı kimlik bilgisi alanlarını göstermesi için manipüle edebilirsiniz.

Labi çözmek için, yönetici olarak giriş yapın ve carlos kullanıcı adını silin.


Yine InQL kullanmanız işinizi kolaylaştırır bu konudaki ilk yorumda söylediğim gibi.

TIKLA
 

Gauloran

Moderasyon Ekibi Lideri
7 Tem 2013
8,199
674
Lab: Gizli GraphQL endpointi bulma

Bu labdeki endpointi sitede sayfalara tıklayarak öyle kolay kolay bulamazsınız çünkü introspection'a karşı savunmaya sahip bir lab bu.
Labi çözmek için gizli endpointi bulup carlos'u silin.

Yine InQL kullanmanız işinizi kolaylaştıracaktır bunu tekrar belirteyim.

TIKLA
 

Gauloran

Moderasyon Ekibi Lideri
7 Tem 2013
8,199
674
Lab: Brute Force yöntemiyle Carlos olarak giriş yapma

API endpointi bir limite sahip yani aynı kaynaktan kısa sürede çok fazla istek gelirse hata verir. Labi çözmek için carlos olarak giriş yapmanız gerekli brute force yöntemini kullanın. Brute Force kullanacağınızdan size şifrelerin bir listesini verelim kolaylık olsun diye.

Kod:
123456
password
12345678
qwerty
123456789
12345
1234
111111
1234567
dragon
123123
baseball
abc123
football
monkey
letmein
shadow
master
666666
qwertyuiop
123321
mustang
1234567890
michael
654321
superman
1qaz2wsx
7777777
121212
000000
qazwsx
123qwe
killer
trustno1
jordan
jennifer
zxcvbnm
asdfgh
hunter
buster
soccer
harley
batman
andrew
tigger
sunshine
iloveyou
2000
charlie
robert
thomas
hockey
ranger
daniel
starwars
klaster
112233
george
computer
michelle
jessica
pepper
1111
zxcvbn
555555
11111111
131313
freedom
777777
pass
maggie
159753
aaaaaa
ginger
princess
joshua
cheese
amanda
summer
love
ashley
nicole
chelsea
biteme
matthew
access
yankees
987654321
dallas
austin
thunder
taylor
matrix
mobilemail
mom
monitor
monitoring
montana
moon
moscow

InQL kullanın bu arada iyidir iyi.

TIKLA
 

Gauloran

Moderasyon Ekibi Lideri
7 Tem 2013
8,199
674
Lab: CSRF kullanalım

Bu labte x-www-form-urlencoded içerik türüne sahip istekler kabul edilecek ve bu nedenle CSRF saldırılarına çok müsait. Labi çözmek için, görüntüleyen kişinin mail adresini değiştirmek için CSRF saldırısı kullanan bir HTML oluşturun ve servera upload edin.

k.adı olarak wiener şifre olarak da peter yazarak giriş yapabilirsiniz.

InQL yükleyin diyorum başka da bir şey demiyorum.

TIKLA
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.