Wpis ten rozpoczyna serię artykułów opisujących rozwiązania kolejnych poziomów hackme Natas na OverTheWire. Zaleca się uprzednio rozwiązać zagadki zawarte w grze Bandit, których rozwiązanie opisałem już na blogu, jednak nie jest to obowiązkowe.

Wstęp

Seria Natas składa się z zadań dotyczących atakowania webaplikacji. W przeciwieństwie do Bandit na każdym etapie logujemy się loginem natasNR_POZIOMU oraz uzyskanym na poprzednim poziomie hasłem.

Rozwiązania

W ramach pierwszego artykułu rozwiążemy zadania 0-5, następne rozwiązania ukazywać będą się cyklicznie w kolejnych artykułach.

Natas0 oraz Natas1

Zadania ograniczają się do odczytania hasła bezpośrednio z kodu strony. Hasła ukryto w komentarzach i przedstawiają się następująco:

  • W natas0 <!--The password for natas1 is gtVrDuiDfck831PqWsLEZy5gyDz1clto -->

  • W natas1 <!--The password for natas2 is aRJMGKT6H7AOfGwllwocI2QwVyvo7dcl -->

Natas2

Używając danych pozyskanych na poprzednim poziomie logujemy się i ponownie spoglądamy w kod. Zawartość <body> prezentuje się następująco:

<h1>natas2</h1>  
<div id="content">  
There is nothing on this page  
<img src="files/pixel.png">  
</div>

Jedyną pozostawioną nam wskazówką jest katalog /files/, w którym znajduje się pixel.png. Odwiedzamy zatem http://natas2.natas.labs.overthewire.org/files/ i poza plikiem obrazka znajdujemy users.txt. Jego zawartość to:

# username:password  
alice:BYNdCesZqW  
bob:jw2ueICLvT  
charlie:G5vCxkVV3m  
natas3:lOHYKVT34rB4agsz1yPJ2QvENy7YnxUb  
eve:zo4mJWyNj2  
mallory:9urtcpzBmH

Natas3

Kod strony zawiera komentarz następującej treści:

<!-- No more information leaks!! Not even Google will find it this time... -->

Kiedy chcemy, aby wyszukiwarki takie jak google nie listowały zawartości naszego webserwera tworzymy plik robots.txt. Odwiedzamy zatem http://natas3.natas.labs.overthewire.org/robots.txt i odczytujemy:

User-agent: *
Disallow: /s3cr3t/

Dyrektywa zawarta w pliku nakazuje robotom pomijać katalog /s3cr3t/, który my jednak odwiedzamy i znajdujemy w nim plik users.txt, w którym znajduje się hasło:

  natas4:Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ

Natas4

Jest to pierwszy etap nie polegający na podróżowaniu po katalogach. Odwiedzając natas4 dostajemy informację

Access disallowed. You are visiting from "" while authorized users should come only from “http://natas5.natas.labs.overthewire.org/".

Kiedy klikniemy na Refresh Page zauważymy, że komunikat zmienia się na:

Access disallowed. You are visiting from “http://natas4.natas.labs.overthewire.org/" (…)

Stąd prosty wniosek, że skrypt weryfikuje nadsyłany przez przeglądarkę nagłówek Referer, który musimy spreparować. Rozwiązanie może mieć kilka postaci. Najłatwiejszym rozwiązaniem może okazać się użycie dodatku do przeglądarki i podmianę nagłówka referer na http://natas5.natas.labs.overthewire.org/. Jeśli jednak mamy dostęp do powłoki systemu *nix szybszym rozwiązaniem będzie:

curl -e http://natas5.natas.labs.overthewire.org/ http://natas4:Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ@natas4.natas.labs.overthewire.org/

Niezależnie od wybranej metody wynik będzie oczywiście taki sam:

Access granted. The password for natas5 is iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq

Natas5

Po zalogowaniu na piąty etap widzimy komunikat:

Access disallowed. You are not logged in

Nie jest to rozwinięty komunikat, należy jednak zastanowić się, jak zostaje wygenerowany. Rzut oka na nagłówki serwera daje nam odpowiedź. Serwer ustawia cookie loggedin z wartością 0. Wystarczy zmienić je za pomocą choćby firebuga na 1 a otrzymamy odpowiedź:

Access granted. The password for natas6 is aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1

Rozwiązania kolejnych poziomów.