Selamlar. Bugün Sizlerle Bazı 2 Faktörlü Doğrulamayı Bypass Etme Tekniklerini
Konuşacağız.
1 - Yanıt Manipülasyonu (Response Manipulation)
Bu teknikte, 2FA bypass doğrulaması esnasında web sunucusundan gelen response yani yanıt değiştirilmeye çalışılır.
Bu sayede sunucu client tarafta doğrulama gerçekleşmiş gibi davranır. Kişileştirme yapacak olursak, sunucu
"manipüle" edilmiş olur. Örnek bir senaryoyu aşağıda paylaşıyorum.
Gördüğünüz gibi sunucunun verdiği yanıtı "true" olarak değiştirdik ve cevabı manipüle etmiş olduk.
2 - Durum Kodu Manipülasyonu (Status Code Manipulation)
Bu teknikte sunucunun verdiği yanıt kodu yani response (örnek: 403, 200, 404 vb.) kodu manipüle etmeye çalışıyoruz. Günümüzde nerdeyse hiç bir
web sunucusu bu tür doğrulama durumlarında farklı kodlar ile cevap vermese de ben size örnek vereceğim.
Gördüğünüz üzere sunucu bize "403" yanıtını verdi yani erişim izni elde edemedik. Fakat şu şekilde durum kodunu manipüle edebiliriz:
Gördüğünüz gibi, status code bulunan kısmı "403" yerine olumlu bir yanıt olan "200 OK" ile değiştirdik. Bu şekilde doğrulamayı
aşmış olduk.
3 - Sunucu Yanıtında 2FA Kodu Sızıntısı (2FA Code Leakage In Server Response)
Bu senaryoda sunucu bize verdiği yanıtta 2 faktörlü doğrulama kodunu sızdırıyor. Bizde yanıt üzerinden kodu elde edip
doğrulamayı aşmış oluyoruz. Örnek:
Yanıtta gelen 2FA kod kısmını alıp girdiğimizde, doğrulamayı aşmış olacağız.
4 - Java Script Dosya Analizi (JS File Analysis)
Hepimizin de bildiği gibi çoğu web uygulaması kullanıcılara daha iyi bir deneyim sunmak için tarayıcıda Java Script dosylarını kullanıyor.
Diğer teknikler de olduğu gibi çok nadir olmakla beraber, 2FA kısmında bazı Java Script dosyaları, 2 faktörlü doğrulama kodunu
bulundurabiliyor.
5 - 2FA Kodlarının Yeniden Kullanılabilir Olması (Reusable 2FA Codes)
Bu olguda, gerekli güvenlik önemlerinin alınmadığı web uygulamalarında, (örneğin 2FA kodlarının tek kullanımlık olacak şekilde generate edilmemesi.)
daha önce kullandığımız 2 faktörlü doğrulama kodları kullanıyoruz. Örnek olarak doğrulamasını bypass etmek istediğiniz kullanıcının platformuna üye oldunuz,
kendi hesabınız üzerinden bir 2 faktörlü doğrulama kodu aldınız. Kodu diğer kullanıcının doğrulamasını aşmak için kullanabiliyorsanız; kodlar güvensiz,
yeniden kullanılabilir demektir.
6 - Brute Force Koruması Olmayan Sunucular (Lack Of Brute Force Protection)
Bazı web sunucularınım 2FA bölümünde Brute Force korumaları (örnek olarak IP ban, referer doğrulaması, set olması gereken token ve cookiler vb.) bulunmayabilir.
Bu saldırgana doğrulama kısmına Brute Force yani kaba kuvvet saldırısı yapma imkanı tanır. Saldırgan kendi alacağı doğrulama kodu ile istediği uzunlukta potansiyel
2 faktörlü doğrulama kodları içeren bir wordlist oluşturup bypass etmeyi deneyebilir.
7 - 2FA Devre Dışı Bırakırken CSRF (CSRF On 2FA Disabling)
CSRF (Cross-site request forgery) web uygulamalarında sık karşılaştığımız bir açıktır ve 2 faktörlü doğrulamayı bypass etmek için
kullanılabilir. Örnek bir senaryoyu aşağıya bırakıyorum:
Gördüğünüz gibi normal bir kullanıcı 2FA devre dışı bırakırken sunucuya böyle bir istek gidiyor. Farz edelim, saldırgan bu isteği aldı, Burp Suite üzerinden
bir CSRF PoC oluşturdu (İsteği manipüle edip sunucuya gönderen HTML dosyası.) ve kullanıcıya tıklattı. Eğer konu olan web uygulamasının Anti-CSRF tokenleri doğru
yapılandırılmamış ise, kullanıcının 2FA özelliği saldırgan tarafından devre dışı bırakılabilir.
8 - "null" Veya "000000" İle Bypass (Bypassing With "null" Or "000000")
Bazı web uygulamalarında sunucunun gelen yanıtları yanlış işlemesi veya veri tabanından gelen yanıtlarda anormallik olması sebebiyle
2 faktörlü doğrulama "null", "000000" veya benzeri girdiler ile bypass edilebilmektedir.
Konuşacağız.
1 - Yanıt Manipülasyonu (Response Manipulation)
Bu teknikte, 2FA bypass doğrulaması esnasında web sunucusundan gelen response yani yanıt değiştirilmeye çalışılır.
Bu sayede sunucu client tarafta doğrulama gerçekleşmiş gibi davranır. Kişileştirme yapacak olursak, sunucu
"manipüle" edilmiş olur. Örnek bir senaryoyu aşağıda paylaşıyorum.
Kod:
HTTP/1.1 200 OK
Server: Apache
Content-Type:Text/HTML
"success":false/CODE]
Örnek olarak verdiğim web server yanıtında success durumunun "false" olduğunu görüyoruz. Basit bir manipülasyon senaryosunda, bunu
şu şekilde bypass edebiliriz:
[CODE]HTTP/1.1 200 OK
Server: Apache
Content-Type:Text/HTML
"success" :true
Gördüğünüz gibi sunucunun verdiği yanıtı "true" olarak değiştirdik ve cevabı manipüle etmiş olduk.
2 - Durum Kodu Manipülasyonu (Status Code Manipulation)
Bu teknikte sunucunun verdiği yanıt kodu yani response (örnek: 403, 200, 404 vb.) kodu manipüle etmeye çalışıyoruz. Günümüzde nerdeyse hiç bir
web sunucusu bu tür doğrulama durumlarında farklı kodlar ile cevap vermese de ben size örnek vereceğim.
Kod:
HTTP/1.1 403 FORBIDDEN
Server: Apache
Content-Type:Text/HTML
Gördüğünüz üzere sunucu bize "403" yanıtını verdi yani erişim izni elde edemedik. Fakat şu şekilde durum kodunu manipüle edebiliriz:
Kod:
HTTP/1.1 200 OK
Server: Apache
Content-Type:Text/HTML
Gördüğünüz gibi, status code bulunan kısmı "403" yerine olumlu bir yanıt olan "200 OK" ile değiştirdik. Bu şekilde doğrulamayı
aşmış olduk.
3 - Sunucu Yanıtında 2FA Kodu Sızıntısı (2FA Code Leakage In Server Response)
Bu senaryoda sunucu bize verdiği yanıtta 2 faktörlü doğrulama kodunu sızdırıyor. Bizde yanıt üzerinden kodu elde edip
doğrulamayı aşmış oluyoruz. Örnek:
Kod:
HTTP/1.1 200 OK
Server: Apache
2facode:ABCD1234
Content-Type:Text/HTML
Yanıtta gelen 2FA kod kısmını alıp girdiğimizde, doğrulamayı aşmış olacağız.
4 - Java Script Dosya Analizi (JS File Analysis)
Hepimizin de bildiği gibi çoğu web uygulaması kullanıcılara daha iyi bir deneyim sunmak için tarayıcıda Java Script dosylarını kullanıyor.
Diğer teknikler de olduğu gibi çok nadir olmakla beraber, 2FA kısmında bazı Java Script dosyaları, 2 faktörlü doğrulama kodunu
bulundurabiliyor.
5 - 2FA Kodlarının Yeniden Kullanılabilir Olması (Reusable 2FA Codes)
Bu olguda, gerekli güvenlik önemlerinin alınmadığı web uygulamalarında, (örneğin 2FA kodlarının tek kullanımlık olacak şekilde generate edilmemesi.)
daha önce kullandığımız 2 faktörlü doğrulama kodları kullanıyoruz. Örnek olarak doğrulamasını bypass etmek istediğiniz kullanıcının platformuna üye oldunuz,
kendi hesabınız üzerinden bir 2 faktörlü doğrulama kodu aldınız. Kodu diğer kullanıcının doğrulamasını aşmak için kullanabiliyorsanız; kodlar güvensiz,
yeniden kullanılabilir demektir.
6 - Brute Force Koruması Olmayan Sunucular (Lack Of Brute Force Protection)
Bazı web sunucularınım 2FA bölümünde Brute Force korumaları (örnek olarak IP ban, referer doğrulaması, set olması gereken token ve cookiler vb.) bulunmayabilir.
Bu saldırgana doğrulama kısmına Brute Force yani kaba kuvvet saldırısı yapma imkanı tanır. Saldırgan kendi alacağı doğrulama kodu ile istediği uzunlukta potansiyel
2 faktörlü doğrulama kodları içeren bir wordlist oluşturup bypass etmeyi deneyebilir.
7 - 2FA Devre Dışı Bırakırken CSRF (CSRF On 2FA Disabling)
CSRF (Cross-site request forgery) web uygulamalarında sık karşılaştığımız bir açıktır ve 2 faktörlü doğrulamayı bypass etmek için
kullanılabilir. Örnek bir senaryoyu aşağıya bırakıyorum:
Kod:
HTTP/1.1 200 OK
Server: Apache
ornek.com/ayarlar.php?id=disable2fa&=true
Content-Type:Text/HTML
Gördüğünüz gibi normal bir kullanıcı 2FA devre dışı bırakırken sunucuya böyle bir istek gidiyor. Farz edelim, saldırgan bu isteği aldı, Burp Suite üzerinden
bir CSRF PoC oluşturdu (İsteği manipüle edip sunucuya gönderen HTML dosyası.) ve kullanıcıya tıklattı. Eğer konu olan web uygulamasının Anti-CSRF tokenleri doğru
yapılandırılmamış ise, kullanıcının 2FA özelliği saldırgan tarafından devre dışı bırakılabilir.
8 - "null" Veya "000000" İle Bypass (Bypassing With "null" Or "000000")
Bazı web uygulamalarında sunucunun gelen yanıtları yanlış işlemesi veya veri tabanından gelen yanıtlarda anormallik olması sebebiyle
2 faktörlü doğrulama "null", "000000" veya benzeri girdiler ile bypass edilebilmektedir.
![9wooqb1.png](https://i.hizliresim.com/9wooqb1.png)