PDA

View Full Version : حمله از طریق attribute ها



abolfazl-z
دوشنبه 31 فروردین 1394, 12:08 عصر
سلام

یکی از روش های دیگر طزریق کد های html به سایت attribute ها هستند. اما این روش طزریق کمی در خفا کار می کند و ما را به خود مشکوک نمی کند!

قبل از اینکه توضیح بدهم به مثال زیر توجه کنید :


<?php
$_GET['t'] = htmlspecialchars(array_key_exists('t',$_GET) && is_string($_GET['t']) ? $_GET['t'] : '<h1>XSS</h1>',ENT_QUOTES);
?>
<div id="xss" title="<?=$_GET['t']?>"></div>
<div id="area"></div>

خوب در مثال بالا همه چی خوب به نظر میرسد و هیچ مشکلی نیست. خوب نباید هم باشد چون ما فیلتر لازم را انجام دادیم.

اما اگر به یک موضوع توجه نکنیم حمله ساز میشود.


<?php
$_GET['t'] = htmlspecialchars(array_key_exists('t',$_GET) && is_string($_GET['t']) ? $_GET['t'] : '<h1>XSS</h1>',ENT_QUOTES);
?>
<div id="xss" title="<?=$_GET['t']?>"></div>
<div id="area"></div>
<script>
setTimeout(function(){
alert(html=document.getElementById('xss').attribut es.title.value);
alert('now append to document');
document.getElementById('area').innerHTML = html;
},2000);
</script>

در مثال بالا که مثالی تکمیل شده است می تواند به ما بگوید که مرورگر مقادیر موجود در attribute ها را decode می کند پس باید مواظب این موضوع باشیم که بسیار خطرناک است !

خوب یک نوع مثال دیگر از این حمله را خلاصه توضیح میدهم.

بسیاری از سایت ها برای خود یک tooltip شخصی درست می کنند و همانطور که میدانید با رویداد های مختلف کار می کنند تا بتوانند یک تولتیپ را شبیه سازی کنند اما همه آن ها از صفت title یا هر صفت دیگری برای اینکار استفاده می کنند که اگر چنانچه مقدار Attribute دریافت شده توسط جاوا اسکریپت فیلتر نشود می تواند باعث بروز این باگ شود.

منبع : barnamenevis.org -> امنیت در PHP (http://barnamenevis.org/showthread.php?492504-%D8%AD%D9%85%D9%84%D9%87-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-attribute-%D9%87%D8%A7&p=2202182#post2202182)