Wapiti - בדיקת נקודות תורפה באתר בפני עצמו

Wapiti - בדיקת נקודות תורפה באתר בפני עצמו
בעבר статье דיברנו על Nemesida WAF חינם - כלי חינמי להגנה על אתרים וממשקי API מפני התקפות האקרים, ובזה החלטנו לסקור סורק פגיעות פופולרי וואפיטי.

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

Nikto, W3af (נכתב ב-Python 2.7, שאינו נתמך עוד) או Arachni (לא נתמך עוד מפברואר) הם הפתרונות הפופולריים ביותר המוצגים בקטע החינמי. כמובן, יש אחרים, למשל, Wapiti, שהחלטנו להתמקד בהם.

Wapiti עובד עם סוגי הפגיעות הבאים:

  • הרחבת קבצים (מקומי ומרוחק, fopen, readfile);
  • הזרקות (הזרקת PHP / JSP / ASP / SQL והזרקת XPath);
  • XSS (Cross Site Scripting) (רפלקטיבי ומתמשך);
  • איתור וביצוע פקודות (eval(), system(), passtru());
  • הזרקות CRLF (פיצול תגובת HTTP, קיבוע הפגישה);
  • הטמעת XXE (ישות חיצונית XML);
  • SSRF (זיוף בקשת צד שרת);
  • שימוש בקבצים ידועים שעלולים להיות מסוכנים (הודות למסד הנתונים של Nikto);
  • תצורות .htaccess חלשות שניתן לעקוף;
  • הימצאות קבצי גיבוי החושפים מידע סודי (גילוי קוד מקור);
  • הלם קרב;
  • הפניות פתוחות;
  • שיטות HTTP לא סטנדרטיות שניתן לפתור (PUT).

מאפיינים:

  • תמיכת פרוקסי HTTP, HTTPS ו- SOCKS5;
  • אימות באמצעות מספר שיטות: Basic, Digest, Kerberos או NTLM;
  • היכולת להגביל את אזור הסריקה (דומיין, תיקיה, עמוד, כתובת URL);
  • הסרה אוטומטית של אחד מהפרמטרים בכתובת האתר;
  • אמצעי זהירות מרובים נגד לולאות סריקה אינסופיות (לדוגמה: ifor, ערכים מגבילים לפרמטר);
  • היכולת להגדיר עדיפות לבדיקת כתובות URL (גם אם הן אינן באזור הסריקה);
  • היכולת לא לכלול כתובות URL מסוימות מסריקה והתקפות (לדוגמה: התנתק מכתובות URL);
  • ייבוא ​​עוגיות (קבל אותם באמצעות הכלי wapiti-getcookie);
  • יכולת להפעיל/לבטל אימות אישור SSL;
  • היכולת לחלץ כתובות URL מ-JavaScript (מתורגמן JS פשוט מאוד);
  • אינטראקציה עם HTML5;
  • מספר אפשרויות לניהול התנהגות והגבלות של סורק;
  • הגדרת הזמן המרבי לתהליך הסריקה;
  • הוספת כמה כותרות HTTP מותאמות אישית או הגדרת User-Agent מותאם אישית.

מאפיינים נוספים:

  • יצירת דוחות פגיעות בפורמטים שונים (HTML, XML, JSON, TXT);
  • השהייה וחידוש של סריקה או התקפה (מנגנון הפעלה באמצעות מסדי נתונים של SQLite3);
  • תאורה אחורית בטרמינל כדי להדגיש נקודות תורפה;
  • רמות שונות של רישום;
  • דרך מהירה וקלה להפעיל/לבטל מודולי תקיפה.

התקנה

ניתן להתקין את הגרסה הנוכחית של Wapiti בשתי דרכים:

  • הורד את המקור מהגורם הרשמי сайта והפעל את סקריפט ההתקנה, לאחר שהתקנת בעבר את Python3;
  • באמצעות הפקודה pip3 install wapiti3.

לאחר מכן, Wapiti יהיה מוכן לצאת לדרך.

עבודה עם הכלי

כדי להדגים את העבודה של Wapiti, נשתמש בדוכן שהוכן במיוחד sites.vulns.pentestit.ru (משאב פנימי), המכיל פגיעויות שונות (Injection, XSS, LFI/RFI) וחסרונות אחרים של יישומי אינטרנט.

המידע ניתן למטרות מידע בלבד. אל תעבור על החוק!

פקודה בסיסית להפעלת הסורק:

# wapiti -u <target> <options>

יחד עם זאת, יש עזרה די מפורטת עם מספר עצום של אפשרויות השקה, למשל:

--תְחוּם - אזור יישום
אם תציין את פרמטר ה-scope יחד עם כתובת האתר לסריקה, תוכל להתאים את אזור הסריקה של האתר על ידי ציון גם דף בודד וגם את כל הדפים שניתן למצוא באתר.

-s и -x - אפשרויות להוספה או הסרה של כתובות URL ספציפיות. אפשרויות אלה שימושיות כאשר אתה צריך להוסיף או להסיר כתובת URL ספציפית במהלך תהליך הסריקה.

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

--verify-ssl - הפעל או השבת את אימות האישור.
סורק Wapiti הוא מודולרי. עם זאת, כדי להפעיל מודולים ספציפיים, כולל אלה שמחוברים אוטומטית בזמן שהסורק פועל, עליך להשתמש במתג -m ולפרט את אלה שאתה צריך, מופרדים בפסיקים. אם המפתח אינו בשימוש, כל המודולים יפעלו כברירת מחדל. בגרסה הפשוטה ביותר זה ייראה כך:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

דוגמה לשימוש זה אומר שנשתמש רק במודולים SQL, XSS ו-XXE בעת סריקת היעד. בנוסף, ניתן לסנן את פעולת המודולים בהתאם לשיטה הרצויה. לדוגמה -m "xss: get, blindsql: post, xxe: post". במקרה זה, המודול xss יחול על בקשות שנשלחו בשיטת GET, והמודול blibdsql - ל-POST בקשות וכו'. אגב, אם מודול כלשהו שנכלל ברשימה לא היה נחוץ במהלך הסריקה או אורך זמן רב, אז על ידי לחיצה על השילוב Ctrl+C ניתן לדלג על שימוש במודול הנוכחי על ידי בחירת הפריט המתאים בתפריט האינטראקטיבי.

Wapiti תומך בהעברת בקשות דרך פרוקסי באמצעות מפתח -p ואימות באתר היעד באמצעות הפרמטר -a. אתה יכול גם לציין את סוג האימות: בסיסי, תקציר, Kerberos и NTLM. שני האחרונים עשויים לדרוש התקנה של מודולים נוספים. בנוסף, אתה יכול להוסיף כל כותרות לבקשות (כולל שרירותיות User-Agent) ועוד הרבה.

כדי להשתמש באימות אתה יכול להשתמש בכלי wapiti-getcookie. בעזרתו אנו יוצרים עוגייה, שבו Wapiti ישתמש בעת הסריקה. היווצרות עוגייה נעשה עם הפקודה:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

תוך כדי עבודה אינטראקטיבית, אנו עונים על שאלות ומציינים את המידע הדרוש כגון כניסה, סיסמה וכו':

Wapiti - בדיקת נקודות תורפה באתר בפני עצמו

הפלט הוא קובץ בפורמט JSON. אפשרות נוספת היא להוסיף את כל המידע הדרוש דרך הפרמטר -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

התוצאה תהיה דומה:

Wapiti - בדיקת נקודות תורפה באתר בפני עצמו

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

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

כאשר בין שאר הפרמטרים:

-f и -o - פורמט ונתיב לשמירת הדוח;

-m - חיבור כל המודולים אינו מומלץ, כי ישפיע על זמן הבדיקה וגודל הדוח;

--צֶבַע - הדגש נקודות תורפה שנמצאו בהתאם לקריטיות שלהן לפי Wapiti עצמה;

-c - שימוש בקובץ עם עוגייה, שנוצר באמצעות wapiti-getcookie;

--תְחוּם - בחירת מטרה להתקפה. בחירת אפשרות תיקייה כל כתובת אתר תיסרק ותתקוף, החל מהבסיסית. כתובת האתר הבסיסית חייבת להיות לוכסן קדימה (ללא שם קובץ);

--סשן-שטף - מאפשר סריקה חוזרת, שבה לא יילקחו בחשבון תוצאות קודמות;

-A - משלו User-Agent;

-p - כתובת שרת פרוקסי, במידת הצורך.

קצת על הדו"ח

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

Wapiti - בדיקת נקודות תורפה באתר בפני עצמו

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

Wapiti - בדיקת נקודות תורפה באתר בפני עצמו

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

Wapiti - בדיקת נקודות תורפה באתר בפני עצמו

אבל הדוח עצמו אינו מספק צביעה כזו.

פגיעויות

SQLi

הסורק התמודד חלקית עם החיפוש SQLi. בעת חיפוש אחר פגיעויות SQL בדפים שבהם לא נדרש אימות, לא מתעוררות בעיות:

Wapiti - בדיקת נקודות תורפה באתר בפני עצמו

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

XSS

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

Wapiti - בדיקת נקודות תורפה באתר בפני עצמו

LFI/RFI

הסורק מצא את כל הפגיעויות הבסיסיות:

Wapiti - בדיקת נקודות תורפה באתר בפני עצמו

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

הישאר בריא ומוגן!

מקור: www.habr.com

הוספת תגובה