Sizce bu kod güvenli mi ? Harika bir Express.JS Password Reset Zafiyeti Challenge'ına denk geldim.
ฝัง
- เผยแพร่เมื่อ 14 ม.ค. 2024
- Gerçek hayatta karşılaştığımız ilginç vakaların bir mini CTF tadında twitter'da karşıma çıkması beni çok mutlu ediyor. Bu videoda yıllar önceden beri bildiğim bir şeyi hatırlamak için 3-4 saatimi verdiğim harika bir mini Javascript sorusuyla karşı karşıyayız. Umarım beğenirsiniz dostlar.
02:00 - Challenge'ın Detayları
05:20 - Satır satır kaynak kod analizi
07:20 - ÇÖZÜM !!
11:40 - Genel Değerlendirme - วิทยาศาสตร์และเทคโนโลยี
Abi ben bir Japon sirketinde developer olarak calisiyorum. Senin video'nu izledikten sonra sirkette ayni konu uzerine senin de anlattigin sekilde sunum yaptim (seni de referans gosterdim), millet bayildi, guvenlige karsi bilinclerinin arttiklarini da ifade ettiler. Senin video'larini takip ediyorum ve gercekten cok yararli oluyor. Vakit ayirip engin bilgi ve deneyimini bizlerle paylastigin icin, hakikaten cok tesekkur ediyorum.
abi bi yazılım geliştirici olarak senden öğrendiğim harika zafiyetler arasına yenisini ekledim bugün. Elimden geldiğince dbden gelen maile göndermeye gayret ediyorum zaten ama bazen saatler süren geliştirme sonrası bu durum gözden kaçabiliyor, artık kaçmamasının ne kadar net gerektiğine şahit oldum. Bize kattıkların için sana ne kadar teşekkür etsek az. aklı başında tüm Türk geliştiricilerin senden öğreneceği çoook şey var. En büyük o mu bikmiyorum ama çok büyük 😂😂
bunun gibi bi zafiyet githubda çıkmıştı onda uppercase lowercase teki dönüşümlerden dolayı bug vardı mesela ß harfini lowercase olarak sunucuya attığında ss olarak geri döner, gerçekten çok tatlı bir zafiyet türü
harika detay, tesekkur ederiz :)
09:23 "acayip keyifli bir güvenlik açığı ortaya çıkıyor" :D
Yazılımcıyım, bahsi geçen paketleri de kullandım/kullanıyorum.
Kod yazarken requestin bir kısmını geri göndermek niyeyse bende hep bir sorun hissettirirdi ancak üstüne hiç düşmedim, hislerim doğruymuş.
Yazılımcılar olarak kod yazarken aslında bu tarzda içimize kurt düşüren bir çok durumla karşılaşıyoruz ancak üzerinde fikir yürütmemizi sağlayacak bilgimiz olmadığından ve olamadığından şüphelerimizin üzerine gidemiyoruz, açıkçası bu bilgileri elde etmemiz de baya zor :)
Bu video benim için ilk oldu diyebilirim, umarım aynı formatta başka videolar da gelir. Teşekkür ederim.
Ağzına sağlık hocam. Bu harika zafiyeti bizimle paylaştığın için teşekkürler. ❤
Ya hocam hakikaten çok güzel bir detay. Anlatımınla daha da keyifli olmuş. Eyvallah.
Elinize sağlık çok güzel bir video olmuş. Geliştirme anında çok ufak bir alışkanlık böyle sorunlar çıkartabiliyor. Çok faydalı oldu.
3-4 kere Hassittir dedim izlerken😄 Gerçekten çok iyi ve çok keyifliydi. Emeğinize sağlık, teşekkür ederim.
Anlattıklarınızın çoğuyla yakında uzaktan alakam yok ama anlattıklarınız çok ilgimi çekiyor. Umarım çalışmalarınız aynı arzuyla devam eder, elinize sağlık
süper keyifli bir açıktı.özellikle programlama bilgisine sahipseniz açığı incelemek ayrı bir keyifli oluyor.emeğine sağlık abi.
oha çok iyiymiş, efsane yakalamışsın ve çok bilgilendirici video çıkmış ortaya... teşekkürler.
Muazzam bir video olmuş hiç aklıma gelmezdi. Hatta videodan sonra gidip projemdeki bütün auth endpoint'lerini kontrol ettim :D
Keyifli bi icerik olmus, tesekkurler👾
anlamasamda yinede izlemekten kendimi alamadığım videolar yayınladığınız için çok teşekkür ediyorum. elinize emeğinize sağlık
teşekkürler abi
teşekkürler, güzel bir açıkmış, çok öğretici oldu elinize sağlık.
Çok güzel yaklaşım çok güzel anlatım ağzınıza sağlık
Çok teşekkürler abi. Mükemmelsin.
Teşekkürler ,bu tarz kaynakları videonun açıklama kısmına eklersen erişmek daha kolay olabilir. İçerik için tekrardan çok teşekkürler
Aşırı keyifli, süper içerik.
Teşekkürler, ağzınıza sağlık
Emegine saglik Mehmet cok keyifli icerik olmus. :D
Çok keyifliydi teşekürler ❤
Süper içerik. Client'tan gelen verileri her ne kadar validate ettiğimizi zannetsek bile yine de güvenmemek lazım. DB'den gelen güvenilir datayı kullanmak gerekiyor her zaman.
Developer olarak bazen request'den gelen bazen de db den gelen bilgi ile dönüş yaparak yazdığım kodlar oldu. Kodlarken de zaten requestten gelen doğruysa çalışacak ne fark eder requestten geleni göndereyim dediğim oluyordu. Sonuçlarının bu denli olacağını bilmiyordum. Aydınlanma ve farkındalık yarattığın için çok teşekkür ederim.
vallahi hocam hayatım boyunca js ile tek satır kod yazmadım. gömülü sistemler ,computer vision , c,c++,python vs ile uğraştım. ama hep merak etmişimdir cyber tarafını veya js dev tarafını. valla yalan yok müsait vakitte oturup bakacağım . gerçekten çok ufuk açıcı bir video. çok teşekküre derim.
çok keyifliydi abi teşekkürler
Hocam ilk defa 0 dan bir mern stack proje geliştiriyorum. Baya bir yolda aldım çoğu güvenlik sorununu çözdüm ama bu şekilde bir açık olabileceğini ilk kez görüyorum. Benim gibi bir acemiye tek videoda çok şeyler kattınız. Teşekkürler.
gerçekten ufuk açıcı bir bakış açısı. tebrikler 👏🏻
Abi express js de kod yaziyorum, bu vidoedan cok shey ogrendim cok keyf aldim, Türkmenistandan selamlar.
Baya iyi inceleme, eline sağlık abi 🖤
çok faydalı bir içerik teşekkürler
yazılım geliştirici olarak, abi sayende ufkum açıldı senden çok şey öğreniyorum eline emeğine sağlık
Tek kelimeyle harikaydı. Vay canına cok ince bir açık bu. Bunu kendi yazdığım kodlarda da farkediyordum ve sonuçta aynı data diyordum. Sorun olmaz diyordum. Bu videoyu izledikten sonra anladımki zaafiyet varmış. Çok faydalı oldu. Emeğinize sağlık. Bu tarz içeriklerin devamı dileğiyle 👏👏👏😊
Çok başarılı bir video olmuş tebrikler, aydınladım 👍
muhteşem bir video olmuş. elinize ağzınıza sağlık çok eğiticiydi. çalıştığım projelerde yaptığım bir hata olduğunu fark ettim şimdi düzeltmeye gidiyorum hahaha
Bir developer olarak, izlemesi çok keyifli bir video olmuş. Söz konusu paketleri kullanıyoruz ve gerçekten de üzerine düşüldüğünde bu tarz açıkların meydana gelebileceğini hissediyor insan. Ancak ne yazık ki, çok üstüne düşemiyoruz. Teşekkür ederim, böyle videoların devamını bekleriz.
cok iyi bir zafiyet imis, elinize saglik hocam
Ağzına emeğine sağlık teşekkürler.
Ağzına sağlık hocam. ❤
eline saglik abi cok keyifli bi zafiyetti
çok kıymetli bir adamsın abi
Mukemmel bir video
cok guzel
Ağzına sağlık hocam.
Xss gibiymiş, teşekkürler hocam
Harika bir video hocam
👏
Keyifliydi
harika
Gercekten guzel bir acik.
Harika video
Güzel olmuş
çok iyi ❤
Çok keyifliydi.
kaydediyorum abi bunları şu finaller bitsin izleyeceğim ama beğenini atıyorum
Vayyyyyy. 👍🏽
👍
her gün yeni bir bilgi. hiç tahmin edemezdim ben zaten genelde user.email kullanırım ama kullanmayınca böyle olacagını bilemezdim.
👏👏
çok iyisin be kral
Ağzına sağlık abi
Gerçekten güzel detay yakalamışsınız hocam emeginize saglık.
abi müthiş bi videodu aklıma bişey geldi bu özel karakterler ile şifre oluştursak kırılması veya çalınması daha zor olurmu? cevap verirsen sevinirim.
bundan sonra ne yapıyoruz böyle email password yazacağımız zaman buna mehmet abinin sayesinde dikkat ediyoruz Teşekkür Ederiz bunu da öğrendik abi
Selam hocam, bir yazılımcı olarak kodu incelediğimde ilk fark ettiğim yer 44. satır oldu ama nasıl bir payload ile DB sorgusu atlanmış olabilir bulamadım. Güzel video elinize sağlık.
çok İNCE.. Teşekkürler abi
arka kapı dedikleri olay ya bilinçli ya da bilinçsiz fakat son kullanıcı olarak bizim değilde devletler bazında önlem alınması ve kafa yorulması gereken bir olay yazılım işinde güvenli alan yok gibi bir şey.
peki hocam bu açık diğer hangi database sistemlerinde bu şekilde diğerlerinde test ettinizmi acaba ? postgre vb.
Her gün yeni birşeyler öğreniyoruz
Gidip hemen repolarımı kontrol ettim :D
Hocam peki geliştiricilere güvenli kod yazımı öğretilse ve yapay zeka destekli olsa, siber güvenlikçiler için işler azalır mı ? Anladığım kadarı ile tüm olay developers bağlı.
Seri çok süper, bir yazlım geliştirici olarak çok zevk alıyorum izlerken. Zafiyete gelcek olursak nasıl böyle bir kod yazılmış çözemedim.. 😅
merhaba,nasil boyle bir kod yazilmis derken acemice anlaminda mi demek istediniz. ?
@@kabaliercan merhabalar, evet demek istediğim bir object (user) var ise hep onun içindeki datalardan gidilir sürekli (gerekmedikçe) req.body kullanılmaz. yazan arkadaş niye böyle yazmış merak ettim belkide sırf challange olsun diyedir 😂
@@caroby7658 Benim anlamadigim kisim sql kisminda nasil olurda o i degilde diger kararakteri algilamayip sifirlama maili atiyor.Bu sqlin bir zaafiyeti degil mi acaba ? sonuc olarak her karakterin belli bir bit karsiligi var o yabanci karakteri nasil algilayamiyor
@@kabaliercan evet dediğini anlıyorum fakat frontend tarafıyla iligilendiğim için kesin bir fikirim yok bu sql durumu için. gerçekten zafiyet mi yoksa bir amaç mı var daha bilgili biri cevaplasa hoş olur aslında
@@kabaliercandatabase configle alakalı sorun daha çok
ufkum genişledi
Hemen kendi yazdığım reset password methoduna baktım ve bende öyle yapmışım direkt kullanıcının girdiği e-maili girmişim onu değiştirip user.Email yaptım teşekkürler bilgilendirme ve bu tarz videolar çektiğin için
Ama sonuçta veri tabanında utf8mb4_0900_ai_ci kullandığın zaman gene sorun olacak. Yani farklı bir işlem için unutursan user.email yazmayı o zaman sıkıntı olacak. Sorun veri tabanının unicode karakter kullanmasından dolayıda oluyor ayrıca.
@@beratmlb o zaman view tarafında her türlü regex kullanılıcak
@@furkanozturk8643 Evet regex ile de engelleyebilirsin. Veri tabanı tasarımı yaparken de gerçekten iyi düşünmek gerekiyor. Freamworklere güvenmek daha iyi ama Onlarda bile zaafiyet çıkabiliyor örnek Laravel.
abi adam sormasa bence bu açık kimsenin aklına gelmez :D merak ettiğim şey de şu diyelim ki böyle bir site ve kod gerçekten var saldırgan JS dosyasına nasıl erişecek ki anca böyle tüm zaafiyet yöntemlerini denerken eğer bu yöntemi biliyorsa bulabilirdi bence . kaynak kodu gösterilmese ve developer böyle bir soru sorulmasa ben bunu oturup hayatta denemezdim mesela kolay kolay akıla gelecek bir şey değil ama işin sonunda bir tane variable ın bile yanlış yazılmasıyla ne kadar büyük bir açık oluşabileceğini öğrenmiş olduk
bu günde yeni bir şey öğrendik.
saat linki var mı hocam? :D
Clientin verdiği maile reset yolluyo , veritabanındaki kayıttan çekmesi lazım , geçelim sıradaki ?
yazılım geliştiriciler genelde db den sorgulama yapar
girilen bilgi db deki ilgili kayıt ile eşleşiyormu diye
bilinçli bir şekilde yapılmış bir hata o sanırım sizin ne yapabildiginizi tespit etmek ve kimler bunu fark edebiliyor ve kimler bunun ne oldugunu anlayabiliyor aslında sanki birazda sizi tespit etmek için yapılmış bir hata gibi algıladım.
Hocam sıfır kod bilgisi ile hiçbir şey anlamasam da ilgimi çektiği için izliyorum, severek takip ediyorum. Burada anladığım şey şu şekilde:
yazılıma " ï " unicode ile girdi gönderiyoruz. Yazılım bunu normal latin alfabesindeki "i" gibi görüyor, gidip databaseden doğrulayıp maili bizim yazdığımız " ï " unicode lu adrese atıyor. Doğru mudur ?
evet sonra satın aldıgın domainde web mail açıyosun hali hazırda var olan adminin şifreyi yeniliyorsun
Hayır yazılım onu hala " ï " olarak görüyor fakat database'e attığında bu anam babam i karakterine dönüşüyor. Kodun içinde hala ï. Öyle olmasa zaten maili de i harfiyle atardı.
harika video tesekkurler.Benim anlamadigim kisim sql kisminda nasil olurda o i degilde diger kararakteri algilamayip sifirlama maili atiyor.Bu sqlin bir zaafiyeti degil mi acaba ? sonuc olarak her karakterin belli bir bit karsiligi var o yabanci karakteri nasil algilayamiyor ?
Algılıyor usta fakat accent ignore yapıyor. Defaultta ai_ci ayarı aktif olduğundan dolayı Accent ve case ignore yapıyor. Bunu bilerek kullanmak gerekiyor veya collation ayarı ile bu hassasiyeti ayarlamak gerekiyor.
Tcp/ip modelini uzun uzun aciklayacagin ogretecegin bir video ceksen ne de hoş olurdu biraz imkansiz ama olsun
Zamanında bizden biri bu yüzden naneyi yemişti :)
abi harikaydı. kendi projeme baktım express ile yazmakta olduğum. Ufkum açıldı resmen. Bu arada neden req.body den alınmadığı konusunu da daha iyi anlamış bulundum sayende. teşekkürler
postgresql default ayarlarda tekrarlayamadim
abi github linkini nereye biraktin, goremiyorum
mabel matiz hacker olmuş :P
1:52 bulamadim 😀
hülooooooooooooo
Mdisec ❤ at the moment active Im learning PHP js HTML CSS SQL how can I myself to earn easy for reading on code😂
ders databese'deki bilgileri es gecmeyin
Cok pic bir hataymis 😀
masterpıece💯
harika