PDA

View Full Version : سوال: امنیت سایت



yasgig
جمعه 01 مرداد 1389, 21:43 عصر
با سلام
چند روزی پیش سایتم هک شده بود.هیچ حفره امنیتی نظیر آپلود سنتر و ... نداشتم ولی پرمیشن ها رو درست ست نکرده بودم.یا احتمال داره هکر از طریق پرمیشن ها هک کرده باشه یا اینکه sql injection.
من چند تا اسکریپت دارم که کوئری رو به صورت زیر می گیرم یا ارسال می کنم.

کد اول

$query = mysql_fetch_array(mysql_query("select * from table_name where id='$id'"));
echo $query[status];در ضمن $id رو هم به صورت زیر میگیرم.

$id = $_GET['id'];کد دوم

mysql_query("INSERT INTO `table_name` VALUES('$id', '', '$folder', '$url', '$name', '', '')")اون متغییر ها هم به روش بالا گرفته میشه.

کد سوم

mysql_query("UPDATE `yasgig`.`table_name` SET `a`= '$a',`b`= '$b',`c`= '$c',`d`= '$d',`e`= '$e',`f`= '$f' WHERE `z` = '$z' LIMIT 1");کد چهارم


$sql = "select * from table_name ORDER BY RAND() LIMIT 1";
$result = mysql_query($sql) or die(mysql_error());
$R = mysql_fetch_array($result);
echo $R[random];در ضمن با کد زیر به بانک اطلاعاتی متصل میشم:

mysql_connect('localhost','root','');
mysql_select_db('yasar');
mysql_query("SET NAMES 'utf8'");آیا این پنج تکه کدی که من واستون قرار دادم مشکل امنیتی دارند یا نه؟فقط می خوام بدونم سایت من که فقط با این کوئری ها کار میکنه می تونه از طریق sql injection هک بشه؟اگه از این طریق هک نشده پس چجوری هم شده؟آیا هکر می تونه از طریق کدی که به بانک اطلاعاتی متصل میشه رمز پنل منو بدست بیاره؟کلا فایلهای منو پاک کرده بود.
لطفا یه راهنمایی کنین تا بتونم امنیت سایت خودمو افزایش بدم.
با تشکر

bestirani2
جمعه 01 مرداد 1389, 22:36 عصر
این کد مشکل sql injection داره
بعد از این که متغیر ها رو بدین صورت میگیری

$id = $_GET['id']; باید از کد زیر استفاده کنی

$id = mysql_real_escape_string($id)
البته روی صحبتم با بقیه متغیر ها از جمله folder و ... هم هست

yasgig
جمعه 01 مرداد 1389, 23:12 عصر
ممنون.آیا مشکل دیگه ای نمی بینید؟

mohmadd
جمعه 01 مرداد 1389, 23:43 عصر
من زیاد با mysql_real_escape_string اشنا نیستم
ولی جایی شنیدم که به این صورت عمل کنیم


$id = (int)$_GET['id'];

فقط یادت باشه اگه $_GET['id'] ست نشده باشه مقدار $id صفره
(اینو به این دلیل گفتم که بعدا با تابع isset چک نکنی که به هر حال ture میده)

bestirani2
جمعه 01 مرداد 1389, 23:44 عصر
ممنون.آیا مشکل دیگه ای نمی بینید؟
داخل این تیکه کد که نه ا
ولی قسمت های دیگه ی سایتتون باید باز هم مشکل باشه

امیـرحسین
شنبه 02 مرداد 1389, 00:36 صبح
برای چک کردن امنیت در کدها، باید حواسمون به ورودی ها باشه.
یعنی هر وقت داریم از کاربر اطلاعاتی رو میگیریم، کاربر یک هکر یا یه آدم بیکاره، مگه اینکه خلافش ثابت شه.
از اونجاییکه GET و POST رو کاربر میتونه بفرسته، پس باید به هر GET وPOST ای مشکوک باشیم.

yasgig
شنبه 02 مرداد 1389, 10:16 صبح
اگه حق دسترسی ها درست ست نشده باشن هکر می تونه به راحتی هک کنه؟در ضمن سرور ما هم امن نبود با شرکت ارائه دهنده صحبت کردم و اونا هاست منو به سرورهای امن منتقل کردند.
دلیل برای نا امن بودن سرور:
http://www.zone-h.com/archive/ip=173.45.73.115
من حالا می خوام سایت رو دوباره آپلود کنم در صورتی که کدهای بالا اشکالی توش نباشه.در ضمن من توی برخی از کدها مثلا توی ابزار های وب مستر رنگ پس زمینه و متن رو از کاربر با GET می گیرم ولی هیچ گونه ربطی به بانک اطلاعاتی نداره.آیا این هم می تونه مشکل ساز باشه؟

rapidpich
شنبه 02 مرداد 1389, 10:16 صبح
شما پس روت نداری برای mysql یا اینجا برداشتی؟
سرور هایی مثل mysql یا php یا apache با یوز روت اجرا نمیشن که میشن؟
php شما از مدل suexec هست یا با apache-module? اگه از نوع دوما خیلی خطرناکه حسن!

yasgig
شنبه 02 مرداد 1389, 12:05 عصر
شما پس روت نداری برای mysql یا اینجا برداشتی؟
نه من از سی پنل استفاده می کنم و با اطلاعات دیگه به بانک اطلاعاتی متصل میشم.فقط این نمونه کد رو گذاشتم تا ببینم که شیوه اتصال من به بانک اطلاعاتی درسته یا نه.

php شما از مدل suexec هست یا با apache-module?
اینا که گفتین چی هستن؟چجوری میشه تشخیص داد؟
میشه کمی هم در مورد حق دسترسی ها توضیح بدین؟آخه قبلا اصلا به این مورد توجه نمی کردم و سایت رو همون جوری که آپلود می کردم کار رو تموم می کردم و به حق دسترسی فایلها و پوشه ها توجه نمی کردم.

xoogle.ir
شنبه 02 مرداد 1389, 14:39 عصر
میشه کمی هم در مورد حق دسترسی ها توضیح بدین؟آخه قبلا اصلا به این مورد توجه نمی کردم و سایت رو همون جوری که آپلود می کردم کار رو تموم می کردم و به حق دسترسی فایلها و پوشه ها توجه نمی کردم.

منم مشتاقم در این مورد بیشتر بدونم :لبخندساده:

bestirani2
شنبه 02 مرداد 1389, 16:45 عصر
اگه حق دسترسی ها درست ست نشده باشن هکر می تونه به راحتی هک کنه؟در ضمن سرور ما هم امن نبود با شرکت ارائه دهنده صحبت کردم و اونا هاست منو به سرورهای امن منتقل کردند.
دلیل برای نا امن بودن سرور:
http://www.zone-h.com/archive/ip=173.45.73.115
من حالا می خوام سایت رو دوباره آپلود کنم در صورتی که کدهای بالا اشکالی توش نباشه.در ضمن من توی برخی از کدها مثلا توی ابزار های وب مستر رنگ پس زمینه و متن رو از کاربر با GET می گیرم ولی هیچ گونه ربطی به بانک اطلاعاتی نداره.آیا این هم می تونه مشکل ساز باشه؟
این هم میتونه مشکل ساز بشه
مشکل بدتر از قبلی
به راحتی میشه یک دستور رو هکر اجرا کنه و هر کاری که میخواهد انجام بده حتی میتونه دستورات مربوط به سیستم عامل رو هم اجرا کنه با تابع system

rapidpich
یک شنبه 03 مرداد 1389, 15:19 عصر
منم مشتاقم در این مورد بیشتر بدونم :لبخندساده:
یک فایل php بسازید
در اون این دستور رو بنویسید:



echo exec('whoami');


بعد نتیجه رو بگید اینجا

mohmadd
یک شنبه 03 مرداد 1389, 15:28 عصر
whoami چه دستوریه ؟
منبع این دستور ها چین ؟


این هم میتونه مشکل ساز بشه
مشکل بدتر از قبلی
به راحتی میشه یک دستور رو هکر اجرا کنه و هر کاری که میخواهد انجام بده حتی میتونه دستورات مربوط به سیستم عامل رو هم اجرا کنه با تابع system
میشه یه مثال بزنید که چطور ؟

rapidpich
دوشنبه 04 مرداد 1389, 13:16 عصر
whoami یک دستور تو لینوکسه که میگه who am i! :لبخند:
نام کاربری که دستور رو اجرا کرده رو میده
منبع هم چی بگم؟ گوگل!

bestirani2
پنج شنبه 07 مرداد 1389, 13:26 عصر
میشه یه مثال بزنید که چطور ؟

مثال کامل در مورد راه های حمله از این روش طول میکشه فقط بگم که
یک هکر مانند یک کاربر عادی فکر نمیکنه و اطلاعاتی رو که از طرف کاربر میگیریم حتی اطلاعات ساده اگر بررسی نشه مشکل ساز میشه
مثالا کوتاه بخواهم بزنم برای همین GET اگر کاربر در ورودی یک کد جاوا اسکریپت وارد کنه که اطلاعات کوکی مربوط به سایت یا ... رو بخونه، دستکاری کنه و هر چیز دیگر و لینک اون رو به یک کاربر بده و اون کاربر با توجه به اعتبار سایت شما وارد بشه، میتونی کاربر را آلوده کنه
البته به اینجا ختم نمیشه و کارهای زیادی میشه کرد

xoogle.ir
پنج شنبه 07 مرداد 1389, 15:20 عصر
یک فایل php بسازید
در اون این دستور رو بنویسید:



echo exec('whoami');
بعد نتیجه رو بگید اینجا


خب اینم نتیجه :
hora-pc\hora
حالا که چی ؟ :لبخند:

rapidpich
شنبه 09 مرداد 1389, 19:59 عصر
نتیجه اینکه :لبخند:

تو ویندوز اگه کاربری که اون رو اجرا میکنه admin باشه بده.
البته من زیاد ویندوز بلد نیستم فقط در همین حد میدونم
ولی اگه لینوکس بود و توسط یوزر هایی مثل NOBODY , apache,www,www-data
و از این قبیل اجرا بشه بده.
اگه یکی سایت1 رو هک کنه میتونه از طریق اون سایت2 رو هک کن
اگه این کافی نیست! همه میتونن فایلهای همدیگرو ببینن! یعنی شما میتونی سایت همسایتو هک کنی!
ولی اگه هرکی توسط یوز خودش اجرا بشه یعنی hora مثلا اینطوری بهتره

yasgig
شنبه 09 مرداد 1389, 23:38 عصر
آیا نرم افزاری هست که بشه حق دسترسی کلیه فایلهای موجود در داخل پوشه public_html رو به 755 و فایلها رو به 644 تغییر داد؟از طریق فایل منیجر خود سی پنل فقط میشه تک تک حق دسترسی ها رو تغییر داد.

rapidpich
یک شنبه 10 مرداد 1389, 11:28 صبح
باید Shell داشته باشی
از هاستت بخواه اینکارو بکنه.