🌕 چطوری میشه با تکنولوژی های الان به آسیب پذیری OS Command Injection رسید؟
🔴 خیلی ها فکر میکنن آسیب پذیری هایی مثل os command injection دیگه رخ نمیده یا خیلی کمه و به خاطر پیشرفت تکنولوژی های وب و فریمورک ها دیگه امکان نداره اینطور آسیب پذیری ها رو پیدا کنیم! اما خب این غلطه !
♦️ چیزی که مهمه اینه که به صورت مستقیم شاید ما به os command injection نرسیم اما با chain کردن و ساخت زنجیره حملات میشه بهش رسید نکته مهم اینه که آسیب پذیری ها همیشه از ورودی کاربر شروع نمیشن حالا یه مثال میزنم:
💢 یه محقق امنیتی اومده روی AWS CDK کار کرده و یه آسیب پذیری OS Command Injection پیدا کرده که روشش به شدت جالب هست زمانی که NodejsFunction برای Bundle کردن Lambda از Docker استفاده میکنه، AWS CDK چند فایل مثل package.json را داخل کانتینر تولید میکنه
🔺 برای اینکار از کلاس داخلی os command استفاده میکنه اما اینجا داده ها به صورت امن نوشته نمیشن و دستور زیر ساخته میشه:
echo '${data}' > package.json
🔺اگر داخل data یک ' وجود داشته باشه quoting شکسته میشه و Shell اون رو به عنوان یک دستور جدید تفسیر میکنه
♦️ سناریو هکر چی بوده اومده یک package منتشر کرده مثلا :
@evilcdk/helper
داخل پکیجی که منتشر کرده اینو مینویسه 👇
{
"dependencies": {
"lodash":
"4.17.21' && touch /asset-input/pwned && echo '"
}
}
کاربر پکیج رو نصب میکنه
npm install @evilcdk/helper
و بعد از اجرا بدون زدن دستور shell دستورات هکر اجرا میشه
Attacker
↓
Malicious npm package
↓
Victim installs package
↓
Victim runs cdk synth
↓
AWS CDK executes attacker command
🔴 پس متوجه شدیم که خیلی وقتا قرار نیست ما مستقیم به آسیب پذیری OS Command Injection برسیم در واقع این ترکیب کردن حملات هست که باعث میشه ما به همچین آسیب پذیری هایی برسیم
🔴 الان خیلی ها مثلا به XSS میرسن یا باگ های دیگه و اونو مستقیم گزارش میکنن در حالی که با supply chain کردن میشه آسیب پذیری رو ارتقاع داد و به دسترسی بالاتری رسید.
@UltraSecurity