Bu kardeşiniz sizi yalnız bırakmamak için güzel olduğunu düşündüğü bir konu yazmaya karar verdi.
En son ki bulduğum bug bu zafiyet ile doğru orantı bu yüzden reel life bir senaryo üzerinden anlatacağım.
Tabi ki developerlara yandan giydirmesek olmaz.
Yukarıdaki şekilde de görüldüğü gibi MD5 sizce de güvensiz mi ?
Yoksa uzun senelerdir kullanılmasından ötürü ve kullanıcıların kafasını kullanamamasından dolayımı kırılabiliyor.
Toplanmış bir kaç hayır sever yazılımcı "MD5 GÜVENSİZ KULLANMAYIN !" diye twitter da bağırıyorlar.
Gerçi biz onlara twitter coder diyoruz, iş tweet değil kod yazmaya gelince elleri ayaklarına dolanıyor.
SHA256 da bundan 10 sene sonra MD5 ile aynı konuma gelebilir.
Neyse çok da tepkimizi çekmeden girelim konumuza;
Şifre sıfırlarken atanan tokenlara hiç dikkat ettiniz mi ?
Kullanıcı tarafından yapılan istekler sonucunda oluşturulan tokenlar ne kadar güvenli ?
Çoğunun basit algoritmalar ile encode edildiğini biliyor musunuz ?
Geçen haftalarda karşılaştığım bir bug senaryosunu sizlere anlatmak istedim.
Yukarıda da gözüktüğü gibi normal bir şifre sıfırlama sayfası, kullanıcı adı ve email bilgileri isteniyor. Bilgilerin 1. sini girip 2. sini girmem username enum ederim diyenler için önlemler alınmış, 403 bizi karşılıyor bu senaryoda.
Bende şifre sıfırlarken acaba bizden bir id değeri filan almış mı diye burpden istek geçmişine bakayım dedim.
Maalesef bizden bir id filan da almamış otomatik sistem tarafından otomatik çekiliyor büyük ihtimalle.
Ben de oluşan tokenı biraz incelemek istedim bir kurcalamak için.
Baktım ki oluşturulan token geldi bana biraz tecrübe ile de alakalı "_" ile ayırılan karakterlerin bir şeyler temsil edebileceğini düşündüm.
İlk alt çizgiye kadar kopyalayıp hashes da tespitini yaptım.
Bana MD5 şekilde email olduğunu söyledi.
Kırmaya çalıştığımda ise pat diye kırdı, büyük ihtimal daha öncelerden çok kullanılmış.
Peki kırılmasaydı ?
Abi gidiceksin hesabını devr alamak istediğin kişinin emailini md5 leyip token yerine yapıştırcaktın.
İş bu kadar mı YOOOOOOOGH
İki tane daha alt çizgili veri var bunları da kıralım. MD5 ile kırmaya çalıştığımda olmadı büyük ihtimal algoritmaları farklı.
Hashes dan tekrar kontrol ettiğimde base64 görünce çok sevindim.
Hemen decode edince pat diye editor yazısı çıktı.
Şimdi sonda bir veri daha var ama biz başka veri girmedik, yüzde doksan userımın id si olduğunu düşündüm.
Bingo doğru bilmişiz. Şimdi admin kullanıcısının şifresini almak için elimde bilgiler doğru şekilde var.
Email: [email protected]
Username: Administrator
Userid yi nasıl bulucaz diyenleri duyar gibiyim. Hani o bug bounty programlarında filan rules kısmına bazen yazarlar bizim için endpoint rate limit önemli değil diye izle şimdi admin büyük ihtimal sitedeki ilk userdır diye düşündüm ama öyle değilmiş burp intruder ile brute-force attım ve bingo.
Artık şifremi sıfırlama sayfama gidebileceğimi düşünüyorum.
Bundan sonrası
Buraya kadar geldiysen EYW, bu konunun 2. sini de @The Gölge anlatacakmış bana o şekilde dedi darlayın, o da otomatize araçlarla bulamayacağınız bir
yine developerlar tarafından kaynaklanan hata sonucunda sql injection anlatacak şimdiden okumanızı tavsiye ederim.
En son ki bulduğum bug bu zafiyet ile doğru orantı bu yüzden reel life bir senaryo üzerinden anlatacağım.
Tabi ki developerlara yandan giydirmesek olmaz.
Yukarıdaki şekilde de görüldüğü gibi MD5 sizce de güvensiz mi ?
Yoksa uzun senelerdir kullanılmasından ötürü ve kullanıcıların kafasını kullanamamasından dolayımı kırılabiliyor.
Toplanmış bir kaç hayır sever yazılımcı "MD5 GÜVENSİZ KULLANMAYIN !" diye twitter da bağırıyorlar.
Gerçi biz onlara twitter coder diyoruz, iş tweet değil kod yazmaya gelince elleri ayaklarına dolanıyor.
SHA256 da bundan 10 sene sonra MD5 ile aynı konuma gelebilir.
Neyse çok da tepkimizi çekmeden girelim konumuza;
Şifre sıfırlarken atanan tokenlara hiç dikkat ettiniz mi ?
Kullanıcı tarafından yapılan istekler sonucunda oluşturulan tokenlar ne kadar güvenli ?
Çoğunun basit algoritmalar ile encode edildiğini biliyor musunuz ?
Geçen haftalarda karşılaştığım bir bug senaryosunu sizlere anlatmak istedim.
Yukarıda da gözüktüğü gibi normal bir şifre sıfırlama sayfası, kullanıcı adı ve email bilgileri isteniyor. Bilgilerin 1. sini girip 2. sini girmem username enum ederim diyenler için önlemler alınmış, 403 bizi karşılıyor bu senaryoda.
Bende şifre sıfırlarken acaba bizden bir id değeri filan almış mı diye burpden istek geçmişine bakayım dedim.
Maalesef bizden bir id filan da almamış otomatik sistem tarafından otomatik çekiliyor büyük ihtimalle.
Ben de oluşan tokenı biraz incelemek istedim bir kurcalamak için.
Baktım ki oluşturulan token geldi bana biraz tecrübe ile de alakalı "_" ile ayırılan karakterlerin bir şeyler temsil edebileceğini düşündüm.
İlk alt çizgiye kadar kopyalayıp hashes da tespitini yaptım.
Bana MD5 şekilde email olduğunu söyledi.
Kırmaya çalıştığımda ise pat diye kırdı, büyük ihtimal daha öncelerden çok kullanılmış.
Peki kırılmasaydı ?
Abi gidiceksin hesabını devr alamak istediğin kişinin emailini md5 leyip token yerine yapıştırcaktın.
İş bu kadar mı YOOOOOOOGH
İki tane daha alt çizgili veri var bunları da kıralım. MD5 ile kırmaya çalıştığımda olmadı büyük ihtimal algoritmaları farklı.
Hashes dan tekrar kontrol ettiğimde base64 görünce çok sevindim.
Hemen decode edince pat diye editor yazısı çıktı.
Şimdi sonda bir veri daha var ama biz başka veri girmedik, yüzde doksan userımın id si olduğunu düşündüm.
Bingo doğru bilmişiz. Şimdi admin kullanıcısının şifresini almak için elimde bilgiler doğru şekilde var.
Email: [email protected]
Username: Administrator
Userid yi nasıl bulucaz diyenleri duyar gibiyim. Hani o bug bounty programlarında filan rules kısmına bazen yazarlar bizim için endpoint rate limit önemli değil diye izle şimdi admin büyük ihtimal sitedeki ilk userdır diye düşündüm ama öyle değilmiş burp intruder ile brute-force attım ve bingo.
Artık şifremi sıfırlama sayfama gidebileceğimi düşünüyorum.
Bundan sonrası
Buraya kadar geldiysen EYW, bu konunun 2. sini de @The Gölge anlatacakmış bana o şekilde dedi darlayın, o da otomatize araçlarla bulamayacağınız bir
yine developerlar tarafından kaynaklanan hata sonucunda sql injection anlatacak şimdiden okumanızı tavsiye ederim.