Dziś wieczorem rozpoczęła się druga część etapu 1, więc mogę w końcu napisać coś o zadaniu pierwszym.

Pierwsze zadanie polegało na dostaniu się do panelu admina pewnej stworzonej na potrzeby konkursu stronki. Stronka ta miała kilka linków, które wyglądały mniej więcej tak:

?page=b2ZlcnRh - dział "oferta"
?page=a29udGFrdA== - dział "kontakt"
?page=b2Zpcm1pZQ== - dział "o firmie"

Jak się nie trudno domyślić wartość parametru jest zakodowana base64. Po odkodowaniu dostajemy kolejno "oferta", "kontakt" i "ofirmie". Test na LFI (czyli podanie jako parametr page zakodowanego "./oferta") wykazał że LFI (Local File Inclusion) faktycznie występuje. Kolejny test wykazał że nie ma żadnego filtrowania znaków, czyli poison NUL byte ma szanse zadziałać. Test polegał po prostu na próbie ustalenia rozszerzenia plików z danymi strony, czyli podawaniu jako parametr kolejnych wartości base64("oferta.htm\0"), base64("oferta.html\0"), base64("oferta.txt\0"), etc. Okazało się że pliki mają rozszerzenie .inc (co okazało się również totalnie nieistotne dla zadania). OK, można includować, ale co by tu zaincludować?

W tym momencie warto byłoby poszukać panelu admina. Czyli standardy - ?page=base64("admin"), /admin.php, /admin, /admin.html, etc. Panel okazał się być ulokowany w katalogu /admin, i okazał się być broniony przez Basic Auth HTTP za pomocą mechanizmu .htaccess+.htpasswd.

Wystarczyło więc użyć powyższego LFI do zainkludowania /admin/.htpasswd (okazało się że podstrony są w pewnym podkatalogu, więc tak na prawdę kodowało się "../admin/.htpasswd\0"), i dostawało się hash. Z hashem doskonale poradził sobie john, który stwierdził że poprawne hasło to abc123. Jeszcze szybkie logowanie na panel (user ofc admin) i koniec zadania.

Dodam że kilka osób po prostu zgadło hasło do panelu admina (abc123 nie trudno zgadnąć) lub zastosowało brute słownikowy. Każda metoda dobra.

Mój osobisty czas rozwiązania: 20 minut

Dodam że kilka osób miało spore problemy z poprawnym kodowaniem \0 w base64 - no nic, muszę zapamiętać żeby dwa razy sprawdzać encoder który używam (mój - python - na szczęście dał radę).

Nyom. Zadanie imho było w sam raz na pierwszy dzień. W drugi dzień (czyli dzisiaj) zadanko już było ciekawsze, no ale z jego opisem muszę poczekać do jutra =^^=

Comments:

2008-10-20 10:03:38 = mlody
{
na stronie Security Days sa umieszczone te zadanka do testow... czy ktos sprawdzal? mecze sie nad pierwszym. Panel admina jest bezposrenio pod /admin i dalej uwierzytelnianie Basic. W takim razie po co kodowanie base64? Po co bajt zerowy?
A moze na publicznym serwerze dali wersje poprawiona? :>
}

Add a comment:

Nick:
URL (optional):
Math captcha: 6 ∗ 2 + 6 =