Kodlardaki Zafiyeti Bul! #3

'Herodot

Katılımcı Üye
30 Eyl 2017
487
298
Kuvâ-yi Milliye
Merhaba Türk Hack Team Ailesi;


Yeteneklerinizi test etme fırsatı sunacak yeni bir etkinlik ile karşınızdayım.






Aşağıdaki kod bloğunda kaç tane güvenlik açığı tespit edebilirsiniz?




Alıntı görsel - İNTİGRİTİ

Tespit ettiğiniz güvenlik açığını detaylı bir şekilde açıklamanızı rica ediyorum.

Saygılarımla,

'Herodot
 

Wodenn

Üye
17 Mar 2022
94
84
Azerbaijan
Merhabalar.Tespit ettiğim güvenlik açıklarını ve sebeplerini açıklıyorum.
SQL INJECTION
İlk olarak verdiğiniz kodda url üzerinden gönderilecek parametrelerin güvenliğini sağlamadan "$_GET"
değişkeni kullanılıyor.Örneğin kullanıcı adı ve ya şifre kısmına OR '1'='1 admin tarzı veriler girileceğini göz önüne alacak olursak sql sorgumuz
bu şekilde olacaktır; "SELECT * FROM user WHERE username = 'admin' AND password = 'password' OR '1'='1';
kodumuzda password alanı için güvenlik önlemi olmadığından 1=1 koşulunu sağlayan her şeyi yani veritabanındakı tüm kullanıcıları döndürecektir.
Açığı önlemek için kullanıcı bilgilerini sql sorgusuyla doğrudan birleştirmek yerine, php data objects (pdo) ve ya mysqli tarzı hazır ifadeler kullanmak gerekli.


XSS
" echo "Invalid username ($username) or password"; " bu kodun bulunduğu satırda username değişkeni filtreleme olmadan doğrudan string içerisine
yerleştiriliyor ve filtreleme yok."><script>alert('XSS Attack!');</script> gibi özel karakterler ve ya html etiketleri kullanıldığında tarayıcı bu kodu çalıştırır ve xss açığı ortaya çıkar.Bu açığı önlemek için specialchars ve ya strip tags gibi fonksiyonlar kullanarak tarayıcı tarafından özel karakterlerin yorumlanmasını engelleye biliriz.Örnek;
echo "Invalid username (" . htmlspecialchars($username) or password";


HEADER
Kodumuzda header yönlendirmesi yapmadan önce echo ile bir çıktı veriliyor.Tam olarak şurada:echo "Invalid username ($username) or password"; . Bu bazen kodun doğru çalışmasını engelleye biliyor.Düzeltecek olursak hata çıktısını vermeyip doğrudan yönlendirmemiz gerekiyor.Örnek:
} else { header('Location: /error.php');} . Bu şekild, eğer kullanıcı adı veya parola geçersizse, hata mesajı yerine doğrudan başka bir sayfaya yönlendirme yapılır ve header fonksiyonu çağrılmadan önce herhangi bir çıktı verilmez. Bu sayede header yönlendirmesi sıkıntı çıkarmadan çalışır.


Atladığım ve ya yanlış yorumladığım bir konu varsa,yardımcı olursanız sevinirim.Herkese iyi forumlar.



 

'Herodot

Katılımcı Üye
30 Eyl 2017
487
298
Kuvâ-yi Milliye
Merhabalar.Tespit ettiğim güvenlik açıklarını ve sebeplerini açıklıyorum.
SQL INJECTION
İlk olarak verdiğiniz kodda url üzerinden gönderilecek parametrelerin güvenliğini sağlamadan "$_GET"
değişkeni kullanılıyor.Örneğin kullanıcı adı ve ya şifre kısmına OR '1'='1 admin tarzı veriler girileceğini göz önüne alacak olursak sql sorgumuz
bu şekilde olacaktır; "SELECT * FROM user WHERE username = 'admin' AND password = 'password' OR '1'='1';
kodumuzda password alanı için güvenlik önlemi olmadığından 1=1 koşulunu sağlayan her şeyi yani veritabanındakı tüm kullanıcıları döndürecektir.
Açığı önlemek için kullanıcı bilgilerini sql sorgusuyla doğrudan birleştirmek yerine, php data objects (pdo) ve ya mysqli tarzı hazır ifadeler kullanmak gerekli.


XSS
" echo "Invalid username ($username) or password"; " bu kodun bulunduğu satırda username değişkeni filtreleme olmadan doğrudan string içerisine
yerleştiriliyor ve filtreleme yok."><script>alert('XSS Attack!');</script> gibi özel karakterler ve ya html etiketleri kullanıldığında tarayıcı bu kodu çalıştırır ve xss açığı ortaya çıkar.Bu açığı önlemek için specialchars ve ya strip tags gibi fonksiyonlar kullanarak tarayıcı tarafından özel karakterlerin yorumlanmasını engelleye biliriz.Örnek;
echo "Invalid username (" . htmlspecialchars($username) or password";


HEADER
Kodumuzda header yönlendirmesi yapmadan önce echo ile bir çıktı veriliyor.Tam olarak şurada:echo "Invalid username ($username) or password"; . Bu bazen kodun doğru çalışmasını engelleye biliyor.Düzeltecek olursak hata çıktısını vermeyip doğrudan yönlendirmemiz gerekiyor.Örnek:
} else { header('Location: /error.php');} . Bu şekild, eğer kullanıcı adı veya parola geçersizse, hata mesajı yerine doğrudan başka bir sayfaya yönlendirme yapılır ve header fonksiyonu çağrılmadan önce herhangi bir çıktı verilmez. Bu sayede header yönlendirmesi sıkıntı çıkarmadan çalışır.


Atladığım ve ya yanlış yorumladığım bir konu varsa,yardımcı olursanız sevinirim.Herkese iyi forumlar.



Detaylı anlatımın için ayrıca teşekkür ederim
 

freebsd

Üye
24 Nis 2020
192
80
- İlk satırda default password kullanılmış, brute force ile kolayca hacklenebilir veritabanı.
- kullanıcı adı ve parolanın get methodu ile alınması doğru değil, ağ dinlendiğinde o da açığa çıkar.
- redirecturl kısmında open redirect güvenlik açığı var. Farklı bir yere yönlendirilebilir kullanıcı.
- sqli var ve herhangi bir filtreleme işlemi yok.
 

ACE Veen

Uzman üye
4 Şub 2023
1,138
574
Belirsiz
Merhaba Türk Hack Team Ailesi;


Yeteneklerinizi test etme fırsatı sunacak yeni bir etkinlik ile karşınızdayım.






Aşağıdaki kod bloğunda kaç tane güvenlik açığı tespit edebilirsiniz?




Alıntı görsel - İNTİGRİTİ

Tespit ettiğiniz güvenlik açığını detaylı bir şekilde açıklamanızı rica ediyorum.

Saygılarımla,

'Herodot
Bu resmi nasıl yapıyorsunuz hocam
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.