2012-01-18 3 views
2

Привет, мне поставили задачу попытаться сломать проприетарную программу веб-сервера, которую использует моя компания, мне не очень повезло. Он построен в c.взломать веб-сервер

Работает от имени root, и я пытаюсь заставить его выполнять команды. Веб-сервер принимает команды, размещенные в URL-адресе, и выполняет эти команды с префиксом. Теперь я могу передать любую команду, например «& _cmd = gettimeout» или «& _cmd = rm». Программа фактически будет запускать «префикс rm»

Префиксная программа попытается запустить эту команду в наборе каталогов, из которых нет полезных команд unix, поэтому будет просто отчитываться о команде, которая не найдена. Также невозможно передать пробелы в URL-адресе, например «& _cmd = rm% 20-f», поскольку скрипт php преобразует пробелы в +. Есть ли в любом случае форматирование строки & _cmd для запуска настоящих команд unix?

Немного странной задачи, но я студент-студент, проводя курс безопасности, и моя работа пытается найти для меня определенную работу относительно моего курса.

Спасибо за вашу помощь

+0

Что происходит с & _cmd = rm; pwd? выполняется ли команда pwd? можете ли вы получить доступ к родительским каталогам с помощью «..»? можете ли вы получить доступ к абсолютным путям типа «/ usr/bin»? можете ли вы передать более одного аргумента, например «rm% 20-rf% 20 /»? – vaugham

+0

Почему это помечено C? Тег удален. – pmg

+0

Команда rm; pwd не найден Похоже, что он просто берет весь текст и анализирует его как одну команду –

ответ

1

Некоторые идеи, могли бы работать, не может:

  1. обратными кавычками. Если повезет, они будут оценены до запуска prefix. Без везения они все равно могут служить вам.
  2. Если пробелы не работают, почему вы не попробуете другие виды пробелов? Там есть вкладка и многое другое.
  3. Вам нужно найти, какие команды точно можно использовать, и выяснить, помогут ли они.
  4. Возможно, вы обнаружили переполнение буфера в одной из разрешенных команд. Обычно такие перерасход не представляют угрозы безопасности (если вы берете vi, вы не можете делать все, что вы не могли сделать в любом случае). Но в этом контексте вы сможете их использовать.
  5. Вы можете найти исполняемые файлы в /proc/, если вы можете туда попасть - он содержит ссылку на команду каждого процесса.
+0

Это было обещано использовать обратные тики с префиксом в командной строке я могу сначала запустить команду. Однако кажется, что вызов exec в веб-сервере всегда работает как префикс как программа, так и любые другие аргументы в качестве аргументов в вызове exec :( –

Смежные вопросы