 |

02.03.2024, 19:17
|
|
Новичок
Регистрация: 01.03.2024
Сообщений: 10
С нами:
1160588
Репутация:
0
|
|
Собственно сабж.
Чтобы не грузить лишним, интересует, насколько безопасен такой фрагмент в скрипте (теоретический кусочек):
Код:
Код:
#!/bin/bash
SUFFIX=$(date '+_%d_%m_%Y')
/usr/bin/cp ./from/*$SUFFIX.zip ./to/
Интересует возможность command injection через имя файла.
Файловая система источника NTFS, назначения - ext4
Если возможность существует, как правильно защититься? Кавычками?)
|
|
|

03.03.2024, 10:48
|
|
Новичок
Регистрация: 05.05.2019
Сообщений: 0
С нами:
3697991
Репутация:
0
|
|
ASMi386 сказал(а):
Интересует возможность command injection через имя файла.
А каким образом по вашему имя копируемого файла должно восприниматься shell'ом как команда?
Он получает строку и эту строку подставляет в путь.
ASMi386 сказал(а):
Если возможность существует, как правильно защититься? Кавычками?)
Если есть сомнения в этом плане, используйте условие
Можно проверить, является ли исходный/конечный путь файлом, или вообще существует ли
Bash:
Код:
if
[
[
-f /usr/bin/cp
]
]
;
then
echo
1
;
else
echo
2
;
fi
Bash:
Код:
if
[
[
-e /usr/bin/cp
]
]
;
then
echo
1
;
else
echo
2
;
fi
|
|
|

03.03.2024, 10:54
|
|
Новичок
Регистрация: 01.03.2024
Сообщений: 10
С нами:
1160588
Репутация:
0
|
|
f22 сказал(а):
А каким образом по вашему имя копируемого файла должно восприниматься shell'ом как команда?
Он получает строку и эту строку подставляет в путь.
Может ли злоумышленник на файловой системе NTFS создать такое имя файла, которое позволило бы выполнить команду на бэкап-сервере?
Код:
Код:
1.txt /tmp;ls -la;.zip
Очень грубо) Насколько я знаю, NTFS терпимо относится к точкам с запятой в имени файла.
|
|
|

03.03.2024, 13:35
|
|
Постоянный
Регистрация: 28.05.2022
Сообщений: 800
С нами:
2086530
Репутация:
0
|
|
ASMi386 сказал(а):
Может ли злоумышленник на файловой системе NTFS создать такое имя файла, которое позволило бы выполнить команду на бэкап-сервере?
Код:
Код:
1.txt /tmp;ls -la;.zip
Очень грубо) Насколько я знаю, NTFS терпимо относится к точкам с запятой в имени файла.
У тебя нет eval'a или прочего, с чего вдруг cp начнет исполнять команды как sh ?
|
|
|

03.03.2024, 14:30
|
|
Новичок
Регистрация: 01.03.2024
Сообщений: 10
С нами:
1160588
Репутация:
0
|
|
Логично, но думал мало ли у негодяев каких фокусов в запасе - решил уточнить )
Спасибо!
|
|
|

03.03.2024, 16:12
|
|
Новичок
Регистрация: 07.06.2019
Сообщений: 0
С нами:
3650634
Репутация:
0
|
|
Exited3n сказал(а):
У тебя нет eval'a или прочего, с чего вдруг cp начнет исполнять команды как sh ?
вообще, на первый взгляд, тут возможна инъекция, но все зависит от конкретной реализации.
Там, где стоит символ '*' - это пользовательский ввод, который может быть любым.
Преположим, что в звездочку попадет конструкция типа test.zip ./to; id; #.
Тогда итоговая строка может быть такой:
Код:
/usr/bin/cp ./from/test.zip ./to; id; #$SUFFIX.zip ./to/
Теоретически команда id будет выполнена после копирования. В общем ТС задает правильный вопрос.
|
|
|

03.03.2024, 17:10
|
|
Постоянный
Регистрация: 28.05.2022
Сообщений: 800
С нами:
2086530
Репутация:
0
|
|
larchik сказал(а):
вообще, на первый взгляд, тут возможна инъекция, но все зависит от конкретной реализации.
Там, где стоит символ '*' - это пользовательский ввод, который может быть любым.
Преположим, что в звездочку попадет конструкция типа test.zip ./to; id; #.
Тогда итоговая строка может быть такой:
Код:
/usr/bin/cp ./from/test.zip ./to; id; #$SUFFIX.zip ./to/
Теоретически команда id будет выполнена после копирования. В общем ТС задает правильный вопрос.
Проводите тесты! Если время позволяет.
|
|
|

03.03.2024, 17:27
|
|
Новичок
Регистрация: 01.03.2024
Сообщений: 10
С нами:
1160588
Репутация:
0
|
|
Exited3n сказал(а):
Проводите тесты! Если время позволяет.
Я очевидные варианты пофаззил локально - ничего не вышло. Решил у сообщества уточнить.
UPD: без файла, если явно подсунуть такую конструкцию, создается /tmp/cmd.flag
Код:
Код:
#!/bin/bash
rm ./to/*
SUFFIX=1.txt /tmp;touch /tmp/cmd.flag;echo
/usr/bin/cp ./from/$SUFFIX ./to/
Код:
Код:
-rw-r--r-- 1 asm asm 0 Mar 3 16:51 cmd.flag
Чуть позже примонтирую NTFS, еще поизвращаюсь))
|
|
|

03.03.2024, 18:29
|
|
Постоянный
Регистрация: 28.05.2022
Сообщений: 800
С нами:
2086530
Репутация:
0
|
|
ASMi386 сказал(а):
Я очевидные варианты пофаззил локально - ничего не вышло. Решил у сообщества уточнить.
UPD: без файла, если явно подсунуть такую конструкцию, создается /tmp/cmd.flag
Код:
Код:
#!/bin/bash
rm ./to/*
SUFFIX=1.txt /tmp;touch /tmp/cmd.flag;echo
/usr/bin/cp ./from/$SUFFIX ./to/
Код:
Код:
-rw-r--r-- 1 asm asm 0 Mar 3 16:51 cmd.flag
Чуть позже примонтирую NTFS, еще поизвращаюсь))
Тут ты код скрипта правишь непосредственно, можно нагородить что угодно.
Я про другое.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|