Salar
Active Member
در هفته اخير شاهد هك شدن بسياري از سايتهاي دولتي و غير دولتي بوده ايم ، كه خبرگزاريها حتي به بسياري از آنها اهميتي ندادند.(شايد اگر روزي خود دچار شوند ، تصميم بگيرند اين اخبار را پوشش دهند) مسوولين مربوطه اينگونه سايت ها نيز يا بي اهميت از اين مساله گذشتند ، گويي هيچ اتفاقي نيفتاده است و يا اينكه تقصير را گردن سرورهاي خارج از كشور انداختند و داستان هميشگي نبودن سرور ها و هاست هاي داخلي را بيان كردند. اما اگر مروري هر چند كوتاه بر اينگونه سايت هاي بيندازيم متوجه مي شويم كه اكثر آنها به روشهايي هك شدند كه به راحتي از طريق خود مدير سايتها قابل جلوگيري بوده است. مانند سايت بانك كشاورزي و يا سايت هلال احمر و ... كه در كمتر از نيم روز مشكل سايت خود را حل كردند.
مشكل كجاست ؟
بيشتر اين سايتها از مشكل هميشگي Input Validation رنج مي برند كه شايد با دو خط كدنويسي قابل پيشگيري باشد و يا استفاده از برنامه هاي آماده اي كه توسط شركتهاي برنامه نويسي نوشته شده اند و به صورت آزمايشي با حداقل امكانات در دسترس عموم قرار گرفته اند به دور از حتي يك خط كد نويسي امن !!
Input Validation چيست ؟
اين مشكل در واقع زماني رخ مي دهد كه داده درخواستي ما با داده هايي كه كاربر وارد مي كند مطابقت ندارد. مثلا هنگامي كه كاربر روي خبري كليك مي كند به صورت زير داده ها به سمت سرور مي روند :
http://www.WebSecurityMgz.com/ShowNews.asp?ID=123
يعني خبري با شماره 123 را از پايگاه داده پيدا كن و آن را نمايش بده!
اما هميشه اينگونه نيست كه خبر به همين الگو به سمت برنامه كاربردي ما پاس داده شود در اينجاست كه هكر ها با استفاده از تاكتيكهاي نفوذگري خود ، طوري URL را تغيير مي دهند كه تغييراتي به غير از چيزي كه مد نظر ما است، در سمت برنامه كاربردي رخ دهد. مثلا اگر خبر را به صورت زير ارسال كنيد خطايي رخ خواهد داد كه بعضي اطلاعات پايگاه داده سايت را به نفوذگر نشان مي دهد:
http://www.websecuritymgz.com/ShowNews.asp?ID=123
در بعضي از سايت ها ، با ارسال اين كد ، خبري به سايت اضافه مي شود و به همين راحتي صفحه اول تغيير مي كند:
http://www.websecuritymgz.com/ShowNews.asp?ID=123 UNION UPDATE SET Date=...Type=...Body=...Image=http://...
كه نفوذگر نام پايگاه داده و ستون هاي آن را از روي خطاهاي به وجود آمده و حدس گمان خود به دست مي آورد. شايد شما تا به حال مقاله يك باگ در سايت ITIran را خوانده باشيد و اگر نخوانديد توصيه مي كنم كه براي يك بار هم شده آن را مطالعه كنيد تا متوجه شويد كه يك نفوذگر با استفاده از يك اشكال در سايت ، چگونه به اعماق برنامه كاربردي شما نفوذ مي كند و تمام پايگاه داده شما را دانلود مي كند.
متاسفانه برنامه نويسان تحت وب ما حتي با الفباي اينگونه حملات آشنايي ندارند. شايد باورتان نشود كه من در يكي از شركتهاي معتبر برنامه نويسي تحت وب با يكي از برنامه نويسان با تجربه آن درباره اين مشكل صحبت مي كردم حتي يك بار هم به گوشش نخورده بود و حاضر نبود اين مشكل را براي سايت طرف قرارداد ما ، حل كند كه با پافشاري قبول كرد و اين مشكل حل شد. در اينجاست كه هكري 14 ساله به فوت و فن اين مسايل آشنا مي شود و سايت شركت نفت را با آن همه خرجي كه روي دست دولت گذاشته است در كمتر از چند دقيقه هك مي كند و صفحه اول آن را دستكاري مي كند.
از كجا شروع كنم ؟
حل اين مشكل بسيار ساده مي باشد ، فقط كافي است كه نوع داده هاي ورودي توسط URL ها را، از نظر طول ، نوع كاركتر (عدم وجود كاركترهاي مخصوص) ، نوع داده (عدد، رشته و ... ) و ... اعتبار سنجي كنيم و در صورتي كه اعتبار لازم را نداشته باشد صفحه خطا را نمايش دهيم.
مثلا اگر در مورد بالا اينگونه قرار داده باشيم كه ID هيچوقت نبايد بزرگتر از 4 حرف باشد و نوع آن نيز بايد عدد باشد ، هيچگاه خطايي ناخواسته رخ نمي داد و نام ستونهايي از پايگاه داده براي نفوذگر آشكار نمي شد.
براي آشنايي بيشتر با اينگونه حملات و نحوه جلوگيري از آن توصيه مي كنم مقالات URL شمشير نفوذگران وب قسمت اول و قسمت دوم را از سايت امنيت وب دريافت كرده و مطالعه كنيد.
اميد است كه با كمي همت برنامه نويسان وب در جهت آشنايي با اينگونه حملات، كمتر شاهد هك شدن سايت هاي ايراني قرار گيريم و اين حداقل امنيتي است كه ما مي توانيم براي سايت هاي خود فراهم كنيم.
مشكل كجاست ؟
بيشتر اين سايتها از مشكل هميشگي Input Validation رنج مي برند كه شايد با دو خط كدنويسي قابل پيشگيري باشد و يا استفاده از برنامه هاي آماده اي كه توسط شركتهاي برنامه نويسي نوشته شده اند و به صورت آزمايشي با حداقل امكانات در دسترس عموم قرار گرفته اند به دور از حتي يك خط كد نويسي امن !!
Input Validation چيست ؟
اين مشكل در واقع زماني رخ مي دهد كه داده درخواستي ما با داده هايي كه كاربر وارد مي كند مطابقت ندارد. مثلا هنگامي كه كاربر روي خبري كليك مي كند به صورت زير داده ها به سمت سرور مي روند :
http://www.WebSecurityMgz.com/ShowNews.asp?ID=123
يعني خبري با شماره 123 را از پايگاه داده پيدا كن و آن را نمايش بده!
اما هميشه اينگونه نيست كه خبر به همين الگو به سمت برنامه كاربردي ما پاس داده شود در اينجاست كه هكر ها با استفاده از تاكتيكهاي نفوذگري خود ، طوري URL را تغيير مي دهند كه تغييراتي به غير از چيزي كه مد نظر ما است، در سمت برنامه كاربردي رخ دهد. مثلا اگر خبر را به صورت زير ارسال كنيد خطايي رخ خواهد داد كه بعضي اطلاعات پايگاه داده سايت را به نفوذگر نشان مي دهد:
http://www.websecuritymgz.com/ShowNews.asp?ID=123
در بعضي از سايت ها ، با ارسال اين كد ، خبري به سايت اضافه مي شود و به همين راحتي صفحه اول تغيير مي كند:
http://www.websecuritymgz.com/ShowNews.asp?ID=123 UNION UPDATE SET Date=...Type=...Body=...Image=http://...
كه نفوذگر نام پايگاه داده و ستون هاي آن را از روي خطاهاي به وجود آمده و حدس گمان خود به دست مي آورد. شايد شما تا به حال مقاله يك باگ در سايت ITIran را خوانده باشيد و اگر نخوانديد توصيه مي كنم كه براي يك بار هم شده آن را مطالعه كنيد تا متوجه شويد كه يك نفوذگر با استفاده از يك اشكال در سايت ، چگونه به اعماق برنامه كاربردي شما نفوذ مي كند و تمام پايگاه داده شما را دانلود مي كند.
متاسفانه برنامه نويسان تحت وب ما حتي با الفباي اينگونه حملات آشنايي ندارند. شايد باورتان نشود كه من در يكي از شركتهاي معتبر برنامه نويسي تحت وب با يكي از برنامه نويسان با تجربه آن درباره اين مشكل صحبت مي كردم حتي يك بار هم به گوشش نخورده بود و حاضر نبود اين مشكل را براي سايت طرف قرارداد ما ، حل كند كه با پافشاري قبول كرد و اين مشكل حل شد. در اينجاست كه هكري 14 ساله به فوت و فن اين مسايل آشنا مي شود و سايت شركت نفت را با آن همه خرجي كه روي دست دولت گذاشته است در كمتر از چند دقيقه هك مي كند و صفحه اول آن را دستكاري مي كند.
از كجا شروع كنم ؟
حل اين مشكل بسيار ساده مي باشد ، فقط كافي است كه نوع داده هاي ورودي توسط URL ها را، از نظر طول ، نوع كاركتر (عدم وجود كاركترهاي مخصوص) ، نوع داده (عدد، رشته و ... ) و ... اعتبار سنجي كنيم و در صورتي كه اعتبار لازم را نداشته باشد صفحه خطا را نمايش دهيم.
مثلا اگر در مورد بالا اينگونه قرار داده باشيم كه ID هيچوقت نبايد بزرگتر از 4 حرف باشد و نوع آن نيز بايد عدد باشد ، هيچگاه خطايي ناخواسته رخ نمي داد و نام ستونهايي از پايگاه داده براي نفوذگر آشكار نمي شد.
براي آشنايي بيشتر با اينگونه حملات و نحوه جلوگيري از آن توصيه مي كنم مقالات URL شمشير نفوذگران وب قسمت اول و قسمت دوم را از سايت امنيت وب دريافت كرده و مطالعه كنيد.
اميد است كه با كمي همت برنامه نويسان وب در جهت آشنايي با اينگونه حملات، كمتر شاهد هك شدن سايت هاي ايراني قرار گيريم و اين حداقل امنيتي است كه ما مي توانيم براي سايت هاي خود فراهم كنيم.