3 minute read

OAuth, web sitelerinin ve uygulamalarının başka bir uygulamadaki bir kullanıcının hesabına sınırlı erişim talep etmesini sağlayan ve yaygın olarak kullanılan bir authorization frameworküdür. OAuth, kullanıcının oturum açma bilgilerini istekte bulunan uygulamaya göstermeden bu erişimi vermesine izin verir. Bu durum kullanıcıların hesaplarının tam kontrolünü üçüncü bir tarafa devretmek zorunda kalmadan hangi verileri paylaşmak istediklerine ince ayar yapabilecekleri anlamına gelmektedir.

OAuth 2.0 geçerli standart olmasına rağmen bazı web siteleri halen OAuth 1.0 sürümünü kullanmaktadır. OAuth 2.0, OAuth 1.0 üzerine geliştirilmemiş, sıfırdan geliştirilme yapılmıştır. İki sürüm birbirinden çok farklıdır.

Lab 1 Lab 2 Lab 3 Lab 4 Lab 5

Lab-1 Authentication bypass via OAuth implicit flow

Bu laboratuvar, sosyal medya accountları ile login olmaya izin veren bir OAuth mekanizması kullanmaktadır. Sunucu tarafındaki bir unsafe validation uygulamayı savunmasız bırakmaktadır. Lab’ın tamamlanması için Carlos hesabı ile giriş yapılmalıdır.

Uygulamada oturum açmak istendiğinde, uygulama bir sosyal medya sitesine yönlendirerek OAuth gerçekleştirmek istemektedir. Wiener kullanıcı bilgileri ile sosyal medyada oturum açtıktan sonra bize, hedef uygulama ile paylaşılacak bilgilerin (scope) iznini istemektedir. İzin verildikten sonra sosyal medya uygulaması, hedef sunucuya bir request aracılığıyla bilgileri göndermektedir. O sırada request yakalanıp e-mail bilgisi hedef kullanıcı olan carlos’un mail bilgileri ile değiştirilerek gönderildiğinde carlos kullanıcısının hesabı ele geçirilmektedir.

image-center

image-center

Lab-2 Forced OAuth profile linking

Bu laboratuvar, normal kullanıcı adı ve parola kullanmak yereine OAuth aracılığıyla oturum açmaya olanak sağlamaktadır. Lab’ın tamamlanması için CSRF saldırısı kullanılarak Admin paneline erişip Carlos kullanıcısı silinmelidir.

Uygulamada sosyal medya ile login olma flow’unda hedef uygulamanın istediği bilgilere onay verildikten sonra sosyal medya uygulamasından bir onay kodu çıkmaktadır. Bu onay kodu hedef uygulamaya gittiğinde ilgili hesap ile eşleştirilerek OAuth tamamlanmaktadır.

image-center

Ancak bu onay kodu CSRF saldırısı ile admin bilgileriyle hedef uygulamaya giderse, Admin hesabını wiener sosyal medya hesabıyla bağlamaktadır. Daha sonrasında wiener kullanıcısı sosyal medya hesabıyla bağlanmak istediğinde admin hesabıyla bağlanacaktır..

image-center

image-center

image-center

Lab-3 OAuth account hijacking via redirect_uri

Bu laboratuvar, kullanıcıların sosyal medya hesaplarıyla oturum açmasına izin vermek için bir OAuth mekanizması kullanmaktadır. Lab’ın tamamlanması için admin kullanıcısının authorization kodunun çalınarak carlos kullanıcısı silinmelidir.

Uygulama, sosyal medya uygulamasına login olmak için giderken bir redirect işlemi yapmaktadır. Sosyal medya tarafında bütün doğrulamalar gerçekleştiğinde onay kodu ile redirect_url de belirtilen yere dönmesi gerekmektedir uygulama. Ancak redirect_uri değiştirilerek gönderildiğinde uygulama bir validation yapmadığından sorun olmamaktadır. Onay kodu değiştirilmiş url’e gitmektedir.

image-center

Bu durum kullanılarak bir request hazırlanır ve hedef kurban olan admine iletilir. Admin linki ziyaret ederek sosyal medya uygulamasında login olup geri kod ile birlikte exploit sunucusuna dönmektedir.

image-center

image-center

Daha sonra saldırgan sosyal medya hesabı ile login olmayı denediği akışta en son basamak olan kendi onay kodunu hedef uygulamaya göndermez, admine ait olan çalınmış onay kodu ile değiştirerek hedef uygulamaya gönderilir. Böylelikle admin kullanıcısı olarak oturum açar.

image-center

image-center

Lab-4 Stealing OAuth access tokens via an open redirect

Bu laboratuvar, kullanıcıların sosyal medya hesaplarıyla oturum açmasına izin veren bir OAuth hizmeti kullanmaktadır. Lab’ın tamamlanması için admin hesabı ele geçirilmelidir.

Uygulmadaki blog postlar arasında hareket ederken Open Redirect güvenlik zafiyeti bulunmaktadır. Path parametresi değiştirilerek hedeflenen URL’e gidilebilmektedir.

image-center

OAuth doğrulama yaparken redirect_uri değeri validation işlemini path bilgisi de dahil olmak üzere yapmaktadır ancak parametrelere dikkat etmemektedir.

image-center

image-center

Exploit server’da kurbanın tıkladığında OAuth mekanizmasına gidecek bir payload hazırlanmaktadır. Uygulama “oauth-callback” verisine kadar validation işlemi yapmaktadır. Validation işlemi yapıldıktan sonra, tarayıcı payload’u bir üst dizine (Directory Traversal) çıkartılarak Open Redirect parametlerine eriştirecektir. Daha sonrasında redirect işlemi gerçekleşerek kurbanın token bilgisi saldırganın sunucusuna gelecektir. (Uygulama token bilgisini location.hash’de tutmaktadır.)

image-center

image-center

Daha sonrasında wiener kullanıcısı ile OAuth işlemi yaparken token bilgisi çalınan admin token bilgisiyle değiştirilmektedir.

image-center

Request History incelendiğinde “/me” requestinin response’unda adminin apıkey bilgisi bulunmaktadır. Eğer orda adminin değil de wiener kullanıcısının apı bilgisi görünyorsa, requestin Authorization başlığındaki token bilgisi adminin token bilgisi ile değiştirilerek gönderilmelidir.

image-center

image-center

Lab-5 SSRF via OpenID dynamic client registration

Bu laboratuvar, client uygulamaların, bir endpoint aracılığıyla OAuth işlemine izin vermektedir. Lab’ın tamamlanması için bir SSRF saldırısı gerçekleştirip admin kullanıcısının secret key’i ele geçirilmelidir.

OAuth URL’inde hidden directory araması yapıldığında .well-known/openid-configuration path’i bulunmaktadır. Tespit edilen pathde bir registration uygulaması bulunmaktadır.

image-center

/req endpointine yapılan bir post request’i ile birlikte herhangi bir kimlik doğrulama gerektirmeden istemci uygulaması başarılı bir şekilde kaydedilmektedir. Yanıtta client_id dahilş olmak üzere çeşitli datalar dönmektedir.

image-center

image-center

image-center

image-center

image-center