כותרת Penligent

מדריך לפענוח אסימון JWT: כלים, שלבים ושיטות עבודה מומלצות

מה המשמעות האמיתית של פענוח JWT

פענוח JWT פירושו חילוץ הכותרת והמטען שלו — המקודדים רק ב-Base64URL — כדי לחשוף את האלגוריתם, המטא-נתונים והטענות בתוך האסימון. תהליך זה עושה לא לאמת את האותנטיות שלו. כל אחד יכול לפענח JWT, אבל רק אימות החתימה קובע אם האסימון אמין. הבחנה זו חיונית לאימות מאובטח ולבדיקות חדירה.

מדריך לפענוח אסימון JWT Penligent

כיצד פועל פענוח JWT באופן פנימי

אסימון JSON Web Token מורכב מ:

css

header.payload.signature הכותרת והנתונים הם אובייקטי JSON המקודדים ב-Base64URL. לדוגמה:

json

// כותרת

{

"alg": "HS256",

"סוג": "JWT"

}

// מטען

{

"שם משתמש": "admin",

"תפקיד": "SuperUser"

}

פענוח ידני דורש רק פעולות Base64URL:

פייתון

ייבא base64, json

def decode_part(segment):

מרופד = קטע + "=" * (-אורך(קטע) % 4)

return json.loads(base64.urlsafe_b64decode(padded))

כותרת, מטען, _ = token.split(".")

הדפס (פענוח חלק (כותרת))

הדפס (פענח חלק (מטען))

זה מדגים אמת בסיסית בתחום האבטחה: פענוח JWT אינו מעיד על אמון. אימות חוקי מחייב בדיקת חתימה, מנפיק, קהל יעד, תוקף ואלגוריתם החתימה.

אסימוני JWT

כלים פופולריים לפיענוח אסימוני JWT

כליכוחקישור
JWT.ioפענוח בזמן אמת, ניסויים מהיריםhttps://jwt.io
מפענח SuperTokensממשק משתמש נקי וידידותי למפתחיםhttps://supertokens.com/jwt-encoder-decoder
מאתר באגים של אסימוני Auth0אימות ברמה ארגוניתhttps://auth0.com/docs/tokens
PyJWTCLI + ספריית Pythonhttps://pyjwt.readthedocs.io
jwt-decode (JS)מפענח קל משקל בצד הדפדפןhttps://www.npmjs.com/package/jwt-decode

דוגמאות להתקפות JWT בעולם האמיתי שנצפו בבדיקות חדירות

פענוח JWT הופך למסוכן כאשר תוקפים משלבים אותו עם פגמים בחתימות, סודות חלשים ואימות לא בטוח. להלן תרחישי תקיפה המופיעים לעתים קרובות במשימות בעולם האמיתי.

"alg: none" עקיפת חתימה

ספריות ישנות יותר קיבלו JWTs ללא חתימה:

json

{

"alg": "none",

"סוג": "JWT"

}

התוקפים יכלו להסיר את החתימה לחלוטין ולאמת את זהותם ללא הסוד.

כוח גולמי סודי חלש (HS256)

מפתחים משתמשים לעתים קרובות בסודות כמו:

nginx

סוד

admin123

סיסמה

התוקפים משתמשים ב-Hashcat:

css

hashcat -a 0 -m 16500 token.hash wordlist.txt

בלבול באלגוריתם (RS256 → HS256)

התוקף:

  1. שינויים באלגוריתם מ- RS256 אל HS256
  2. משתמש במפתח הציבורי של השרת כסוד HMAC
  3. מייצר אסימונים תקפים המעניקים תפקידי מנהל

זהו אחד ממתקפות ה-JWT המשמעותיות ביותר שהתגלו אי פעם.

RS256 → HS256

גניבת אסימונים באמצעות XSS

אם JWTs מאוחסנים ב אחסון מקומי, התוקפים יכולים לגנוב אותם:

javascript

<script>

fetch("" + localStorage.token);

</script>

תצורה שגויה של CORS המובילה לחשיפת אסימונים

אם מדיניות CORS מאפשרת שימוש בתווים כלליים, בקשות הדפדפן עלולות לדלוף קובצי Cookie JWT לתחומים הנשלטים על ידי התוקף.

התקפות Replay באסימונים ניידים בעלי אורך חיים ארוך

התוקפים מחלצים אסימונים מ:

  • אחסון מקומי לא מוצפן
  • מכשירים מושרשים
  • מטמונים לא מאובטחים

ההקלטה יכולה לעקוף את ה-MFA לחלוטין.

קוד פענוח ואימות JWT רב-לשוני

Node.js

javascript

const jwt = require("jsonwebtoken");

const decoded = jwt.verify(token, PUBLIC_KEY, {

אלגוריתמים: ["RS256"],

מנפיק: "auth.example.com",

קהל: "example.com"

});

console.log(decoded);

לך

לך

token, err := jwt.Parse(tokenString, func(t *jwt.Token) (interface{}, error) {

return []byte("secret"), nil

})

חלודה

חלודה

let decoded = decode::(

אסימון,

&DecodingKey::from_secret(secret.as_ref()),

&אימות::חדש(אלגוריתם::HS256)

);

תהליך פענוח JWT ידני עבור בודקי חדירות

במהלך בדיקות חדירה, פענוח JWT חושף:

  • זכויות יתר המאוחסנות בטקסט רגיל
  • חסר exp או iat
  • אלגוריתם שהוגדר באופן שגוי
  • נתונים רגישים במטען
  • וקטורי העלאת הרשאות אפשריים

כך בודקים הבודקים את בקרת הגישה השבורה ומעלים את התפקידים.

מפענח JavaScript ידני (ללא ספרייה)

javascript

פונקציה decode(seg) {

seg = seg.replace(/-/g, "+").replace(/_/g, "/");

seg += "=".repeat((4 - seg.length % 4) % 4);

החזר JSON.parse(atob(seg));

}

שרשראות התקפה JWT מתקדמות (תרחישי צוות אדום)

JWT + IDOR → השתלטות מלאה על החשבון

זרימה:

  1. פענוח JWT
  2. שינוי "sub": "501" אל "sub": "1"
  3. לחתום מחדש או לעקוף את החתימה
  4. פגע בנקודת קצה מיוחסת
  5. להעלות הרשאות

שרשרת זו מופיעה כמעט מדי שבוע בהערכות ארגוניות.

JWT + התחזות לשירות מיקרו

אימות פנימי חלש מאפשר לתוקפים להתחזות לשירותים:

  • גישה לנתוני חיוב
  • שינוי הרשאות משתמש
  • קרא תורי הודעות
  • עקיפת שערי API

שיטות עבודה מומלצות בתחום ההגנה (צוות כחול)

אכיפה קפדנית של האלגוריתם

פייתון

jwt.decode(אסימון, מפתח, אלגוריתמים=["RS256"])

סודות חזקים עבור HS256

הפק באמצעות:

פרל

openssl rand -hex 32

אמת טענות סטנדרטיות

exp

iss

aud

nbf

אחסן JWT בקובצי Cookie של HttpOnly

ממתן גניבת אסימוני XSS.

יישום סיבוב מפתחות

השתמש ב-JWKS לניהול מפתחות מבוזר:

ניתוח אבטחת JWT משולב ב- Penligent.ai

מערכות אימות מודרניות משתמשות לעתים קרובות בעשרות מיקרו-שירותים, שלכל אחד מהם לוגיקת JWT משלו. הבדיקה הידנית הופכת לאיטית ונוטה לטעויות. Penligent.ai, פלטפורמת בדיקות חדירה חכמה, משלבת ניתוח JWT ישירות לתהליכי האבטחה האוטומטיים שלה.

Penligent.ai מבצע:

  • בדיקות אימות חתימה
  • זיהוי סודות חלשים באמצעות פיצוח היברידי של CPU/GPU
  • זיהוי אי התאמת אלגוריתם
  • בדיקות מניפולציה של תביעות
  • הדמיות של שימוש לרעה באסימוני השמעה חוזרת ורענון
  • סריקת דליפת אסימונים בחבילות JS
  • קורלציה בין נקודות קצה לזיהוי אי-עקביות באימות JWT

הוא גם משחזר שרשראות ניצול, כגון:

  • בלבול בין מפתחות RS256 → HS256
  • IDOR באמצעות זיוף sub תביעה
  • העלאת הרשאות באמצעות זיוף תפקיד שדות

ביישומים גדולים, ניתוח JWT אוטומטי זה מפחית באופן דרסטי את עומס העבודה הידני, תוך חשיפת נקודות תורפה שכלי מסורתיים לעיתים קרובות מפספסים.

מטריצת התקפה והגנה מקיפה של JWT

התקפהתיאורדוגמההגנה
alg: איןמסיר חתימהשדה חתימה ריקדחה JWTs לא חתומים
בלבול בין RS ל-HSמפתח ציבורי המשמש כסוד HMACאסימון מנהל מזויףאכיפת אלגוריתם
סוד חלשכוח ברוטלי HS256"password123" סודמפתח אקראי בן 32 בתים
תביעות מזויפותשנה תפקיד/תת-תפקידתפקיד "מנהל"אישור בצד השרת
גניבת XSSJS גונב JWTlocalStorage.tokenעוגיות HttpOnly
התקפת השמעה חוזרתאסימון לשימוש חוזראפליקציות סלולריותTTL קצר, סיבוב
אסימונים פנימיים שהודלפוהתחזות לשירותמיקרו-שירותיםmTLS, JWKS, scopes

מחשבות אחרונות

פענוח JWT הוא רק ההתחלה. אבטחה אמיתית נובעת מאימות חתימות, אכיפת אלגוריתמים קפדניים, אימות טענות, סיבוב מפתחות ואחסון אסימונים בצורה בטוחה. יישומים מודרניים מסתמכים במידה רבה על אימות מבוסס אסימונים, ולכן נכונות JWT היא חלק חיוני במערך האבטחה.

על ידי שילוב של שיטות הנדסיות חזקות עם פלטפורמות אבטחה אוטומטיות כמו Penligent.ai, ארגונים יכולים לזהות במהירות תצורות שגויות, למנוע התקפות של העלאת הרשאות ולדאוג שמערכות האימות שלהם יהיו עמידות בפני טכניקות תקיפה מודרניות.

שתף את הפוסט:
פוסטים קשורים
he_ILHebrew