Bu yazımızda vulnhub makinesi olan metasploitable 2’nin DVWA adlı web pentest ortamının reflected xss orta seviyesini inceleyip anlatacağım. Bu yazımızda bir önceki yazımıza kıyasla medium güvenlik önlemini ilk önce öğrenip sonrasında güvenlik önlemini nasıl atlatacağımı göstermektir.
Reflected XSS Medium Levelinde güvenlik kodlarına bakacak olursak alttaki gibi bir str_replace()<script> kodu ile gireceğimiz olan script kodlarını engellemiş oluyor. Bu bir güvenlik önlemidir.
Fakat bu güvenlik önlemini daha önceki derslerdeki kullandığımız <scr<script>ipt> kod yazımı şeklinde aşmış oluyoruz. Bunun sebebi de aslında çok basittir. Ve kolay kolay hiçbir şekilde bu tarz bir güvenlik önlemiyle karşılaşılmamaktadır. Gözden kaçan istisnalar dışında .
Recursive yani yinelemeli bir fonksiyon olmadığı için script kodunu sildikten sonra geride kalan scripti görmüyor ve zafiyeti sömürmüş oluyoruz.
Low level
<?php
if(!array_key_exists (“name”, $_GET) || $_GET[‘name’] == NULL || $_GET[‘name’] == ”){
$isempty = true;
} else {
echo ‘<pre>’;
echo ‘Hello ‘ . $_GET[‘name’];
echo ‘</pre>’;
}
?>
Gördüğünüz gibi hello dan sonra get name kısmında bir denetleme , kontrol olmadan ekrana yansıtılmaktadır.
Medium Level
<?php
if(!array_key_exists (“name”, $_GET) || $_GET[‘name’] == NULL || $_GET[‘name’] == ”){
$isempty = true;
} else {
echo ‘<pre>’;
echo ‘Hello ‘ . str_replace(‘<script>’, ”, $_GET[‘name’]);
echo ‘</pre>’;
}
?>
Medium levelde ise yukarıda anlattığım gibi script tagınının silinip ekrana yansıtıldığı gösterilmektedir. Sonuç olarak zafiyete geçmeden önce güvenliğin ne düzeyde olduğuna ve güvenliğin nasıl olduğuna bakmakta önemlidir.