🕸 Articles – Telegram
🕸 Articles
2.23K subscribers
43 photos
3 videos
18 files
12 links
Web Security Researcher, Bug Hunter
369
Download Telegram
این صفحه بهمون نشون داده میشه
و آدرس ایمیل رو انتخاب میکنیم بعدش وارد صفحه دیگه میشیم که باید پسورد رو بزنیم
1
پسورد رو وارد میکنیم اینجا وقتی دکمه تایید بزنیم
بلافاصله وارد ریدارکت به وبسایتی که میخواستیم با استفاده از oauth واردش بشیم میشیم.
2
🕸 Articles
این صفحه بهمون نشون داده میشه و آدرس ایمیل رو انتخاب میکنیم بعدش وارد صفحه دیگه میشیم که باید پسورد رو بزنیم
GET /o/oauth2/auth?response_type=code&redirect_uri=https://quizlet.com/google-login&client_id=520305074949.apps.googleusercontent.com&scope=profile+email&access_type=online&approval_prompt=auto&state={"state":"kTWrjEKytCtTRyFhFbrf7G","reauth":false,"from":"\/goodbye","signupOrigin":"global-signup-modal-google","screenName":"logout\/logoutmobilesplash"}
2
🕸 Articles
پسورد رو وارد میکنیم اینجا وقتی دکمه تایید بزنیم بلافاصله وارد ریدارکت به وبسایتی که میخواستیم با استفاده از oauth واردش بشیم میشیم.
وقتی پسورد وارد میکنیم این ریدارکت انجام میشه که مارو به همراه یه سری اطلاعات دیگه میفرسته به کلاینت

https://quizlet.com/google-login?state={"state":"kTWrjEKytCtTRyFhFbrf7G","reauth":false,"from":"\/goodbye","signupOrigin":"global-signup-modal-google","screenName":"logout\/logoutmobilesplash"}&code=4/0AQSTgQFzS9eHAd2HHL9-GEX4BsDgucBYuBwWuOFhFp8puAa1TgAihhDnQITlvHKRo8TTdA&scope=email+profile+openid+https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile&authuser=0&prompt=none
1👍1
وقتی وارد وبسایت میشیم این درخواست از سمت کلاینت زده میشه اینجا هست که وارد بخش
تبدیل Authorization Code به Access Token میشیم.

GET /google-login?state={"state":"kTWrjEKytCtTRyFhFbrf7G","reauth":false,"from":"\/goodbye","signupOrigin":"global-signup-modal-google","screenName":"logout\/logoutmobilesplash"}&code=4/0AQSTgQFzS9eHAd2HHL9-GEX4BsDgucBYuBwWuOFhFp8puAa1TgAihhDnQITlvHKRo8TTdA&scope=email+profile+openid+https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile&authuser=0&prompt=none
1
و در نهایت access token داده میشه به کلاینت و ما توی وبسایت لاگین میشیم.
1
3
🕸 Articles
وقتی وارد وبسایت میشیم این درخواست از سمت کلاینت زده میشه اینجا هست که وارد بخش تبدیل Authorization Code به Access Token میشیم. GET /google-login?state={"state":"kTWrjEKytCtTRyFhFbrf7G","reauth":false,"from":"\/goodbye","signupOrigin":"global-signup-modal…
یه توضیح اضافه تر راجب اینکه چطوری کلاینت میاد و access token رو دریافت میکنه بگم

این مرحله توی مرورگر کاربر انجام نمیشه، بلکه کلاینت پشت‌صحنه یه درخواست دیگه به سرور OAuth می‌زنه
کلاینت این درخواست رو از سمت سرور خودش به Authorization Server (گوگل) می‌فرسته:

POST https://oauth2.googleapis.com/token
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET
&code=4/0AQSTgQFzS9eHAd2HHL9-GEX4BsDgucBYuBwWuOFhFp8puAa1TgAihhDnQITlvHKRo8TTdA
&redirect_uri=https://yourwebsite.com/google-login
&grant_type=authorization_code


توی این درخواست، Authorization Code که از قبل توی URL بود، ارسال می‌شه به گوگل.
اگه این درخواست موفقیت‌آمیز باشه، گوگل یه Access Token برمی‌گردونه، مثل این:

{
"access_token": "ya29.A0AfH6SM...",
"expires_in": 3600,
"refresh_token": "1//0gQ...",
"scope": "email profile openid",
"token_type": "Bearer"
}
2
🕸 Articles
Photo
حالا که کلاینت Access Token داره، یه درخواست به ریسورس سرور (مثلاً API گوگل) می‌فرسته:

GET https://www.googleapis.com/oauth2/v3/userinfo
Authorization: Bearer ya29.A0AfH6SM...


ریسورس سرور (یعنی www.googleapis.com) بررسی می‌کنه که توکن معتبره یا نه،
اگه معتبر باشه، اطلاعات کاربر رو برمی‌گردونه:

{
"sub": "110169484474386276334",
"name": "zarvan0x01",
"given_name": "zarvan",
"family_name": "zurvanism",
"email": "zarvan@gmail.com",
"picture": "https://lh3.googleusercontent.com/a-/AOh14Gj..."
}


حالا کلاینت چیکار می‌کنه؟
اطلاعات کاربر رو ذخیره می‌کنه.
کاربر رو به حالت لاگین‌شده درمیاره.
احتمالاً یه سشن (Session) یا کوکی (Cookie) بسته به نوع پیاده سازیش برای کاربر ایجاد می‌کنه که لاگینش حفظ بشه.

و اینجوریه که کاربر بدون دیدن Access Token، لاگین می‌شه! توی این مرحله که ریپلای زدم اگر یادتون باشه بعد از ریدارکت به کلاینت یهو ما دیدیم که لاگین شدیم
ولی اون پشت برای لاگین شدن این درخواست ها هم زده شده
1
حالا اگر access token منقضی بشه چی؟

وقتی Access Token منقضی می‌شه، کلاینت باید این درخواست رو به Authorization Server بفرسته:
POST /token HTTP/1.1
Host: authorization-server.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&refresh_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
&client_id=your-client-id
&client_secret=your-client-secret


اگه Refresh Token معتبر باشه، سرور یه Access Token جدید می‌ده:

{
"access_token": "new-access-token-123",
"token_type": "Bearer",
"expires_in": 3600
}


حالا کلاینت از Access Token جدید برای درخواست‌هاش استفاده می‌کنه.
2
اگه Refresh Token هم منقضی بشه چی؟

اگه Refresh Token هم منقضی بشه یا سرور تشخیص بده که نباید دیگه ازش استفاده بشه، این پیام برمی‌گرده معمولا:
{
"error": "invalid_grant",
"error_denoscription": "Refresh token is expired"
}


اینجا کاربر باید دوباره لاگین کنه تا یه Refresh Token جدید بگیره

یه نکته رو بگم ما با استفاده از Refresh Token برای گرفتن Access Token جدید استفاده می‌کنیم.
اگه Refresh Token منقضی بشه، کاربر باید دوباره لاگین کنه
پس استفاده ما از Refresh Token فقط برای گرفتن یه Access Token جدید هست.
1
خب Refresh Token باید یه مکانیسم لغو داشته باشه تا اگه لو رفت، کاربر بتونه از همه‌جا لاگ‌اوت بشه.
سرور یه API می‌ده که کلاینت می‌تونه توکن‌ها رو باطل کنه
درخواست برای لغو (Revoke) یک Access Token
POST /revoke
Content-Type: application/x-www-form-urlencoded

token=ACCESS_TOKEN
&client_id=your-client-id
&client_secret=your-client-secret


بعد از این درخواست، توکن دیگه معتبر نیست و نمی‌شه باهاش درخواست زد.
2
من سعی کردم فلوی کلی رو بگم هر چیزی که نیاز بود. یادتون باشه ما برنامه نویس نیستیم وگرنه کلی مطالب دیگه هم هست برای گفتن
قبل از اینکه وارد آسیب پذیری های oauth بشیم اگر سوالی دارید راجب فلو ها بپرسید
سعی کن همه موارد رو بررسی کنید چند تا سایت رو باز کنید و فلوی oauth رو توی برپ سوییت دنبال کنید تا مطالب خوب براتون جا بیفته.
🔥2
یه جمله هست میگه:
توی هر تهدیدی یه فرصت هست.
من خیلی هارو دیدم که نگران هوش مصنوعی هستن برای اینکه آیا با اومدنش یه شغلی رو شروع کنن یا نه! یا اینکه میگن با اومدن هوش مصنوعی شغل ما از بین میره

به نظرم فقط باید از هر چیزی که دم دستتون هست برای رسیدن به هدفتون استفاده کنید.
👍6
یه ابزار ساختم که یه لیست ساب‌دامنه می‌گیره، می‌ده به هوش مصنوعی و اونم ساب‌دامنه‌های جدید برات می‌سازه. دوتا حالت داره: یا خودت لیست رو بهش بدی، یا اگه چیزی ندی، خودش می‌ره از crt.sh ساب‌دامنه‌های تارگت رو می‌گیره و بعد یه لیست جدید تحویلت می‌ده."

این ابزار قابلیت پیشرفته شدن خیلی داره ولی فقط خواستم بگم به جای نگران بودن از موقعیت پیش اومده استفاده کنید.
@web_articles
5👍1
1
ابزار روی دامنه att.com اجرا می‌کنیم
2
اینم خروجی ابزار
2
SubGenix.py
4 KB
اینم خود ابزار
3
در این مقاله Web Timing Attack رو شکافتیم - تکنیکی که با تحلیل زمان پاسخ سرور، اطلاعات حساس رو از سیستم قربانی استخراج میکنه.
👍6
web timing attacks.pdf
3.6 MB
Author: zarvan
Language: Persian
Telegram channel: @web_articles
😍123👏21