The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Bash защита от выполнения в переменной"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Шрифты / Linux)
Изначальное сообщение [ Отслеживать ]

"Bash защита от выполнения в переменной"  +/
Сообщение от Mr. Sneer on 14-Мрт-14, 06:53 
Добрый день!

Есть простейший скрипт:

#!/bin/bash
echo "$1"

Как защититься от выполнения команды в переменной? Т.е. если запустить скрипт так: ./script.sh `ls -l`, то он выполняет команду ls -l. Уже весь моск сломал, но решение найти не могу:(


Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Bash защита от выполнения в переменной"  +/
Сообщение от михалыч (ok) on 14-Мрт-14, 07:18 
> Добрый день!
> Есть простейший скрипт:
> #!/bin/bash
> echo "$1"
> Как защититься от выполнения команды в переменной? Т.е. если запустить скрипт так:
> ./script.sh `ls -l`, то он выполняет команду ls -l. Уже весь
> моск сломал, но решение найти не могу:(

в одинарные кавычки?
./script.sh '`ls -l`'

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Bash защита от выполнения в переменной"  +/
Сообщение от Mr. Sneer on 14-Мрт-14, 07:26 
>> Добрый день!
>> Есть простейший скрипт:
>> #!/bin/bash
>> echo "$1"
>> Как защититься от выполнения команды в переменной? Т.е. если запустить скрипт так:
>> ./script.sh `ls -l`, то он выполняет команду ls -l. Уже весь
>> моск сломал, но решение найти не могу:(
> в одинарные кавычки?
> ./script.sh '`ls -l`'

Суть в том, что скрипту в качестве аргумента может передаваться что угодно (это будет вводить пользователь), поэтому надо застраховаться от того, что бы внутри скрипта при обработке этого аргумента не выполнялась команда..

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Bash защита от выполнения в переменной"  +/
Сообщение от михалыч (ok) on 14-Мрт-14, 07:28 
>[оверквотинг удален]
>>> #!/bin/bash
>>> echo "$1"
>>> Как защититься от выполнения команды в переменной? Т.е. если запустить скрипт так:
>>> ./script.sh `ls -l`, то он выполняет команду ls -l. Уже весь
>>> моск сломал, но решение найти не могу:(
>> в одинарные кавычки?
>> ./script.sh '`ls -l`'
> Суть в том, что скрипту в качестве аргумента может передаваться что угодно
> (это будет вводить пользователь), поэтому надо застраховаться от того, что бы
> внутри скрипта при обработке этого аргумента не выполнялась команда..

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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Bash защита от выполнения в переменной"  +/
Сообщение от Mr. Sneer on 14-Мрт-14, 07:33 
>[оверквотинг удален]
>>>> ./script.sh `ls -l`, то он выполняет команду ls -l. Уже весь
>>>> моск сломал, но решение найти не могу:(
>>> в одинарные кавычки?
>>> ./script.sh '`ls -l`'
>> Суть в том, что скрипту в качестве аргумента может передаваться что угодно
>> (это будет вводить пользователь), поэтому надо застраховаться от того, что бы
>> внутри скрипта при обработке этого аргумента не выполнялась команда..
> но контролировать передачу аргумента кто будет?
> заключить передаваемый аргумент в кавычки, но поручить это не пользователю,
> а делать самому

ок, на примере этого скрипта, как это реализовать? Вот есть у нас скрипт, который запускается как ./scripts.sh ARG, где ARG - это аргумент, который вводит пользователь. Как защититься от выполнения внутри скрипта команды, если пользователь вводит в качестве аргумента `ls -l` (например) ?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Bash защита от выполнения в переменной"  +/
Сообщение от михалыч (ok) on 14-Мрт-14, 07:52 
> Вот есть у нас  скрипт, который запускается как ./scripts.sh ARG, где ARG - это аргумент,
> который вводит пользователь. Как защититься от выполнения внутри скрипта команды, если
> пользователь вводит в качестве аргумента `ls -l` (например) ?

у вас пользователь самостоятельно набирает ./scripts.sh ARG ??
или ARG передается скрипту?
если первое, то как вы запретите ему просто выполнение ls?
если второе, то как происходит передача ARG?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Bash защита от выполнения в переменной"  +/
Сообщение от Mr. Sneer on 14-Мрт-14, 08:01 
>> Вот есть у нас  скрипт, который запускается как ./scripts.sh ARG, где ARG - это аргумент,
>> который вводит пользователь. Как защититься от выполнения внутри скрипта команды, если
>> пользователь вводит в качестве аргумента `ls -l` (например) ?
> у вас пользователь самостоятельно набирает ./scripts.sh ARG ??
> или ARG передается скрипту?
> если первое, то как вы запретите ему просто выполнение ls?
> если второе, то как происходит передача ARG?

Вариант первый. А запретить очень просто: скрипт может исполняться с правами другого пользователя. При этом исходный пользователь может только читать и исполнять скрипт, но не может изменять. А сейчас получается, что с помощью такой нехитрой подстановки можно выполнить любую команду с правами другого юзера. Т.е. цель такая, что бы гребаный баш воспринимал переменную как текст и игнорировал в ней любые спец. символы. Как это сделать?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "Bash защита от выполнения в переменной"  +/
Сообщение от Mr. Sneer on 14-Мрт-14, 08:04 
>> Вот есть у нас  скрипт, который запускается как ./scripts.sh ARG, где ARG - это аргумент,
>> который вводит пользователь. Как защититься от выполнения внутри скрипта команды, если
>> пользователь вводит в качестве аргумента `ls -l` (например) ?
> у вас пользователь самостоятельно набирает ./scripts.sh ARG ??
> или ARG передается скрипту?
> если первое, то как вы запретите ему просто выполнение ls?
> если второе, то как происходит передача ARG?

Всё, разобрался) Команда действительно выполнялась не в скрипте.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

6. "Bash защита от выполнения в переменной"  +/
Сообщение от XAnder (ok) on 14-Мрт-14, 07:59 
> Есть простейший скрипт:
> #!/bin/bash
> echo "$1"
> Как защититься от выполнения команды в переменной?

Команда здесь выполняется не в переменной, в переменную попадает уже результат выполнения этой команды.

> Т.е. если запустить скрипт так:
> ./script.sh `ls -l`, то он выполняет команду ls -l. Уже весь
> моск сломал, но решение найти не могу:(

Скрипт эту команду (ls -l) не выполняет, её выполняет интерпретатор командной строки. Скрипт её даже не видит.

В итоге правильный ответ - никак. Нельзя защититься от того, чего нет.

Чувствую, что вам нужно совсем не это. А что именно - понять не могу. Попробуйте сформулировать вопрос иначе.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Bash защита от выполнения в переменной"  +/
Сообщение от Mr. Sneer on 14-Мрт-14, 08:04 
>[оверквотинг удален]
> Команда здесь выполняется не в переменной, в переменную попадает уже результат выполнения
> этой команды.
>> Т.е. если запустить скрипт так:
>> ./script.sh `ls -l`, то он выполняет команду ls -l. Уже весь
>> моск сломал, но решение найти не могу:(
> Скрипт эту команду (ls -l) не выполняет, её выполняет интерпретатор командной строки.
> Скрипт её даже не видит.
> В итоге правильный ответ - никак. Нельзя защититься от того, чего нет.
> Чувствую, что вам нужно совсем не это. А что именно - понять
> не могу. Попробуйте сформулировать вопрос иначе.

Блин, точно. Все, спасибо, разобрался)))

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor