Geçen günlerde öyle dolanırken dns bruteforcer diye bir zafiyet gördüm baktım low level dedim çok bir şey olmaz herhalde bu zafiyetten en fazla ne olabilir ki vs derken sistem baya baya dns sunucularına falan giriyo webmail. adreslerine girebiliyor baya baba bir şey çıktı.Her neyse peki nedir abi bu zafiyet
şimdi varsayalım sistemimizde açık olsun
şimdiii kodlarımız bu şekilde olsun webmail. kodlarımız olsun bunlar webmail e giriş yaparken username i yanlış girersek username ı yanlış girip parolayı doğru girdiğimizi söyliyecek fakat parolayı yanlış girersek user ı doğru girip parolayı yanlış girdiğimizi söyliyecek hah işte olay tam da burda başlıyor saldırganın birisi eğer şifreyi doğru girerse ama username i yanlış girerse sistem ona
bu koddan dolayı username yanlış diyecektir.saldırganda burp suite gibi programlarla sisteme yanıt gönderirken yanıtı alma esnasında sürekli bir şekilde burp suite ile kullanıcı adını değiştire değiştire bulmaya çalışır varsayalım bulamadı bu açık sayesinde sitenin ya username i ya da passwordunu bulmuş olucak ve sistem ona bunlardan birisini doğru bulduğunu netliyecektir özellikle wordpress sitelerini ele alırsak olası bir saldırıda saldırgan eğer password u bulursa wpscan ile siteye kayıtlı adminlerin userını bulması 10 dk sını alır ve sistem saniyeler içersinde ele geçirilir peki bu açığı nasıl kapatıcaz.
gördüğünüz üzere kodlarını değiştirdik ve eğer karşıdaki adam(saldırgan) username i yanlış girerse sistemin ona döndüreceği mesaj
bu olucaktır ve bu sayede adam password u doğruda girse sistem her iki türlü hata verdiği için passwordu doğru girmesinide kabul etmicektir ve sanki ikiside yanlış diye adamı iki arada bi derede bırakıcaktır bu sayede de adam bilgilerin hiç birini bulamicaktır.(bu zafiyeti cwe mitre de buldum fakat mitre de bu güvenlik zafiyetini kimse php ye çevirmemiş bende perl kodlarından uyarlayıp php kodlarıyla yeniden yazdım).
Açığın linki ve açıklamaları:https://cwe.mitre.org/data/definitions/200.html
CWE NUMBER : CWE-200
şimdi varsayalım sistemimizde açık olsun
PHP:
<?php
$error = @$_POST["name"];
$found = @$_POST["password"];
$user = "roman45";
$pass = "45";
if($user == $error and $pass == $found){echo "login succesful";}
elseif($user != $error){echo "login failed - incorrect username";}
elseif($pass != $found){echo "login failed - incorrect password";}
else{echo "login failed - unknown user";}
?>
PHP:
elseif($user!=$error){echo "login failed - incorrect username";}
bu koddan dolayı username yanlış diyecektir.saldırganda burp suite gibi programlarla sisteme yanıt gönderirken yanıtı alma esnasında sürekli bir şekilde burp suite ile kullanıcı adını değiştire değiştire bulmaya çalışır varsayalım bulamadı bu açık sayesinde sitenin ya username i ya da passwordunu bulmuş olucak ve sistem ona bunlardan birisini doğru bulduğunu netliyecektir özellikle wordpress sitelerini ele alırsak olası bir saldırıda saldırgan eğer password u bulursa wpscan ile siteye kayıtlı adminlerin userını bulması 10 dk sını alır ve sistem saniyeler içersinde ele geçirilir peki bu açığı nasıl kapatıcaz.
PHP:
<?php
$error = @$_POST["name"];
$found = @$_POST["password"];
$user = "roman45";
$pass = "45";
if($user == $error and $pass == $found){echo "login succesful";}
elseif($user != $error){echo "login failed - incorrect username or password";}
elseif($pass != $found){echo "login failed - incorrect username or password"}
?>
gördüğünüz üzere kodlarını değiştirdik ve eğer karşıdaki adam(saldırgan) username i yanlış girerse sistemin ona döndüreceği mesaj
PHP:
elseif($user != $error){echo "login failed - incorrect username or password";}
bu olucaktır ve bu sayede adam password u doğruda girse sistem her iki türlü hata verdiği için passwordu doğru girmesinide kabul etmicektir ve sanki ikiside yanlış diye adamı iki arada bi derede bırakıcaktır bu sayede de adam bilgilerin hiç birini bulamicaktır.(bu zafiyeti cwe mitre de buldum fakat mitre de bu güvenlik zafiyetini kimse php ye çevirmemiş bende perl kodlarından uyarlayıp php kodlarıyla yeniden yazdım).
Açığın linki ve açıklamaları:https://cwe.mitre.org/data/definitions/200.html
CWE NUMBER : CWE-200



