דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ניתוח חולשת PwnKit (תגובות)

ניתוח חולשת PwnKit (תגובות)

מתוזמן נעוץ נעול הועבר תכנות
15 פוסטים 5 כותבים 690 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY מנותק
    yossizY מנותק
    yossiz
    כתב ב נערך לאחרונה על ידי
    #1

    כאן ניתן להגיב על מאמר זה

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    WWWW תגובה 1 תגובה אחרונה
    4
    • yossizY yossiz התייחס לנושא זה ב
    • WWWW מנותק
      WWWW מנותק
      WWW
      השיב לyossiz ב נערך לאחרונה על ידי
      #2

      @yossiz פשוט מדהים!
      אומרים שמי שלא מצליח בעבודה שלו, מתחיל למסור קורסים של המקצוע...
      אז אני לא רוצה להציע לך לעשות הסבת מקצוע...

      WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

      תגובה 1 תגובה אחרונה
      4
      • nigunN מנותק
        nigunN מנותק
        nigun
        כתב ב נערך לאחרונה על ידי
        #3

        לא הבנתי מה נמצא בargv[0] כשאני מריץ pkexec בשורת הפקודה בלי פרמטר

        מייל: nigun@duck.com

        WWWW yossizY 2 תגובות תגובה אחרונה
        1
        • WWWW מנותק
          WWWW מנותק
          WWW
          השיב לnigun ב נערך לאחרונה על ידי
          #4

          @nigun אמר בניתוח חולשת PwnKit (תגובות):

          לא הבנתי מה נמצא בargv[0] כשאני מריץ pkexec בשורת הפקודה בלי פרמטר

          שם הקובץ.

          WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

          nigunN תגובה 1 תגובה אחרונה
          1
          • nigunN מנותק
            nigunN מנותק
            nigun
            השיב לWWW ב נערך לאחרונה על ידי
            #5

            @www
            איזה? pkexec?

            מייל: nigun@duck.com

            WWWW תגובה 1 תגובה אחרונה
            0
            • WWWW מנותק
              WWWW מנותק
              WWW
              השיב לnigun ב נערך לאחרונה על ידי WWW
              #6

              @nigun אמר בניתוח חולשת PwnKit (תגובות):

              pkexec

              כן.
              ככה זה בכל קובץ שאתה מריץ.
              אתה כותב בשורת הפקודה:

              filname arg1 arg2
              

              מתקבל מערך:

              { 
              0: filname,
              1: arg1,
              2: arg2
              }
              

              WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

              תגובה 1 תגובה אחרונה
              3
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב לnigun ב נערך לאחרונה על ידי yossiz
                #7

                @nigun
                יש מוסכמה, שמי שמריץ את התוכנה שם ב-argv[0] את השם של הקובץ של התוכנה, כלומר אם אתה מריץ pkexec מתוך bash אז bash (בתור תוכנה שמכבדת את המוסכמה הזו) תכניס את המילה pkexec ב-argv[0].

                אבל חשוב להבין שזו רק מוסכמה. אין משהו שמחייב את זה. אפשר להכניס שם מחרוזת אקראית, או אפשר להכניס שם null pointer שמסמן את סוף מערך ה-argv.

                ניצול החולשה מסתמכת על זה שהכנסת שם הקובץ הוא אופציונאלי.

                אגב, משהו מעניין,

                יש הרבה פקודות שמנצלים מוסכמה זו כדי שתוכל לקבל התנהגויות שונות מאותה פקודה, ההתקנה של הפקודה מתקינה כמה קישורים לאותו קובץ (hardlinks) ולכל אחד שם שונה, והפקודה מחליטה לפי השם ב-argv[0] איך להתנהג.
                דוגמה לזה הוא busybox

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                תגובה 1 תגובה אחרונה
                6
                • MusiCodeM מנותק
                  MusiCodeM מנותק
                  MusiCode
                  כתב ב נערך לאחרונה על ידי
                  #8

                  מה הכוונה "משאבים משותפים"?

                  yossizY תגובה 1 תגובה אחרונה
                  0
                  • yossizY מנותק
                    yossizY מנותק
                    yossiz
                    השיב לMusiCode ב נערך לאחרונה על ידי
                    #9

                    @musicode אתה מתייחס למילים אלו שלי:

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

                    אסביר את כוונתי:
                    כל משאב שהוא לא ייחודי לתהליך זה, אלא משותף בין כל התהליכים.
                    למשל דיסק הקשיח (או קבצים ששוכנים עליו), המסך, כרטיס הרשת, ובעצם רוב החומרה של המחשב.
                    דוגמה יחידה של משאב לא משותף שאני מצליח לחשוב עליה, זה זכרון הראם, כי לכל תהליך יש מרחב זיכרון משלה. לכן גישה לזכרון הראם לא חייבת את גישור מערכת ההפעלה. (הנושא לא כל כך שחור/לבן כי יש איזשהו התערבות של מערכת ההפעלה, אבל זה כבר גולש לנושאים אחרים...)

                    מקווה שזה יותר ברור עכשיו. תודה על ההערה.

                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                    תגובה 1 תגובה אחרונה
                    3
                    • צדיק תמיםצ מנותק
                      צדיק תמיםצ מנותק
                      צדיק תמים
                      כתב ב נערך לאחרונה על ידי
                      #10

                      @yossiz אמר בניתוח חולשת PwnKit:

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

                      לא הבנתי, זה שזה הגיע לחולשה זה מעלה או חיסרון? ובאיזה שפה מדובר פה? סליחה על הבורות.

                      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                      טיפים

                      yossizY תגובה 1 תגובה אחרונה
                      0
                      • yossizY מנותק
                        yossizY מנותק
                        yossiz
                        השיב לצדיק תמים ב נערך לאחרונה על ידי
                        #11

                        @צדיק-תמים החולשה קיימת בתוכנה שנכתבה בשפת C. שפת C היא שפה "לא בטוחה". מה שזה אומר לענינינו הוא שאין בדיקות בסביבת הריצה אם גלשת מעבר לסוף מערך. לכן מה שהתחיל כבאג (גלישה מעבר לסוף המערך) הפך לחולשה (אפשרות להזריק משתנה סביבה מסוכנת) ואקספלויט (שמאפשר קבלת הראשות רוט).

                        בשפה אחרת (למשל JS, אומנם JS לא מתאים לתוכנות מסוג זה, אבל יש שפות בטוחות אחרות שמתאימים, בראשם RUST), הבאג היה נשאר באג, ומה שהיה קורה היה או (במקרה הכי טוב) שגיאה בזמן הידור או שגיאה בזמן ריצה.

                        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                        תגובה 1 תגובה אחרונה
                        3
                        • WWWW מנותק
                          WWWW מנותק
                          WWW
                          כתב ב נערך לאחרונה על ידי
                          #12

                          @yossiz

                          pkexec תיקח תוצאה זו ותכניס אותה חזרה ל... משתנה הסביבה הראשונה. יוצא שהצלחנו להזריק משתנה הסביבה לא בטוחה לתוך התהליך. משתנה הסביבה נראית כך עכשיו: GCONV_PATH=./xxx:.‎

                          לא הבנתי למה?

                          WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                          yossizY תגובה 1 תגובה אחרונה
                          1
                          • yossizY מנותק
                            yossizY מנותק
                            yossiz
                            השיב לWWW ב נערך לאחרונה על ידי
                            #13

                            @www על איזה חלק בדיוק אתה שואל?

                            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                            WWWW תגובה 1 תגובה אחרונה
                            0
                            • WWWW מנותק
                              WWWW מנותק
                              WWW
                              השיב לyossiz ב נערך לאחרונה על ידי
                              #14

                              @yossiz אמר בניתוח חולשת PwnKit (תגובות):

                              @www על איזה חלק בדיוק אתה שואל?

                              איפה ראינו שהוא מחזיר את התוצאה למשתנה הסביבה הראשון?

                              WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                              yossizY תגובה 1 תגובה אחרונה
                              0
                              • yossizY מנותק
                                yossizY מנותק
                                yossiz
                                השיב לWWW ב נערך לאחרונה על ידי
                                #15

                                @www

                                610   path = g_strdup (argv[n]);
                                ...
                                629   if (path[0] != '/')
                                630     {
                                ...
                                632       s = g_find_program_in_path (path);
                                ...
                                639       argv[n] = path = s;
                                

                                שורה 639 מכניס את המצביע למחרוזת החדשה שהוחזרה על ידי g_find_program_in_path לתוך argv[n] שכנתבאר נמצא ב-envp[0]

                                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                תגובה 1 תגובה אחרונה
                                1
                                • dovidD dovid העביר נושא זה מ-תכנות ב-

                                בא תתחבר לדף היומי!
                                • התחברות

                                • אין לך חשבון עדיין? הרשמה

                                • התחברו או הירשמו כדי לחפש.
                                • פוסט ראשון
                                  פוסט אחרון
                                0
                                • דף הבית
                                • קטגוריות
                                • פוסטים אחרונים
                                • משתמשים
                                • חיפוש
                                • חוקי הפורום