PDA

View Full Version : تست باگ xss جهت توجیح امنیت



IMANAZADI
پنج شنبه 29 خرداد 1393, 11:39 صبح
با سلام


من واسه توجیح امنیت ، واسه خودم یک فایل php با نام test بصورت زیر در برنامه dreamviewer نوشتم

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
if(isset($_POST['submit']))
{ $name = $_POST['name'];
echo "User Has submitted the form and entered this name : <b> $name </b>";
echo "<br>You can use the following form again to enter a new name."; echo "<br>";
// echo $_SERVER['PHP_SELF'];}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<input type="text" name="name"> <br>

<input type="submit" name="submit" value="Submit Form"> <br>
</form>

</body>
</html>


بعد از اجرا در مرورگر(xammp) ، واسه اینکه متوجه باگ xss بشم اومدم و در آخر آدرس اسکریپت زیر رو وارد کردم و اون رو اجرا کردم




http://localhost/NewSite/test.php/<script>alert('hi');</script>





ولی پبام جاوااسکریپت نشون داده نشد
بنظر شما ایراد کار از چیه ؟


هدف من متوجه شدن باگ و رفع اون با کد htmlspecialchars() به صورت زیر بود




<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES); ?>">


که بدون کد فوق هم درست عمل کرد ؟؟؟؟!!!!


جاوااسکریپت هم فعاله !!!!!!!!؟؟؟؟؟؟؟؟

eshpilen
پنج شنبه 29 خرداد 1393, 12:13 عصر
کدی که تزریق میشه باید به این شکل باشه:

"><script>alert('hi');</script>
بخاطر اینکه باید با " از کوتیشن داخل HTML خارج بشیم، و با ‎>‎ هم تگ form رو میبندیم که بتونیم تگ script خودمون رو شروع کنیم.

IMANAZADI
پنج شنبه 29 خرداد 1393, 14:38 عصر
با اضافه کردن کد



http://localhost/NewSite/test.php"><script>alert('hi');</script> (http://localhost/NewSite/test.php%22%3E%3Cscript%3Ealert('hi');%3C/script%3E)



هم بازم جواب نداد

omidabedi
پنج شنبه 29 خرداد 1393, 14:47 عصر
کدتونو چک نکردم اما
برای xss و مدل های مختلف کد نویسی escape های متفاوتی وجود داره

اینجارو ببینید

https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

2undercover
یک شنبه 01 تیر 1393, 06:24 صبح
اگه احتمالا از مرورگر کروم استفاده می کنید، این مرورگر به صورت پیش فرض یک فیلتر ضد حملات XSS داره، که اجازه ی کاری که می خواید انجام بدید رو نمیده!

Bypass chrome anti-XSS filter (https://www.google.com/webhp?q=bypass+chrome+anti-xss#q=bypass+chrome+anti-xss)

emadrezvani
یک شنبه 01 تیر 1393, 10:00 صبح
اینو تست کنید:


if(!empty($_GET['name']))
echo "Your Name is " . $_GET['name'];

//http://localhost/index.php?name=<script>alert(1);</script>