امنيت دهي به phpbb(سايتتون رو دوست داريد بخونيد)

4shir

Member
سلام اين دوتا مقاله هم در مورد بالا بردن امنيت در phpbbهست كه اولي در مورد نحوه قرار دادن پسورد براي پوشه ادمين هست و دومي هم در مورد نحوه مخفي كردن فايل كانفيگ هستش
گزاشتن ÷سورد روی ÷وشه ادمین

اين هم ترجيح دادم پستش كنم همينجا
امنيت در phpbb
با سلام راستش اين مقاله رو يك دفعه زد به سرم بنويسم چون مدتي بود چيزي ننوشته بودم و همش درگير امتحانات و كاراي سايت خودمون رو اين پورتال بودم كه تمام وقتم رو گرفته بود و ديگه مطلبي نمينوشتم الان گفتم بشينم يك چيزي بنويسم به درد مردم بخوره ;) شايد يكم دعامون كردن وضعمون بهتر شد شوخي كردم بگزريم بريم سر اصل مطلب امنيت در سيستم هاي اماده مثل phpbb و phpnuke همونطور كه همه ميدونيد اين دو پورتال اماده الان بيشترين استفاده رو در بين كاربران داره و از استقبال عمومي خوبي برخوردار هستن دليلش رو هم اصلان كاري نداريم ولي شايد بزرگترين دليلش رايگان بودنش هست همين استقبال و عموميتش باعث شده كه خيلي ها روش كار كنن و دنبال سوراخ سنبه هاش بگردن و همونطور كه همه ميدونيم براي ورژن هاي قبلي باگهاي زيادي اومد كه سايتهاي زيادي رو از كار انداختن براي جلوگيري از هك شدن فروم هم هميشه راههاي پيشگيري وجود داره و نبايد منتظر باشيم تا يك پتچ امنيتي براي اون بياد و بعد ما بريم اون پتچ رو دانلود كنيم و كلي هم نفرين و غر به سازنده بي بي كه چرا هر دوهفته يكبار بايد پتچ كنيم فايلها رو اگر يادتون باشه كرم سانتي موقعي كه اومد ظرف24 ساعت چيزي در حدود 2 يا 3 هزار و شايد هم بيشتر سايت رو كامل ديفيس كرد نه تنها سايتهاي كه با بي بي بودن خيلي از سايتها هم ipbو حتي چندتاي هم vb توشون بود (چون ليست باگها تقريبا يكسيان بودن و محدود به بي بي نبود) موقعي كه سورس ورم رو من ديدم از يك هفته قبل از اينكه پخش بشه توي نت هشدارش رو به همه دادم و وقتي سورس و باگي رو كه ازش استفاده ميكرد روي سايتهاي خودمون مثل مجيد انلاين و يا سايت اقا مهدي كرامتي تست كردم خيلي راحت جواب داد و من ميتونستم سايتشون رو مورد نفوذ قرار بدم ولي اينكار رو نكردم سايت اقا مجيد رو كه با فرستادن پتچ براشون مشكلش حل شد سايت اقاي كرامتي رو هم كه اينقدر از قرار پتچ نكردن تا يكي ديگه متوجه شد و همين هفته پيش سايت ايشون رو هك كردن حالا ميخوام نحوه عملكرد كرم سانتي و باگي رو كه ازش استفاده ميكرد رو بگم براتون اين باگ در تاريخ 13/11 اگر استباه نكنم پابليك شد و در حدود دو هفته قبلش هم دست هكر هاي زير زميني بود حالا بريم سراغ كار باگ
[align=left:e932c68261]##q.pl www.phpbb.com /phpBB/ 239819 "ls -la"
## *** CMD: [ ls -la ]
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## total 507
## drwxr-xr-x 12 dhn phpbb 896 Oct 13 18:23 .
## drwxrwxr-x 19 root phpbb 1112 Nov 12 15:08 ..
## drwxr-xr-x 2 dhn phpbb 152 Oct 13 18:23 CVS
## drwxr-xr-x 3 dhn phpbb 944 Jul 19 15:17 admin
## drwxrwxrwx 5 dhn phpbb 160 Aug 14 21:19 cache
## -rw-r--r-- 1 dhn phpbb 44413 Mar 11 2004 catdb.php
## -rw-r--r-- 1 dhn phpbb 5798 Jul 19 15:17 common.php
## -rw-r--r-- 1 root root 264 Jul 2 08:05 config.php
## drwxr-xr-x 3 dhn phpbb 136 Jun 24 06:40 db
## drwxr-xr-x 3 dhn phpbb 320 Jul 19 15:17 docs
## -rw-r--r-- 1 dhn phpbb 814 Oct 30 2003 extension.inc
## -rw-r--r-- 1 dhn phpbb 3646 Jul 10 04:21 faq.php
## drwxr-xr-x 2 dhn phpbb 96 Aug 12 14:59 files
## -rw-r--r-- 1 dhn phpbb 45642 Jul 12 12:42 index.php
## drwxr-xr-x 60 dhn phpbb 2008 Sep 27 01:54 language
## -rw-r--r-- 1 dhn phpbb 7481 Jul 19 15:17 login.php
## -rw-r--r-- 1 dhn phpbb 12321 Mar 4 2004 memberlist.php
## -rw-r--r-- 1 dhn phpbb 37639 Jul 10 04:21 modcp.php
## -rw-r--r-- 1 dhn phpbb 45945 Mar 24 2004 mods_manager.php
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[/align:e932c68261]
خوب توضيحي در مورد اينكه اينها چي هستن نميدوم فقط همونطور كه ميبينيد با اجراي اين باگ روي سايت خود www.phpbb.com اطلاعات و ليست تمام فايلها با سطح دسترسي بهشون رو نشون ميده سطح دسترسي در لينوكس به صورت drwxr-xr-x و غيره نشون داده ميشه خوب حالا كه ميخوام مطلب رو بگم بزاريد سطوح دسترسي رو هم بگم براتون پس فعلان از بحث اين باگ خارج بشيم چون اين مطلب گمونم به دردتون هم بخوره براي همين ميگم
تعيين سطوح دسترسي در ويندوز و لينوكس براي يك فايل
در جدیدترین و امن ترین فایل سیستم مایکروسافت یعنی NTFS 5.0 امکان تعیین سطوح مختلف دسترسی به دایرکتوری ها ( و نه فایل‌ها!) برای کاربران مختلف به صورت زیر وجود دارد:
1-No Access
2-Read
3-Read & Execute
4-Write
5-Full Control
در حالت اول کاربر مورد نظر هیچگونه دسترسی به دایرکتوری مورد نظر ندارد. حالت دوم تنها می تواند فایل‌ها را ببیند ولی امکان اجرای فایل‌ها (ی اجرایی) را ندارد ( بیچاره !!!). در گزینه سوم این اختیار به کاربر داده شده است تا فایل‌ها را اجرا کند. در حالت چهارم یا Write کاربر قادر به انجام هر کاری جز تغییر سطوح دسترسی به دایرکتوری مورد نظر را دارد. به این حالت Modify هم گفته می‌شود و بالاخره در آخرین حالت کاربر می‌تواند هر آنچه را اراده می‌کند اعمال کند!!! این سطح دسترسی معمولا مخصوص Administrator بوده و به نااهلان داده نمی‌شود
همانگونه که اشاره شد در این فایل سیستم امکان فیلتر کردن دسترسی کاربران به فایل‌ها وجود ندارد و تمام فایل‌های موجود در یک دایرکتوری به لحاظ سطح دسترسی تابع دایرکتوری خود هستند. اما در لینوکس استراتژی کاملا متفاوت است. دسترسی به هر فایل یا دایرکتوری توسط ۹بیت اطلاعات اضافه‌ای که به فایل یا دایرکتوری چسبانده می‌شود برای ۳ کلاس ۳ بیتی کاربر, گروه کاربر و سایر کاربران , تعیین می‌شود که به ترتیب با کدهای u(کاربر) , g(گروه) و o(سایرین) مشخص می‌شوند. 0 یا 1 بودن بیت اول تعیین کننده دسترسی خواندن (Read)برای صاحب فایل ( کاربر), بیت دوم امکان نوشتن (Write) و ایجاد تغییر در فایل یا دایرکتوری مورد نظر و بالاخره بیت سوم امکان اجرای(eXecute) فایل‌های اجرایی را مشخص می‌کند. سه بیت دوم این دسترسی‌ها را برای کلاس گروه کاربر و سه بیت آخر دسترسی‌ها را برای سایر کاربران مشخص می‌کند. در صورتی که یک مجوز به کاربری داده نشده باشد به جای مجوز مورد نظر(یکی از حروف R,W یاX ) هنگام نمایش مجوزها، علامت دش (-) دیده می‌شود. آنچه در زیر دیده می‌شود مجوز دسترسی کامل به یک فایل است. یعنی همه کاربران امکان خواندن، نوشتن و اجرای فایل را دارند :
rwxrwxrwx
یا در حالتی که صاحب فایل دسترسی کامل، گروهش امکان خواندن و اجرا و سایرین هیچگونه دسترسی به فایل مورد نظر نداشته باشند این مجوزها به صورت زیر خواهد بود:
rwxr-x---
نمونه‌ای از این مجوزها را می‌توانید با اجرای فرمان ls -l مشاهده نمایید. توجه کنید که علاوه بر ۹بیت ذکر شده، یک کاراکتر اضافه نیز در ابتدای این رشته وجود دارد که تعیین کننده نوع فایل است که برای فایل‌های عادی بصورت دش (-) و برای دایرکتوری ها بصورت d دیده می‌شود:
drwxr-xr-x
-rwxr-xr-x
نکته:
مجوز پیش فرض برای فایل‌های جدید بصورت زیر است:
rw-r- - r--
و در صورتی که فایلی توسط یکی از کامپایلرهای موجود اجرایی شده باشد x (یا امکان اجرا کردن) به دسترسی‌ها اضافه می‌گردد. مجوز پیش فرض دسترسی به یک دایرکتوری جدید نیز مشابه همین حالت است:
rwxr-xr-x
خوب حالا ميريم سراغ باگ خودمون و خروجي رو كه پس از اجرا بهون داده رو نگاه ميكنيم
config.php[align=left:e932c68261]
## drwxr-xr-x 3 dhn phpbb 136 Jun 24 06:40 db
## drwxr-xr-x 3 dhn phpbb 320 Jul 19 15:17 docs
## -rw-r--r-- 1 dhn phpbb 814 Oct 30 2003[/align:e932c68261]
اين مهمترين خروجي هست كه از كل اون اطلاعات به ما داده فايل config كه همه ما به اهميت اون اشنا هستيم و ميدونيم دسترسي يك هكر به فايل كانفيگ مساوي با داغون شدن سايتمون هست حالا به مهم ترين و جالي ترين كار اين اكسپوليت ميرسيم و اون دستور دوم و فراخواني فايل كانفيگ هستش
[align=left:e932c68261]## q.pl www.phpbb.com /phpBB/ 239819 "cat config.php"
## *** CMD: [ cat config.php ]
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## $dbms = "mysql";
## $dbhost = "localhost";
## $dbname = "phpbb";
## $dbuser = "phpbb";
## $dbpasswd = "phpBB_R0cKs";
## $table_prefix = "phpbb_";[/align:e932c68261]
و ميبينيم كه خيلي راحت يوزر و پسورد ديتابيس سايت مورد نظرمون در اومد و به كمك يك برنامه كه ما رو به ديتابيس متصل كنه ميتونيم لاگين كنيم به ديتابيس و ........... كه ميدونم تا همينجاش هم چندتاي از قوانين اين تالار رو زير پا گزاشتم ولي خوب من هميشه گفتم نه تنها من خيلي هاي ديگه هم گفتن كه يك دزد خوب بايد بتونه يك پليس خوب هم بشه براي همين شما هم اگر ميخوايد سيستمتون و يا سايتتون هك نشه بايد با شيوه هاي هك اشنا بشيد خوب حالا فرض كنيد يكي مثل اقاي مهدي كرامتي فرصت نصب پتچ رو روي سايتشون نداشتن تكليف ميشه چي ؟!!
من توي مقاله قبليم نحوه گزاشتن پسورد روي پوشه ادمين رو گفتم و توضيح دادم كه با اينكار شما ميتونيد جلوي 95% از هك شدنها رو بگيريد (هك هاي كه از طريق اكسپوليت و urlهستن ) خوب ميبينيد كه توي اين باگ و خيلي از باگهاي ديگه اصلان كاري به پوشه ادمين نداريم و فايل كانفيگ و ديتابيس مورد حمله قرار گرفته فكر ميكنيد موقعي كه من اين اكسپوليت رو روي سايت خودم تست كردم چه پيغامي دريافت كردم؟
پيغام اين بود فايل config.php پيدا نشد ;) با اينكه سايت من اون زمان نه پتچ شده بود و نه 2.0.11 بود بلكه 2.0.10 بودم با اينكه سايت من باگ رو داشت ولي نتونستم بهش نفوذ كنم و تنها علت اون پيشگيري بود و مخفي كردن فايل كانفيگ طوري كه ديگه كسي بهش دسترسي نداشته باشه (مگر اينكه سرور رو زده باشه كه بتونه ببينه كه در اون صورت هم گمون نكنم طرف كارش گير فايل كانفيگ شما باشه ;) )
خوب بريم سر اصل مطلب نحوه مخفي كردن فايل كانفيگ در phpbb براي اين كار به كمك يك برنامه FTPبه سايت خودتون وصل بشيد و فايل configرو از توي پوشه فروم برداريد و به قسمتي ببريد كه پوشه هاي اصلي هستن يعني يك پوشه قبل از public-html و اونجا بزاريدش حالا فروم شما ديگه باز نميشه چون پيغام ميده كه نميتونه
The requested URL /forum/install/install.php was not found on this server
چون وقتي فايل كانفيگ نباشه و يا اطلاعاتش رو خالي كنيد بي بي خودش اتوماتيك ميره براي نصب و پيغام ميده كه پوشه اينستال رو نميتونه پيدا كنه خوب حالا چيكار كنيم كه فروم به حالت اولش برگرده براي اينكار فايل common.php رو باز كنيد و
کد:
include($phpbb_root_path . 'config.'.$phpEx);
رو پيدا كنيد و بعد با اين عوضش كنيد
کد:
include($phpbb_root_path . '../config.'.$phpEx);
خوب اين كار در صورتي جواب ميده كه شما بي بي رو در پوشه public_html نصب كرده باشيد و چون 99% شماها اينكار رو نكرديد و اون رو توي يك شاخه و اكثرا شاخه forum نصب كرديد اين كار رو انجام بديد به اضا، هر چند پوشه كه تا root داريد اين عبارت رو (../ ) به include($phpbb_root_path . '../config.'.$phpEx); اضافه كنيد مثلا اگر شما فرومتون رو در آدرس زير نصب كرديد public_html/forum فايل كانفيگ رو توي روت بزاريد(root همون پوشه قبل از punlic_html هستش ) و بعد توي common.php عبارت
کد:
 include($phpbb_root_path . 'config.'.$phpEx);
رو با اين عوض كنيد
کد:
include($phpbb_root_path . '../../config.'.$phpEx);
با اينكار دسترسي به فايل كانفيگ رو بر ميداريد خوب اين از اين حالا ميريم سراغ باگ بعدي كه متاسفانه نميتونم توضيحي ازش براتون يزنم دليلش رو هم نميگم فقط اين كار رو كه مي گم براي بالا بردن امنيت در موقع لاگين كردن كاربرا هستش و ميشه گفت بهتر هستش كه اينكار رو انجام بديد در ضمن سايت phpbbhacks هم اقدام به پخش يك مود به اسم login security براي اين باگ كرده كه توصيه ميكنم حتمي اين مود رو هم بگيريد البته كارش هميني هست كه اينجا ميگم و اگر اين رو نصب كنيد نيازي به اون نداريد اين هم لينك تاپيكي كه در مورد اين مود و پتچ توضيح بيشتري داده خواستيد ميتونيد بريد ببينيد
http://www.frostjedi.com/phpbb/viewforum.php?f=33
خوب اول اين متنهاي رو كه بين دوتا خط ميزارم رو كپي كنيد و توي يك فايل با اسم md.js بزاريد و (براي اينكار يك فايل تكتس درست كنيد و اينها رو توش پست كنيد و بعد با اسم md5.js ذخيره كنيد )
-----------------------------
کد:
/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */

/*
 * Configurable variables. You may need to tweak these to be compatible with
 * the server-side, but the defaults work in most cases.
 */
var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */

/*
 * These are the functions you'll usually want to call
 * They take string arguments and return either hex or base-64 encoded strings
 */
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }

/*
 * Perform a simple self-test to see if the VM is working
 */
function md5_vm_test()
{
  return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}

/*
 * Calculate the MD5 of an array of little-endian words, and a bit length
 */
function core_md5(x, len)
{
  /* append padding */
  x[len >> 5] |= 0x80 << ((len) % 32);
  x[(((len + 64) >>> 9) << 4) + 14] = len;

  var a =  1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d =  271733878;

  for(var i = 0; i < x.length; i += 16)
  {
    var olda = a;
    var oldb = b;
    var oldc = c;
    var oldd = d;

    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);

    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);

    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);

    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);

    a = safe_add(a, olda);
    b = safe_add(b, oldb);
    c = safe_add(c, oldc);
    d = safe_add(d, oldd);
  }
  return Array(a, b, c, d);

}

/*
 * These functions implement the four basic operations the algorithm uses.
 */
function md5_cmn(q, a, b, x, s, t)
{
  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}

/*
 * Calculate the HMAC-MD5, of a key and some data
 */
function core_hmac_md5(key, data)
{
  var bkey = str2binl(key);
  if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);

  var ipad = Array(16), opad = Array(16);
  for(var i = 0; i < 16; i++)
  {
    ipad[i] = bkey[i] ^ 0x36363636;
    opad[i] = bkey[i] ^ 0x5C5C5C5C;
  }

  var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
  return core_md5(opad.concat(hash), 512 + 128);
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
 * to work around bugs in some JS interpreters.
 */
function safe_add(x, y)
{
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * Bitwise rotate a 32-bit number to the left.
 */
function bit_rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}

/*
 * Convert a string to an array of little-endian words
 * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
 */
function str2binl(str)
{
  var bin = Array();
  var mask = (1 << chrsz) - 1;
  for(var i = 0; i < str.length * chrsz; i += chrsz)
    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
  return bin;
}

/*
 * Convert an array of little-endian words to a string
 */
function binl2str(bin)
{
  var str = "";
  var mask = (1 << chrsz) - 1;
  for(var i = 0; i < bin.length * 32; i += chrsz)
    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
  return str;
}

/*
 * Convert an array of little-endian words to a hex string.
 */
function binl2hex(binarray)
{
  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var str = "";
  for(var i = 0; i < binarray.length * 4; i++)
  {
    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
  }
  return str;
}

/*
 * Convert an array of little-endian words to a base-64 string
 */
function binl2b64(binarray)
{
  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  var str = "";
  for(var i = 0; i < binarray.length * 4; i += 3)
  {
    var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
    for(var j = 0; j < 4; j++)
    {
      if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
      else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
    }
  }
  return str;
}
------------------------------------------
فقط بگم كه خطها رو كپي نكنيد هرچي بين دوتا خط هست با اينكار تمام پسوردها رو به الگوريتم تبديل به md5
ميبيريد و با اينكار امنيت پسوردها رو خيلي بالا ميبيرد البته من هيچ تضميني در مورد اين مود نميدوم و خودم هم هنوز روي سايتم نصب نكردم روي لوكال تستش كردم چيز جالبي بوده و قاعدا وقتي سايت بيبي هك هم در موردش بحث كرده و براش يك مود داده بيرون نصبش نبايد مشكلي ايجاد كنه
خوب بعد از اينكار توي پوشه فرومتون يك پوشه با اسم javascript درست كنيد و فايل md5.js رو توي اون كپي كنيد حالا فايل login.php رو باز كنيد و اين عبارت رو توش پيدا كنيد
کد:
if( md5($password) == $row['user_password'] && $row['user_active'] )
و با اين يكي عوضش كنيد
کد:
if( $password == $row['user_password'] && $row['user_active'] )
بعد توي تمپلت سايتتون
templates/tamplate name/login_body.tpl
دنبال
کد:
<form action="{S_LOGIN_ACTION}" method="post" target="_top">
بگرديد و با اين كد عوضش كنيد
کد:
<script type="text/javascript" src="javascript/md5.js"></script>
 <form action="{S_LOGIN_ACTION}" method="post" onsubmit="this.password.value=hex_md5(this.password.value)" target="_top">
حالا فايل
templates/tamplate name/ index_body.tpl
رو باز كنيد و دنبال
کد:
<form method="post" action="{S_LOGIN_ACTION}">
و با اين كد عوضش كنيد
کد:
<script type="text/javascript" src="javascript/md5.js"></script>
<form method="post" action="{S_LOGIN_ACTION}" onsubmit="this.password.value=hex_md5(this.password.value)">
با اينكار ميشه گفت پسوردهاتون رو امن ميكنيد موقع لاگين كردن
خوب تا اينجا شد دوتا كار كه با اين دوتا كار تا حد خيلي زيادي ميتونيد جلوي نفوز به ساتهاتون رو بگيريد كار سوم رو كه ميخوام براتون بگم اين هست كه كلا فايل ادمين رو بيخيال بشيد يعني اينكه سر كار بزاريد هكر رو و يا حتي اكسپوليت رو به اين صورت كه پوشه اصلي ادمين رو تغيير نام بديد به يك عبارت كه دوست داريد و بعد يك پوشه درست كنيد به اسم آدمين و يكي دوتا فايل بزاريد توش فايل ايندكس رو مثلا و يا يك عكس خيلي باحال ;) بعد ميتونيد هر موقع كه خواستيد به منوي مديريت سايتتون بريد اسم فايل تقلبي رو عوض كنيد و فايل خودتون رو دوباره تغيير نام بديد به ادمين و بعد از اينكه كارتون تمام شد حتمي باز هم پوشه رو به اسم تقلبي عوض كنيد بخاطر اين ميگم كه يك پوشه ديگه تقلبي به اسم ادمين درست كنيد كه طرف بره سر كار ;) چون وقتي پوشه نباشه ارور ميده و طرف سريع ميفهمه كه پوشه تغيير نام داده شده ولي وقتي يكي باشه و روش هم پسورد گزاشته شده باشه شك كسي رو بر نمي ا نگيزه راههاي ديگه اي هم هست كه بعدا و در مقالات بعدي اگر عمري بود ميگم براتون فعلان همين 4 تا كاري رو كه گفتم انجام بديد تا ببينيم چي ميشه در ضمن هيچوقت از اپگريد كردن فرومتون غافل نشيد موفق باشيد
ساسان احمدي
در ضمن كپي رايت مطلب رو هم لطفا رعايت كنيد
 

Ghamnevis

Well-Known Member
مرســـــــــــــــي ساسان

جالب بود و مفيد فايده...

دستت درد نكنه...

آف هاي بنده را هم بخون :)

مخلصم
سايان
 

masqxz2

Member
عالي بود مثل هميشه ولي يك سوال اون روش قبلي كه توضيح داده بودين بهتره يا اين يكي ؟ همون روشي كه بايد فقط يك فايل viewtopic.php رو ويرايش ميكرديد ؟
 

4shir

Member
خوب اول بگم دوستان عزيز سه روز از زمان ارسال اين مطلب ميگزره 37 تا كاربر ديدن ازش و احتمالا يكي دونفر بيشتر ازش استفاده نكنن و باقي به هيچ كدوم از اينا عمل نكنن بعد هم كه سايتشون هك ميشه همه چيز رو سر بي بي خالي ميكنن خوب خدمت همه عرض كنم كه تا دوهفته ديگه ميبينمتون اونوقت كسي جرات داره بگه سايت من بخاطر بي بي هك شد اين از اين دوم دوست عزيز سايان جان من از شما هيچ افي نداشتم شما هم كه جواب افا من رو نميدي عزيز دل برادر
سوم شما masqz2 اگر يادتون باشه موقعي كه پتچ رو دادم گفتم حتمي نصب كنيد چون باگ باگ هست درسته با اينهاي كه توي اين مقاله گفتم دسترسي اين باگ رو از طريق اين اكسپوليت بستيم ولي ممكنه اكسپوليت ديگه اي از همين باگ به طريق ديگهاي عمل كنه درست همونكاري كه كرم سانتي انجام داد پس دركنار اون پتچها هست كه اين كارها جواب ميده در ضمن تقيرات ريادي كه نيست خيلي ساده ميتونيد اينكار رو انجام بديد و كلا 5 مين وقتتون رو نميگيره
 

siavashmusic

Active Member
اين رعايت كردن مال كسايي هست كه مايه دارن و سايت دارن نه واسه امسال من كه در به در سايت هاي مجاني هستند ما مي خونيم تا ياد بگيريم عزيز جان برادر
آره جونم آره
 

4shir

Member
siavashmusic گفت:
اين رعايت كردن مال كسايي هست كه مايه دارن و سايت دارن نه واسه امسال من كه در به در سايت هاي مجاني هستند ما مي خونيم تا ياد بگيريم عزيز جان برادر
آره جونم آره
سلام خوب به نظرم اين طرز فكر اشتباه باشه بعد هم كي گفته سايت مال مايه داراست؟ شما با يه 9000 تومان براي ثبت دومين و جديدا ماهي 2000 تومان هم ميتونيد صاحب سايت بشيد امنيت مال همه كس در همه شرايط و همه جا هست نه براي افراد خاص
 

جدیدترین ارسال ها

بالا