🕸 Articles – Telegram
🕸 Articles
2.23K subscribers
43 photos
3 videos
18 files
12 links
Web Security Researcher, Bug Hunter
369
Download Telegram
این توییت یکی از دوستام فرستاده بود جالب بود گفتم با شما هم در میون بزارم.
به این پیلود نگاه کنید با حروف میخی نوشته شده و اگر توی کنسول مرورگرتون وارد کنید میبینید که پاپ‌آپ بالا میاد.

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


توی این پیلود یه سری تکنیک استفاده شده که هر کدوم رو توضیح می‌دم
این تکنیک‌ها به صورت زنجیره‌ای کار می‌کنن: اول با 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
چند روز پیش یه گزارش منتشر شد که یه هکر تونسته از مرورگر کروم یه آسیب پذیری پیدا کنه و بعد از گزارش بهش 250,000 هزار دلار جایزه بدن.


https://issues.chromium.org/issues/412578726

تحلیل این آسیب پذیری رو براتون آماده کردم.
این آسیب خیلی عمیق تر از چیزی هست که نوشتم، پس اگر علاقه داشتین میتونید خودتون روش تحقیق بیشتری کنید.
خلاصه باگ هم این بوده که یه سایت رو باز میکردی و سیستمت هک میشده.
36👨‍💻3
🔥284👎3🍓1
همونطور که میدونید فایل های javanoscript توی هانت خیلی مهم هستن
چون ممکنه توشون:
- کلید های api
- اطلاعات ورود مثل رمز های عبور یا اطلاعات ادمین
- توکن ها مثل توکن های auth
- داده های تنظیمات دیتابیس
پیدا بشه، که هر کدوم از اینا ممکنه منجر به آسیب پذیری بشه.

پس باید این فایل هارو تحلیل کنید و دنبال این اطلاعات حساس باشید.
یه متدولوژی برای هانت روی فایل های js میتونه این باشه:

1- لیستی از سابدامنه های تارگت رو توی یه فایل به اسم sub.txt ذخیره کنید.

2- با استفاده از ابزار های زیر که با هم ترکیب شدن فایل های js رو بدست بیارین.

cat sub.txt | katana | grep js | httpx -mc 200 | tee js.txt

از ابزار کاتانا برای کرال کردن استفاده میکنیم اینجا میتونید از کرالر های دیگه هم استفاده کنید.

3- برای پیدا کردن آسیب پذیری یا اطلاعات حساس میتونید از ابزار nuclei استفاده کنید.

nuclei -l js.txt -t ~/nuclei-templates/exposures/ -o js_bugs.txt



4- یه روش دیگه این هست که همه فایل های js که پیدا کردیم توی مرحله 2 رو دانلود کنیم و به صورت دستی تحلیلشون کنیم.
با دستور زیر فایل هارو دانلود میکنیم.

file="js.txt"

while IFS= read -r link
do
wget "$link"
done < "$file"


اینجا میتونیم با دستور grep روی فایل های js که دانلود کردیم دنبال یه سری کلمات کلیدی باشیم.

grep -r -E "aws_access_key|aws_secret_key|api key|passwd|pwd|heroku|slack|firebase|swagger|aws_secret_key|aws key|password|ftp password|jdbc|db|sql|secret jet|config|admin|pwd|json|gcp|htaccess|.env|ssh key|.git|access key|secret token|oauth_token|oauth_token_secret|smtp" *.js




این متدولوژی خوبه و عالی نیست. پس باید متدولوژی شما با بقیه یه تفاوت داشته باشه تا خروجی متفاوتی هم داشته باشه.
به عنوان مثال میتونید توی مرحله 3 از تمپلیت های که خودتون نوشتین استفاده کنید که هر کسی نداره.
یا توی مرحله ۴ از کلمات کلیدی بیشتری یا متفاوت تری استفاده کنید.
این یه مثال خیلی کوچیک از کشف آسیب پذیری روی فایل های js بود.
فکر میکنید دیگه چه کارایی میشه کرد؟
23👏5👍4
🔥186❤‍🔥2🏆1
Domain_Discovery_Persian.pdf
8.3 MB
Author: zarvan
Language: Persian
Telegram channel: @web_articles
🔥50❤‍🔥83👌3👏2
8
همونطور که دارید توی مباحث فنی آموزش می‌بینید و رشد می‌کنید، سعی کنید شخصیت خودتون رو هم رشد بدین.

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



- پیدا کردن یه باگ پیچیده زمان بره. باید صبر داشته باشی و قدم به قدم پیش بری. اگر یه حمله جواب نداد بهتره دنبال یه راه حل دیگه باشی. مهدی یه رایتاپ (https://mey-d.github.io/posts/zero-click-ato-persian/) نوشته بخونیدش تا متوجه این صبر بشید.
توانایی برگشتن از شکست‌ها رو توی خودتون تقویت کنید.


- برای کار‌ها و پروژه‌ها باید برنامه ریزی کنیم و بهشون پایبند باشیم. به جای ساعت‌ها کار بی وقفه، بهتره تمرکزمون رو روی جلسات کوتاه مدت و پربازده بزاریم. به خودتون استراحت بدین و کار‌های غیر فنی انجام بدین. وقت گذروندن با دوستان، ورزش و سرگرمی های مورد علاقتون.


- همیشه بپرسید چرا؟ یا اگر... چی میشه؟
وقتی به یه صفحه لاگین می‌رسی، به جای اینکه فقط قانون تعیین شده برنامه نویس رو انجام بدین این سوال هارو از خودتون بپرسید:
اگر پسورد خالی بفرستم چی میشه؟
اگر من به جای نام کاربری، یه ایمیل یا شماره تلفن بفرستم چی میشه؟
اگر من به جای یه کاربر، درخواست ورود با یه ‌‌ID کاربر دیگه رو بفرستم چی میشه؟
چرا این سیستم کلمه‌ی عبور رو بعد از چند بار تلاش ناموفق بلاک نمی‌کنه؟

یا زمانی که آپلود فایل دارید:
اگر به جای عکس یه فایل php آپلود کنم چی میشه؟
اگر اسم فایل رو تغییر بدم از shell.php به shell.jpg چی میشه؟

یا اگر پارامتر دارید:
اگر به جای کلمات عادی، کاراکتر های خاص مثل &,',> رو وارد کنم چی میشه؟
چرا پارامتر های این url حساس هستن؟
اگر کلا پارامتر حذف کنم چی میشه؟
اگر مقدارش رو عوض کنم چی میشه؟

به جای استفاده از ابزار‌ها به صورت کورکورانه درک کنید که پشت پرده چطور داره کار می‌کنه.
30
شدیدا توصیه میکنم مقالات رمزنگاری محمد حسن رو بخونید.


https://virgool.io/@Hellish_PN
8👍2
درود دوستان
یک محقق هست به اسم shreyas chavhan اومده مصاحبه و پادکست از هانترها و ریسرچرها رو دیده و نکات مهمشون رو جمع کرده. این نکات رو میتونید از لینک زیر بخونید.

https://shreyaschavhan.notion.site/Final-Collection-of-Advice-1fba53e4311980e9aceefb94085f11d4
22🔥5👌2
این کتاب توصیه‌های ارزشمند و کاربردی از گروهی از هکرهای با تجربه در حوزه باگ‌بانتیه که برای موفقیت تو این عرصه جمع‌آوری شدن. این راهنمایی‌ها از تکنیک‌های عمیق تست و استفاده از اتومیشن گرفته تا تمرکز روی نقاط ضعف خاص و مدیریت زمان، بهت کمک می‌کنه مهارت‌هات رو تقویت کنی و باگ‌های با ارزشی پیدا کنی.
36👏3👍1
Final Collection of Advice_Persian.pdf
1.3 MB
Author: zarvan
Language: Persian
Telegram channel: @web_articles
66🏆4🔥2👍1
7👍4
تو خدای زمانی

زروان، نام ایزدی بود که آفریدگار زمان بود. بی‌آغاز و بی‌پایان.
زروان آرزو داشت که فرزندی نیک داشته باشد تا جهان را به او بسپارد. پس دعا می‌کرد و فدیه می‌داد؛ تا روزی که در بطنش چیزی جنبیدن گرفت.
دو فرزند توأمان.
زروان گفت: هر کدام که زودتر به دنیا بیایند جهان را به او خواهم سپرد.
زروان نمی‌دانست که یکی از پسرانش اهریمن است و آن دیگری اورمزد. اهریمن صدای زروان را شنید و زودتر به دنیا آمد.
زروان گفت: تو کیستی؟
تو که این همه ظلمانی و متعفن و ترسناکی؟
اهریمن گفت: من فرزند توام، فرزند زمان و تو قول داده‌ای که جهان را به من بسپاری.
زروان اندوهگین شد و جهان را به اهریمن سپرد اما امید داشت که اورمزد بتواند با برادر بویناک و تاریکش بجنگد و پیروز شود و جهان را پس بگیرد.
اورمزد، روشن و خوشبو و مهربان و زیبا و لطیف بود.
هر روز که از خواب بیدار می‌شوی، نامت زروان است، تو همان خدای زمانی و هر روز دو فرزند توامان در بطن تو آفریده می‌شود.
گاهی زمان را به اورمزدت می‌سپاری و گاهی به اهریمنت.
و فرزندانت جهانت را تاریک می‌کنند یا روشن.
و زمانت یا گرگ می‌شود یا میش.
در گرگ و میشِ هر روز باید از خودت بپرسی امروز چه زاییدم؟
امروز، روز گرگ بود یا روز میش.
امروز اهریمنم به دنیا آمد یا اورمزد؟
44
JS for Hacker-Volume 1.pdf
691.5 KB
درود دوستان
کتاب جدید تقریبا تمومه سعی میکنم تا چند روز دیگه بزارمش. سرفصل هارو میتونید ببینید.
سعی کردم جاوااسکریپت رو از دو دیدگاه برنامه نویس و هکر بررسی کنیم.

این کتاب ترجمه نیست سرفصل هارو طوری چیدم که نیاز های یه هانتر پوشش بده چیزایی که توی هانت بهشون نیاز پیدا می‌کنید.
61👍4🔥4
30😁1
JS for Hacker-Volume 1.pdf
9.2 MB
Author: zarvan
Language: Persian
Telegram channel: @web_articles
🔥7718🙏3