Hoşgeldin Misafir

Dns bruteforcer

Varxas39

4 Nis 2020
68 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
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 
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";}
?>
ş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 
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

CSE0a9.png