Перейти к основному содержанию

CTF web — pinger

CTF

Разбираем вторую задачку из нашего соревнования CTF. Задание называется pinger, 100 баллов за флаг.

ctf

Ссылка ведёт на URL:

http://challenge01.root-me.org/web-serveur/ch54/

Нам предлагают пройти одно из испытаний на root-me.org.

Ссылки

Решение

Сразу скажу, задачка на эксплуатацию уязвимости из разряда Command injection.

Command injection — внедрение команд ОС. Выполнение несанкционированных команд операционной системы на удалённом сервере через уязвимое веб-приложение.

Что нам предлагают. У нас есть форма. Вводим адрес и пингуем его. Результат выводится на экран. Для теста пинганём localhost.

ctf

Видим, что возвращается результат, похож на результат пинга в Llinux. Да что там похож, он и есть. Вероятно выполняется код "ping x". Если так, то мы можем попробовать добавить в конец свою команду, если вводимые данные не валидируются.

Попробуем пингануть такое:

localhost; cat /etc/passwd

ctf

Да, уязвимость налицо. Мы можем выполнить любую команду bash Linux через эту форму. Осталось найти флаг. Смотрим что у нас лежит в корне сайта:

127.0.0.1; ls

ctf

Видим только один файл index.php. Заглянем в него. Вообще, выполнять несколько команд можно разными способами:

localhost; cat index.php

localhost&&cat index.php

localhost|(cat index.php)

Я проверил, работают все.

ctf

Вывели содержимое файла index.php. Посмотрим в текстовом виде на код страницы:

ctf

А вот и наш флаг, он задан в виде переменной: $flag.

Безопасность

  1. Проверяйте переменные переданные пользователем. В данной задаче достаточно валидировать IP адрес или доменное имя, это уже исключит инъекцию.
  2. Пинговать лучше не с помощью команд ОС. Пример Ping.

Теги

 

Похожие материалы

CTF — HTTP Headers

Продолжаем решать задачки по информационной безопасности web-серверов. Сегодня задачка с портала root-me.org, называется "HTTP - Headers". За решение задачки дают 15 баллов, чуть посложнее начального уровня.

Теги