Данной статьёй я начинаю серию write-up’ов тренировочных площадок. Площадки могут быть как общего направления, так и конкретно под один тип уязвимости, например xss. Практически всегда я буду пользоваться Kali Linux и инструментами, входящими в него. И первой такой площадкой является сайт hackertest.net. Это 20 уровней, проверяющие ваши знания в области web-безопасности, javascript, немного стеганографии и логики в целом.

1. Level 1

Первый уровень располагается на главной странице сайта. Помимо стартового текста мы видим окно для ввода пароля. Открываем исходный код страницы в браузере (правая кнопка мыши — «view page source»)

<script language=JavaScript>
{
var a="null";
function check()
{
if (document.a.c.value == a)
{
document.location.href="http://www.hackertest.net/"+document.a.c.value+".htm";
}
else
{
alert ("Try again");
}
}
}
</script>

<h1>Hacker Test</h1>

<p>Test your hacking skills</p>

Находим js-код, отвечающий за авторизацию. Видим, что если введём пароль «null», то попадём на следующий уровень hackertest.net/null.htm

2. Level 2

Сначала запрашивается пароль, вводим что-нибудь и получаем ошибку. Теперь открываем исходник и находим функцию авторизации. Пароль «l3l». Обновляем страницу и вводим его.

3. Level 3

Снова открываем исходники. В переменную pw присваивается значение параметра alink, используя DOM.

<SCRIPT LANGUAGE="JavaScript">
function pass()
{
var pw, Eingabe;
pw=window.document.alinkColor;
Eingabe=prompt ("Please enter password");
if (Eingabe==pw)
{
window.location.href=String.fromCharCode(97,98,114,97,101)+".htm";
}
else
{
alert("Try again");
}
}
</SCRIPT>

Пароль — «#000000». Но есть второй вариант. С помощью таблицы ASCII раскодируем последовательность 97, 98, 114, 97, 101 — получаем ссылку на следующий уровень hackertest.net/abrae.htm

4. Level 4

Нам дана ссылка на следующalign=»justify»ий уровень. Но при переходе по ней запрашивается пароль, в случае неверного ввода нас возвращают обратно.
Для получения исходников можно воспользоваться утилитой wget:
wget http://www.hackertest.net/sdrawkcab.htm
Альтернативный способ — открываем в firefox исходный код: view-source:http://www.hackertest.net/sdrawkcab.htm

5. Level 5

<script language=JavaScript>
var pass, i;
pass=prompt("Password: ","");
if (pass=="SAvE-as hELpS a lOt") {
window.location.href="save_as.htm";
i=4;
}else {alert("Try again");
window.location.href="abrae.htm";}
// -->
</script>

Открываем файл sdrawkcab.htm и находим функцию авторизации. Пароль к следующему уровню — «SAvE-as hELpS a lOt».

6. Level 6

Открываем исходник — находим подключаемый скрипт psswd.js. Открываем его по адресу hackertest.net/psswd.js и находим пароль «hackertestz».

7. Level 7

Изучаем исходный код, находим ссылку на gif-файл. Открываем hackertest.net/images/included.gif и видим в правом нижнем углу данные для входа на следующий уровень.

8. Level 8

Вводим любые данные, попадаем на страницу hackertest.net/phat.php. В исходниках находим gif-файл. Открываем hackertest.net/images/phat.gif, в углу читаем подсказку, что нужно открыть как Photoshop-файл. Проходим по ссылке hackertest.net/images/phat.psd и открываем скачанный файл фотошопом или, например, gimp’ом.

scr11

Убираем лишние слои и видим данные для входа на следующий уровень.

9. Level 9

Нам сказано взломать пароль. Значит, надо его сначала найти. Изучаем исходники — находим в комментариях пароль Z2F6ZWJydWg= . Знак равно подсказывает нам, что используется алгоритм base64. Декодируем на сайте base64.ru и получаем «gazebruh». Проходим на hackertest.net/gazebruh.php

10. Level 10

<td width="100%"><font size="2" face="Tahoma"><i>S</i>treet Korner is your 
own online <i>hack</i>er simulation. W<i>it</i>h over 100 levels that require 
different skills to get to another step of the game, this new 
real-life immitation will <i>h</i>elp you advance your security knowledge. 
This site will help you improve your JavaScript, PHP, HTML and 
graphic thinking in <i>a</i> fun way that will entertain any visitor! Have 
a spare minute? Log on! Each level wil<i>l</i> provide you with a new, 
harder clue to find a way to get to another level. Only <i>f</i>ew people 
have gotten to the end of the maze... Will you crack this 
site?</font></td>

Изменился дизайн. Здесь нужно включить смекалку. Изучая исходники, можно заметить в тексте несколько тегов курсива.
Попробуем из этих символов составить пароль — «shackithalf». Получаем некую ошибку. Если вы выделим текст, или откроем исходник — увидим невидимый текст с ссылкой на следующий уровень rofl.php

11. Level 11

Опять изучаем исходники и находим ссылку clipart.php

12. Level 12

logo

Дело в трёх буквах… замечаем, что файл логотипа изменил расширение. Скачиваем картинку logo.jpg, увеличиваем и видим ссылку на следующий уровень.

13. Level 13

Находим файл hackertest.net/images/lvl13.gif, скачиваем и увеличиваем. Видим надпись 4.xml, открываем hackertest.net/4.xml, в этом файле видим строчку с 4xml.php, открываем его.

14. Level 14

Находим файл hackertest.net/images/bidvertiser.gif, скачиваем и открываем в gimp’e или фотошопе. На одном из слоёв видим надпись «Totally!!! php». hackertest.net/totally.php — следующий уровень.

15. Level 15

Проходим по ссылке, получаем ошибку. Тогда скачиваем этот файл — wget http://www.hackertest.net/images/pass2level16.jpg

scr8

 

Открываем файл в обычном текстовом редакторе, видим надпись «Level 16: unavailable». Заходим на следующий уровень hackertest.net/unavailable/

16. Level 16

В исходниках видим комментарий с указанием на следующий уровень — hackertest.net/unavailable/images/ . Тут находим ссылку на картинку bg.jpg . Скачиваем её, открываем текстовым редактором и находим ссылку Ducky.php — следующий уровень http://www.hackertest.net/unavailable/Ducky.php

17. Level 17

В исходниках всё ясно сказано. Узнаём IP: https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8&client=ubuntu#q=%D0%BC%D0%BE%D0%B9%20ip

<font color="#FFFFFF">Password: your IP address</font><br>

После ввода IP получили ошибку и ссылку на следующий уровень — http://www.hackertest.net/level18.shtml

18. Level 18

Нам сказано думать как нуб. Копаться в исходниках и увидеть там файл n00b.gif — неверный ход. Просто вбиваем пароль «password» и получаем ссылку на следующий уровень — /level19.shtml

19. Level 19

В исходниках находим файл hackertest.net/images/level20_pass.gif , скачиваем его и открываем gimp’ом или фотошопом — в слоях находим название следующего уровня. Переходим на http://www.hackertest.net/gazebruh2.htm

20. Level 20

<p align="center"><b><font face="Arial" size="2">
VldwSk5Gb3lVa2hQUjJSclRUSlJlbFJITlU5TlIwNTBWbTE0YTFJelVqSlpNakF4WWtkT2NFNVlWbUZYUmtZeVYycEtTbG95U25SUFZFNU5Xbm93T1QwOT09<br>
<font color="#FFFFFF">&nbsp;^^^^^^^^^^ Change domain, add "22332" at the end, reach it and then get hold of ... ^^^^^^^^^^ </font></font></b></p>

Последний уровень. Открываем исходный код. Обратим внимание на несколько строчек. Во-первых, Richard Cole первым прошёл этот уровень. Во-вторых, дана картинка hex.gif с hex-кодом. Далее, дан ещё один код, скорее всего зашифрованный в base64. Наконец, подсказка: «Изменить домен, добавить 22332 в конец, и затем достать…»

Начнём с base64. Опытным путём выясняем, что это 4-кратная шифрация текста «Go to www.streetkorner.net/gb now.». При переходе на .streetkorner.net/gb нас направляют на facebook. Вспомним про подсказку, и попробуем изменить домен — http://www.hackertest.net/gb/ .Чего-то не хватает — допишем 22332. Нам выдаётся ошибка 505, но на самом деле сервер возвращает ответ 200. Может, это подсказка?

scr11

http://www.hackertest.net/505/ — нам показывается ошибка 403, хотя сервер снова возвращает ответ 200. Идём дальше. На странице http://www.hackertest.net/505/403/ видим надпись «What is the answer to life, the universe, and everything?». Гугл на этот вопрос даёт волшебный ответ 42 =)

scr12

На странице http://www.hackertest.net/42.php висит всего одна ссылка, ведущая на самую первую страницу. Не знаю, можно ли считать это финишом, если есть другие идеи — пишите =)

Можно нагуглить некоторые ссылки по http://www.hackertest.net/gb22332/* ,но дальше раскрутить этот вектор я не смог.
Да, в hex зашифровано некоторое поздравление =)