پيشنهاداتي براي امنيت بيشتر ناك از iranportals

sasan4u

Member
در ذيل مطالبي كه آقا منصور عنوان كردند ليست شده براي دور ماندن از مسايل حاشيه اي:
تغيير ناگهاني لايه مديريت ماژولها در نوك 7.5 يك اشتباه فاحش نويسنده نوك كه باعث آسيب پذيري همه ماژولهاي نوك در مقابل حمله هكر ها شده . حتي سيستم پشتيبان نوك نيز قادر نيست از اين روش جديد كه مخصوص نوك 7.5 است جلوگيري كند مگر نسخه 2.1.1 كه دو روز قبل منتشر شده است .لطفا توجه كنيد تغيير فانكشن مديريت ماژولها از نسخه هاي قبل به نسخه 7.5 كاري منطقي است لكن در پياده سازي اين فانكشن جديد يك اشتباه اساسي صورت گرفته . بذاريد واضحتر بگويم همانطوريكه مي بينيد مديريت ماژولها به خود ماژول اضافه شده و فايل auth.php حذف شده . يعني در شاخه هر ماژول شاخه اي بنام admin قرار گرفته است . از طرف ديگر براي اجراي مستقيم اين شاخه دستور محافظتي به كدها اضافه نشده است !!
براي محافظت از سايت نوك خودتان كافي است اين كدها را به فايل admin.php سايت اضافه كنيد بعد از تگ <?php
و چنانچه از سيستم نگهبان نوك استفاده مي كنيد مثل نسخه IDNA بايد اين كدها را به فايل sentinel در شاخه include اضافه كنيد . اين هم كدهاي مهم امنيتي نوك 7.5
کد:
if($aid AND (!isset($admin) OR empty($admin)) AND $op!='login') { 
unset($aid); 
unset($admin); 
}
در ضمن شما علاوه بر اعمال اين كد بهتر است در تمامي شاخه هاي نوك 7.5 فايل htaccess درست كنيد و متن زير را در اين فايل قرار بديد . اين جوري امنيت سيستمتون كلي بالا مي ره و اگر هم بعد از اضافه كردن اين فايل در اجراي فايل copyright.php ماژولها مشكل داشتيد يه فايل htaccess ديگه هم به تمامي ماژولها اضافه كنيد ( فايل دوم )

كدهاي فايل htaccess براي شاخه هاي include - language - modules - admin و ...
کد:
<filesmatch "\.(php3?|tpl|inc|txt|cfg)$"> 
  deny from all 
</filesmatch>
كدهاي فايل htaccess براي تمامي ماژولها براي اجراي فايل كپي رايت :
کد:
<FilesMatch "copyright\.php"> 
allow from all 
</FilesMatch>
در هر حال توضيح كامل نحوه نفوذ را هنگام انتشار نسخه جادوئي 7.5 ارائه خواهم كرد .
اگر خواستيد مي تونيد نسخه magic nuke 7.5 را از سايت ايران پرتالز iranportals.net بگيريد و خودتان فايلها را ببينيد و از فايلهاي آماده استفاده كنيد . يك مطلب مهم !! طرح اين مسئله در اين انجمن بي احترامي به كار گروهي نيست بلكه من از اولين نفراتي بودم كه نسخه IDNA را گرفتم و ضمنا چند تا مورد هم ديدم كه براي مدير پروژه ايميل مي زنم . من به همنه دوستان احترام قائلم . ضمنا ما مي تونيم با همفكري كاري كنيم كه از مصرف كنندگي به توليد كنندگي برسيم . يعني بجاي طرح مطالبي مثل آش ريخته و غيره بيائيم همديگر را تقويت كنيم به خاطر اسم وطنمون با عرض پوزش از دوستان عزيز مخصوصا تيم IDNA ، همانطوريكه گفتم نوك 7.5 آسيب پذيرترين نسخه است . حالا به عنوان مثال يكي از راههاي نفوذ ( البته نه چندان خطرناك ) اين نسخه را يادآور مي شوم
. همانطوريكه مي دونيد ماژول نوشته هاي روزانه مخصوص كاربران عضو سايت است . حالا در اين روش شما بدون عضويت در سايت مي تونيد متن يك نوشته را به آدرس ايميل دوستتان ارسال كنيد . لطفا توجه كنيد بايد اين امكان فقط پس از ثبت نام در سايت و ورود به سايت براي شما فراهم باشد . براي نمونه مي تونيد اين كد را روي محصولات ايران پرتالز تست كنيد .
من اين كد را روي سايت زير به عنوان نمونه تست كردم . ( البته با عرض پوزش از مدير محترم اين سايت )
http://irmedic.com
اين هم كد :
کد:
modules.php?name=Journal&file=friend&jid=2&yun=[Mansour]
بعد از بررسي مجدد ، متوجه شدم اين نسخه در مورد حمله هاي XSS هم بسيار ضعيف و شكننده است . به عنوان مثال از طريق فيلد جستجو در ماژولهاي زير مي توان به سايت نوك حمله XSS نمود .
- Web_Links
- Journal
- Stories Archive
- Topics Archive
اين هم كد براي تست :
کد:
1"><body onload="alert(document.domain);
كافيه اين كدها را در فرم جستجو وارد كنيد !

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

kimiapt

Member
سلام و تشكر از دوست عزيز ساسان

سلام
دوست عزيز ممنونم از اخلاق عالي و درك بالاي شما . من حقيقتا و بدون تعارف فقط به دليل برخورد منطقي و به دور از جنجال شما سعي مي كنم در همين انجمن مطالب مفيد براي امنيت نوك مطرح كنم . ببينيد فراموش نكنيد مهمترين مسئله افتخار ملي ماست . و از طرف ديگر فراموش نكنيد استفاده از برنامه هاي آپن سورس يعني محافظت از منابع اقتصادي كشور ! منظورم اينه كه با استفاده از اين گونه بسته هاي قددتمند نرم افزاري مي توان از خروج ارز از كشور جلوگيري كرد و ميشه با استفاده از اين بسته ها فرهنگ اينترنت را گشترش داد . بگذريم ، من به مروز در همين انجمن مطالب جالبي در مورد امنيت نوك مطرح خواهم كرد .
اوليش را امشب مي نويسم كه جالب هم هست !
قربان همه ايرونيها
منصور
:D
 

kimiapt

Member
مقاله اول امنيتي

همانطور كه گفتم در ماژولهاي زير امكان ارسال تگهاي خطرناك و حمله XSS مي باشد :
- Web_Links
- Journal
- Stories Archive
- Topics Archive

براي رفع اين مشكل كافي است در فايل index.php فانكشن مربوط به جستجو را پيدا كنيد و كدهاي زير را بهش اضافه كنيد به عنوان مثال در اين مورد دقت كنيد :
کد:
function docsearch($query, $query2, $query3, $query4, $query5){
global $prefix, $db, $limit, $page, $current, $limit, $language, $module_name, $multilingual, $currentlang;
    if ($multilingual == 1) {
	$imagepatch = "$currentlang";
    }else{
    $imagepatch = "english";
    }
include("header.php");
GraphicAdmin();
OpenTable();
if (!($limit)){
$limit = 30;}
if (!($page)){
$page = 0;}
$query = htmlentities($query, ENT_QUOTES);
$query = addslashes($query);
$result = $db->sql_query("SELECT * FROM ".$prefix."_meddoctors WHERE dname LIKE '%$query%' and dlname LIKE '%$query2%' and dkind LIKE '%$query3%' and dspecialty LIKE '%$query4%' and ddegree LIKE '%$query5%' ORDER BY dlname");
$numrows = mysql_num_rows($result);
if ($numrows == 0){
echo("<div align=\"center\"><h5>"._MINOMATCH."</h5>"._GOBACK."</div>");
exit();
} else {
echo "<table border=\"0\" celpadding=\"1\" celspacing=\"1\" width=\"100%\">"
     ."<tr>"
     ."<td align=\"center\"><b>"._MINUMBER."</b>"
     ."</td>"
     ."<td align=\"center\"><b>"._MINAME."</b>"
     ."</td>"
     ."<td align=\"center\"><b>"._MILNAME."</b>"
     ."</td>"
     ."<td align=\"center\"><b>"._MIDOCKIND."</b>"
     ."</td>"
     ."<td align=\"center\"><b>"._MIDOCSPE."</b>"
     ."</td>"
     ."<td align=\"center\"><b>"._MICITY."</b>"
     ."</td>"
     ."<td align=\"center\"><b>"._MIFUNC."</b>"
     ."</td>"
     ."</tr>";
$pages = intval($numrows/$limit);
if ($numrows%$limit) {
$pages++;}
$current = intval($page/$limit) + 1;
if ( $pages < 1 ) {
$total = 1;}
else {
$total = $pages;}
$first = $page + 1;
if (!((($page + $limit) / $limit) >= $pages) && $pages != 1) {
$last = $page + $limit;}
else{
$last = $numrows;}
$result = $db->sql_query("SELECT *  from ".$prefix."_meddoctors WHERE dname LIKE '%$query%' and dlname LIKE '%$query2%' and dkind LIKE '%$query3%' and dspecialty LIKE '%$query4%' ORDER BY dlname ASC LIMIT $page, $limit");
while ($row = $db->sql_fetchrow($result)) {
$did = $row['did'];
$dname = $row['dname'];
$dlname = $row['dlname'];
$dspecialty = $row['dspecialty'];
$dkind = $row['dkind'];
$dcity = $row['dcity'];
echo "<tr>"
     ."<td align=\"center\">$did"
     ."</td>"
     ."<td align=\"center\">$dname"
     ."</td>"
     ."<td align=\"center\">$dlname"
     ."</td>"
     ."<td align=\"center\">$dkind"
     ."</td>"
     ."<td align=\"center\">$dspecialty"
     ."</td>"
     ."<td align=\"center\">$dcity"
     ."</td>"
     ."<td align=\"center\"><a href=\"admin.php?op=doctordet&did=$did\">"._MIDET."</a>--|--<a href=\"admin.php?op=deldoctor&did=$did\">"._MIDEL."</a>--|--<a href=\"admin.php?op=editdoctor&did=$did\">"._MIEDT."</a>"
     ."</td>"
     ."</tr>";
}
echo "</table>";
}
if ($page != 0) {
$back_page = $page - $limit;
echo("<a href=\"admin.php&op=docsearch?page=$back_page&limit=$limit\">"._MIPRE."</a>\n");}
for ($i=1; $i <= $pages; $i++)
{
 $ppage = $limit*($i - 1);
 if ($ppage == $page){
 echo(""._MIPAG.": <b>$i</b> \n");
 }
 else{
 echo("<a href=\"admin.php&op=docsearch?page=$ppage&limit=$limit\">$i</a> \n");}
}

if (!((($page+$limit) / $limit) >= $pages) && $pages != 1) {
$next_page = $page + $limit;
echo("<a href=\"admin.php?op=docsearch&page=$next_page&limit=$limit\">"._MINEX."</a>\n");}
echo "<br><br>"._MIRES." <b>$first</b> - <b>$last</b> "._MIOFTOT." <b>$numrows</b>";
echo" <br><br>"._MIPAG." <b>$current</b> "._MIOFTOT." <b>$total</b>";
CloseTable();
include("footer.php");
}
همانطوريكه مي بينيد در اين فاتكشن مقدار متغيير $query با افزودن كدهاي زير از نظر تگهاي خطرناك امن شده است :
کد:
$query = htmlentities($query, ENT_QUOTES);
$query = addslashes($query);
شما مي توانيد به همين روش كليه فرمهاي جستجوي سايت نوك خود را امن كننيد . توجه كنيد بايد به متغيير فرم جستجو توجه داشته باشيد .

موفق باشيد
 

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

بالا