Manuel Kaynak Kod Analizinde XSS Zafiyetinin Tespit Edilmesi ve Kapatılmasına Ait Öneriler

kaleileriteknoloji
1 min readAug 17, 2021

İlk olarak dvwa uygulamasında XSS reflected butonunu tıklayalım ve XSS zafiyetini tespit edelim.

XSS için php projede aşağıdaki fonksiyonlar aratılabilir:

echo

print

Dvwa makinasında yer alan XSS reflected bölümündeki low sekmesinden kaynak kodu inceleyelim:

11.<?php

2.if(!array_key_exists (“name”, $_GET) || $_GET[‘name’] == NULL || $_GET[‘name’] == ‘’){

3. $isempty = true;

4.} else {

5. $html .= ‘<pre>’;

6. $html .= ‘Hello ‘ . $_GET[‘name’];

7. $html .= ‘</pre>’;

8.}

9.?>

6.satırda kullanıcıdan name parametresi ile alınan veri html değişkenine eklenmiştir. Html değişkeninin ekrana kontrolsüz bir şekilde yazdırılması ile XSS veya HTML injection zafiyetleri meydana gelmektedir.

Zafiyeti fonksiyon olarak tespit ettikten sonra fonksiyonda kullanılan değişkenden girdi ve çıktı noktasına kadar ilerliyoruz.

Şimdi ise bunu bir ağaç yapısında gösterelim.

6.satırda nameparametresi GET metodu ile kullanıcıdan alınıyor ve html değişkenine ekleniyor.

$html .= ‘Hello ‘ . $_GET[‘name’];

XSS zafiyetini engellemek için htmlspecialchars fonksiyonu ile özel karakterleri HTML öğesi haline getirebilirsiniz.

Örneğin 6.satırı aşağıdaki şekilde düzenleyelim:

$html .= ‘Hello ‘ . htmlspecialchars($_GET[‘name’]);

Veya XSS zafiyetini gidermek için htmlentities fonksiyonu kullanılabilir. Htmlentities fonksiyonu dönüştürülebilecek bütün karakterleri HTML öğesine dönüşmesini sağlar.

Örneğin 6.satırı aşağıdaki şekilde düzenleyelim:

$html .= ‘Hello ‘ . htmlentities($_GET[‘name’]);

--

--