دوستان من یک وب سایت با فریمورک لاراول نوشتم. دیشب هک شده . کاملا طبق آموزش های استاد موسوی بوده و سعی کردم با دقت تمام موارد امنیتی رو رعایت کنم .
همه جا از csrf-token ها و ... استفاده کردم و تقریبا سمت کلاینت اصلا از {!! !!} استفاده کردم .
وقتی از دیتابیسم اکسپورت خروجی میگیرم انتهای فایل کلی کدهای Html و js اضافه شده.
میخواستم بدونم از چه طریقی این حمله صورت گرفته کسی میتونه کمک کنه جلوشو بگیرم و سایتمو امن کنم.
این وبسایتم هست traderset.com
اینم یک بخشی از کدهایی که به انتهای فایل Sql اضافه شده.
به صورت فایل دانلود قرار میدم. چون خیلی طولانی بود نمیشد بذارم اینجا بخونید هم فایل sql هست هم html اضافه شده به دیتابیس و تصاویر ...
http://traderset.com/hack.zip
سلام
مطمئنا شما سایت رو زیادی با جی کوئری نوشتی شاید جاهای رو request->all ذخیره کردی و مطمئن هستم از کدهای جی کوئری تونسته دیتاهای رو به شما ارسال کنه. شاید پکیج های که استفاده میکنی این دسترسی رو ایجاد کردند. به هیچ وجه از هر پکیجی تویی پروژه نباس استفاده کرد. و یک توصیه دیگه من اینه که شما هر داده ی که از سمت کاربر ارسال میشه رو همیشه باید فیلترکنی با کدهای php و بعد سمت orm و .. بفرستی. و نکته بعدی تعداد درخواست ها رو باید مدیریت کنی شما اگر تویی کنترل نوشتی اگر جی کوئری بود دریافت کن چک کن بنویس و هیمنجوری الا اخر نباس اینجوری بنویسی باس تعداد ریکوئست های کاربر رو مدیریت بیشتری کنی ، مثلا در هر دقیقه یا ساعت مشخصا محدود کنی.
الان من یکی دو ساله سایت لاراولی دارم و هیچ مشکلی نداشتم. البته راکت خیلی بیشتر لاراولی هستش
این فرد ادعا کرده به راحتی میشه جعل درخواست کرد و به عنوان ادمین وارد شد . با اینکه من اصلا قسمت احراز هویت رو خودم ننوشتم که از همون Authentication خود لاراول استفاده کردم
php artisan make:auth
این ادعا چقدر میتونه درست باشه. با توجه به اینکه دیتابیس منو به راحتی هک کرده ، دقیقا نمیدونم اشکال از کدهای من بوده یا مستقیم هاست مو هک کرده.
شما چقدر مطمئنی که موارد امنیتی هاست شما رعایت شده ؟!
یعنی فایروال شما به خوبی پیکربندی شده ؟! اون قسمتی که وارد کردن کدشون رو و شما میفرمایید دستکاری شده رو فقط لطف کنید بفرستید
شرکت ایرانی mizbanfa، میزبان فا هستش ، فکر میکنم جزو بهترین شرکت های ایرانی هست.
ولی مطمئن نیستم اصلا پیکربندی خوب شده باشه و موارد امنیتی به خوبی رعایت شده باشه.
یک سری کدهای درهم به انتهای فایل خروجی از sql اضافه شده به هیچ تیبلی insert نشده ، اخر فایل همینطوری اضافه شده بود.
و اطلاعات جدول یوزرهام ناقص شده هین خروجی Sql . نمیدونم به جدول userها این کدهای Html تزریق شده یا خیر ...
<ul id="pma_recent_list">
<li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&table=discount_users&token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.discount_users</a></li>
<li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&table=orders&token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.orders</a></li>
<li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&table=libraries&token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.libraries</a></li>
<li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&table=password_resets&token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.password_resets</a></li>
<li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&table=orders_products&token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.orders_products</a></li>
<li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&table=products&token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.products</a></li>
<li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&table=settings&token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.settings</a></li>
<li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&table=users&token=eeccf079bc452711df1161c1a89149ab">betacode_traderset.users</a></li>
<li class="warp_link"><a href="tbl_recent_favorite.php?db=betacode_traderset&table=comments&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>
سلام به نظر بنده حمله از سایت انجام نشده و از طریق دسترسی به سرور صورت گرفته سایت شما تازه راه اندازی شده و فکر نکنم هکری بخواد خودشو واسه یه سایت تازه تاسیس اذیت کنه بنده سایتتونو دیدم و اون طوری که فرمودین موارد امنیتی رعایت شده نباید به این راحتی نفوذ انجام بشه تزریق sql هم با توجه به اینکه هسته سایتتون لاراوله خیلی سخته
@sardar
سلام سایت تازه تاسیس نیست ، سایت قبلا روی یک آدرس دیگه بود و ریبرند شده ، چون توی یک زمینه تخصصی خاصی داره فعالیت میکنه و صاحب سایت توی اون حوضه کمی اسمی و رسم داره ، هک صورت گرفته.
اطلاعات دیتابیس ما لو رفته.
فقط میخوام بدونم به چه صورتی انجام شده .
چون هکر ادعا داشت که هکر کلاه سفید هست . من باهاش صحبت کردم
ایشون ادعا کردن که سشن ها و کوکی ها اصلا رمزنگاری نمیشن ! همینطور ادعا داشت یک باگ روی متغییر remmeber_token در لاراول پیدا کرده که عمومی هم نیست از این طریق سایتو هک کردن !
واقعا نمیدونم باید چیکار کنم. من سورس سایت خودمو روی گیت میذارم احتمالا از دوستان میخوام کمکم کنن جایی باگ نداشته باشم .
بیشتر ازینا روی لاراول حساب میکردم
اطلاعات دیتابیس رو یا باید از طریق sql injection به دست بیاری یا ازطریق دسترسی به سرور یا روش ها نرم افزاری که وجود داره شایدم زمانی که ادرس رو تغییر دادین و ریبرند انجام شده وسط های کار سرور دی اکتیو شده و نفوذ انجام گرفته
اگه سشن و کوکی رمز نگاری نشه که الان سایت ها همشون هک شده بودن در مورد کوکی شاید یه جای کار رو خوب بچ نکردین و تونسته به مقادیر کوکی دسترسی پیدا کنه ولی سشن ها از طریق سرور تولید می شن و محاله بتونه رمزشو بشکنه چون دسترسی نداره بهش . یه جای کار ایراد داره من بارها تونستم از طریق اس کیو ال اینجکشن دسترسی بگیرم به پایگاه داده و جداول رو بیرون بکشم ولی سشن ها واقعا در این حد راحت و الکی نیستن در مورد باگ روی متغییر remmeber_token از جناب موسوی سوال کنین
لاراول بیشتر از اینها که فکر می کنین امنه
اول اینکه شما از کدوم ورژن لاراول استفاده میکنید ؟
دوم اینکه لاراول تا اونجای که میدونم کامل امن هست . شما جای از کاربر اطلاعات میگرید ؟ یعنی کاربر مثل همین فرم راکت مقداری رو وارد میکنه به دیتابیس ؟
ورژن 5.7 لاراول
بله فرم ارسال کامنت، پرسش و پاسخ ویرایش اطلاعات و...
اما در همه ی فرم های کاربر ، اعتبارسنجی سمت سرور انجام میشه . و csrf-token ها رو قرار میدم
سلام
مطمئنا شما سایت رو زیادی با جی کوئری نوشتی شاید جاهای رو request->all ذخیره کردی و مطمئن هستم از کدهای جی کوئری تونسته دیتاهای رو به شما ارسال کنه. شاید پکیج های که استفاده میکنی این دسترسی رو ایجاد کردند. به هیچ وجه از هر پکیجی تویی پروژه نباس استفاده کرد. و یک توصیه دیگه من اینه که شما هر داده ی که از سمت کاربر ارسال میشه رو همیشه باید فیلترکنی با کدهای php و بعد سمت orm و .. بفرستی. و نکته بعدی تعداد درخواست ها رو باید مدیریت کنی شما اگر تویی کنترل نوشتی اگر جی کوئری بود دریافت کن چک کن بنویس و هیمنجوری الا اخر نباس اینجوری بنویسی باس تعداد ریکوئست های کاربر رو مدیریت بیشتری کنی ، مثلا در هر دقیقه یا ساعت مشخصا محدود کنی.
الان من یکی دو ساله سایت لاراولی دارم و هیچ مشکلی نداشتم. البته راکت خیلی بیشتر لاراولی هستش
@kazemyavari سلام سیستم های پیش فرض لاراول تا حدودی به امنیت کمک میکنه اما به این معنا نیست که سایتی که با لاراول طراحی میشه کاملا امنه لاراول که این خودش از PDO استفاده میکنه اما از این موضوع نباید صرف نظر کرد که در صورت رعایت 'استگمنت صحیح' کارامد در ضمن ممکنه شما نکات رو به صورت کامل پیاده نکردید و یک جا رو یادتون رفته که همون باعث نفوذ به دیتا بیس شده چون خود PDO بسیار موضوع رو مشکل میکنه در صورت رعایت صحیح موارد اما در تمام حالات امنیت صد درصد نیست و اینکه ممکنه هکر ها راهی جهت دور زدن مکانیزم امنیتی PDO پیدا کردن که این بسیار بعیده که چنین چیز ارزشمندی رو رویه سایت شما تست کنن اما بهر حال چیز غیر ممکنی نیست به عنوان تجربه شخصی اگر بخواید تا حد زیادی اطمینان حاصل کنید که حمله ای رو یه سایتتون صورت نگیره باید شناخت بسیار حرفه ای نسبت به مشکلات امنیتی داشته باشید رو با دانش بر اینکه میدونید چگونه حملات اتفاق میوفتن سعی به جلوگیری کنید که خود این موضوع پروسه ای طولانی داره و شناخت این مسائل وقت زیادی لازم داره و حاصل سال ها تلاش و شخص باید بتونه دقیقا مثل یک هکر فکر کنه و دانش مورد نیاز و تجربه هم داشته باشه برای اطمنینان میتونید سایتتون رو به پنتستر بدید چک کنه و تا زمانی مشکل رو پیدا نکردید سایت رو انلاین نکنید و این رو هم بدونید فایروال جلو هکر رو نمیگیره فقط وقتشو میگیره و اگه هکر حرفه ای باشه قوی ترین فایروال ها مثل کلود هم نمیتونه جلوشو بگیره و اگر طبق گفته هکر از حملات CSRF استفاده شده باشه این نوع حمله بسیار مشکله دیتکت کردنش و به صورت پیشفرض باهاش نمیشه به دیتابیس دسترسی گرفت مگر از سیستم مدیریت محتواتون دسترسی گرقته و امنیت محیط داخلی cms ضعیف بوده و از طریق اون اقدام به اپلود شل رویه سرورتون کرده و به دیتابیس دسترسی گرفته گذشته از همه این حرفا تمام ورودی های و تمام مکان هایی که میتونن اسیب پذیر به حمله باشن تو سایتتون باید چک شن چون ممکنه حمله اصلا از جایه دیگه ای باشه و هکر دروغ گفته باشه موفق باشید
@davoodkhany
بله پاسخ مضحکی دادم :)
بعد از بررسی متوجه شدم فایل env رو هم تویی پابلیک اپلود کردن و ربطی هم به کدهای جی کوئری شون نداشت :|
چه جالب من این رو می دونستم که به فایل های داخل پاپلیک میشه دسترس داشت .
هیچ وقت فایل env رو اونجا آپلود نمی کردم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟