akademikbilisim / ab-kurs-kayit

Akademik Bilişim Konferansı öncesi kurs kayıt ve izleme araçları
GNU General Public License v3.0
43 stars 25 forks source link

[Güvenlik] - Eğitmenin Başka Sınıflara Ait Kursiyerlerin Detay Bilgilerini Görebilmesi #164

Closed mdisec closed 8 years ago

mdisec commented 8 years ago

Merhaba,

Oturum sağlamış bir eğitmen, başka kurslara başvuru gerçekleştirmiş kursiyerlerin bilgilerini görebilmekte.

AŞağıdaki URL'de birinci integer alan user id'ye tekabül etmekte. Doğrudan çağırım ile detay bilgiler görünüyor.

https://kayit.linux.org.tr/accounts/showuser/4504/1337 https://kayit.linux.org.tr/accounts/showuser/4505/1337 https://kayit.linux.org.tr/accounts/showuser/4506/1337

ozgebarbaros commented 8 years ago

163 şu işle birlikte bu sorunun çözülmüş olması lazım. @mmetince tekrar deneyebilir misin?

mdisec commented 8 years ago

Ben problemin devam ettiğini düşünmekteyim.

Reproduce adımları:

1 - Eğitmen oturum açar. 2 - https://kayit.linux.org.tr/egitim/controlpanel adresine girer. 3 - Herhangi bir kursiyer için tablo üzerinden "Detay" linkine tıklar. 4 - Aşağıya doğru genişleyen menüde "Profil Detayı" linkine tıklar. 5 - Bu sayede şu URL'e yönlenmiş olacaktır ( https://kayit.linux.org.tr/accounts/showuser/3556/17844 ) 6 - showuser methodunun ilk parametresi user id'i temsil etmektedir - emin değilim ? - 7 - Bu parametre değiştirilere farklı kursiyerlere erişim yapılır.

Örneğin;

https://kayit.linux.org.tr/accounts/showuser/3561/17844

Bu kursiyerin tercihleri;

  1. tercihi - Linux Sistem Yönetimi (1. Düzey) (1)
  2. tercihi - Ağ Uzmanlığına Giriş (8)
  3. tercihi - Python / Django ile Web Programlama (7)

Benim ise eğitmeni olduğum sınıf; Ağ ve Sızma Testleri Web Uygulama Güvenliği (kayit sistemi üzerinde bu eğitim için yetkim verilmemiş olabilir, emin değilim)

mdisec commented 8 years ago

Sanırım problemin kaynaklandığı nokta şurası;

https://github.com/akademikbilisim/ab-kurs-kayit/blob/master/abkayit/userprofile/views.py#L444

Erişilmek istenin kullanıcı ile oturum sahibi eğitmenin ait olduğu kurs arasında kontrol gerçekleştirilmesi unutulmuş.

user = UserProfile.objects.get(pk=userid)

Olayında devamında POST talebi varsa güncelleştirmeler yapılmakta, ki biz GET talebi gönderiyoruz, bu sayede doğrudan id'si bilinen bir kursiyerin bilgilerine erişim yapılabiliyor.

Projeye pek hakim olamadığım için PR maalesef göndermem fazla zaman alacaktır, çözüm olarak sanırım kontrolü bu noktada yapmak yeterlidir.

ozgebarbaros commented 8 years ago

@mmetince sorunu sonradan anladım. şimdi düzelmiş olması lazım tekrar deneyebilir misin?

ozgebarbaros commented 8 years ago

bu hata çözülmüş görünüyor o sebeple kapatıyorum