HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости > Веб-уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 02.03.2024, 19:17
ASMi386
Новичок
Регистрация: 01.03.2024
Сообщений: 10
С нами: 1160588

Репутация: 0
По умолчанию

Собственно сабж.
Чтобы не грузить лишним, интересует, насколько безопасен такой фрагмент в скрипте (теоретический кусочек):

Код:


Код:
#!/bin/bash
SUFFIX=$(date '+_%d_%m_%Y')
/usr/bin/cp ./from/*$SUFFIX.zip ./to/
Интересует возможность command injection через имя файла.
Файловая система источника NTFS, назначения - ext4
Если возможность существует, как правильно защититься? Кавычками?)
 
Ответить с цитированием

  #2  
Старый 03.03.2024, 10:48
f22
Новичок
Регистрация: 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
 
Ответить с цитированием

  #3  
Старый 03.03.2024, 10:54
ASMi386
Новичок
Регистрация: 01.03.2024
Сообщений: 10
С нами: 1160588

Репутация: 0
По умолчанию

Цитата:

f22 сказал(а):

А каким образом по вашему имя копируемого файла должно восприниматься shell'ом как команда?
Он получает строку и эту строку подставляет в путь.

Может ли злоумышленник на файловой системе NTFS создать такое имя файла, которое позволило бы выполнить команду на бэкап-сервере?

Код:


Код:
1.txt /tmp;ls -la;.zip
Очень грубо) Насколько я знаю, NTFS терпимо относится к точкам с запятой в имени файла.
 
Ответить с цитированием

  #4  
Старый 03.03.2024, 13:35
Exited3n
Постоянный
Регистрация: 28.05.2022
Сообщений: 800
С нами: 2086530

Репутация: 0


По умолчанию

Цитата:

ASMi386 сказал(а):

Может ли злоумышленник на файловой системе NTFS создать такое имя файла, которое позволило бы выполнить команду на бэкап-сервере?

Код:


Код:
1.txt /tmp;ls -la;.zip
Очень грубо) Насколько я знаю, NTFS терпимо относится к точкам с запятой в имени файла.

У тебя нет eval'a или прочего, с чего вдруг cp начнет исполнять команды как sh ?
 
Ответить с цитированием

  #5  
Старый 03.03.2024, 14:30
ASMi386
Новичок
Регистрация: 01.03.2024
Сообщений: 10
С нами: 1160588

Репутация: 0
По умолчанию

Логично, но думал мало ли у негодяев каких фокусов в запасе - решил уточнить )

Спасибо!
 
Ответить с цитированием

  #6  
Старый 03.03.2024, 16:12
larchik
Новичок
Регистрация: 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 будет выполнена после копирования. В общем ТС задает правильный вопрос.
 
Ответить с цитированием

  #7  
Старый 03.03.2024, 17:10
Exited3n
Постоянный
Регистрация: 28.05.2022
Сообщений: 800
С нами: 2086530

Репутация: 0


По умолчанию

Цитата:

larchik сказал(а):

вообще, на первый взгляд, тут возможна инъекция, но все зависит от конкретной реализации.
Там, где стоит символ '*' - это пользовательский ввод, который может быть любым.
Преположим, что в звездочку попадет конструкция типа test.zip ./to; id; #.
Тогда итоговая строка может быть такой:

Код:
/usr/bin/cp ./from/test.zip ./to; id; #$SUFFIX.zip ./to/
Теоретически команда id будет выполнена после копирования. В общем ТС задает правильный вопрос.

Проводите тесты! Если время позволяет.
 
Ответить с цитированием

  #8  
Старый 03.03.2024, 17:27
ASMi386
Новичок
Регистрация: 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, еще поизвращаюсь))
 
Ответить с цитированием

  #9  
Старый 03.03.2024, 18:29
Exited3n
Постоянный
Регистрация: 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)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.