کاظم یاوری
6 سال پیش توسط کاظم یاوری مطرح شد
17 پاسخ

هک شدن وب سایت لاراولی

دوستان من یک وب سایت با فریمورک لاراول نوشتم. دیشب هک شده . کاملا طبق آموزش های استاد موسوی بوده و سعی کردم با دقت تمام موارد امنیتی رو رعایت کنم .
همه جا از csrf-token ها و ... استفاده کردم و تقریبا سمت کلاینت اصلا از {!! !!} استفاده کردم .

وقتی از دیتابیسم اکسپورت خروجی میگیرم انتهای فایل کلی کدهای Html و js اضافه شده.
میخواستم بدونم از چه طریقی این حمله صورت گرفته کسی میتونه کمک کنه جلوشو بگیرم و سایتمو امن کنم.

این وبسایتم هست traderset.com

اینم یک بخشی از کدهایی که به انتهای فایل Sql اضافه شده.
به صورت فایل دانلود قرار میدم. چون خیلی طولانی بود نمیشد بذارم اینجا بخونید هم فایل sql هست هم html اضافه شده به دیتابیس و تصاویر ...
http://traderset.com/hack.zip


ثبت پرسش جدید
سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 6 سال پیش مطرح شد
1

سلام

مطمئنا شما سایت رو زیادی با جی کوئری نوشتی شاید جاهای رو request->all ذخیره کردی و مطمئن هستم از کدهای جی کوئری تونسته دیتاهای رو به شما ارسال کنه. شاید پکیج های که استفاده میکنی این دسترسی رو ایجاد کردند. به هیچ وجه از هر پکیجی تویی پروژه نباس استفاده کرد. و یک توصیه دیگه من اینه که شما هر داده ی که از سمت کاربر ارسال میشه رو همیشه باید فیلترکنی با کدهای php و بعد سمت orm و .. بفرستی. و نکته بعدی تعداد درخواست ها رو باید مدیریت کنی شما اگر تویی کنترل نوشتی اگر جی کوئری بود دریافت کن چک کن بنویس و هیمنجوری الا اخر نباس اینجوری بنویسی باس تعداد ریکوئست های کاربر رو مدیریت بیشتری کنی ، مثلا در هر دقیقه یا ساعت مشخصا محدود کنی.

الان من یکی دو ساله سایت لاراولی دارم و هیچ مشکلی نداشتم. البته راکت خیلی بیشتر لاراولی هستش


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 6 سال پیش مطرح شد
2

لطف کند کد هاتون رو در سه backtike باز و بسته قرار بدید تا بتونیم بخونیمشون.


کاظم یاوری
تخصص : برنامه نویس ارشد وب، پایتون
@kazemyavari 6 سال پیش مطرح شد
0

@hesammousavi
حسام جان به صورت فایل قرار دادم چون خیلی زیاد بود.


کاظم یاوری
تخصص : برنامه نویس ارشد وب، پایتون
@kazemyavari 6 سال پیش مطرح شد
0

این فرد ادعا کرده به راحتی میشه جعل درخواست کرد و به عنوان ادمین وارد شد . با اینکه من اصلا قسمت احراز هویت رو خودم ننوشتم که از همون Authentication خود لاراول استفاده کردم
php artisan make:auth
این ادعا چقدر میتونه درست باشه. با توجه به اینکه دیتابیس منو به راحتی هک کرده ، دقیقا نمیدونم اشکال از کدهای من بوده یا مستقیم هاست مو هک کرده.


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 6 سال پیش مطرح شد
0

شما چقدر مطمئنی که موارد امنیتی هاست شما رعایت شده ؟!
یعنی فایروال شما به خوبی پیکربندی شده ؟! اون قسمتی که وارد کردن کدشون رو و شما میفرمایید دستکاری شده رو فقط لطف کنید بفرستید


کاظم یاوری
تخصص : برنامه نویس ارشد وب، پایتون
@kazemyavari 6 سال پیش آپدیت شد
0

@hesammousavi

شرکت ایرانی mizbanfa، میزبان فا هستش ، فکر میکنم جزو بهترین شرکت های ایرانی هست.
ولی مطمئن نیستم اصلا پیکربندی خوب شده باشه و موارد امنیتی به خوبی رعایت شده باشه.

یک سری کدهای درهم به انتهای فایل خروجی از sql اضافه شده به هیچ تیبلی insert نشده ، اخر فایل همینطوری اضافه شده بود.
و اطلاعات جدول یوزرهام ناقص شده هین خروجی Sql . نمیدونم به جدول userها این کدهای Html تزریق شده یا خیر ...

<ul id="pma_recent_list">
                            <li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&amp;table=discount_users&amp;token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.discount_users</a></li>
                            <li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&amp;table=orders&amp;token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.orders</a></li>
                            <li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&amp;table=libraries&amp;token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.libraries</a></li>
                            <li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&amp;table=password_resets&amp;token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.password_resets</a></li>
                            <li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&amp;table=orders_products&amp;token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.orders_products</a></li>
                            <li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&amp;table=products&amp;token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.products</a></li>
                            <li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&amp;table=settings&amp;token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.settings</a></li>
                            <li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&amp;table=users&amp;token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.users</a></li>
                            <li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&amp;table=comments&amp;token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.comments</a></li>
                        </ul>

Cannot modify header information - headers already sent by (output started at /usr/local/cpanel/base/3rdparty/phpMyAdmin/libraries/export.lib.php:169)<br />
<br />
<strong>Backtrace</strong>

<script data-cfasync="false" type="text/javascript">
        // <![CDATA[
        PMA_commonParams.setAll({
            common_query: "?token=eeccf079bc452711df1161c1a89149ab",
            opendb_url: "db_structure.php",
            collation_connection: "utf8mb4_unicode_ci",
            lang: "en",
            server: "1",
            table: "",
            db: "betacode_traderset",
            token: "eeccf079bc452711df1161c1a89149ab",
            text_dir: "ltr",
            show_databases_navigation_as_tree: "1",
            pma_text_default_tab: "Browse",
            pma_text_left_default_tab: "Structure",
            pma_text_left_default_tab2: "",
            LimitChars: "50",
            pftext: "P",
            confirm: "1",
            LoginCookieValidity: "1440",
            session_gc_maxlifetime: "1440",
            logged_in: "1",
            PMA_VERSION: "4.7.7",
            auth_type: "cpanel",
            user: "betacode"
        });
        ConsoleEnterExecutes = false
        AJAX.scriptHandler.add("jquery/jquery.min.js", 0).add("jquery/jquery-migrate-3.0.0.js", 0).add("whitelist.php", 1).add("sprintf.js", 1).add("ajax.js", 0).add("keyhandler.js", 1).add("jquery/jquery-ui.min.js", 0).add("jquery/jquery.cookie.js", 0).add("jquery/jquery.mousewheel.js", 0).add("jquery/jquery.event.drag-2.2.js", 0).add("jquery/jquery-ui-timepicker-addon.js", 0).add("jquery/jquery.ba-hashchange-1.3.js", 0).add("jquery/jquery.debounce-1.0.5.js", 0).add("menu-resizer.js", 1).add("cross_framing_protection.js", 0).add("rte.js", 1).add("tracekit/tracekit.js", 1).add("error_report.js", 1).add("messages.php", 0).add("get_image.js.php", 0).add("config.js", 1).add("doclinks.js", 1).add("functions.js", 1).add("navigation.js", 1).add("indexes.js", 1).add("common.js", 1).add("page_settings.js", 1).add("shortcuts_handler.js", 1).add("codemirror/lib/codemirror.js", 0).add("codemirror/mode/sql/sql.js", 0).add("codemirror/addon/runmode/runmode.js", 0).add("codemirror/addon/hint/show-hint.js", 0).add("codemirror/addon/hint/sql-hint.js", 0).add("codemirror/addon/lint/lint.js", 0).add("codemirror/addon/lint/sql-lint.js", 0).add("console.js", 1);
        $(function() {
            AJAX.fireOnload("whitelist.php");
            AJAX.fireOnload("sprintf.js");
            AJAX.fireOnload("keyhandler.js");
            AJAX.fireOnload("menu-resizer.js");
            AJAX.fireOnload("rte.js");
            AJAX.fireOnload("tracekit/tracekit.js");
            AJAX.fireOnload("error_report.js");
            AJAX.fireOnload("config.js");
            AJAX.fireOnload("doclinks.js");
            AJAX.fireOnload("functions.js");
            AJAX.fireOnload("navigation.js");
            AJAX.fireOnload("indexes.js");
            AJAX.fireOnload("common.js");
            AJAX.fireOnload("page_settings.js");
            AJAX.fireOnload("shortcuts_handler.js");
            AJAX.fireOnload("console.js");
        });
        // ]]>
    </script>

علی
تخصص : طراح وب سایت , برنامه نویس php...
@sardar 6 سال پیش مطرح شد
0

سلام به نظر بنده حمله از سایت انجام نشده و از طریق دسترسی به سرور صورت گرفته سایت شما تازه راه اندازی شده و فکر نکنم هکری بخواد خودشو واسه یه سایت تازه تاسیس اذیت کنه بنده سایتتونو دیدم و اون طوری که فرمودین موارد امنیتی رعایت شده نباید به این راحتی نفوذ انجام بشه تزریق sql هم با توجه به اینکه هسته سایتتون لاراوله خیلی سخته


کاظم یاوری
تخصص : برنامه نویس ارشد وب، پایتون
@kazemyavari 6 سال پیش آپدیت شد
0

@sardar
سلام سایت تازه تاسیس نیست ، سایت قبلا روی یک آدرس دیگه بود و ریبرند شده ، چون توی یک زمینه تخصصی خاصی داره فعالیت میکنه و صاحب سایت توی اون حوضه کمی اسمی و رسم داره ، هک صورت گرفته.
اطلاعات دیتابیس ما لو رفته.
فقط میخوام بدونم به چه صورتی انجام شده .

چون هکر ادعا داشت که هکر کلاه سفید هست . من باهاش صحبت کردم
ایشون ادعا کردن که سشن ها و کوکی ها اصلا رمزنگاری نمیشن ! همینطور ادعا داشت یک باگ روی متغییر remmeber_token در لاراول پیدا کرده که عمومی هم نیست از این طریق سایتو هک کردن !
واقعا نمیدونم باید چیکار کنم. من سورس سایت خودمو روی گیت میذارم احتمالا از دوستان میخوام کمکم کنن جایی باگ نداشته باشم .

بیشتر ازینا روی لاراول حساب میکردم


علی
تخصص : طراح وب سایت , برنامه نویس php...
@sardar 6 سال پیش مطرح شد
0

اطلاعات دیتابیس رو یا باید از طریق sql injection به دست بیاری یا ازطریق دسترسی به سرور یا روش ها نرم افزاری که وجود داره شایدم زمانی که ادرس رو تغییر دادین و ریبرند انجام شده وسط های کار سرور دی اکتیو شده و نفوذ انجام گرفته


علی
تخصص : طراح وب سایت , برنامه نویس php...
@sardar 6 سال پیش مطرح شد
0

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


کاظم یاوری
تخصص : برنامه نویس ارشد وب، پایتون
@kazemyavari 6 سال پیش مطرح شد
0

@hesammousavi
جناب موسوی اگر به بنده کمک کنید ممنون میشم.


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 6 سال پیش مطرح شد
0

اول اینکه شما از کدوم ورژن لاراول استفاده میکنید ؟
دوم اینکه لاراول تا اونجای که میدونم کامل امن هست . شما جای از کاربر اطلاعات میگرید ؟ یعنی کاربر مثل همین فرم راکت مقداری رو وارد میکنه به دیتابیس ؟


کاظم یاوری
تخصص : برنامه نویس ارشد وب، پایتون
@kazemyavari 6 سال پیش مطرح شد
0

ورژن 5.7 لاراول
بله فرم ارسال کامنت، پرسش و پاسخ ویرایش اطلاعات و...
اما در همه ی فرم های کاربر ، اعتبارسنجی سمت سرور انجام میشه . و csrf-token ها رو قرار میدم


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 6 سال پیش مطرح شد
1

سلام

مطمئنا شما سایت رو زیادی با جی کوئری نوشتی شاید جاهای رو request->all ذخیره کردی و مطمئن هستم از کدهای جی کوئری تونسته دیتاهای رو به شما ارسال کنه. شاید پکیج های که استفاده میکنی این دسترسی رو ایجاد کردند. به هیچ وجه از هر پکیجی تویی پروژه نباس استفاده کرد. و یک توصیه دیگه من اینه که شما هر داده ی که از سمت کاربر ارسال میشه رو همیشه باید فیلترکنی با کدهای php و بعد سمت orm و .. بفرستی. و نکته بعدی تعداد درخواست ها رو باید مدیریت کنی شما اگر تویی کنترل نوشتی اگر جی کوئری بود دریافت کن چک کن بنویس و هیمنجوری الا اخر نباس اینجوری بنویسی باس تعداد ریکوئست های کاربر رو مدیریت بیشتری کنی ، مثلا در هر دقیقه یا ساعت مشخصا محدود کنی.

الان من یکی دو ساله سایت لاراولی دارم و هیچ مشکلی نداشتم. البته راکت خیلی بیشتر لاراولی هستش


noname212
@johnbl4cksmith 6 سال پیش آپدیت شد
0

@kazemyavari سلام سیستم های پیش فرض لاراول تا حدودی به امنیت کمک میکنه اما به این معنا نیست که سایتی که با لاراول طراحی میشه کاملا امنه لاراول که این خودش از PDO استفاده میکنه اما از این موضوع نباید صرف نظر کرد که در صورت رعایت 'استگمنت صحیح' کارامد در ضمن ممکنه شما نکات رو به صورت کامل پیاده نکردید و یک جا رو یادتون رفته که همون باعث نفوذ به دیتا بیس شده چون خود PDO بسیار موضوع رو مشکل میکنه در صورت رعایت صحیح موارد اما در تمام حالات امنیت صد درصد نیست و اینکه ممکنه هکر ها راهی جهت دور زدن مکانیزم امنیتی PDO پیدا کردن که این بسیار بعیده که چنین چیز ارزشمندی رو رویه سایت شما تست کنن اما بهر حال چیز غیر ممکنی نیست به عنوان تجربه شخصی اگر بخواید تا حد زیادی اطمینان حاصل کنید که حمله ای رو یه سایتتون صورت نگیره باید شناخت بسیار حرفه ای نسبت به مشکلات امنیتی داشته باشید رو با دانش بر اینکه میدونید چگونه حملات اتفاق میوفتن سعی به جلوگیری کنید که خود این موضوع پروسه ای طولانی داره و شناخت این مسائل وقت زیادی لازم داره و حاصل سال ها تلاش و شخص باید بتونه دقیقا مثل یک هکر فکر کنه و دانش مورد نیاز و تجربه هم داشته باشه برای اطمنینان میتونید سایتتون رو به پنتستر بدید چک کنه و تا زمانی مشکل رو پیدا نکردید سایت رو انلاین نکنید و این رو هم بدونید فایروال جلو هکر رو نمیگیره فقط وقتشو میگیره و اگه هکر حرفه ای باشه قوی ترین فایروال ها مثل کلود هم نمیتونه جلوشو بگیره و اگر طبق گفته هکر از حملات CSRF استفاده شده باشه این نوع حمله بسیار مشکله دیتکت کردنش و به صورت پیشفرض باهاش نمیشه به دیتابیس دسترسی گرفت مگر از سیستم مدیریت محتواتون دسترسی گرقته و امنیت محیط داخلی cms ضعیف بوده و از طریق اون اقدام به اپلود شل رویه سرورتون کرده و به دیتابیس دسترسی گرفته گذشته از همه این حرفا تمام ورودی های و تمام مکان هایی که میتونن اسیب پذیر به حمله باشن تو سایتتون باید چک شن چون ممکنه حمله اصلا از جایه دیگه ای باشه و هکر دروغ گفته باشه موفق باشید


داود خانی
تخصص : برنامه نویس لاراول و متخصص سئو...
@davoodkhany 5 سال پیش مطرح شد
0

پرسش و پاسخ جالبی بود


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 5 سال پیش مطرح شد
0

@davoodkhany
بله پاسخ مضحکی دادم :)
بعد از بررسی متوجه شدم فایل env رو هم تویی پابلیک اپلود کردن و ربطی هم به کدهای جی کوئری شون نداشت :|


داود خانی
تخصص : برنامه نویس لاراول و متخصص سئو...
@davoodkhany 5 سال پیش مطرح شد
0

چه جالب من این رو می دونستم که به فایل های داخل پاپلیک میشه دسترس داشت .
هیچ وقت فایل env رو اونجا آپلود نمی کردم.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام