הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   פירצה ב PAYPAL בכל מקום! (https://hosts.co.il/forums/showthread.php?t=103813)

Steve-Web 16-05-13 11:05

פירצה ב PAYPAL בכל מקום!
 
אהלן ,
לא יודע כלכך מי מכיר אותי מי פחות ..
אני עוסק כבר המון זמן בפיתוח אתרים החל ממערכת CMS שבעבר פיתחתי חצי שנה שכוללת PAYPAL ועד לוורדפרסים ומערכות מוכנות בשילוב PAYPAL .
במהלך ההתעסקות שלי איתם (וגם עכשיו) אני לומד המון על אבטחת מידע , בייפאסינג , אבטחת SQLI מהמון סוגים DDOS מ 3 סוגים ועוד הרבה ....
יצא לי לראות המון אתרים ומערכות אוטומטיות שעובדות עם PAYPAL , 90 אחוז מהאתרים האלה לא מאובטחים והתקשרות עם PAYPAL לא מאובטחת בכלל ,
אתן דוגמא , כחלק מפרוייקט עזרה לאתרים כאלה , לקחתי כ 30 אתרים ישראלים שעובדים עם פייפאל ואלה התוצאות :

28 אתרים פריצים
2 עובדים בצורה מאובטחת עם פייפאל (החיסרון שלהם שהם מוגבלים בערכים שניתן לשלוח אל הפייפאל)

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

מה אני מצאתי ?
ברגע שהאתר עצמו שולח את החשבונית לתשלום הפייפאל כמו שציינתי הוא שולח גם את הדף שתוחזר במידה והתשלום יבוצע או במידה והתשלום יבוטל לדף אחר .
אז הכתובות האלה מוצפנות קצת אבל לא רציני בכלל , כל מי שקצת מבין יוכל לראות את זה ולהבין ישר ולהשיג את הכתובת שמוחזר אם עבר ואת הכתובת אם בוטל התשלום .
עכשיו יש בערך 10 אתרים מתוך ה 28 הפריצים שבודקים בסיום התשלום במערכת שלהם האם החשבונית (מספר ה ID של העסקה של הפייפאל) שולם באמת , פה מתחילה קצת בעיה אבל לאחר ממש כמה דקות גם אותה פרצתי כך:
בעת השליחת נתונים השארתי את אותו ID של העברה, אותם פריטים בחשבונית אך שינוי בסכום התשלום לצורך הדוגמא ל 4 אגורות (אי אפשר פחות) ואז ביצוע התשלום , אני אכן משלם 4 אגורות אמיתיות אך לאחר מכן התשלום מוצג כבוצע בהצלחה , הפייפאל בעצמו הפעם החזיר אותי לעמוד של ביצוע תשלום כראוי וכל נראה כתקין .
היום במערכות האוטומטיות אין דרך לעלות על זה מלבד לבדוק על העברה בצורה ידנית מה שאני בטוח שהרבה חברות לא עושות את זה , אומנם כן בודקות את הפייפאל אך נניח שאני משלם 20 שח נראה בפייפאל מספר פריט : 221 לדוגמא , עך סך 20 שח , שיש להם מוצרים באתר על 20 שח לדוגמא מגן מסך כאשר אני בעצמי הזמנתי מכשיר פלאפון מתקדם ושלמתי רק 20 שם .
בכל מקרה מה שאני בא להגיד פה שיש המון אתרים עם בעיות .

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


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


אם כבר אז רציתי להעלות פה את הדיון הזה ולראות מה אתם חושבים שניתן לעשות ?
להשאיר את זה ככה ?

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

toron 16-05-13 12:03

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

Steve-Web 16-05-13 12:19

בעיקרון המשתמש (אני) זה שמבצע את הפריצה יכול לעשות שם מה שאני רוצה , כדי לפגוע בשאר המשתמשים אני כבר צריך לפרוץ לאתר עצמו, זה כבר נושא אחר לגמרי שגם הוא אפשרי אבל זה כבר לחנך את כל הישראלים מה שבלתי אפשרי - הישראלי אוהב זול .

Ori The Man 16-05-13 12:19

מעניין ומסוכן!
מה לדעתך הדרך הכי טובה להתגונן בפני זה?

Steve-Web 16-05-13 15:50

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

Ori The Man 16-05-13 16:46

ידוע לך אם הפירצה תופסת גם בתוסף woocommerce בוורדפרס?

WCMS 16-05-13 16:56

בגלל זה צריך להשתמש באימות מול פייפל דרך IPN או עם Express Checkout.

Maor|Short.co.il 16-05-13 17:00

וואו מידע מאוד חשוב, תודה רבה!

עכשיו הבנתי מדוע אמרת שלמרות הפירצה אני עדיין מאובטח - כי אני מבצע את הפעולות באופן ידני.

האם התרעת בפני PAYPAL עצמה על הפירצה ולא רק בפני בעלי האתרים?

Steve-Web 16-05-13 17:28

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

Ori The Man 16-05-13 17:50

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

BuildDream 16-05-13 19:14

יש לזה פיתרון מאוד פשוט - PayPal Express Checkout.

יש להם API מצויין, רק צריך לדעת להשתמש בו. המידע הזה לא אמור לעבור אצל הגולש בכלל, אלא בתקשורת ישירה בין השרת לPayPal.

IgalSt 17-05-13 10:44

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

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

אדיר 17-05-13 11:37

כשעובדים עם IPN, בהעברת הלקוח לתשלום ב- paypal בעל האתר צריך לספק 3 קישורים שונים -
1. כתובת לחזרה במקרה שבו העסקה נכשלה (cancel).
2. כתובת לחזרה לאחר שהעסקה בוצעה (return).
3. כתובת לפנייה כאשר העסקה בוצעה בפועל, כאן גם נשלחים כל הפרטים אודות העסקה (notify_url).

שני הדפים הראשונים צריכים להיות דפי תצוגה בלבד - הם לא אמורים להגדיר שום דבר בקשר לטרנזקציה, לקוח שפותח את דף ה- return הוא לא בהכרח לקוח ששילם.
הדף היחיד שמגדיר עבור הלקוח שהוא שילם (ובו יש לבדוק גם את הסכום שהוא שילם כנגד השירותים שהוא רכש) זה ה- notify_url - הפנייה לדף הזה מתבצעת ישירות מ- paypal.

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

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

הפתרון הוא פשוט - כמו בהמון מקרים אחרים, כדאי לעבוד עם מפתחים שיודעים מה הם עושים.

Steve-Web 17-05-13 12:43

יגאל וגם אדיר, אגיב לשניכם , אני לא יודע האם להגדיר את זה כפריצה ממש , אבל ! זה בהחלט בעיה שנמצאת בהמון המון המון אתרים ישראלים וגם אחרים גדולים, קצת קשה לי להסכים עם ההשוואה של יגאל מכיוון שמדובר פה לא רק בלהחליף מדבקה אלה לעיתים גם בלי להחליף מדבקה ישר "לצאת מהחנות" עם המוצר , אני מתכוון פה ל Success return URL שנשלח גם הוא לפייפאל עם שאר הנתונים .
אדיר , ברור לי שמי שמבין בזה ולא מתעצל ויודע כמובן לעבוד נכון עם PAYPAL אין סיבה שהנתונים יישלחו ככה חשופים ללקוח או אולי חשופים אך מאובטחים ומצופנים כמו שצריך , מעבר לכך מה שאני עובד עליו זאת מערכת שתדע גם לאחר העסקה לסמן שהתשלום בוצע לא מכניסה לדף ההחזרה של ה Success return (שכמה שזה נשמע טיפשי יש המון אתרים שעובדים ככה . המון .) אלה גם מוודא שה ID של העסקה הוא אכן על הסכום כמו שמתואר באתר עצמו וכמובן שהעסקה אכן בוצעה .
אין לי ספק שאצל PAYPAL הכן תקין ואין אצלם פירצה כלשהי הבעיה כמובן היא אצל המתכנתים שעובדים בצורה פזיזה\זולה ולא משקיעים או מבינים עד כמה זה חשוב ולמה זה יכול לגרום .
חשוב לציין משהו שעלה לי בראש ישר ועדיין לא מצאתי כלכך תשובה , אכן יש לפייפאל אפשרות לעבוד עם TOKEN של העסקה ותקשורת ישירה של השרת מול PAYPAL אז למה הם נתנו אפשרות של תקשורת כזאת חשופה לצד הלקוח ולמי שקצת מבין אפשרות לשנות את הנתונים האלה ללא בעיה כלל , מוזר לי למה הדבר הזה נשאר ככה ובכל רגע עוד ועוד אתרים נבנים בצורה לקויה \ מרומים ע"י אנשים שרוצים לנצל את הדבר לרעה .

אדיר 17-05-13 13:26

אין בעיה עם העברת נתונים בצורה חשופה - עצם העובדה שהמשתמש יכול לראות אילו נתונים נשלחים לא אמורה להפוך את הפעולה ללא מאובטחת.

אם הוא ניגש ישירות ל- return url - זה לא יתן לו כלום. גם אם לא נעשה שום בדיקה של העסקה ובכל מקרה נציג "תודה רבה על קנייתך [...]", זה עדיין רק דף תצוגה.
אם הוא מחליט לשנות את ערך המוצר - אנחנו יכולים להתייחס לזה כתרומה עד שהוא ידרוש את זה חזרה, לנו אין שום מוצר שמתאים למה שהוא שילם בעבורו.

העמוד היחיד שרשאי להשלים עסקה הוא העמוד שהגדרנו כ- notify_url - אין בעיה ממשית עם העובדה שהמשתמש ידע את הנתיב אליו כי הוא לא יכול לעשות איתו כלום.

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

Steve-Web 17-05-13 13:48

נכון מה שאתה אומר אבל רק בחלק מהאתרים . אני יכול לתת לך המון אתרים שעת השליחת נתונים ל PAYPAL ובניהם ה RETURN URL יש 2 כתובות , אחת של הצלחה ואחת של ביטול , (כן כן יש גם כאלה) והמערכת האוטומטית שיוצרת את הדף חזרה של "הצלחה" הוא לא דף HTML אלה PHP או ASP שמכיל נתונים שיראו במערכת האתר עצמה (לא פייפאל, לדוגמא XXXXXX - אתר הקניות שממנו רכשתי) שהתשלום בוצע בהצלחה , והפקידים של החברה שיושבים איי שם ולא כל כך מבינים פשוט מסתכלים ורואים ששולם במערכת (האישית שלהם באתר שלהם) ושולחים את המוצר ...
זה הייתה כוונתי .

אדיר 17-05-13 14:15

אני מסכים איתך שזה קיים ושזה מצער שזה קיים - אבל האשמה מוטלת אך ורק על המפתח שלא הטמיע את זה כראוי.
אם אתה רוצה שהתהליך יתבצע אוטומטית, ללא התערבות אנוש, אתה צריך להטמיע אותו כמו שצריך - אם אתה לא מטמיע אותו כמו שצריך, את מי אתה כבר יכול להאשים.

אם אתה משתמש ב- SQL - אתה קורבן פוטנציאלי ל- SQLI,
אם אתה מאפשר לגולש להזין מידע ולאחר מכן אתה מציג אותו - אתה קורבן פוטנציאלי ל- XSS,
אם אתה מאפשר תשלום באמצעות PayPal - אתה קורבן פוטנציאלי לבעיה שהצגת.
ואפשר להמשיך ככה עם המון דוגמאות נוספות..

אז בעניין השאלה המקורית שלך:
ציטוט:

אם כבר אז רציתי להעלות פה את הדיון הזה ולראות מה אתם חושבים שניתן לעשות ?
להשאיר את זה ככה ?
הבעיות האלו קיימות, זה לא תמיד נעים, זה לא תמיד כיף - אבל זאת אשמתו של המפתח.
התשובה שלי היא להשתמש בזה כמו שצריך או לא להשתמש בזה בכלל - אני פשוט לא מוצא תשובה אחרת.

IgalSt 18-05-13 00:29

נא לא לפרסם שמות או לקשר לאתרים ספציפיים בהם יש בעיה לכאורה

לגופו של עניין, אני יכול אולי להגדיר את זה "כפריצה פסיכולוגית". ממש כמו בבדיחה שקיים וירוס שאתה מקבל במייל בקשה למחוק את explorer.exe בתיקיית c:\windows

כלומר, אם בעל החנות לא מוודא בחשבון הבנק שלו (פייפל ~= בנק) שהתשלום אכן התבצע, אז הוא בבעיה ומגיע לו.

MasterNetwork 21-05-13 22:33

מניסיון בעברי הרחוק בדקתי גם את האבטחה בכמה אתרים והם לא שולחים כזה מהר :( .

Steve-Web 22-05-13 01:08

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

Rebuilt 05-06-13 17:26

וואו... חתיכת מציאה.
אשמח לקבל את פרטי הדרך ככתוב לעיל בהודעה פרטית.

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

IgalSt 05-06-13 20:19

ציטוט:

נכתב במקור על ידי Rebuilt (פרסם 877724)
וואו... חתיכת מציאה.
אשמח לקבל את פרטי הדרך ככתוב לעיל בהודעה פרטית.

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

האשקול הוקפץ ללא אישור וגם אין לך שום דבר ענייני להוסיף לדיון.


כל הזמנים הם GMT +2. הזמן כעת הוא 18:38.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ