PDA

View Full Version : آموزش: کتاب کامل برای امنیت در PHP و جلوگیری از هک شدن !



siavashsay
جمعه 06 بهمن 1391, 03:06 صبح
پست Update شد 6 / 11 / 1391
دوستان این تاپیک میخوام یه سری از مطالب و مقالات در مورد امنیت PHP رو بذارم !
از دوستانی که تمایل دارن ممنون میشم اونها هم مظالب خودشون رو عنوان کنن
برای شروع یک کتاب رو واستون میذارم ! امکان داره یکم قدیمی باشه و مطالب یکم بروز نباشه اما بازهم تیترهای کتاب رو به عنوان روشهای هک شدن بخونید و در مورد اونها یه جستجویی توی اینترنت داشته باشید تا مطالب بروز تر رو در مورد اونها پیدا کنید !
ضمنا : هر موقع مطلب مفید دیگه ای هم پیدا کردم تاپیک رو UPDATE میکنم تا دوستان متوجه شن !
انشالله که مفید واقع شه !
1 ) کتاب
لینک دانلود از سایت 4shared (http://www.4shared.com/rar/3qjrY9qR/Attack_and_Defence_PHP_Web_App.html)
لینک دانلود از سایت MediaFire (http://www.mediafire.com/?1nwjjgrnho1he78)
========
2 ) مطلب
وب سایت phpsec.org (http://phpsec.org/projects/guide/)

h.rezaee
جمعه 06 بهمن 1391, 08:39 صبح
مرسی خیلی خیلی ممنون. خیلی وقت دنبال همچین چیزی می گشتم

siavashsay
جمعه 06 بهمن 1391, 10:36 صبح
خواهش میکنم ! :)
چدتا منبع انگلیسی هم هست ! اونا رو هم به زودی میذارم :)

eshpilen
جمعه 06 بهمن 1391, 10:53 صبح
همون اولش که مشکل داره.
من با این کدها چیزی رو که گفته بود تست کردم:

test.php


<?php
//exploit.php
//Login.php Exploit
//Attack and defence php apps book
//shahriyar - j
echo"<html>
<body>
<form action=http://127.0.0.1/login.php method=POST>
password:<input type=password name=pass>
<input type=hidden name=admin value=1>
<input type=submit value=ok>
</form>
</body>
</html>";
?>

login.php


<?php
//Login.php
//Attack and defence php apps book
//shahriyar - j
if (empty($_POST['pass'])){
?>
<html>
<body>
<form action=login.php method=POST>
password:<input type=password name=pass>
<input type=submit value=ok>
</form>
</body>
</html>
<?php
}
?>
<?php
$pass = strtolower(md5($_POST['pass']));
$$pass = "de1b2a7baf7850243db71c4abd4e5a39";
if($pass == $$pass){
$admin= 1;
}
if($admin==1)
{
echo "Welcome to the system";
}else{
echo "Enter Correct Password";
}
?>

وقتی فرم صفحهء test.php رو سابمیت میکنم با این نتیجه مواجه میشم:

Notice: Undefined variable: admin in C:\Program Files\EasyPHP-5.3.9\www\login.php on line 24
Enter Correct Password

که خلاف گفتهء ایشون است.

البته من فکر میکنم دلیل این باشه که ایشان کد رو با register globals روشن تست کرده! (احتمالا این کتاب قدیمیه(؟))
یا شاید هم اصلا تست نکرده!!
اما الان رجیستر گلوبالز مدتهاست که پیشفرضش در PHP خاموشه (در نسخهء 6 هم بکلی حذف میشه). در نسخه های قدیمی روشن بود که بعدا صلاح دیدن بخاطر مشکلات امنیتی زیادی که ایجاد کرده بود خاموشش کنن.
در ضمن اصولا نباید اجازه داد برنامه با رجیستر گلوبالز روشن اجرا بشه؛ باید کدهای لازم برای چک کردن وضعیتش رو در ابتدای اسکریپت ها قرار داد، مثلا به این شکل:

<?php
if(ini_get('register_globals')) exit("<center><h3>Error: Turn that damned register globals off!</h3></center>");

برای خاموش کردن register globals هم در htaccess این دستور رو بذارید:

php_flag register_globals 0

وگرنه ممکن نیست کسی بتونه به همین سادگی از طریق یک فرم و در سمت کلاینت متغییرهای داخلی برنامهء ما رو دستکاری کنه. رجیسترگلوبالز هم یک ناشی گری محض در طراحی زبان PHP بوده که نشون میده طراحان این زبان چندان سواد بالایی هم نداشتن! جالب اینکه بنظر میرسه هیچوقت هم به این اشتباه خودشون اعتراف نکردن و با بهانه هایی توجیهش میکنن؛ و این حتی از کم‌سوادی اونا هم بدتره!

h.rezaee
جمعه 06 بهمن 1391, 11:25 صبح
بله باید علت دقیق اش هم همین باشه

eshpilen
جمعه 06 بهمن 1391, 11:37 صبح
حالا یه مبتدی میاد اینو میخونه از این ببعد معلوم نیست تا چه زمانی، به متغییرهای داخلی برنامهء خودش هم شک داره و کلی خودش رو به این خاطر اذیت میکنه و کدهای اضافه و این حرفا.
درحالیکه راه اصولی و خیلی ساده تر و امن تر اینه که بطور کلی از شر رجیسترگلوبالز خلاص بشیم.

siavashsay
جمعه 06 بهمن 1391, 11:44 صبح
حالا یه مبتدی میاد اینو میخونه از این ببعد معلوم نیست تا چه زمانی، به متغییرهای داخلی برنامهء خودش هم شک داره و کلی خودش رو به این خاطر اذیت میکنه و کدهای اضافه و این حرفا.
درحالیکه راه اصولی و خیلی ساده تر و امن تر اینه که بطور کلی از شر رجیسترگلوبالز خلاص بشیم.
دوست عزیز !
یه جوری میگی انگار من این کتاب رو نوشتم ! :قهقهه:
نه والله ! منم پیدا کردم ! خوندم بیشتر مطالب دیگش واسم مهم بود ! وگرنه در مورد فرم ها که دیگه اکثرا میدونن چطور باید انجام بدن !
مهم این بود که دوستان در مورد سر تیترهای این کتاب اطلاعاتی داشته باشن !
حالا شما اگه کتاب مفیدتری داری خوب لطف کن بذار ! بخدا خوشحال تر میشیم !
به هر حال بنده عذر میخوام که معرفی کتاب کردم :قهقهه:

h.rezaee
جمعه 06 بهمن 1391, 11:57 صبح
دوست عزیز این بنده خدا خودش داره تو یه پستی اموزش میده! برای همین هستش که اینجوری داره این مطلب رو با توپ و تانک و ناو جنگی و زمینی و هوایی میکوبه،اون کسی که اهمیت این نیت خیر شما رو درک کنه به این چیزا اهمیت نمی ده، به قول شما اگر هم اشتباه داره باشه مشکلی نداره با سر فصل اش آشنا میشه میره دنبالش درستش رو پیدا می کنه. باز هم از این منابع بزارید یه دنیا ممنون

siavashsay
جمعه 06 بهمن 1391, 12:07 عصر
والله ما هم خوشحال میشیم ! دلخور هم نشدیم !
من خودم عاشق این مبحثم ! واسه همین هر چیزی که حتی اشتباه هم باشه دوست دارم یاد بگیریم اما درستش رو خودم پیدا کنم !
باز هم تشکر

eshpilen
جمعه 06 بهمن 1391, 12:51 عصر
دوست عزیز این بنده خدا خودش داره تو یه پستی اموزش میده! برای همین هستش که اینجوری داره این مطلب رو با توپ و تانک و ناو جنگی و زمینی و هوایی میکوبه،اون کسی که اهمیت این نیت خیر شما رو درک کنه به این چیزا اهمیت نمی ده، به قول شما اگر هم اشتباه داره باشه مشکلی نداره با سر فصل اش آشنا میشه میره دنبالش درستش رو پیدا می کنه. باز هم از این منابع بزارید یه دنیا ممنون
شما همش از روی تفکرهای شخصی و احساسات فکر میکنید و حرف میزنید.
نیت خیر و این حرفا چیه مگه داریم تعارف میکنیم و بحث صدقه و ایناست؟
من یه چیزی رو میبینم باید تذکر بدم یا احساس مسئولیت هست یا چون فکر میکنم مفیده.
من همین اولش این قضیه رو دیدم گفتم مطرح کنم تا افرادی که میخوان به این کتاب اتکا کنن بدونن که ظاهرا خیلی هم دقیق نیست و مشکلاتی داره.
حالا بقیش رو هم دارم میخونم اگر اشکال مهمی دیدم مطرح میکنم.
اتفاقا کار خیر من بیشتر بود چون همونطور که گفتم اینطور مطالب گمراه کننده میتونه وقت و انرژی مبتدی ها رو تلف کنه.
اصلا به استارتر و نیتش هم کاری ندارم.
من با دانش و منطق و یک و صفر، درست و نادرست، کار دارم.
بهتره شما هم سعی کنید اینطور باشید.
احساسات و نگرش شخصی در مسائل علمی و فنی هیچ کاربردی نداره بلکه هم مضره. حداقلش وقت و انرژی خودتون رو بیهوده تلف میکنید.

ضمنا نخیر شما مطمئن باش خیلی ها اینقدر سواد/توان/همت ندارن که بتونن خودشون همهء اشکالات و اشتباهات رو به موقع تشخیص بدن (در طول سالها زیاد دیدم که اینطور با اطمینان میگم). بعدشم خب این کار ممکنه با کلی دردسر و صرف وقت و انرژی همراه باشه. باید خیلی ممنون هم باشن که یکی کارشون رو راحت میکنه!

rezaonline.net
جمعه 06 بهمن 1391, 13:43 عصر
همون اشتباهی که جناب eshpilen میگم فکر کنم وقتی رجیستر گلوبالس آن باشه ، درست کار میکنه .
حدسم اینه کتاب قدیمیه و بر اساس php4

h.rezaee
جمعه 06 بهمن 1391, 15:53 عصر
شما همش از روی تفکرهای شخصی و احساسات فکر میکنید و حرف میزنید.
نیت خیر و این حرفا چیه مگه داریم تعارف میکنیم و بحث صدقه و ایناست؟
من یه چیزی رو میبینم باید تذکر بدم یا احساس مسئولیت هست یا چون فکر میکنم مفیده.
من همین اولش این قضیه رو دیدم گفتم مطرح کنم تا افرادی که میخوان به این کتاب اتکا کنن بدونن که ظاهرا خیلی هم دقیق نیست و مشکلاتی داره.
حالا بقیش رو هم دارم میخونم اگر اشکال مهمی دیدم مطرح میکنم.
اتفاقا کار خیر من بیشتر بود چون همونطور که گفتم اینطور مطالب گمراه کننده میتونه وقت و انرژی مبتدی ها رو تلف کنه.
اصلا به استارتر و نیتش هم کاری ندارم.
من با دانش و منطق و یک و صفر، درست و نادرست، کار دارم.
بهتره شما هم سعی کنید اینطور باشید.
احساسات و نگرش شخصی در مسائل علمی و فنی هیچ کاربردی نداره بلکه هم مضره. حداقلش وقت و انرژی خودتون رو بیهوده تلف میکنید.

ضمنا نخیر شما مطمئن باش خیلی ها اینقدر سواد/توان/همت ندارن که بتونن خودشون همهء اشکالات و اشتباهات رو به موقع تشخیص بدن (در طول سالها زیاد دیدم که اینطور با اطمینان میگم). بعدشم خب این کار ممکنه با کلی دردسر و صرف وقت و انرژی همراه باشه. باید خیلی ممنون هم باشن که یکی کارشون رو راحت میکنه!
دوست عزیز ببخشید، قرار نیست تو این تاپیک ها و اموزش ها تخریب شخصیت داشته و باشیم و.... باز از شما ممنون که این ایرادش رو رفتین ولی لحن صحبت و نحوه گفتن میتونه سنگ. رو آب کنه.. این مشکل رو میتوانستید خیلی بهتر هم بگید نه با این زبون تند و تیز و زننده

eshpilen
جمعه 06 بهمن 1391, 18:39 عصر
الان رسیدم صفحهء 80.
ای مثل اینکه بد نیست!
تا اینجا مشکل مهمی نداشته و یکسری ترفندهای جالب هک رو هم مطرح کرده که آموزنده است.

siavashsay
جمعه 06 بهمن 1391, 18:50 عصر
تا اینجا مشکل مهمی نداشته و یکسری ترفندهای جالب هک رو هم مطرح کرده که آموزنده است
با تشکر ! :)

eshpilen
جمعه 06 بهمن 1391, 21:45 عصر
لحن صحبت و نحوه گفتن میتونه سنگ. رو آب کنه.. این مشکل رو میتوانستید خیلی بهتر هم بگید نه با این زبون تند و تیز و زننده
خیلی بهتر یعنی چطور مثلا؟ میشه یه مثال بزنی؟
بنظر من تنها با رویارویی بی پرده و کامل با واقعیات میشه به بالاترین حدود رسید.
و فکر نکنید احساس شما رو درک نمیکنم؛ چون برای خودمم پیش آمده! البته بیشتر در زمانهای گذشته.
ولی خب من با اینکه اون موقع شاید ناراحت شدم و کم و بیش جبهه گرفتم در مقابل طرفها، با اینحال همون زمان هم میدونستم و سعی میکردم که اشکالی در اونها نبینم، حتی اگر طرف خصومت شخصی داشته یا تمسخر کرده. واقعا نه اون موقع و نه مسلما الان، این مسائل احساسی رو مهم نمیدونم. و چه بسا که همون برخوردهای تلخ باعث سرسخت تر شدن من (البته نه در لجبازی) و پیشرفتم شدن. میتونم بگم مجموعا سودی که آدم میبره از تلخی و رنجش اساسا بیشتره.
بنظر من هرکس هم که خیلی در مسائل علمی و منطقی مایه بذاره بهرحال کم و بیش خشک و صریح میشه.
دخالت احساسات در مسائل منطقی، ضعف روانی ما انسانهاست!
بدون گذشتن از این مرحله نمیشه به توان و مراحل نهایت ممکن برای انسان رسید.
برای خود آدم هم بهتره که دیگران نتونن با صرف حرفشون از نظر احساسی/روانی، روش اثر بذارن. چون بهرحال همه جا و همه چیز که هیچوقت گل و بلبل نمیشه و مطابق میل ما یا حتی بگیم ادب و انسانیت پیش نمیره. آدم هرچی سخت تر و کمتر تاثیرپذیر باشه، رنج خودش کمتر میشه و کمتر منحرف میشه و اشتباه میکنه یا شاید اگر خشم منطقی هم از چیزی هست میتونه اون رو با فکر مختل نشده ای در جهت درست و مفیدتری برای خودش بکار بگیره.

بقول خارجیها میگن No pain no gain.
که معادل همون نابرده رنج گنج میسر نمیشود خودمونه.
رنج برای همه هست. و پیشرفت رنج داره.
اما یک عده این رنج رو میکشن و هوشمندی و همتش رو ندارن که ازش درس بگیرن و از فرصتها هوشمندانه استفادهء بهینه بکنن.
یک عده هم بعکس سعی میکنن از هرچیزی حتی شکست های خودشون برای پیشرفتشون استفاده کنن.
من سعی کردم همیشه در دستهء دوم باشم.
از هیچکس انتظار احترام و محبت و نیکی ندارم.
چون دریافتم که نباید داشته باشم و در زندگی به این اتکا کنم.
و فقط خودم هستم که در درجهء اول باید به خودم کمک و خودم رو سخت و قوی کنم.
اما البته این به معنای این نیست که اگر فرصتش پیش بیاد از کمک دیگران استفاده نمیکنم.
میگم انتظار ندارم.
کاریش نمیشه کرد.
دنیا همینه که هست.
بنظرم زندگی سخت تر و مخوف تر از چیزیه که بعضیا فکر میکنن.
شاید بخاطر سن و تجربهء کمترشون باشه.
اینجا، در محیط مجازی و صرفا برخورد اندیشه ها/نوشته ها، اگر تحمل خشونت رو نداشته باشید، در دنیای واقعی میخواید چکار کنید وقتی چیزهای به مراتب خشن تر و واقعی تر و حتی ظلم و جنایت هست؟

siavashsay
شنبه 07 بهمن 1391, 11:37 صبح
بابت کمکهاتون ممنون ! اما ....

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

اینجا، در محیط مجازی و صرفا برخورد اندیشه ها/نوشته ها، اگر تحمل خشونت رو نداشته باشید، در دنیای واقعی میخواید چکار کنید وقتی چیزهای به مراتب خشن تر و واقعی تر و حتی ظلم و جنایت هست؟ گمونم اینجا هستیم واسه اینکه بیشتر به نقایصمون تو زبان برنامه نویسی کامپوتر برسیم و اونها رو تدریس و رفع کنیم نه به درس احکام و اخلاق در دنیای امروز ( شبکه چهار ) :قهقهه:
باز هم ممنونم !

eshpilen
شنبه 07 بهمن 1391, 13:14 عصر
گمونم اینجا هستیم واسه اینکه بیشتر به نقایصمون تو زبان برنامه نویسی کامپوتر برسیم و اونها رو تدریس و رفع کنیم نه به درس احکام و اخلاق در دنیای امروز ( شبکه چهار )
البته با گوگول مگول بازیهای شما :قهقهه:
یاد دوران تحصیل میفتم.
اون موقع هم همینطور بود.
البته هممون همینطور بودیم.
همش شوخی و در رفتن از زیر کار و آی خسته شدم و استادش چقدر خشکه و فلان و بهمان.
آدم جدی و با همت یه چیز دیگس.
اینطور مسائل واقعا براش اهمیت چندانی نداره. میخواد یاد بگیره.
ولی افراد کمی اینطور هستن.

siavashsay
شنبه 07 بهمن 1391, 13:27 عصر
:قهقهه:
راستی یه چیزی !
من با برنامه actunitex ورژن فول 8 ! سایتم رو چک کردم ! خطای خاصی نداد ! یعنی توی Level HIGH هیچی و توی Medium چندتا داد که اونا هم مربوط به ورژن apache - php بود که خوب چون رو لوکال هاست ( ومپ ) دارم تست میکنم ! یعنی اشکال من نبود !
در کل ..
مشکل خاصی ندیدم ازم بگیره ! چون همه مسائل مربوط به Sql injection - xss - csrf و غیره رو تا جایی که میتونستم حل کردم !
به نظرت این کافی هست که این برنامه خطایی ازم نگیره ؟!

eshpilen
شنبه 07 بهمن 1391, 13:39 عصر
:قهقهه:
راستی یه چیزی !
من با برنامه actunitex ورژن فول 8 ! سایتم رو چک کردم ! خطای خاصی نداد ! یعنی توی Level HIGH هیچی و توی Medium چندتا داد که اونا هم مربوط به ورژن apache - php بود که خوب چون رو لوکال هاست ( ومپ ) دارم تست میکنم ! یعنی اشکال من نبود !
در کل ..
مشکل خاصی ندیدم ازم بگیره ! چون همه مسائل مربوط به Sql injection - xss - csrf و غیره رو تا جایی که میتونستم حل کردم !
به نظرت این کافی هست که این برنامه خطایی ازم نگیره ؟!
کافی نیست.
اینطور برنامه ها یه چیزهای ساده و کلیشه ای رو درمیارن. تازه اونم نه لزوما همش رو.
باگ منطقی توی برنامت باشه، طراحی غلط، ضعف رمزنگاری ها و غیره و غیره، اینا رو فقط با بررسی الگوریتم و منطق برنامه و کدهاش توسط انسان میشه درآورد. البته شاید بعضی ابزارها و برنامه های خیلی پیشرفته بتونن بعضی از اینا رو هم دربیارن، ولی همش رو نه مسلما.
الگوریتم و منطق و ساختار باید اینقدر اصولی باشه که اگر برنامه بازمتن باشه و یه هکر همش رو بخونه و بفهمه و بهش احاطه داشته باشه امنیت برنامه بیش از حد پایین نیاد.
هکر یعنی هکر دانشمند و برنامه نویس حرفه ای هم باشه و بتونه برنامه های اختصاصی واسه هدفها و حمله های اختصاصی هم بنویسه.
برنامه های اسکنر مکمل هستن واسه موارد ساده و کلیشه ای که بعضی از خطاهای انسان و موارد غفلت برنامه نویس رو میتونن پیدا کنن.

siavashsay
شنبه 07 بهمن 1391, 13:49 عصر
حق با شماست !
به هر حال ممنون میشم اگر وقتی کتاب رو کامل خوندید یک جمع آوری کلی هم واسه بقیه بچه ها داشته باشید !
چون انصافا من گیج شدم ! نه اینکه نفهمیده باشم اما خوب اینقدر ذهنم درگیر کار و شغلم هست که دیگه واقعا توان فوکوس کردن روی همه این مسائل رو ندارم !
با تشکر :)

eshpilen
یک شنبه 08 بهمن 1391, 23:29 عصر
کتابش بد نبود. یکم جالب بود.
الان تموم شد.
ما که رفتیم بخوابیم :لبخند:
هان گفتی جمع آوری!
جمع آوری چی؟

siavashsay
دوشنبه 09 بهمن 1391, 10:14 صبح
آفرین بر شما !
جمع آوری مطالب کتاب !
اون قسمتهایی رو که خودتون صلاح میدونید رو همراه با مثالی که دوستان راحت تر متوجه شن رو حالا تحت قالب Doc - PDF - Text و یا هر چیز دیگه ای که خودتون میدونید عنوان کنید !
ممنون میشم ! :)

eshpilen
دوشنبه 09 بهمن 1391, 11:39 صبح
بابا بیخیال :متعجب:
این کتاب الان خودش گوشه ای از مباحث امنیت و هک رو شامل میشه.
خودشم تازه یجورایی خلاصه هست.
یعنی باید پیش زمینه و اطلاعات پایه ای داشته باشید برای خوندنش.
حالا ما بیایم کجاش رو چطور گلچین و خلاصه بکنیم که بعدم چی بشه!
والا منم فکر نمیکنم بتونم خلاصه تر و ساده تر از اون چیزی رو توضیح بدم.

جای خاصیش مشکل داشتی خب مطرح کن روش بررسی و بحث کنیم.

از نظر خوندن که خب انتظار نداشته باش آدم با کمتر از این بتونه چیز زیادی بفهمه و به جایی برسه در امنیت.
تازه به بیش از این نیازه.
در برنامه نویسی هم همینطور.
مثل اینکه یک فایلی رو با قویترین الگوریتم فشرده سازی فشرده کنی، و حجمش تازه بشه 100 مگابایت. هرکاری بکنی دیگه فشرده تر از این نمیشه. اصلا خود شانون که پدر نظریهء اطلاعات هستن ایشون، ثابت کرده که فشرده سازی از نظر تئوریک هم محدودیت داره :چشمک:

siavashsay
دوشنبه 09 بهمن 1391, 12:34 عصر
:قهقهه::قهقهه::قهقهه: فقط همینو میتونم بگم !
حق با شماس

colors
دوشنبه 09 بهمن 1391, 12:37 عصر
والا منم فکر نمیکنم بتونم خلاصه تر و ساده تر از اون چیزی رو توضیح بدم.
اینو خوب اومدی، مطمئنم اگه جناب eshpilen بخوان خلاصه کتاب رو بنویسن 100٪ چندیدن برابر حجیم تر از خود کتاب میشه. ماشالا دست به تایپ خوبی داره :لبخند:

rezaonline.net
دوشنبه 09 بهمن 1391, 13:47 عصر
ماشالا دست به تایپ خوبی داره
آی گفتی ، هنوز تاپیک دیشبشو توی ایران پی اچ پی نتونستم تا ته بخونم:بامزه: