در این آسیب پذیری مهاجم تلاش می کند با استفاده از ضعف برنامه نویسی در مدیریت ورودی ها و همچنین عدم فیلتر گذاری مناسب بر روی ورودی، کد خود را به برنامه تزریق و اجرا نماید. این آسیب پذیری می تواند بالاترین سطح دسترسی که کاربر برنامه قادر به انجام آن می باشد را در اختیار مهاجم قرار دهد.
تفاوت Code Injection و Command Injection در این است که در آسیب پذیری Code Injection مهاجم می تواند کد خودش را در نرم افزار تزریق کند و در نهایت نرم افزار این کد را اجرا خواهد کرد، ولی در Command Injection مهاجم عملکرد پیش فرض نرم افزار که اجرای دستورات است را گسترش داده و Command خود را برای اجرا در کنار دستورات پیش فرض برنامه قرار می دهد و در حالت کلی عملیات تزریق کد مورد نیاز نمی باشد.
به طور مثال فرض کنید تابع eval به صورت زیر به کار رفته است.
$myvar = "varname"; $x = $_GET['arg']; eval("\$myvar = \$x;");
در صورت عدم وجود Validation مناسب مهاجم می تواند با استفاده از دستور زیر تنظیمات PHP را به صورت غیر مجاز مشاهده نماید.
/index.php?arg=1; phpinfo()
این مثال از سایت OWASP برداشته شده و به هیچ عنوان جنبه آموزشی ندارد و تنها مثالی است برای درک بهتر این آسیب پذیری.
| ; & $ > < ' \ ! >> #
( ) < > & * ‘ | = ? ; [ ] ^ ~ ! . ” % @ / \ : + , `
{ } ( ) < > & * ‘ | = ? ; [ ] $ – # ~ ! . ” % / \ : + , `
برای مشاهده ی سایر آسیب پذیری ها، روی این لینک کلیک نمائید.