HTTPS Methods - שיטות קטנות,סיכונים גדולים
בעוד שרוב שיטות ה-HTTP Methods בטוחות או מיושמות בצורה בטוחה, למרבה הצער אנחנו לא יכולים לומר את אותו הדבר עבור כל שרת. מפתח עלול ליישם שיטות בקשה בצורה שגויה, מה שעלול אפילו להוביל לפגיעויות קריטיות כמו הרצת קוד מרוחק או עקיפת Firewall.
בדרך כלל, POST ו-GET די בטוחות, אך ייתכן שהן מיושמות באופן שגוי, מה שמוביל לפגיעויות לוגיות. עם זאת, לא ניתן לומר את אותו הדבר לגבי שיטות PUT, DELETE ו-CONNECT. בואו נחקור ונבין כיצד בדיוק השיטות הללו יכולות לייצר עבורנו סיכון.
שיטות POST and GET
שיטות POST ו-GET משומשות לעתים קרובות והן בטוחות באופן כללי, אלא אם כן מיושמות באופן שגוי, בקשת POST יכולה לבצע שינויים בנתונים אך לא בשרת וזו הסיבה שהיא נחשבת בטוחה באופן כללי. שיטת GET יכולה לבקש נתונים מהשרת.
שיטת PUT
שיטת PUT יכולה להיות מסוכנת מאוד מכיוון שהיא מאפשרת לתוקפים להעלות קבצים לשרת שעלולים להכיל קוד זדוני, סיטואציה כזו יכולה להסלים בקלות. כמובן, יש את הדרך הברורה שבה תוקף ינסה להעלות Reverse shell ואז להפעיל אותו איכשהו, אבל יש גם ניצול פחות מוכר שפוגע בשיטת PUT. תוקף יכול להשתמש בשיטה זו להתחזות מכיוון שהוא יכול להעלות דפי HTML עם קישורים לדפים זדוניים או טופסי התחברות זדוניים וקח בעצם להשתמש בזה בשביל קמפיין פישיניג. דוגמה לתקיפה יכולה להיות כאשר PUT מופעל בשרת JBOSS שכן התוקף יכול להעלות Reverse shell של JSP ולמעשה לקבל הרצת קוד מרוחק על השרת. שימו לב שזה יכול הרבה יותר מסתם Reverse shell.
Delete שיטת
ניתן להשתמש בקלות בשיטת DELETE כדי למחוק קבצים חשובים מהשרת אם במידה ויש הגדרה שגויה. זה יכול לכלול קבצים והגדרות שמונעות מהתוקף לגשת למשאבים מסוימים כגון דפי ניהול או.htaccess. זה יאפשר לתוקף לקבל גישה או להסיר מחסומים שהוצבו לו על מנת כן להשיג גישה, שיטת Delete יכולה להיות מאוד מסוכנת אם היא לא מוגדרת כראוי ותוקף חכם ידע איך למנף את זה לטובתו.
שיטת Connect
ניתן להשתמש בשיטת HTTP הזו ליצירת חיבור P2P דרך HTTP. יש לכך השלכות רבות למשל לעקיפת Firewall.
איך למצוא את אותן Methods
אז אחרי שהבנו כמה סיכונים שעלולים לקרות עקב הגדרות לא נכונות של HTTP Methods, הנה כמה שיטות פשוטות שגם מפתחים וגם תוקפים יכולים להשתמש בהן על מנת לקבל את הסטטוס של אותן שיטות.
⦁ שימוש ב Curl על ידי הפקודה הבאה:
curl -i -X OPTIONS http://XX.XX.XX.XX/
⦁ עוד שיטה שאפשר להשתמש בה היא על ידי Nmap ושימוש בסקריפט של http-methods והפקודה המלאה נראת כך: nmap --script http-methods XX.XX.XX.XX
מסקנה
הדבר הטוב ביותר שתוכלו לעשות הוא פשוט לבטל לחלוטין את השימוש בMethods של Connect,PUT,DELETE ואולי אפילו לבטל את Options מאחר וביטול של השיטה הזו תמנע מהתוקף אפילו לבדוק איזה שיטות קיימות אצלכם באפליקציה, כמובן שזו לא הדרך היחידה להגן על האפליקציה שלכם ויש עוד שיטות מנע שאפשר לשלב על מנת לחזק את האבטחה.
עד כאן לבנתיים, מקווה שנהנתם :)